From 0c2a918d2c19fc465ba842d28120649539953285 Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Mon, 11 Jul 2022 13:39:28 -0700 Subject: [PATCH 01/31] [WIP] initial restructure PoC Signed-off-by: Alexandra Tran --- .../Consensus-Protocols/Overview-Consensus.md | 8 +- docs/Concepts/Data-Storage-Formats.md | 4 +- docs/Concepts/Events-and-Logs.md | 4 +- docs/Concepts/Merge.md | 8 +- docs/Concepts/Mining.md | 2 +- docs/Concepts/Monitoring.md | 4 +- docs/Concepts/Network-vs-Node.md | 2 +- docs/Concepts/NetworkID-And-ChainID.md | 4 +- docs/Concepts/Node-Keys.md | 2 +- docs/Concepts/PKI.md | 6 +- .../Permissioning/Onchain-Permissioning.md | 2 +- .../Permissioning/Permissioning-Overview.md | 4 +- .../Privacy/Flexible-PrivacyGroups.md | 4 +- docs/Concepts/Privacy/Multi-Tenancy.md | 2 +- docs/Concepts/Privacy/Plugin-Privacy.md | 2 +- docs/Concepts/Privacy/Privacy-Overview.md | 4 +- .../Privacy/Private-Transaction-Processing.md | 4 +- docs/Concepts/Privacy/Private-Transactions.md | 4 +- docs/Concepts/Protocol-Upgrades.md | 2 +- docs/Concepts/TLS.md | 4 +- .../Concepts/Transactions/Transaction-Pool.md | 4 +- docs/Reference/API-Methods.md | 146 ++++----- docs/Reference/API-Objects.md | 12 +- docs/Reference/CLI/CLI-Subcommands.md | 18 +- docs/Reference/CLI/CLI-Syntax.md | 98 +++--- docs/Reference/Config-Items.md | 24 +- docs/Reference/Engine-API-Methods.md | 2 +- docs/Reference/Trace-Types.md | 6 +- docs/Tutorials/Developer-Quickstart.md | 20 +- docs/Tutorials/Kubernetes/Deploy-Charts.md | 2 +- .../Kubernetes/Nat-Manager-Kubernetes.md | 14 +- docs/Tutorials/Merge-Testnet.md | 6 +- .../Create-Permissioned-Network.md | 8 +- .../Getting-Started-Onchain-Permissioning.md | 10 +- .../Upgrade-Permissioning-Contract.md | 4 +- .../Privacy/Configuring-Multi-Tenancy.md | 12 +- docs/Tutorials/Privacy/Configuring-Privacy.md | 2 +- docs/Tutorials/Privacy/Privacy-Example.md | 2 +- .../Adding-removing-IBFT-validators.md | 2 +- .../Private-Network/Create-IBFT-Network.md | 8 +- .../Create-Private-Clique-Network.md | 8 +- .../Private-Network/Create-Private-Network.md | 8 +- .../Private-Network/Create-QBFT-Network.md | 12 +- .../install}/Build-from-source.md | 4 +- .../install/binary-distribution.md} | 0 .../install/index.md} | 6 +- .../install/run-docker-image.md} | 14 +- docs/{HowTo => how-to}/Backup/Backup.md | 4 +- docs/{HowTo => how-to}/Deploy/Ansible.md | 0 docs/{HowTo => how-to}/Deploy/Bootnodes.md | 0 docs/{HowTo => how-to}/Deploy/Cloud.md | 0 docs/{HowTo => how-to}/Deploy/Ethstats.md | 0 docs/{HowTo => how-to}/Deploy/Kubernetes.md | 0 docs/{HowTo => how-to}/Deploy/Production.md | 0 docs/{HowTo => how-to}/Deploy/Validators.md | 2 +- .../Develop-Dapps/Client-Libraries.md | 2 +- .../Develop-Dapps/Truffle.md | 0 .../Client-Libraries/web3js-quorum.md | 0 .../Limit-Access/Local-Permissioning.md | 4 +- .../Limit-Access/Specify-Perm-Version.md | 0 .../Limit-Access/Updating-Permission-Lists.md | 0 .../Send-Transactions/Account-Management.md | 4 +- .../Add-Validators-Without-Voting.md | 6 +- .../Troubleshoot/Java-Flight-Recording.md | 0 .../Troubleshoot/Trace-Transactions.md | 0 .../Troubleshoot/Troubleshooting.md | 30 +- .../Troubleshoot/Use-EVM-Tool.md | 0 .../{HowTo => how-to}/Upgrade/Upgrade-Node.md | 0 .../Upgrade/Upgrade-Protocol.md | 0 .../Access-Private-Transactions.md | 0 .../Create-Manage-Privacy-Groups.md | 0 .../Use-Privacy/EEA-Compliant.md | 0 .../Use-Privacy/Performance-Best-Practices.md | 0 docs/{HowTo => how-to}/Use-Privacy/Privacy.md | 0 .../Use-Privacy/Run-Tessera-With-Besu.md | 2 +- .../Sign-Privacy-Marker-Transactions.md | 2 +- .../Use-Privacy/Use-FlexiblePrivacy.md | 0 .../Use-GoQuorum-compatible-privacy.md | 4 +- .../configure}/Alternative-EC-Curves.md | 0 .../Block-Proposal-Permissioning.md | 2 +- .../Configure-HA/High-Availability.md | 16 +- .../Configure-HA/Sample-Configuration.md | 4 +- .../configure}/Consensus-Protocols/Clique.md | 0 .../configure}/Consensus-Protocols/IBFT.md | 0 .../configure}/Consensus-Protocols/QBFT.md | 0 .../configure}/Contracts-in-Genesis.md | 0 .../Configure => how-to/configure}/FreeGas.md | 0 .../configure}/Genesis-File.md | 0 .../configure}/Passing-JVM-Options.md | 0 .../configure}/TLS/Configure-TLS.md | 0 .../configure}/TLS/P2P-TLS.md | 0 .../configure/configuration-file.md} | 0 .../configure/mining.md} | 0 .../connect/configure-ports.md} | 8 +- .../connect/manage-peers.md} | 4 +- .../connect/specify-nat.md} | 0 .../connect/static-nodes.md} | 4 +- .../Logging.md => how-to/monitor/logging.md} | 2 +- .../Metrics.md => how-to/monitor/metrics.md} | 0 .../send-transactions.md} | 12 +- .../use-besu-api/access-logs.md} | 44 +-- .../use-besu-api/authenticate.md} | 24 +- .../use-besu-api/graphql.md} | 12 +- .../API.md => how-to/use-besu-api/index.md} | 34 +- .../use-besu-api/json-rpc.md} | 24 +- .../APIs => how-to/use-besu-api}/jwt.png | Bin .../use-besu-api/rpc-pubsub.md} | 18 +- docs/index.md | 4 +- .../get-started/system-requirements.md} | 12 +- .../how-to/connect/bootnodes.md} | 14 +- .../how-to/monitor/elastic-stack.md} | 6 +- .../how-to/monitor/opentelemetry.md} | 8 +- .../how-to/monitor/quorum-hibernate.md} | 0 .../how-to/monitor/splunk.md} | 8 +- .../concurrent-private-transactions.md} | 18 +- .../private-transactions.md} | 44 +-- .../send-transactions/revert-reason.md} | 22 +- .../get-started/start-node.md} | 10 +- .../get-started/system-requirements.md} | 8 +- .../how-to/connect/sync-node.md} | 20 +- .../how-to/prepare-for-the-merge.md} | 4 +- .../how-to/use-engine-api.md} | 26 +- mkdocs.yml | 301 +++++++----------- 123 files changed, 614 insertions(+), 687 deletions(-) rename docs/{HowTo/Get-Started/Installation-Options => get-started/install}/Build-from-source.md (86%) rename docs/{HowTo/Get-Started/Installation-Options/Install-Binaries.md => get-started/install/binary-distribution.md} (100%) rename docs/{HowTo/Get-Started/Installation-Options/Options.md => get-started/install/index.md} (64%) rename docs/{HowTo/Get-Started/Installation-Options/Run-Docker-Image.md => get-started/install/run-docker-image.md} (88%) rename docs/{HowTo => how-to}/Backup/Backup.md (90%) rename docs/{HowTo => how-to}/Deploy/Ansible.md (100%) rename docs/{HowTo => how-to}/Deploy/Bootnodes.md (100%) rename docs/{HowTo => how-to}/Deploy/Cloud.md (100%) rename docs/{HowTo => how-to}/Deploy/Ethstats.md (100%) rename docs/{HowTo => how-to}/Deploy/Kubernetes.md (100%) rename docs/{HowTo => how-to}/Deploy/Production.md (100%) rename docs/{HowTo => how-to}/Deploy/Validators.md (95%) rename docs/{HowTo => how-to}/Develop-Dapps/Client-Libraries.md (88%) rename docs/{HowTo => how-to}/Develop-Dapps/Truffle.md (100%) rename docs/{HowTo => how-to}/Interact/Client-Libraries/web3js-quorum.md (100%) rename docs/{HowTo => how-to}/Limit-Access/Local-Permissioning.md (97%) rename docs/{HowTo => how-to}/Limit-Access/Specify-Perm-Version.md (100%) rename docs/{HowTo => how-to}/Limit-Access/Updating-Permission-Lists.md (100%) rename docs/{HowTo => how-to}/Send-Transactions/Account-Management.md (88%) rename docs/{HowTo => how-to}/Troubleshoot/Add-Validators-Without-Voting.md (97%) rename docs/{HowTo => how-to}/Troubleshoot/Java-Flight-Recording.md (100%) rename docs/{HowTo => how-to}/Troubleshoot/Trace-Transactions.md (100%) rename docs/{HowTo => how-to}/Troubleshoot/Troubleshooting.md (88%) rename docs/{HowTo => how-to}/Troubleshoot/Use-EVM-Tool.md (100%) rename docs/{HowTo => how-to}/Upgrade/Upgrade-Node.md (100%) rename docs/{HowTo => how-to}/Upgrade/Upgrade-Protocol.md (100%) rename docs/{HowTo => how-to}/Use-Privacy/Access-Private-Transactions.md (100%) rename docs/{HowTo => how-to}/Use-Privacy/Create-Manage-Privacy-Groups.md (100%) rename docs/{HowTo => how-to}/Use-Privacy/EEA-Compliant.md (100%) rename docs/{HowTo => how-to}/Use-Privacy/Performance-Best-Practices.md (100%) rename docs/{HowTo => how-to}/Use-Privacy/Privacy.md (100%) rename docs/{HowTo => how-to}/Use-Privacy/Run-Tessera-With-Besu.md (96%) rename docs/{HowTo => how-to}/Use-Privacy/Sign-Privacy-Marker-Transactions.md (94%) rename docs/{HowTo => how-to}/Use-Privacy/Use-FlexiblePrivacy.md (100%) rename docs/{HowTo => how-to}/Use-Privacy/Use-GoQuorum-compatible-privacy.md (93%) rename docs/{HowTo/Configure => how-to/configure}/Alternative-EC-Curves.md (100%) rename docs/{HowTo/Configure => how-to/configure}/Block-Proposal-Permissioning.md (98%) rename docs/{HowTo/Configure => how-to/configure}/Configure-HA/High-Availability.md (87%) rename docs/{HowTo/Configure => how-to/configure}/Configure-HA/Sample-Configuration.md (93%) rename docs/{HowTo/Configure => how-to/configure}/Consensus-Protocols/Clique.md (100%) rename docs/{HowTo/Configure => how-to/configure}/Consensus-Protocols/IBFT.md (100%) rename docs/{HowTo/Configure => how-to/configure}/Consensus-Protocols/QBFT.md (100%) rename docs/{HowTo/Configure => how-to/configure}/Contracts-in-Genesis.md (100%) rename docs/{HowTo/Configure => how-to/configure}/FreeGas.md (100%) rename docs/{HowTo/Configure => how-to/configure}/Genesis-File.md (100%) rename docs/{HowTo/Configure => how-to/configure}/Passing-JVM-Options.md (100%) rename docs/{HowTo/Configure => how-to/configure}/TLS/Configure-TLS.md (100%) rename docs/{HowTo/Configure => how-to/configure}/TLS/P2P-TLS.md (100%) rename docs/{HowTo/Configure/Using-Configuration-File.md => how-to/configure/configuration-file.md} (100%) rename docs/{HowTo/Configure/Configure-Mining.md => how-to/configure/mining.md} (100%) rename docs/{HowTo/Find-and-Connect/Configuring-Ports.md => how-to/connect/configure-ports.md} (87%) rename docs/{HowTo/Find-and-Connect/Managing-Peers.md => how-to/connect/manage-peers.md} (96%) rename docs/{HowTo/Find-and-Connect/Specifying-NAT.md => how-to/connect/specify-nat.md} (100%) rename docs/{HowTo/Find-and-Connect/Static-Nodes.md => how-to/connect/static-nodes.md} (96%) rename docs/{HowTo/Monitor/Logging.md => how-to/monitor/logging.md} (96%) rename docs/{HowTo/Monitor/Metrics.md => how-to/monitor/metrics.md} (100%) rename docs/{HowTo/Send-Transactions/Transactions.md => how-to/send-transactions.md} (86%) rename docs/{HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.md => how-to/use-besu-api/access-logs.md} (77%) rename docs/{HowTo/Interact/APIs/Authentication.md => how-to/use-besu-api/authenticate.md} (88%) rename docs/{HowTo/Interact/APIs/GraphQL.md => how-to/use-besu-api/graphql.md} (85%) rename docs/{HowTo/Interact/APIs/API.md => how-to/use-besu-api/index.md} (63%) rename docs/{HowTo/Interact/APIs/Using-JSON-RPC-API.md => how-to/use-besu-api/json-rpc.md} (86%) rename docs/{HowTo/Interact/APIs => how-to/use-besu-api}/jwt.png (100%) rename docs/{HowTo/Interact/APIs/RPC-PubSub.md => how-to/use-besu-api/rpc-pubsub.md} (95%) rename docs/{HowTo/Get-Started/System-Requirements/System-Requirements-Private.md => private-networks/get-started/system-requirements.md} (82%) rename docs/{HowTo/Find-and-Connect/Bootnodes.md => private-networks/how-to/connect/bootnodes.md} (76%) rename docs/{HowTo/Monitor/Elastic-Stack.md => private-networks/how-to/monitor/elastic-stack.md} (86%) rename docs/{HowTo/Monitor/OpenTelemetry-Collector.md => private-networks/how-to/monitor/opentelemetry.md} (95%) rename docs/{HowTo/Monitor/Quorum-Hibernate.md => private-networks/how-to/monitor/quorum-hibernate.md} (100%) rename docs/{HowTo/Monitor/Splunk-Enterprise.md => private-networks/how-to/monitor/splunk.md} (96%) rename docs/{HowTo/Send-Transactions/Concurrent-Private-Transactions.md => private-networks/how-to/send-transactions/concurrent-private-transactions.md} (69%) rename docs/{HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md => private-networks/how-to/send-transactions/private-transactions.md} (75%) rename docs/{HowTo/Send-Transactions/Revert-Reason.md => private-networks/how-to/send-transactions/revert-reason.md} (85%) rename docs/{HowTo/Get-Started/Starting-node.md => public-networks/get-started/start-node.md} (95%) rename docs/{HowTo/Get-Started/System-Requirements/System-Requirements-Public.md => public-networks/get-started/system-requirements.md} (83%) rename docs/{Concepts/Node-Types.md => public-networks/how-to/connect/sync-node.md} (85%) rename docs/{HowTo/Upgrade/Prepare-for-The-Merge.md => public-networks/how-to/prepare-for-the-merge.md} (94%) rename docs/{HowTo/Interact/APIs/Engine-API.md => public-networks/how-to/use-engine-api.md} (84%) diff --git a/docs/Concepts/Consensus-Protocols/Overview-Consensus.md b/docs/Concepts/Consensus-Protocols/Overview-Consensus.md index cd96ebe4fb0..16566414454 100644 --- a/docs/Concepts/Consensus-Protocols/Overview-Consensus.md +++ b/docs/Concepts/Consensus-Protocols/Overview-Consensus.md @@ -6,12 +6,12 @@ description: Besu consensus protocols Besu supports the following consensus protocols: -* [QBFT](../../HowTo/Configure/Consensus-Protocols/QBFT.md) (proof of authority) - The recommended +* [QBFT](../../how-to/configure/Consensus-Protocols/QBFT.md) (proof of authority) - The recommended enterprise-grade consensus protocol for private networks. -* [IBFT 2.0](../../HowTo/Configure/Consensus-Protocols/IBFT.md) (proof of authority) - Supported for existing private networks. -* [Clique](../../HowTo/Configure/Consensus-Protocols/Clique.md) (proof of authority) - Not recommended for +* [IBFT 2.0](../../how-to/configure/Consensus-Protocols/IBFT.md) (proof of authority) - Supported for existing private networks. +* [Clique](../../how-to/configure/Consensus-Protocols/Clique.md) (proof of authority) - Not recommended for production use. - You can [migrate a network using Clique to another consensus protocol](../../HowTo/Configure/Consensus-Protocols/Clique.md#migrate-from-clique-to-another-consensus-protocol). + You can [migrate a network using Clique to another consensus protocol](../../how-to/configure/Consensus-Protocols/Clique.md#migrate-from-clique-to-another-consensus-protocol). * [Proof of stake](https://docs.teku.consensys.net/en/latest/Concepts/Proof-of-Stake/) - Used on Ethereum Mainnet post-[Merge](../../Concepts/Merge.md) and can also be used on the [Merge testnet](../../Tutorials/Merge-Testnet.md). * [Ethash](https://ethereum.org/en/developers/docs/consensus-mechanisms/pow/) (proof of work) - Used on Ethereum Mainnet diff --git a/docs/Concepts/Data-Storage-Formats.md b/docs/Concepts/Data-Storage-Formats.md index 7764e8406a7..34aee7d848c 100644 --- a/docs/Concepts/Data-Storage-Formats.md +++ b/docs/Concepts/Data-Storage-Formats.md @@ -56,8 +56,8 @@ The default limit Bonsai looks back is 512. To change the parameter, use the ### Syncing nodes -The following table shows the ways you can [sync a full node](Node-Types.md#run-a-full-node) with the different data -storage formats using [fast](Node-Types.md#fast-synchronization) and [snap](Node-Types.md#snap-synchronization) sync. +The following table shows the ways you can [sync a full node](../public-networks/how-to/connect/sync-node.md#run-a-full-node) with the different data +storage formats using [fast](../public-networks/how-to/connect/sync-node.md#fast-synchronization) and [snap](../public-networks/how-to/connect/sync-node.md#snap-synchronization) sync. | Data storage format | Sync mode | Storage estimate | Can other nodes sync to your node? | |---------------------|-----------|------------------|------------------------------------| diff --git a/docs/Concepts/Events-and-Logs.md b/docs/Concepts/Events-and-Logs.md index 2e40427cc25..773ff224e77 100644 --- a/docs/Concepts/Events-and-Logs.md +++ b/docs/Concepts/Events-and-Logs.md @@ -12,8 +12,8 @@ gas) so storing and accessing the required data in logs reduces the cost. For ex 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](../HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.md) or -subscribe to logs using the [RPC Pub/Sub API](../HowTo/Interact/APIs/RPC-PubSub.md#logs). +[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-Methods.md#admin_generatelogbloomcache) to improve log retrieval performance. diff --git a/docs/Concepts/Merge.md b/docs/Concepts/Merge.md index 6f822149235..b6ec564acd9 100644 --- a/docs/Concepts/Merge.md +++ b/docs/Concepts/Merge.md @@ -10,7 +10,7 @@ Ethereum Mainnet, turning Mainnet into a combination of an The Merge transitions Mainnet from proof of work to [proof of stake consensus](https://docs.teku.consensys.net/en/stable/Concepts/Proof-of-Stake/). -Update and configure Besu to be [ready for The Merge](../HowTo/Upgrade/Prepare-for-The-Merge.md). +Update and configure Besu to be [ready for The Merge](../public-networks/how-to/prepare-for-the-merge.md). You can also test Besu with a consensus client such as [Teku] on the [Kiln Merge testnet](../Tutorials/Merge-Testnet.md). ## Execution and consensus clients @@ -20,7 +20,7 @@ After The Merge, a full Ethereum Mainnet node will be a combination of an execut 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](../HowTo/Interact/APIs/Engine-API.md). +[Engine API](../public-networks/how-to/use-engine-api.md). ![Ethereum Merge node](../images/Execution-Consensus-Clients.png) @@ -42,7 +42,7 @@ communicate with each other in a peer-to-peer network. ## What happens during The Merge Before The Merge, the execution and consensus clients' configurations will be -[updated](../HowTo/Upgrade/Prepare-for-The-Merge.md#update-besu) to listen for a certain total terminal difficulty (TTD) +[updated](../public-networks/how-to/prepare-for-the-merge.md#update-besu) to listen for a certain total terminal difficulty (TTD) to be reached. !!! info @@ -64,7 +64,7 @@ After The Merge, validators earn rewards for performing [fee recipients](https://docs.teku.consensys.net/en/latest/HowTo/Prepare-for-The-Merge/#configure-the-fee-recipient) will also earn rewards for the inclusion of execution layer transactions. -Update and configure Besu to be [ready for The Merge](../HowTo/Upgrade/Prepare-for-The-Merge.md). +Update and configure Besu to be [ready for The Merge](../public-networks/how-to/prepare-for-the-merge.md). [Beacon Chain]: https://ethereum.org/en/upgrades/beacon-chain/ diff --git a/docs/Concepts/Mining.md b/docs/Concepts/Mining.md index 40aaf7faa50..eb3036ca2ac 100644 --- a/docs/Concepts/Mining.md +++ b/docs/Concepts/Mining.md @@ -5,7 +5,7 @@ description: Mining overview # Mining Hyperledger Besu supports CPU and GPU mining, which are -[configured using command line options](../HowTo/Configure/Configure-Mining.md). +[configured using command line options](../how-to/configure/mining.md). GPU mining support testing used [Ethminer](https://github.com/ethereum-mining/ethminer) with the `stratum+tcp` and `getwork` schemes. diff --git a/docs/Concepts/Monitoring.md b/docs/Concepts/Monitoring.md index 470fb363f51..61191c0f497 100644 --- a/docs/Concepts/Monitoring.md +++ b/docs/Concepts/Monitoring.md @@ -7,8 +7,8 @@ description: Monitoring using metrics and logging Monitoring enables identification of node and network issues. Specifically, configuring metrics and logging enables: -* [Visual representation of declining node or network performance](../HowTo/Monitor/Metrics.md) -* [Collection of log files to enable issue diagnosis](../HowTo/Monitor/Logging.md). +* [Visual representation of declining node or network performance](../how-to/monitor/metrics.md) +* [Collection of log files to enable issue diagnosis](../how-to/monitor/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/docs/Concepts/Network-vs-Node.md b/docs/Concepts/Network-vs-Node.md index 5f0d75b7114..dd2fda799f2 100644 --- a/docs/Concepts/Network-vs-Node.md +++ b/docs/Concepts/Network-vs-Node.md @@ -11,6 +11,6 @@ include `evmStackSize` or specify the [consensus mechanism](Consensus-Protocols/Overview-Consensus.md). Specify node settings on the command line or in the -[node configuration file](../HowTo/Configure/Using-Configuration-File.md). For example, enable +[node configuration file](../how-to/configure/configuration-file.md). For example, enable [JSON-RPC API methods](../Reference/API-Methods.md) or specify the [data directory](../Reference/CLI/CLI-Syntax.md#data-path) for the node. diff --git a/docs/Concepts/NetworkID-And-ChainID.md b/docs/Concepts/NetworkID-And-ChainID.md index bb3564ab88a..207633fba88 100644 --- a/docs/Concepts/NetworkID-And-ChainID.md +++ b/docs/Concepts/NetworkID-And-ChainID.md @@ -60,13 +60,13 @@ default network ID for those nodes using the ## 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](../HowTo/Configure/Genesis-File.md), including the chain ID, in order to peer. +Nodes need to have a matching [genesis file](../how-to/configure/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](../HowTo/Configure/Genesis-File.md) with the new chain ID. +2. Update the [genesis file](../how-to/configure/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](../Tutorials/Private-Network/Create-IBFT-Network.md#6-start-the-first-node-as-the-bootnode). diff --git a/docs/Concepts/Node-Keys.md b/docs/Concepts/Node-Keys.md index 099b489164d..bdc87ad2241 100644 --- a/docs/Concepts/Node-Keys.md +++ b/docs/Concepts/Node-Keys.md @@ -94,7 +94,7 @@ The enode URL displays when starting a Besu node. Use the the node. The enode advertised to other nodes during discovery is the external IP address and port, as -defined by [`--nat-method`](../HowTo/Find-and-Connect/Specifying-NAT.md). +defined by [`--nat-method`](../how-to/connect/specify-nat.md). ### Domain name support diff --git a/docs/Concepts/PKI.md b/docs/Concepts/PKI.md index b5b6cd920c8..80980e43c35 100644 --- a/docs/Concepts/PKI.md +++ b/docs/Concepts/PKI.md @@ -26,7 +26,7 @@ authorized nodes in the network. When receiving connection requests, the incoming connection must be from another authorized node. Similarly, when connecting to a node the initiator ensures that the remote node is authorized to participate in the network. -[Configure TLS for the P2P communication using the Besu command line options](../HowTo/Configure/TLS/P2P-TLS.md). +[Configure TLS for the P2P communication using the Besu command line options](../how-to/configure/TLS/P2P-TLS.md). ## Block proposal permissioning @@ -39,7 +39,7 @@ network. The block hash is signed by the validator private certificate and inclu as a [CMS (Cryptographic Message Syntax)]. This is used by other validators to verify that the proposer is authorized to create a block in the network. -[Configure block proposal permissioning using the Besu command line options](../HowTo/Configure/Block-Proposal-Permissioning.md). +[Configure block proposal permissioning using the Besu command line options](../how-to/configure/Block-Proposal-Permissioning.md). -[QBFT consensus protocol]: ../HowTo/Configure/Consensus-Protocols/QBFT.md +[QBFT consensus protocol]: ../how-to/configure/Consensus-Protocols/QBFT.md [CMS (Cryptographic Message Syntax)]: https://en.wikipedia.org/wiki/Cryptographic_Message_Syntax diff --git a/docs/Concepts/Permissioning/Onchain-Permissioning.md b/docs/Concepts/Permissioning/Onchain-Permissioning.md index d8c96e3358a..9bd8593e09f 100644 --- a/docs/Concepts/Permissioning/Onchain-Permissioning.md +++ b/docs/Concepts/Permissioning/Onchain-Permissioning.md @@ -82,7 +82,7 @@ Permissioning implements three allowlists: ## Bootnodes -When a node joins the network, the node connects to the [bootnodes](../../HowTo/Find-and-Connect/Bootnodes.md) until it +When a node joins the network, the node connects to the [bootnodes](../../private-networks/how-to/connect/bootnodes.md) until it synchronizes to the chain head, regardless of node permissions. After synchronization, the Account Rules and Node Rules smart contracts apply the permissioning rules. diff --git a/docs/Concepts/Permissioning/Permissioning-Overview.md b/docs/Concepts/Permissioning/Permissioning-Overview.md index 88c882a8f22..196d4f1254d 100644 --- a/docs/Concepts/Permissioning/Permissioning-Overview.md +++ b/docs/Concepts/Permissioning/Permissioning-Overview.md @@ -41,7 +41,7 @@ You can specify permissioning [locally](#local) or [onchain](#onchain). ### Local -[Local permissioning](../../HowTo/Limit-Access/Local-Permissioning.md) works at the node level. +[Local permissioning](../../how-to/Limit-Access/Local-Permissioning.md) works at the node level. Each node in the network has a [permissions configuration file]. Local permissioning affects your node but not the rest of the network. Use local permissioning to @@ -69,4 +69,4 @@ The following diagram illustrates applying local and onchain permissioning rules ![Permissioning Flow](../../images/PermissioningFlow.png) -[permissions configuration file]: ../../HowTo/Limit-Access/Local-Permissioning.md#permissions-configuration-file +[permissions configuration file]: ../../how-to/Limit-Access/Local-Permissioning.md#permissions-configuration-file diff --git a/docs/Concepts/Privacy/Flexible-PrivacyGroups.md b/docs/Concepts/Privacy/Flexible-PrivacyGroups.md index e5a0724e973..c7c080e8eef 100644 --- a/docs/Concepts/Privacy/Flexible-PrivacyGroups.md +++ b/docs/Concepts/Privacy/Flexible-PrivacyGroups.md @@ -11,7 +11,7 @@ description: Flexible privacy groups and about all the [new Tessera features](https://consensys.net/blog/quorum/tessera-the-privacy-manager-of-choice-for-consensys-quorum-networks). Flexible [privacy groups](Privacy-Groups.md) use smart contracts to store and maintain the group membership. -You can [add and remove members to and from flexible privacy groups](../../HowTo/Use-Privacy/Use-FlexiblePrivacy.md). +You can [add and remove members to and from flexible privacy groups](../../how-to/Use-Privacy/Use-FlexiblePrivacy.md). !!! tip @@ -51,7 +51,7 @@ the management contract, must be signed by the same key that signed the group cr When creating a flexible privacy group, generate the privacy group ID for the group outside of Besu and pass the ID as a parameter. -The [web3js-quorum library](../../HowTo/Use-Privacy/Use-FlexiblePrivacy.md) generates a unique privacy +The [web3js-quorum library](../../how-to/Use-Privacy/Use-FlexiblePrivacy.md) generates a unique privacy group ID and passes the ID to Besu when creating a privacy group. !!! caution diff --git a/docs/Concepts/Privacy/Multi-Tenancy.md b/docs/Concepts/Privacy/Multi-Tenancy.md index 5473c2e8d7f..467676ad7e6 100644 --- a/docs/Concepts/Privacy/Multi-Tenancy.md +++ b/docs/Concepts/Privacy/Multi-Tenancy.md @@ -40,4 +40,4 @@ JSON-RPC requests, and the tenant has access to the requested privacy data. Private data is isolated and each tenant uses a JSON Web Token (JWT) for authentication. You can -[create the JWT either externally or internally](../../HowTo/Interact/APIs/Authentication.md). +[create the JWT either externally or internally](../../how-to/use-besu-api/authenticate.md). diff --git a/docs/Concepts/Privacy/Plugin-Privacy.md b/docs/Concepts/Privacy/Plugin-Privacy.md index 7698e1a53b4..1eaf850ae8b 100644 --- a/docs/Concepts/Privacy/Plugin-Privacy.md +++ b/docs/Concepts/Privacy/Plugin-Privacy.md @@ -72,7 +72,7 @@ The extension allows you to use a more dynamic approach, for example different k Your plugin needs to register the `PrivateMarkerTransactionFactory` interface which is called before submitting a PMT to the transaction pool. The responsibility then lies with the plugin to sign and serialize the PMT. -[privacy marker transaction (PMT)]: ../../HowTo/Use-Privacy/Access-Private-Transactions.md +[privacy marker transaction (PMT)]: ../../how-to/Use-Privacy/Access-Private-Transactions.md ## Registering your plugin diff --git a/docs/Concepts/Privacy/Privacy-Overview.md b/docs/Concepts/Privacy/Privacy-Overview.md index 6d856bb0a5e..e71ba559438 100644 --- a/docs/Concepts/Privacy/Privacy-Overview.md +++ b/docs/Concepts/Privacy/Privacy-Overview.md @@ -47,7 +47,7 @@ node. ## Privacy-enabled networks -When enabling privacy in a [private network](../../HowTo/Get-Started/System-Requirements/System-Requirements-Private.md), +When enabling privacy in a [private network](../../private-networks/get-started/system-requirements.md), there's an assumed level of trust among the node operators, since all are members of the private network. @@ -79,4 +79,4 @@ Do not use private transactions in production environments using consensus mecha occur. -[highly available and run in a separate instance to Besu]: ../../HowTo/Use-Privacy/Run-Tessera-With-Besu.md +[highly available and run in a separate instance to Besu]: ../../how-to/Use-Privacy/Run-Tessera-With-Besu.md diff --git a/docs/Concepts/Privacy/Private-Transaction-Processing.md b/docs/Concepts/Privacy/Private-Transaction-Processing.md index 98f182a0529..4d8daadb89e 100644 --- a/docs/Concepts/Privacy/Private-Transaction-Processing.md +++ b/docs/Concepts/Privacy/Private-Transaction-Processing.md @@ -82,5 +82,5 @@ Private transaction processing is illustrated and described in the following dia is not supported. -[signed with a random key or the key specified on the command line]: ../../HowTo/Use-Privacy/Sign-Privacy-Marker-Transactions.md -[highly available and run in a separate instance to Besu]: ../../HowTo/Use-Privacy/Run-Tessera-With-Besu.md +[signed with a random key or the key specified on the command line]: ../../how-to/Use-Privacy/Sign-Privacy-Marker-Transactions.md +[highly available and run in a separate instance to Besu]: ../../how-to/Use-Privacy/Run-Tessera-With-Besu.md diff --git a/docs/Concepts/Privacy/Private-Transactions.md b/docs/Concepts/Privacy/Private-Transactions.md index d5ebb67a974..0e5ab6d013f 100644 --- a/docs/Concepts/Privacy/Private-Transactions.md +++ b/docs/Concepts/Privacy/Private-Transactions.md @@ -35,7 +35,7 @@ not the private transaction itself. or deliberately can cause performance issues in privacy-enabled networks. Ensure your network has a mechanism to [establish trust offchain](Privacy-Overview.md#privacy-enabled-networks). -You can [create and send private transactions](../../HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md). +You can [create and send private transactions](../../private-networks/how-to/send-transactions/private-transactions.md). ## Besu and Tessera keys @@ -114,7 +114,7 @@ You can manage private nonces in multiple ways: You must wait until the private transaction's corresponding PMT is included in a block. * Manage the nonce yourself, by keeping track of and providing the nonce at each call. - We recommend this if you're [sending many transactions that are independent of each other](../../HowTo/Send-Transactions/Concurrent-Private-Transactions.md). + We recommend this if you're [sending many transactions that are independent of each other](../../private-networks/how-to/send-transactions/concurrent-private-transactions.md). !!! note diff --git a/docs/Concepts/Protocol-Upgrades.md b/docs/Concepts/Protocol-Upgrades.md index 2c0fa731264..515519c823a 100644 --- a/docs/Concepts/Protocol-Upgrades.md +++ b/docs/Concepts/Protocol-Upgrades.md @@ -13,7 +13,7 @@ definitions are in Hyperledger Besu. Upgrading your Besu client applies the netw For private networks, all network participants must agree on the protocol upgrades and then coordinate the network upgrades. The genesis file specifies the [milestone block](../Reference/Config-Items.md#milestone-blocks) at which to apply the -[protocol upgrade](../HowTo/Upgrade/Upgrade-Protocol.md). +[protocol upgrade](../how-to/Upgrade/Upgrade-Protocol.md). ## Backward compatibility diff --git a/docs/Concepts/TLS.md b/docs/Concepts/TLS.md index 7432a41b9ac..41c7aae4079 100644 --- a/docs/Concepts/TLS.md +++ b/docs/Concepts/TLS.md @@ -17,6 +17,6 @@ The following diagram displays an example client and server TLS configuration. You must store private keys and certificates in password-protected PKCS12 keystore files. -Use the command line options to [enable and configure](../HowTo/Configure/TLS/Configure-TLS.md) TLS. +Use the command line options to [enable and configure](../how-to/configure/TLS/Configure-TLS.md) TLS. -[secure P2P communication]: ../HowTo/Configure/TLS/P2P-TLS.md +[secure P2P communication]: ../how-to/configure/TLS/P2P-TLS.md diff --git a/docs/Concepts/Transactions/Transaction-Pool.md b/docs/Concepts/Transactions/Transaction-Pool.md index ff2939f10f0..82f954faf74 100644 --- a/docs/Concepts/Transactions/Transaction-Pool.md +++ b/docs/Concepts/Transactions/Transaction-Pool.md @@ -17,8 +17,8 @@ Options and methods for configuring and monitoring the transaction pool include: * [`--tx-pool-retention-hours`](../../Reference/CLI/CLI-Syntax.md#tx-pool-retention-hours) command line option to specify the maximum number of hours to keep pending transactions in the transaction pool. -* [`newPendingTransactions`](../../HowTo/Interact/APIs/RPC-PubSub.md#pending-transactions) and - [`droppedPendingTransactions`](../../HowTo/Interact/APIs/RPC-PubSub.md#dropped-transactions) +* [`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 of transactions added to and dropped from the transaction pool. !!! important diff --git a/docs/Reference/API-Methods.md b/docs/Reference/API-Methods.md index 0e82831bb38..98561d8b8e8 100644 --- a/docs/Reference/API-Methods.md +++ b/docs/Reference/API-Methods.md @@ -27,7 +27,7 @@ The `ADMIN` API methods provide administrative functionality to manage your node ### `admin_addPeer` -Adds a [static node](../HowTo/Find-and-Connect/Static-Nodes.md). +Adds a [static node](../how-to/connect/static-nodes.md). !!! caution @@ -41,7 +41,7 @@ Adds a [static node](../HowTo/Find-and-Connect/Static-Nodes.md). #### Returns `result`: *boolean* - `true` if peer added or `false` if peer already a -[static node](../HowTo/Find-and-Connect/Static-Nodes.md) +[static node](../how-to/connect/static-nodes.md) !!! example @@ -208,11 +208,11 @@ Removes cache files for the specified range of blocks. * `fromBlock`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) * `toBlock`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) You can skip a parameter by using an empty string, `""`. If you specify: @@ -313,7 +313,7 @@ None * `id`: *string* - [node public key](../Concepts/Node-Keys.md#node-public-key) * `ports`: *object* - peer discovery and listening - [ports](../HowTo/Find-and-Connect/Managing-Peers.md#port-configuration) + [ports](../how-to/connect/manage-peers.md#port-configuration) * `protocols`: *object* - list of objects containing information for each Ethereum sub-protocol @@ -406,7 +406,7 @@ None * `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](../HowTo/Find-and-Connect/Managing-Peers.md#monitoring-peer-connections) +* `protocols`: *object* - [current state of peer](../how-to/connect/manage-peers.md#monitoring-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 @@ -463,7 +463,7 @@ including `difficulty` and `head` (`head` is the hash of the highest known block ### `admin_removePeer` -Removes a [static node](../HowTo/Find-and-Connect/Static-Nodes.md). +Removes a [static node](../how-to/connect/static-nodes.md). #### Parameters @@ -472,7 +472,7 @@ Removes a [static node](../HowTo/Find-and-Connect/Static-Nodes.md). #### Returns `result`: *boolean* - `true` if peer removed or `false` if peer not a -[static node](../HowTo/Find-and-Connect/Static-Nodes.md) +[static node](../how-to/connect/static-nodes.md) !!! example @@ -500,7 +500,7 @@ Removes a [static node](../HowTo/Find-and-Connect/Static-Nodes.md). ## `CLIQUE` methods -The `CLIQUE` API methods provide access to the [Clique](../HowTo/Configure/Consensus-Protocols/Clique.md) consensus engine. +The `CLIQUE` API methods provide access to the [Clique](../how-to/configure/Consensus-Protocols/Clique.md) consensus engine. !!! note @@ -552,7 +552,7 @@ Lists [signers for the specified block]. `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -596,11 +596,11 @@ Provides the following validator metrics for the specified range: #### Parameters * `fromBlockNumber`: *string* - integer representing a block number or the string tag `earliest`, as described -in [Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +in [Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) * `toBlockNumber`: *string* - integer representing a block number or one of the string tags `latest` or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) If you specify: @@ -697,7 +697,7 @@ Lists signers for the specified block. ### `clique_proposals` Returns -[current proposals](../HowTo/Configure/Consensus-Protocols/Clique.md#adding-and-removing-signers). +[current proposals](../how-to/configure/Consensus-Protocols/Clique.md#adding-and-removing-signers). #### Parameters @@ -932,7 +932,7 @@ Returns the accounts for a specified block. ### `debug_batchSendRawTransaction` -Sends a list of [signed transactions](../HowTo/Send-Transactions/Transactions.md). +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. @@ -1594,7 +1594,7 @@ Returns full trace of all invoked opcodes of all transactions included in the bl * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) * `options`: *object* - request options object with the following fields (all optional and default to `false`): @@ -1665,13 +1665,13 @@ The `EEA` API methods provide functionality for [private transactions](../Concep ### `eea_sendRawTransaction` Distributes the -[private transaction](../HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md), +[private transaction](../private-networks/how-to/send-transactions/private-transactions.md), generates the [privacy marker transaction](../Concepts/Privacy/Private-Transaction-Processing.md) and submits it to the transaction pool, and returns the transaction hash of the [privacy marker transaction](../Concepts/Privacy/Private-Transaction-Processing.md). The signed transaction passed as an input parameter includes the `privateFrom`, -[`privateFor` or `privacyGroupId`](../HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md#eea-compliant-or-besu-extended-privacy), +[`privateFor` or `privacyGroupId`](../private-networks/how-to/send-transactions/private-transactions.md#eea-compliant-or-besu-extended-privacy), and `restriction` fields. The `gas` and `gasPrice` are used by the [privacy marker transaction](../Concepts/Privacy/Private-Transaction-Processing.md) @@ -1861,7 +1861,7 @@ Invokes a contract function locally and does not change the state of the blockch You can interact with contracts using [`eth_sendRawTransaction`](#eth_sendrawtransaction) or `eth_call`. If revert reason is enabled with [`--revert-reason-enabled`](CLI/CLI-Syntax.md#revert-reason-enabled), -the `eth_call` error response includes the [revert reason](../HowTo/Send-Transactions/Revert-Reason.md). +the `eth_call` error response includes the [revert reason](../private-networks/how-to/send-transactions/revert-reason.md). #### Parameters @@ -1869,7 +1869,7 @@ the `eth_call` error response includes the [revert reason](../HowTo/Send-Transac `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) !!! note @@ -2053,7 +2053,7 @@ The `eth_estimateGas` call does not send a transaction. You must call [`eth_sendRawTransaction`](#eth_sendrawtransaction) to execute the transaction. If revert reason is enabled with [`--revert-reason-enabled`](CLI/CLI-Syntax.md#revert-reason-enabled), -the `eth_estimateGas` error response includes the [revert reason](../HowTo/Send-Transactions/Revert-Reason.md). +the `eth_estimateGas` error response includes the [revert reason](../private-networks/how-to/send-transactions/revert-reason.md). #### Parameters @@ -2166,7 +2166,7 @@ If blocks in the specified block range are not available, then only the fee hist * `newestBlock`: *string* - Integer representing the highest number block of the requested range or one of the string tags `latest`, `earliest`, or `pending`, as described in - [Block parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter). + [Block parameter](../how-to/use-besu-api/json-rpc.md#block-parameter). #### Returns @@ -2281,7 +2281,7 @@ Returns the account balance of the specified address. * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -2474,7 +2474,7 @@ Returns information about the block matching the specified block number. * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, `pending`, `finalized`, or `safe` as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) * `verbose`: *boolean* - if `true`, returns the full [transaction objects](API-Objects.md#transaction-object); if `false`, returns only the hashes of the transactions. @@ -2692,7 +2692,7 @@ Returns the number of transactions in a block matching the specified block numbe `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -2762,7 +2762,7 @@ Besu stores compiled smart contract code as a hexadecimal value. `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -3165,7 +3165,7 @@ Returns miner data for the specified block. `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -3225,7 +3225,7 @@ from untrusted sources, by using a trusted block hash. `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -3300,7 +3300,7 @@ from untrusted sources, by using a trusted block hash. ### `eth_getQuorumPayload` -When using [GoQuorum-compatible privacy](../HowTo/Use-Privacy/Use-GoQuorum-compatible-privacy.md), returns the +When using [GoQuorum-compatible privacy](../how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md), returns the [unencrypted payload from Tessera](https://docs.tessera.consensys.net/Concepts/Transaction-manager/#private-transaction-flow). #### Parameters @@ -3347,7 +3347,7 @@ Returns the value of a storage position at a specified address. `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -3510,7 +3510,7 @@ Returns transaction information for the specified block number and transaction i `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) `index`: *string* - transaction index position @@ -3725,7 +3725,7 @@ next account nonce not used by any pending transactions. `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -3788,7 +3788,7 @@ next account nonce not used by any pending transactions. Returns the receipt of a transaction by transaction hash. Receipts for pending transactions are not available. -If you enabled [revert reason](../HowTo/Send-Transactions/Revert-Reason.md), the receipt includes +If you enabled [revert reason](../private-networks/how-to/send-transactions/revert-reason.md), the receipt includes available revert reasons in the response. #### Parameters @@ -4029,7 +4029,7 @@ Returns uncle specified by block number and index. * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) * `uncleIndex`: *string* - index of the uncle @@ -4200,7 +4200,7 @@ Returns the number of uncles in a block matching the specified block number. `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -4561,7 +4561,7 @@ None ### `eth_sendRawTransaction` -Sends a [signed transaction](../HowTo/Send-Transactions/Transactions.md). +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/CLI-Syntax.md#rpc-tx-feecap) CLI option. @@ -4860,7 +4860,7 @@ Filters time out when not requested by [`eth_getFilterChanges`](#eth_getfilterch ## `IBFT` 2.0 methods -The `IBFT` API methods provide access to the [IBFT 2.0](../HowTo/Configure/Consensus-Protocols/IBFT.md) consensus engine. +The `IBFT` API methods provide access to the [IBFT 2.0](../how-to/configure/Consensus-Protocols/IBFT.md) consensus engine. !!! note @@ -4906,8 +4906,8 @@ Discards a proposal to [add or remove a validator] with the specified address. ### `ibft_getPendingVotes` -Returns [votes](../HowTo/Configure/Consensus-Protocols/IBFT.md#adding-and-removing-validators) cast in the current -[epoch](../HowTo/Configure/Consensus-Protocols/IBFT.md#genesis-file). +Returns [votes](../how-to/configure/Consensus-Protocols/IBFT.md#adding-and-removing-validators) cast in the current +[epoch](../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file). #### Parameters @@ -4960,11 +4960,11 @@ Provides the following validator metrics for the specified range: #### Parameters * `fromBlockNumber`: *string* - integer representing a block number or the string tag `earliest` as described -in [Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +in [Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) * `toBlockNumber`: *string* - integer representing a block number or one of the string tags `latest` or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) If you specify: @@ -5070,7 +5070,7 @@ Lists the validators defined in the specified block. * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -5536,7 +5536,7 @@ None ## `PERM` (Permissioning) methods The `PERM` API methods provide permissioning functionality. -Use these methods for [local permissioning](../HowTo/Limit-Access/Local-Permissioning.md) only. +Use these methods for [local permissioning](../how-to/Limit-Access/Local-Permissioning.md) only. !!! important @@ -5547,7 +5547,7 @@ Use these methods for [local permissioning](../HowTo/Limit-Access/Local-Permissi ### `perm_addAccountsToAllowlist` Adds accounts (participants) to the -[accounts permission list](../HowTo/Limit-Access/Local-Permissioning.md#account-permissioning). +[accounts permission list](../how-to/Limit-Access/Local-Permissioning.md#account-permissioning). #### Parameters @@ -5590,7 +5590,7 @@ allowlist and including invalid account addresses.) ### `perm_addNodesToAllowlist` Adds nodes to the -[nodes allowlist](../HowTo/Limit-Access/Local-Permissioning.md#node-allowlisting). +[nodes allowlist](../how-to/Limit-Access/Local-Permissioning.md#node-allowlisting). To use domain names in enode URLs, ensure you [enable DNS support](../Concepts/Node-Keys.md#domain-name-support) to avoid receiving a `request contains an invalid node` error. @@ -5640,7 +5640,7 @@ including invalid enode URLs. ### `perm_getAccountsAllowlist` Lists accounts (participants) in the -[accounts permissions list](../HowTo/Limit-Access/Local-Permissioning.md#account-permissioning). +[accounts permissions list](../how-to/Limit-Access/Local-Permissioning.md#account-permissioning). #### Parameters @@ -5680,7 +5680,7 @@ None ### `perm_getNodesAllowlist` Lists nodes in the -[nodes allowlist](../HowTo/Limit-Access/Local-Permissioning.md#node-allowlisting). +[nodes allowlist](../how-to/Limit-Access/Local-Permissioning.md#node-allowlisting). #### Parameters @@ -5756,7 +5756,7 @@ None ### `perm_removeAccountsFromAllowlist` Removes accounts (participants) from the -[accounts permissions list](../HowTo/Limit-Access/Local-Permissioning.md#account-permissioning). +[accounts permissions list](../how-to/Limit-Access/Local-Permissioning.md#account-permissioning). #### Parameters @@ -5799,7 +5799,7 @@ and including invalid account addresses.) ### `perm_removeNodesFromAllowlist` Removes nodes from the -[nodes allowlist](../HowTo/Limit-Access/Local-Permissioning.md#node-allowlisting). +[nodes allowlist](../how-to/Limit-Access/Local-Permissioning.md#node-allowlisting). #### Parameters @@ -5910,7 +5910,7 @@ For private contracts, `priv_call` is the same as [`eth_call`](#eth_call) for pu * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -6029,7 +6029,7 @@ Returns the state root of the specified privacy group at the specified block. * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -6099,7 +6099,7 @@ Deletes the specified privacy group. ### `priv_distributeRawTransaction` Distributes a signed, RLP encoded -[private transaction](../HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md). +[private transaction](../private-networks/how-to/send-transactions/private-transactions.md). !!! tip @@ -6206,7 +6206,7 @@ is stored as a hexadecimal value. * `address`: *string* - 20-byte contract address * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, -or `pending`, as described in [Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +or `pending`, as described in [Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -6782,7 +6782,7 @@ for public contracts. ## `QBFT` methods -The `QBFT` API methods provide access to the [QBFT](../HowTo/Configure/Consensus-Protocols/QBFT.md) consensus engine. +The `QBFT` API methods provide access to the [QBFT](../how-to/configure/Consensus-Protocols/QBFT.md) consensus engine. !!! note @@ -6793,7 +6793,7 @@ The `QBFT` API methods provide access to the [QBFT](../HowTo/Configure/Consensus ### `qbft_discardValidatorVote` Discards a proposal to -[add or remove a validator](../HowTo/Configure/Consensus-Protocols/QBFT.md#adding-and-removing-validators) with the specified address. +[add or remove a validator](../how-to/configure/Consensus-Protocols/QBFT.md#adding-and-removing-validators) with the specified address. #### Parameters @@ -6829,8 +6829,8 @@ Discards a proposal to ### `qbft_getPendingVotes` -Returns [votes](../HowTo/Configure/Consensus-Protocols/QBFT.md#adding-and-removing-validators) cast in the current -[epoch](../HowTo/Configure/Consensus-Protocols/QBFT.md#genesis-file). +Returns [votes](../how-to/configure/Consensus-Protocols/QBFT.md#adding-and-removing-validators) cast in the current +[epoch](../how-to/configure/Consensus-Protocols/QBFT.md#genesis-file). #### Parameters @@ -6883,11 +6883,11 @@ Provides the following validator metrics for the specified range: #### Parameters * `fromBlockNumber`: *string* - integer representing a block number or the string tag `earliest` as described -in [Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +in [Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) * `toBlockNumber`: *string* - integer representing a block number or one of the string tags `latest` or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) If you specify: @@ -6993,7 +6993,7 @@ Lists the validators defined in the specified block. * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -7030,7 +7030,7 @@ Lists the validators defined in the specified block. ### `qbft_proposeValidatorVote` Proposes to -[add or remove a validator](../HowTo/Configure/Consensus-Protocols/QBFT.md#adding-and-removing-validators) with the specified address. +[add or remove a validator](../how-to/configure/Consensus-Protocols/QBFT.md#adding-and-removing-validators) with the specified address. #### Parameters @@ -7090,14 +7090,14 @@ Provides transaction processing of [type `trace`](Trace-Types.md#trace) for the `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) #### 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/CLI-Syntax.md#revert-reason-enabled), -the returned list items include the [revert reason](../HowTo/Send-Transactions/Revert-Reason.md). +the returned list items include the [revert reason](../private-networks/how-to/send-transactions/revert-reason.md). !!! example @@ -7193,7 +7193,7 @@ Executes the given call and returns a number of possible traces for it. * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) * `options`: *array* of *strings* - list of tracing options; tracing options are [`trace`, `vmTrace`, and `stateDiff`](Trace-Types.md). Specify any @@ -7267,7 +7267,7 @@ Performs multiple call traces on top of the same block. You can trace dependent * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in - [Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) + [Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -7570,7 +7570,7 @@ Provides transaction processing tracing per block. * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter) +[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) * `options`: *array* of *strings* - list of tracing options; tracing options are [`trace`, `vmTrace`, and `stateDiff`](Trace-Types.md). Specify any @@ -7582,7 +7582,7 @@ combination of the three options including none of them. one object per transaction, in transaction execution order; if revert reason is enabled with [`--revert-reason-enabled`](CLI/CLI-Syntax.md#revert-reason-enabled), the [`trace`](Trace-Types.md#trace) list items in the returned transaction trace object include the -[revert reason](../HowTo/Send-Transactions/Revert-Reason.md). +[revert reason](../private-networks/how-to/send-transactions/revert-reason.md). !!! example @@ -7691,7 +7691,7 @@ Provides transaction processing of [type `trace`](Trace-Types.md#trace) for the `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/CLI-Syntax.md#revert-reason-enabled), -the returned list items include the [revert reason](../HowTo/Send-Transactions/Revert-Reason.md). +the returned list items include the [revert reason](../private-networks/how-to/send-transactions/revert-reason.md). !!! example @@ -8072,7 +8072,7 @@ The result value is a [Keccak-256](https://keccak.team/keccak.html) hash, not th ### `rpc_modules` -Lists [enabled APIs](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#api-methods-enabled-by-default) +Lists [enabled APIs](../how-to/use-besu-api/json-rpc.md#api-methods-enabled-by-default) and the version of each. #### Parameters @@ -8113,12 +8113,12 @@ None [schema]: https://github.com/hyperledger/besu/blob/master/ethereum/api/src/main/resources/schema.graphqls -[eth_sendRawTransaction or eth_call]: ../HowTo/Send-Transactions/Transactions.md#eth_call-or-eth_sendrawtransaction +[eth_sendRawTransaction or eth_call]: ../how-to/send-transactions.md#eth_call-or-eth_sendrawtransaction [transaction]: https://ropsten.etherscan.io/tx/0xfc766a71c406950d4a4955a340a092626c35083c64c7be907060368a5e6811d6 -[add or remove a signer with the specified address]: ../HowTo/Configure/Consensus-Protocols/Clique.md#add-and-remove-signers -[signers for the specified block]: ../HowTo/Configure/Consensus-Protocols/Clique.md#adding-and-removing-signers -[add or remove a validator]: ../HowTo/Configure/Consensus-Protocols/IBFT.md#add-and-remove-validators -[permissions configuration file]: ../HowTo/Limit-Access/Local-Permissioning.md#permissions-configuration-file +[add or remove a signer with the specified address]: ../how-to/configure/Consensus-Protocols/Clique.md#add-and-remove-signers +[signers for the specified block]: ../how-to/configure/Consensus-Protocols/Clique.md#adding-and-removing-signers +[add or remove a validator]: ../how-to/configure/Consensus-Protocols/IBFT.md#add-and-remove-validators +[permissions configuration file]: ../how-to/Limit-Access/Local-Permissioning.md#permissions-configuration-file [group of sender and recipients]: ../Concepts/Privacy/Privacy-Groups.md#enterprise-ethereum-alliance-privacy *[EEA]: Enterprise Ethereum Alliance diff --git a/docs/Reference/API-Objects.md b/docs/Reference/API-Objects.md index f4a643f41be..be371751ba6 100644 --- a/docs/Reference/API-Objects.md +++ b/docs/Reference/API-Objects.md @@ -25,7 +25,7 @@ Returned by [`eth_getBlockByHash`](API-Methods.md#eth_getblockbyhash) and | **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. | -| **extraData** | Data | Extra data field for this block. The first 32 bytes is vanity data you can set using the [`--miner-extra-data`](../Reference/CLI/CLI-Syntax.md#miner-extra-data) command line option. Stores extra data when used with [Clique](../HowTo/Configure/Consensus-Protocols/Clique.md#genesis-file) and [IBFT](../HowTo/Configure/Consensus-Protocols/IBFT.md#genesis-file). | +| **extraData** | Data | Extra data field for this block. The first 32 bytes is vanity data you can set using the [`--miner-extra-data`](../Reference/CLI/CLI-Syntax.md#miner-extra-data) command line option. Stores extra data when used with [Clique](../how-to/configure/Consensus-Protocols/Clique.md#genesis-file) and [IBFT](../how-to/configure/Consensus-Protocols/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. | @@ -49,12 +49,12 @@ If blocks in the specified block range are not available, then only the fee hist Parameter for [`eth_newFilter`](API-Methods.md#eth_newfilter), [`eth_getLogs`](API-Methods.md#eth_getlogs), and [`priv_getLogs`](API-Methods.md#priv_getlogs). -Used to [`filter logs`](../HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.md). +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](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter). Default is `latest`. | -| **toBlock** | Quantity | Tag | Optional | Integer block number or `latest`, `pending`, `earliest`. See [Block Parameter](../HowTo/Interact/APIs/Using-JSON-RPC-API.md#block-parameter). Default is `latest`. | +| **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). | @@ -264,7 +264,7 @@ Returned by [`eth_getTransactionReceipt`](API-Methods.md#eth_gettransactionrecei | **transactionHash** | Data, 32 bytes | Hash of the transaction. | | **transactionIndex** | Quantity, Integer | Index position of transaction in the block. | | **transactionType** | String | [Transaction type](../Concepts/Transactions/Transaction-Types.md). | -| **revertReason** | String | ABI-encoded string that displays the [reason for reverting the transaction](../HowTo/Send-Transactions/Revert-Reason.md). Only available if revert reason is [enabled](../Reference/CLI/CLI-Syntax.md#revert-reason-enabled). | +| **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](../Reference/CLI/CLI-Syntax.md#revert-reason-enabled). | !!!note @@ -300,7 +300,7 @@ Returned by [`priv_getTransactionReceipt`](API-Methods.md#priv_gettransactionrec | **logs** | Array | Array of [log objects](#log-object) generated by this private transaction. | | **to** | Data, 20 bytes | Address of the receiver, if sending ether, otherwise, null. | | **transactionIndex** | Quantity, Integer | Index position of transaction in the block. | -| **revertReason** | String | ABI-encoded string that displays the [reason for reverting the transaction](../HowTo/Send-Transactions/Revert-Reason.md). Only available if revert reason is [enabled](../Reference/CLI/CLI-Syntax.md#revert-reason-enabled). | +| **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](../Reference/CLI/CLI-Syntax.md#revert-reason-enabled). | | **output** | Data | RLP-encoded return value of a contract call if a value returns, otherwise, `null`. | | **commitmentHash** | Data, 32 bytes | Hash of the privacy marker transaction. | | **status** | Quantity | Either `0x1` (success) or `0x0` (failure). | diff --git a/docs/Reference/CLI/CLI-Subcommands.md b/docs/Reference/CLI/CLI-Subcommands.md index 224707845c6..d3a273c48b2 100644 --- a/docs/Reference/CLI/CLI-Subcommands.md +++ b/docs/Reference/CLI/CLI-Subcommands.md @@ -153,8 +153,8 @@ Provides password related actions. ``` Generates the hash of a given password. Include the hash in the -[credentials file](../../HowTo/Interact/APIs/Authentication.md#credentials-file) for JSON-RPC API -[authentication](../../HowTo/Interact/APIs/Authentication.md). +[credentials file](../../how-to/use-besu-api/authenticate.md#credentials-file) for JSON-RPC API +[authentication](../../how-to/use-besu-api/authenticate.md). ## `operator` @@ -178,8 +178,8 @@ Generates an [QBFT](../../Tutorials/Private-Network/Create-QBFT-Network.md) genesis file. The configuration file has two nested JSON nodes. The first is the `genesis` property defining the -[IBFT 2.0](../../HowTo/Configure/Consensus-Protocols/IBFT.md#genesis-file) or -[QBFT](../../HowTo/Configure/Consensus-Protocols/QBFT.md#genesis-file) genesis file, except for +[IBFT 2.0](../../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file) or +[QBFT](../../how-to/configure/Consensus-Protocols/QBFT.md#genesis-file) genesis file, except for the `extraData` string. The second is the `blockchain` property defining the number of key pairs to generate. @@ -243,11 +243,11 @@ Encodes the RLP hexadecimal string for use in a IBFT 2.0 or QBFT genesis file. T Supported types are: -* `IBFT_EXTRA_DATA` - The [IBFT 2.0 genesis file](../../HowTo/Configure/Consensus-Protocols/IBFT.md#genesis-file) includes -the `IBFT_EXTRA_DATA` type in the [`extraData`](../../HowTo/Configure/Consensus-Protocols/IBFT.md#extra-data) property. +* `IBFT_EXTRA_DATA` - The [IBFT 2.0 genesis file](../../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file) includes +the `IBFT_EXTRA_DATA` type in the [`extraData`](../../how-to/configure/Consensus-Protocols/IBFT.md#extra-data) property. -* `QBFT_EXTRA_DATA` - The [QBFT genesis file](../../HowTo/Configure/Consensus-Protocols/QBFT.md#genesis-file) includes - the `QBFT_EXTRA_DATA` type in the [`extraData`](../../HowTo/Configure/Consensus-Protocols/QBFT.md#extra-data) property. +* `QBFT_EXTRA_DATA` - The [QBFT genesis file](../../how-to/configure/Consensus-Protocols/QBFT.md#genesis-file) includes + the `QBFT_EXTRA_DATA` type in the [`extraData`](../../how-to/configure/Consensus-Protocols/QBFT.md#extra-data) property. ???+ summary "IBFT 2.0 extra data" @@ -340,6 +340,6 @@ The command accepts the following command line options: ``` Performs basic syntax validation of the specified -[TOML configuration file](../../HowTo/Configure/Using-Configuration-File.md). +[TOML configuration file](../../how-to/configure/configuration-file.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/docs/Reference/CLI/CLI-Syntax.md b/docs/Reference/CLI/CLI-Syntax.md index caa945a7a63..ae09f13437f 100644 --- a/docs/Reference/CLI/CLI-Syntax.md +++ b/docs/Reference/CLI/CLI-Syntax.md @@ -24,7 +24,7 @@ You can specify Besu options: For example, set `--miner-coinbase` using the `BESU_MINER_COINBASE` environment variable. -* In a [configuration file](../../HowTo/Configure/Using-Configuration-File.md). +* In a [configuration file](../../how-to/configure/configuration-file.md). If you specify an option in more than one place, the order of priority is command line, environment variable, configuration file. @@ -258,7 +258,7 @@ The default is 512. ``` A list of comma-separated [enode URLs](../../Concepts/Node-Keys.md#enode-url) for -[P2P discovery bootstrap](../../HowTo/Find-and-Connect/Bootnodes.md). +[P2P discovery bootstrap](../../private-networks/how-to/connect/bootnodes.md). When connecting to Mainnet or public testnets, the default is a predefined list of enode URLs. @@ -354,7 +354,7 @@ The default is `false`. BESU_CONFIG_FILE=/home/me/me_node/config.toml ``` -The path to the [TOML configuration file](../../HowTo/Configure/Using-Configuration-File.md). +The path to the [TOML configuration file](../../how-to/configure/configuration-file.md). The default is `none`. ### `data-path` @@ -384,7 +384,7 @@ The default is `none`. ``` 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](../../HowTo/Get-Started/Installation-Options/Run-Docker-Image.md). +`/opt/besu/database` if using the [Besu Docker image](../../get-started/install/run-docker-image.md). ### `data-storage-format` @@ -531,7 +531,7 @@ A comma-separated list of hostnames to allow for Engine API access (applies to b ```bash engine-jwt-disabled=true ``` -Disables or enables [authentication](../../HowTo/Interact/APIs/Engine-API.md#authentication) for Engine APIs. +Disables or enables [authentication](../../public-networks/how-to/use-engine-api.md#authentication) for Engine APIs. The default is `false` (authentication is enabled by default). ### `engine-jwt-secret` @@ -621,7 +621,7 @@ The default is `8551`. ethstats="Dev-Node-1:secret@127.0.0.1:3001" ``` -Reporting URL of an [Ethstats](../../HowTo/Deploy/Ethstats.md) server. +Reporting URL of an [Ethstats](../../how-to/Deploy/Ethstats.md) server. ### `ethstats-contact` @@ -681,7 +681,7 @@ Contact email address to send to the Ethstats server specified by [`--ethstats`] fast-sync-min-peers=8 ``` -The minimum number of peers required before starting [fast synchronization](../../Concepts/Node-Types.md#run-a-full-node). +The minimum number of peers required before starting [fast synchronization](../../public-networks/how-to/connect/sync-node.md#run-a-full-node). The default is 5. !!! note @@ -849,7 +849,7 @@ To allow remote connections, set to `0.0.0.0`. ``` The port (TCP) on which GraphQL HTTP listens. The default is `8547`. Ports must be -[exposed appropriately](../../HowTo/Find-and-Connect/Configuring-Ports.md). +[exposed appropriately](../../how-to/connect/configure-ports.md). ### `help` @@ -887,8 +887,8 @@ Show the help message and exit. host-allowlist=["medomain.com", "meotherdomain.com"] ``` -A comma-separated list of hostnames to [access the JSON-RPC API](../../HowTo/Interact/APIs/API.md#host-allowlist) and -[pull Besu metrics](../../HowTo/Monitor/Metrics.md). +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`. !!! important @@ -1092,7 +1092,7 @@ Categories containing `PRIVATE` track metrics when you enable ``` Enables or disables the -[metrics exporter](../../HowTo/Monitor/Metrics.md#monitor-node-performance-using-prometheus). 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 @@ -1125,7 +1125,7 @@ either Prometheus polling or Prometheus push gateway support, but not both at on ``` The host on which [Prometheus](https://prometheus.io/) accesses -[Besu metrics](../../HowTo/Monitor/Metrics.md#monitor-node-performance-using-prometheus). The +[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`. @@ -1157,9 +1157,9 @@ The default is `127.0.0.1`. ``` The port (TCP) on which [Prometheus](https://prometheus.io/) accesses -[Besu metrics](../../HowTo/Monitor/Metrics.md#monitor-node-performance-using-prometheus). The +[Besu metrics](../../how-to/monitor/metrics.md#monitor-node-performance-using-prometheus). The default is `9545`. Ports must be -[exposed appropriately](../../HowTo/Find-and-Connect/Configuring-Ports.md). +[exposed appropriately](../../how-to/connect/configure-ports.md). ### `metrics-protocol` @@ -1311,7 +1311,7 @@ The interval, in seconds, to push metrics when in `push` mode. The default is 15 The port (TCP) of the [Prometheus Push Gateway](https://github.com/prometheus/pushgateway). The default is `9001`. Ports must be -[exposed appropriately](../../HowTo/Find-and-Connect/Configuring-Ports.md). +[exposed appropriately](../../how-to/connect/configure-ports.md). ### `metrics-push-prometheus-job` @@ -1545,7 +1545,7 @@ The default is `0.0.0.0`. ``` The port of the stratum mining service. The default is `8008`. You must -[expose ports appropriately](../../HowTo/Find-and-Connect/Configuring-Ports.md). +[expose ports appropriately](../../how-to/connect/configure-ports.md). ### `min-gas-price` @@ -1578,7 +1578,7 @@ lowest value [`eth_gasPrice`](../API-Methods.md#eth_gasprice) can return. The de Wei. !!! important - In a [free gas network](../../HowTo/Configure/FreeGas.md), ensure the minimum gas price is set to zero for every node. + In a [free gas network](../../how-to/configure/FreeGas.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-Methods.md#eth_gasprice). @@ -1596,15 +1596,15 @@ Wei. nat-method="UPNP" ``` -Specify the method for handling [NAT environments](../../HowTo/Find-and-Connect/Specifying-NAT.md). +Specify the method for handling [NAT environments](../../how-to/connect/specify-nat.md). The options are: -* [`UPNP`](../../HowTo/Find-and-Connect/Specifying-NAT.md#upnp) -* [`UPNPP2PONLY`](../../HowTo/Find-and-Connect/Specifying-NAT.md#upnp) -* [`KUBERNETES`](../../HowTo/Find-and-Connect/Specifying-NAT.md#kubernetes) -* [`DOCKER`](../../HowTo/Find-and-Connect/Specifying-NAT.md#docker) -* [`AUTO`](../../HowTo/Find-and-Connect/Specifying-NAT.md#auto) -* [`NONE`](../../HowTo/Find-and-Connect/Specifying-NAT.md#none). +* [`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. @@ -1805,7 +1805,7 @@ The default is `true`. ``` The advertised host that can be used to access the node from outside the network in -[P2P communication](../../HowTo/Find-and-Connect/Configuring-Ports.md#p2p-networking). +[P2P communication](../../how-to/connect/configure-ports.md#p2p-networking). The default is `127.0.0.1`. !!! info @@ -1840,7 +1840,7 @@ The default is `127.0.0.1`. ``` The network interface on which the node listens for -[P2P communication](../../HowTo/Find-and-Connect/Configuring-Ports.md#p2p-networking). Use the +[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). @@ -1873,7 +1873,7 @@ multiple network interfaces. The default is 0.0.0.0 (all interfaces). ``` The P2P listening ports (UDP and TCP). The default is `30303`. You must -[expose ports appropriately](../../HowTo/Find-and-Connect/Configuring-Ports.md). +[expose ports appropriately](../../how-to/connect/configure-ports.md). ### `permissions-accounts-config-file` @@ -2144,7 +2144,7 @@ Enables or disables contract-based permissions-nodes-contract-version=2 ``` -Version of the EEA [node permissioning interface](../../HowTo/Limit-Access/Specify-Perm-Version.md). +Version of the EEA [node permissioning interface](../../how-to/Limit-Access/Specify-Perm-Version.md). The default is 1. ### `privacy-enabled` @@ -2208,7 +2208,7 @@ is `false`. ``` `` is the name of the private key file used to -[sign Privacy Marker Transactions](../../HowTo/Use-Privacy/Sign-Privacy-Marker-Transactions.md). +[sign Privacy Marker Transactions](../../how-to/Use-Privacy/Sign-Privacy-Marker-Transactions.md). !!! note @@ -2432,7 +2432,7 @@ The path to the file containing the password to decrypt the keystore. ``` The path to the file containing the hostnames, ports, and SHA256 certificate fingerprints of the -[authorized privacy enclave](../../HowTo/Configure/TLS/Configure-TLS.md#create-the-known-servers-file). +[authorized privacy enclave](../../how-to/configure/TLS/Configure-TLS.md#create-the-known-servers-file). ### `privacy-url` @@ -2749,7 +2749,7 @@ rejects that peer. revert-reason-enabled=true ``` -Enables or disables including the [revert reason](../../HowTo/Send-Transactions/Revert-Reason.md) in the +Enables or disables including the [revert reason](../../private-networks/how-to/send-transactions/revert-reason.md) in the transaction receipt, [`eth_estimateGas`](../API-Methods.md#eth_estimategas) error response, [`eth_call`](../API-Methods.md#eth_call) error response, and [`trace`](../Trace-Types.md#trace) response. The default is `false`. @@ -2821,8 +2821,8 @@ you must also specify the `--rpc-http-enabled` option. The available API options rpc-http-authentication-credentials-file="/home/me/me_node/auth.toml" ``` -The [credentials file](../../HowTo/Interact/APIs/Authentication.md#credentials-file) for JSON-RPC -API [authentication](../../HowTo/Interact/APIs/Authentication.md). +The [credentials file](../../how-to/use-besu-api/authenticate.md#credentials-file) for JSON-RPC +API [authentication](../../how-to/use-besu-api/authenticate.md). ### `rpc-http-authentication-enabled` @@ -2850,7 +2850,7 @@ API [authentication](../../HowTo/Interact/APIs/Authentication.md). rpc-http-authentication-enabled=true ``` -Enables or disables [authentication](../../HowTo/Interact/APIs/Authentication.md) for the HTTP JSON-RPC +Enables or disables [authentication](../../how-to/use-besu-api/authenticate.md) for the HTTP JSON-RPC service. ### `rpc-http-authentication-jwt-public-key-file` @@ -3063,7 +3063,7 @@ The maximum number of allowed HTTP JSON-RPC connections. Once this limit is reac ``` The port (TCP) on which HTTP JSON-RPC listens. The default is `8545`. You must -[expose ports appropriately](../../HowTo/Find-and-Connect/Configuring-Ports.md). +[expose ports appropriately](../../how-to/connect/configure-ports.md). ### `rpc-http-tls-ca-clients-enabled` @@ -3280,7 +3280,7 @@ The path to the file containing the password to decrypt the keystore. ``` The path to the file used to -[authenticate clients](../../HowTo/Configure/TLS/Configure-TLS.md#create-the-known-clients-file) using +[authenticate clients](../../how-to/configure/TLS/Configure-TLS.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 @@ -3417,8 +3417,8 @@ you must also specify the `--rpc-ws-enabled` option. The available API options a rpc-ws-authentication-credentials-file="/home/me/me_node/auth.toml" ``` -The path to the [credentials file](../../HowTo/Interact/APIs/Authentication.md#credentials-file) -for JSON-RPC API [authentication](../../HowTo/Interact/APIs/Authentication.md). +The path to the [credentials file](../../how-to/use-besu-api/authenticate.md#credentials-file) +for JSON-RPC API [authentication](../../how-to/use-besu-api/authenticate.md). ### `rpc-ws-authentication-enabled` @@ -3446,7 +3446,7 @@ for JSON-RPC API [authentication](../../HowTo/Interact/APIs/Authentication.md). rpc-ws-authentication-enabled=true ``` -Enables or disables [authentication](../../HowTo/Interact/APIs/Authentication.md) for the WebSocket JSON-RPC +Enables or disables [authentication](../../how-to/use-besu-api/authenticate.md) for the WebSocket JSON-RPC service. !!! note @@ -3627,7 +3627,7 @@ The maximum size in bytes for JSON-RPC WebSocket frames. If this limit is exceed ``` The port (TCP) on which WebSocket JSON-RPC listens. The default is `8546`. You must -[expose ports appropriately](../../HowTo/Find-and-Connect/Configuring-Ports.md). +[expose ports appropriately](../../how-to/connect/configure-ports.md). ### `security-module` @@ -3687,7 +3687,7 @@ The default is the node's local private key file specified using static-nodes-file="~/besudata/static-nodes.json" ``` -Static nodes JSON file containing the [static nodes](../../HowTo/Find-and-Connect/Static-Nodes.md) for this node to +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` @@ -3747,10 +3747,10 @@ The default is `false`. ``` The synchronization mode. -Use `FAST` for [fast sync](../../Concepts/Node-Types.md#fast-synchronization), `FULL` for -[full sync](../../Concepts/Node-Types.md#run-an-archive-node), `X_SNAP` for -[snap sync](../../Concepts/Node-Types.md#snap-synchronization), and `X_CHECKPOINT` for -[checkpoint sync](../../Concepts/Node-Types.md#checkpoint-synchronization). +Use `FAST` for [fast sync](../../public-networks/how-to/connect/sync-node.md#fast-synchronization), `FULL` for +[full sync](../../public-networks/how-to/connect/sync-node.md#run-an-archive-node), `X_SNAP` for +[snap sync](../../public-networks/how-to/connect/sync-node.md#snap-synchronization), and `X_CHECKPOINT` for +[checkpoint sync](../../public-networks/how-to/connect/sync-node.md#checkpoint-synchronization). * 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. @@ -3949,10 +3949,10 @@ Displays the experimental options and their descriptions, and exit. Prints version information and exit. -[push gateway integration]: ../../HowTo/Monitor/Metrics.md#running-prometheus-with-besu-in-push-mode -[accounts permissions configuration file]: ../../HowTo/Limit-Access/Local-Permissioning.md#permissions-configuration-file -[nodes permissions configuration file]: ../../HowTo/Limit-Access/Local-Permissioning.md#permissions-configuration-file +[push gateway integration]: ../../how-to/monitor/metrics.md#running-prometheus-with-besu-in-push-mode +[accounts permissions configuration file]: ../../how-to/Limit-Access/Local-Permissioning.md#permissions-configuration-file +[nodes permissions configuration file]: ../../how-to/Limit-Access/Local-Permissioning.md#permissions-configuration-file [account permissioning]: ../../Concepts/Permissioning/Permissioning-Overview.md#account-permissioning [TLS on communication with the Private Transaction Manager]: ../../Concepts/Privacy/Privacy-Overview.md#private-transaction-manager -[JWT provider's public key file]: ../../HowTo/Interact/APIs/Authentication.md#jwt-public-key-authentication +[JWT provider's public key file]: ../../how-to/use-besu-api/authenticate.md#jwt-public-key-authentication [plugin]: ../Plugin-API-Interfaces.md diff --git a/docs/Reference/Config-Items.md b/docs/Reference/Config-Items.md index 1161a6f1598..d29cce38543 100644 --- a/docs/Reference/Config-Items.md +++ b/docs/Reference/Config-Items.md @@ -4,7 +4,7 @@ description: Configuration items specified in the Hyperledger Besu genesis file # Genesis file items -The [Besu genesis file](../HowTo/Configure/Genesis-File.md) contains [network configuration items](#configuration-items) +The [Besu genesis file](../how-to/configure/Genesis-File.md) contains [network configuration items](#configuration-items) and [genesis block parameters](#genesis-block-parameters). ## Configuration items @@ -16,22 +16,22 @@ Network configuration items are specified in the genesis file in the `config` ob | Milestone blocks | [Milestone blocks for the network](#milestone-blocks). | | `chainID` | [Chain ID for the network](../Concepts/NetworkID-And-ChainID.md). | | `ethash` | Specifies network uses [Ethash](../Concepts/Consensus-Protocols/Overview-Consensus.md) and contains [`fixeddifficulty`](#fixed-difficulty). | -| `clique` | Specifies network uses [Clique](../HowTo/Configure/Consensus-Protocols/Clique.md) and contains [Clique configuration items](../HowTo/Configure/Consensus-Protocols/Clique.md#genesis-file). | -| `ibft2` | Specifies network uses [IBFT 2.0](../HowTo/Configure/Consensus-Protocols/IBFT.md) and contains [IBFT 2.0 configuration items](../HowTo/Configure/Consensus-Protocols/IBFT.md#genesis-file). | -| `qbft` | Specifies network uses [QBFT](../HowTo/Configure/Consensus-Protocols/QBFT.md) and contains [QBFT configuration items](../HowTo/Configure/Consensus-Protocols/QBFT.md#genesis-file). | -| `transitions` | Specifies block at which to [change IBFT 2.0 or QBFT validators](../HowTo/Troubleshoot/Add-Validators-Without-Voting.md). | -| `contractSizeLimit` | Maximum contract size in bytes. Specify in [free gas networks](../HowTo/Configure/FreeGas.md). The default is `24576` and the maximum size is `2147483647`. | +| `clique` | Specifies network uses [Clique](../how-to/configure/Consensus-Protocols/Clique.md) and contains [Clique configuration items](../how-to/configure/Consensus-Protocols/Clique.md#genesis-file). | +| `ibft2` | Specifies network uses [IBFT 2.0](../how-to/configure/Consensus-Protocols/IBFT.md) and contains [IBFT 2.0 configuration items](../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file). | +| `qbft` | Specifies network uses [QBFT](../how-to/configure/Consensus-Protocols/QBFT.md) and contains [QBFT configuration items](../how-to/configure/Consensus-Protocols/QBFT.md#genesis-file). | +| `transitions` | Specifies block at which to [change IBFT 2.0 or QBFT validators](../how-to/Troubleshoot/Add-Validators-Without-Voting.md). | +| `contractSizeLimit` | Maximum contract size in bytes. Specify in [free gas networks](../how-to/configure/FreeGas.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`. | | `isQuorum` | Set to `true` to allow [interoperable private transactions] between Hyperledger Besu and [GoQuorum clients] using the Tessera private transaction manager. | -| `ecCurve` | Specifies [the elliptic curve to use](../HowTo/Configure/Alternative-EC-Curves.md). Default is `secp256k1`. | +| `ecCurve` | Specifies [the elliptic curve to use](../how-to/configure/Alternative-EC-Curves.md). Default is `secp256k1`. | | `discovery` | Specifies [discovery configuration items](#discovery-configuration-items). The `discovery` object can be left empty. | ## Genesis block parameters The purpose of some genesis block parameters varies depending on the consensus protocol (Ethash, -[Clique](../HowTo/Configure/Consensus-Protocols/Clique.md), -[IBFT 2.0](../HowTo/Configure/Consensus-Protocols/IBFT.md), or -[QBFT](../HowTo/Configure/Consensus-Protocols/QBFT.md)). These parameters include: +[Clique](../how-to/configure/Consensus-Protocols/Clique.md), +[IBFT 2.0](../how-to/configure/Consensus-Protocols/IBFT.md), or +[QBFT](../how-to/configure/Consensus-Protocols/QBFT.md)). These parameters include: * `difficulty`. * `extraData`. @@ -46,7 +46,7 @@ consensus protocols. | `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](Accounts-for-Testing.md) or [contracts](../HowTo/Configure/Contracts-in-Genesis.md). | +| `alloc` | Defines [accounts with balances](Accounts-for-Testing.md) or [contracts](../how-to/configure/Contracts-in-Genesis.md). | ## Milestone blocks @@ -145,4 +145,4 @@ Anything listed in the configuration file also takes precedence. [GoQuorum clients]: https://consensys.net/docs/goquorum/en/stable/ -[interoperable private transactions]: ../HowTo/Use-Privacy/Use-GoQuorum-compatible-privacy.md +[interoperable private transactions]: ../how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md diff --git a/docs/Reference/Engine-API-Methods.md b/docs/Reference/Engine-API-Methods.md index 70e1f5dd091..d7cc7e643c8 100644 --- a/docs/Reference/Engine-API-Methods.md +++ b/docs/Reference/Engine-API-Methods.md @@ -5,7 +5,7 @@ description: Engine API methods reference # Engine API methods After [The Merge](../Concepts/Merge.md), consensus and execution clients communicate with each other using the Engine API. -When running Besu as an execution client, [use these API calls](../HowTo/Interact/APIs/Engine-API.md) to communicate with a consensus client. +When running Besu as an execution client, [use these API calls](../public-networks/how-to/use-engine-api.md) to communicate with a consensus client. See the [Ethereum Engine API specification](https://github.com/ethereum/execution-apis/blob/main/src/engine/specification.md) for more information. diff --git a/docs/Reference/Trace-Types.md b/docs/Reference/Trace-Types.md index 200a2fd2546..c68456b7244 100644 --- a/docs/Reference/Trace-Types.md +++ b/docs/Reference/Trace-Types.md @@ -4,7 +4,7 @@ description: Transaction trace types # Transaction trace types -When [tracing transactions](../HowTo/Troubleshoot/Trace-Transactions.md), the trace type options are +When [tracing transactions](../how-to/Troubleshoot/Trace-Transactions.md), the trace type options are [`trace`](#trace), [`vmTrace`](#vmtrace), and [`stateDiff`](#statediff). ## trace @@ -156,7 +156,7 @@ An absent value is distinct from zero when creating accounts or clearing storage ## Applicable API methods The trace options `trace`, `vmTrace`, and `stateDiff` are available for the following -[ad-hoc tracing API methods](../HowTo/Troubleshoot/Trace-Transactions.md#ad-hoc-tracing-apis): +[ad-hoc tracing API methods](../how-to/Troubleshoot/Trace-Transactions.md#ad-hoc-tracing-apis): * [`trace_call`](API-Methods.md#trace_call) * [`trace_callMany`](API-Methods.md#trace_callmany) @@ -164,7 +164,7 @@ The trace options `trace`, `vmTrace`, and `stateDiff` are available for the foll * [`trace_replayBlockTransactions`](API-Methods.md#trace_replayblocktransactions) Only the `trace` option is available for the following -[transaction-trace filtering API methods](../HowTo/Troubleshoot/Trace-Transactions.md#transaction-trace-filtering-apis): +[transaction-trace filtering API methods](../how-to/Troubleshoot/Trace-Transactions.md#transaction-trace-filtering-apis): * [`trace_block`](API-Methods.md#trace_block) * [`trace_filter`](API-Methods.md#trace_filter) diff --git a/docs/Tutorials/Developer-Quickstart.md b/docs/Tutorials/Developer-Quickstart.md index 9bc34d8b8ca..a82794e07b0 100644 --- a/docs/Tutorials/Developer-Quickstart.md +++ b/docs/Tutorials/Developer-Quickstart.md @@ -6,7 +6,7 @@ description: Rapidly generate local blockchain networks. # Developer Quickstart The Quorum Developer Quickstart uses the Hyperledger Besu Docker image to run a private -[IBFT 2.0](../HowTo/Configure/Consensus-Protocols/IBFT.md) network of Besu nodes managed by Docker Compose. +[IBFT 2.0](../how-to/configure/Consensus-Protocols/IBFT.md) network of Besu nodes managed by Docker Compose. !!! warning @@ -41,7 +41,7 @@ To create the tutorial `docker-compose` files and artifacts, run: npx quorum-dev-quickstart ``` -Follow the prompts displayed to run Hyperledger Besu and [logging with ELK](../HowTo/Monitor/Elastic-Stack.md). +Follow the prompts displayed to run Hyperledger Besu and [logging with ELK](../private-networks/how-to/monitor/elastic-stack.md). Enter `n` for [Codefi Orchestrate](https://docs.orchestrate.consensys.net/en/stable/) and [private transactions](../Concepts/Privacy/Privacy-Overview.md). @@ -92,13 +92,13 @@ When execution is successfully finished, the process lists the available service - 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](../HowTo/Monitor/Metrics.md). + [Read more about metrics](../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](../HowTo/Monitor/Metrics.md). + [Read more about metrics](../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](../HowTo/Monitor/Elastic-Stack.md). + [Read more about log management](../private-networks/how-to/monitor/elastic-stack.md). To display the list of endpoints again, run: @@ -135,7 +135,7 @@ You can directly access these tools from your browser at the addresses displayed - [Grafana dashboard](http://localhost:3000/d/XE4V0WGZz/besu-overview?orgId=1&refresh=10s&from=now-30m&to=now&var-system=All) For more details on how to configure and use these tools for your own nodes, see the -[performances monitoring documentation](../HowTo/Monitor/Metrics.md), +[performances monitoring documentation](../how-to/monitor/metrics.md), [Prometheus documentation](https://prometheus.io/docs/introduction/overview/) and [Grafana documentation](https://grafana.com/docs/). @@ -599,9 +599,9 @@ or via [RPC API calls](../Reference/API-Methods.md#perm_addnodestoallowlist). -[bootnodes]: ../HowTo/Deploy/Bootnodes.md -[permissions file]: ../HowTo/Limit-Access/Local-Permissioning.md -[static nodes]: ../HowTo/Find-and-Connect/Static-Nodes.md -[allow list]: ../HowTo/Limit-Access/Local-Permissioning.md#node-allowlisting +[bootnodes]: ../how-to/Deploy/Bootnodes.md +[permissions file]: ../how-to/Limit-Access/Local-Permissioning.md +[static nodes]: ../how-to/connect/static-nodes.md +[allow list]: ../how-to/Limit-Access/Local-Permissioning.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/docs/Tutorials/Kubernetes/Deploy-Charts.md b/docs/Tutorials/Kubernetes/Deploy-Charts.md index 968d279e32e..5ca129e3bc7 100644 --- a/docs/Tutorials/Kubernetes/Deploy-Charts.md +++ b/docs/Tutorials/Kubernetes/Deploy-Charts.md @@ -400,7 +400,7 @@ first validator was spun up, before the logs display blocks being created. ### 7. Add/Remove additional validators to the validator pool To add (or remove) more validators to the initial validator pool, you need to deploy a node such as an RPC node (step 8) -and then [vote](../../HowTo/Configure/Consensus-Protocols/IBFT.md#add-and-remove-validators) that node in. The vote API +and then [vote](../../how-to/configure/Consensus-Protocols/IBFT.md#add-and-remove-validators) that node in. The vote API call must be made on a majority of the existing pool and the new node will then become a validator. Please refer to the [Ingress Section](#8-connecting-to-the-node-from-your-local-machine-via-an-ingress) for details on diff --git a/docs/Tutorials/Kubernetes/Nat-Manager-Kubernetes.md b/docs/Tutorials/Kubernetes/Nat-Manager-Kubernetes.md index b88d111959d..ab8af514f1b 100644 --- a/docs/Tutorials/Kubernetes/Nat-Manager-Kubernetes.md +++ b/docs/Tutorials/Kubernetes/Nat-Manager-Kubernetes.md @@ -4,19 +4,19 @@ description: Tutorial to configure Kubernetes mode for Hyperledger Besu Nat Mana # Configure Kubernetes mode in NAT Manager -Use [`--nat-method=AUTO`](../../HowTo/Find-and-Connect/Specifying-NAT.md#auto) or -[`--nat-method=KUBERNETES`](../../HowTo/Find-and-Connect/Specifying-NAT.md#kubernetes) +Use [`--nat-method=AUTO`](../../how-to/connect/specify-nat.md#auto) or +[`--nat-method=KUBERNETES`](../../how-to/connect/specify-nat.md#kubernetes) CLI options to let the Besu node automatically configure its IP address and ports. -Use mode [`--nat-method=NONE`](../../HowTo/Find-and-Connect/Specifying-NAT.md#none) to be able to +Use mode [`--nat-method=NONE`](../../how-to/connect/specify-nat.md#none) to be able to set your Besu ports and IP address manually. -Default mode is [`AUTO`](../../HowTo/Find-and-Connect/Specifying-NAT.md#auto) but Besu will -fallback to [`NONE`](../../HowTo/Find-and-Connect/Specifying-NAT.md#none) +Default mode is [`AUTO`](../../how-to/connect/specify-nat.md#auto) but Besu will +fallback to [`NONE`](../../how-to/connect/specify-nat.md#none) mode if automatic configuration fails. !!!example - The following log shows fallback to [`NONE`](../../HowTo/Find-and-Connect/Specifying-NAT.md#none) + The following log shows fallback to [`NONE`](../../how-to/connect/specify-nat.md#none) mode after an automatic detection failure. ``` @@ -184,7 +184,7 @@ Possible errors messages for Kubernetes automatic detection failure: to retrieve IP address and ports from the load balancer. - **Fix:** Give it the required permissions using [Role-based access control](https://kubernetes.io/docs/reference/access-authn-authz/rbac/). - If you can't manage permissions, define the IP address and ports manually with [`NONE`](../../HowTo/Find-and-Connect/Specifying-NAT.md#none) mode + If you can't manage permissions, define the IP address and ports manually with [`NONE`](../../how-to/connect/specify-nat.md#none) mode !!!example "Example error log" diff --git a/docs/Tutorials/Merge-Testnet.md b/docs/Tutorials/Merge-Testnet.md index 9b73a8ce56c..a9b6fcc239a 100644 --- a/docs/Tutorials/Merge-Testnet.md +++ b/docs/Tutorials/Merge-Testnet.md @@ -11,13 +11,13 @@ as a [consensus client](../Concepts/Merge.md#consensus-clients) on the ## 1. Install Besu and Teku -Install [Besu](../HowTo/Get-Started/Installation-Options/Install-Binaries.md) and +Install [Besu](../get-started/install/binary-distribution.md) and [Teku](https://docs.teku.consensys.net/en/stable/HowTo/Get-Started/Installation-Options/Install-Binaries/). Ensure you meet the prerequisites for the installation option you use. For example, you must have Java 11+ if using the Besu and Teku binary distributions. -Ensure you meet the [system requirements for Besu on Mainnet](../HowTo/Get-Started/System-Requirements). +Ensure you meet the [system requirements for Besu on Mainnet](../get-started/System-Requirements). ## 2. Generate the shared secret @@ -29,7 +29,7 @@ openssl rand -hex 32 | tr -d "\n" > jwtsecret.hex You will specify `jwtsecret.hex` when starting both Besu and Teku. This is a shared JWT secret the clients use to authenticate each other when using the -[Engine API](../HowTo/Interact/APIs/Engine-API.md). +[Engine API](../public-networks/how-to/use-engine-api.md). ## 3. Generate validator keys and stake ETH diff --git a/docs/Tutorials/Permissioning/Create-Permissioned-Network.md b/docs/Tutorials/Permissioning/Create-Permissioned-Network.md index 0cc3c3e45d2..73cfdfb6085 100644 --- a/docs/Tutorials/Permissioning/Create-Permissioned-Network.md +++ b/docs/Tutorials/Permissioning/Create-Permissioned-Network.md @@ -14,7 +14,7 @@ uses the [IBFT 2.0 proof of authority consensus protocol]. ## Prerequisites -- [Hyperledger Besu](../../HowTo/Get-Started/Installation-Options/Install-Binaries.md) +- [Hyperledger Besu](../../get-started/install/binary-distribution.md) - [curl (or similar Web service client)](https://curl.haxx.se/download.html) ## Steps @@ -41,7 +41,7 @@ Permissioned-Network/ ### 2. Create the configuration file The configuration file defines the -[IBFT 2.0 genesis file](../../HowTo/Configure/Consensus-Protocols/IBFT.md#genesis-file) and the +[IBFT 2.0 genesis file](../../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file) and the number of node key pairs to generate. The configuration file has two nested JSON nodes. The first is the `genesis` property defining @@ -164,7 +164,7 @@ Permissioned-Network/ ### 6. Create the permissions configuration file -The [permissions configuration file](../../HowTo/Limit-Access/Local-Permissioning.md#permissions-configuration-file) +The [permissions configuration file](../../how-to/Limit-Access/Local-Permissioning.md#permissions-configuration-file) defines the nodes and accounts allowlists. Copy the following permissions configuration to a file called `permissions_config.toml` and save a copy in the @@ -476,5 +476,5 @@ window. To restart the permissioned network in the future, start from [step 5](#5-start-node-1). -[IBFT 2.0 proof of authority consensus protocol]: ../../HowTo/Configure/Consensus-Protocols/IBFT.md +[IBFT 2.0 proof of authority consensus protocol]: ../../how-to/configure/Consensus-Protocols/IBFT.md [Private network example tutorial]: ../Developer-Quickstart.md#create-a-transaction-using-metamask diff --git a/docs/Tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md b/docs/Tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md index 232e58d5888..b3e73a533eb 100644 --- a/docs/Tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md +++ b/docs/Tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md @@ -45,7 +45,7 @@ Permissioned-Network/ ### 2. Create the configuration file The configuration file defines the -[IBFT 2.0 genesis file](../../HowTo/Configure/Consensus-Protocols/IBFT.md#genesis-file) and the +[IBFT 2.0 genesis file](../../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file) and the number of node key pairs to generate. The configuration file has two nested JSON nodes. The first is the `genesis` property defining @@ -261,7 +261,7 @@ On the command line: [`--permissions-nodes-contract-enabled`](../../Reference/CLI/CLI-Syntax.md#permissions-nodes-contract-enabled). * Set the address of the Node Ingress contract in the genesis file using [`--permissions-nodes-contract-address`](../../Reference/CLI/CLI-Syntax.md#permissions-nodes-contract-address). -* Set the version of the [permissioning contract interface](../../HowTo/Limit-Access/Specify-Perm-Version.md) +* Set the version of the [permissioning contract interface](../../how-to/Limit-Access/Specify-Perm-Version.md) using [`--permissions-nodes-contract-version`](../../Reference/CLI/CLI-Syntax.md#permissions-nodes-contract-version). * Enable the JSON-RPC API using [`--rpc-http-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled). @@ -395,6 +395,6 @@ In the [permissioning management dapp started in step 12](#12-start-the-permissi add [Node-1, Node-2, Node-3, and Node-4 to the allowlist]. -[Node-1, Node-2, Node-3, and Node-4 to the allowlist]: ../../HowTo/Limit-Access/Updating-Permission-Lists.md#update-nodes-allowlist -[admin account]: ../../HowTo/Limit-Access/Updating-Permission-Lists.md#update-nodes-allowlist -[IBFT 2.0 proof of authority (PoA)]: ../../HowTo/Configure/Consensus-Protocols/IBFT.md +[Node-1, Node-2, Node-3, and Node-4 to the allowlist]: ../../how-to/Limit-Access/Updating-Permission-Lists.md#update-nodes-allowlist +[admin account]: ../../how-to/Limit-Access/Updating-Permission-Lists.md#update-nodes-allowlist +[IBFT 2.0 proof of authority (PoA)]: ../../how-to/configure/Consensus-Protocols/IBFT.md diff --git a/docs/Tutorials/Permissioning/Upgrade-Permissioning-Contract.md b/docs/Tutorials/Permissioning/Upgrade-Permissioning-Contract.md index fbef40c8be9..f3471644102 100644 --- a/docs/Tutorials/Permissioning/Upgrade-Permissioning-Contract.md +++ b/docs/Tutorials/Permissioning/Upgrade-Permissioning-Contract.md @@ -157,7 +157,7 @@ The dapp displays at [`http://localhost:3000`](http://localhost:3000). ### 7. Restart Besu nodes Restart the Besu nodes with the updated [`NodeIngress`](#5-deploy-the-contracts) -contract address and [permissioning contract interface](../../HowTo/Limit-Access/Specify-Perm-Version.md) +contract address and [permissioning contract interface](../../how-to/Limit-Access/Specify-Perm-Version.md) version 2. !!! example @@ -166,4 +166,4 @@ version 2. ``` -[nodes to the allowlist]: ../../HowTo/Limit-Access/Updating-Permission-Lists.md#update-nodes-allowlist +[nodes to the allowlist]: ../../how-to/Limit-Access/Updating-Permission-Lists.md#update-nodes-allowlist diff --git a/docs/Tutorials/Privacy/Configuring-Multi-Tenancy.md b/docs/Tutorials/Privacy/Configuring-Multi-Tenancy.md index d5c752ed887..1ef56f63b1a 100644 --- a/docs/Tutorials/Privacy/Configuring-Multi-Tenancy.md +++ b/docs/Tutorials/Privacy/Configuring-Multi-Tenancy.md @@ -176,12 +176,12 @@ The command line specifies privacy options: ## 6. Generate the tenant JWTs -[Generate the JWT](../../HowTo/Interact/APIs/Authentication.md#2-create-the-jwt) for each tenant +[Generate the JWT](../../how-to/use-besu-api/authenticate.md#2-create-the-jwt) for each tenant and specify the [tenant's Tessera public key](#2-generate-tessera-keys) in the `privacyPublicKey` field. Ensure you apply the appropriate -[JSON-RPC API permissions](../../HowTo/Interact/APIs/Authentication.md#json-rpc-permissions) to the +[JSON-RPC API permissions](../../how-to/use-besu-api/authenticate.md#json-rpc-permissions) to the token. For example, ensure you enable the `PRIV` and `EEA` APIs for privacy. !!! note @@ -192,10 +192,10 @@ token. For example, ensure you enable the `PRIV` and `EEA` APIs for privacy. [Use the authentication token to make requests]. -[JWT public key authentication]: ../../HowTo/Interact/APIs/Authentication.md#jwt-public-key-authentication -[username and password authentication]: ../../HowTo/Interact/APIs/Authentication.md#username-and-password-authentication -[generate the private and public key pair]: ../../HowTo/Interact/APIs/Authentication.md#1-generate-a-private-and-public-key-pair -[Use the authentication token to make requests]: ../../HowTo/Interact/APIs/Authentication.md#using-an-authentication-token-to-make-requests +[JWT public key authentication]: ../../how-to/use-besu-api/authenticate.md#jwt-public-key-authentication +[username and password authentication]: ../../how-to/use-besu-api/authenticate.md#username-and-password-authentication +[generate the private and public key pair]: ../../how-to/use-besu-api/authenticate.md#1-generate-a-private-and-public-key-pair +[Use the authentication token to make requests]: ../../how-to/use-besu-api/authenticate.md#using-an-authentication-token-to-make-requests [Quorum to Tessera (Q2T)]: https://docs.tessera.consensys.net/Concepts/TesseraAPI/#quorum-to-tessera-api *[JWT]: JSON Web Token diff --git a/docs/Tutorials/Privacy/Configuring-Privacy.md b/docs/Tutorials/Privacy/Configuring-Privacy.md index 52e6189cdf8..4e070fe8e9d 100644 --- a/docs/Tutorials/Privacy/Configuring-Privacy.md +++ b/docs/Tutorials/Privacy/Configuring-Privacy.md @@ -353,7 +353,7 @@ The command line specifies privacy options: * [`--rpc-http-api`](../../Reference/CLI/CLI-Syntax.md#rpc-http-api) includes `EEA` and `PRIV` in the list of JSON-RPC APIs to enable privacy JSON-RPC API methods. * [`--min-gas-price`](../../Reference/CLI/CLI-Syntax.md#min-gas-price) is 0 for a - [free gas network](../../HowTo/Configure/FreeGas.md). + [free gas network](../../how-to/configure/FreeGas.md). !!! note diff --git a/docs/Tutorials/Privacy/Privacy-Example.md b/docs/Tutorials/Privacy/Privacy-Example.md index e591ef7837e..edaea8cb0a1 100644 --- a/docs/Tutorials/Privacy/Privacy-Example.md +++ b/docs/Tutorials/Privacy/Privacy-Example.md @@ -46,7 +46,7 @@ To create the docker-compose file and artifacts, run: npx quorum-dev-quickstart ``` -Follow the prompts displayed to run Hyperledger Besu, private transactions, and [logging with ELK](../../HowTo/Monitor/Elastic-Stack.md). +Follow the prompts displayed to run Hyperledger Besu, private transactions, and [logging with ELK](../../private-networks/how-to/monitor/elastic-stack.md). Enter `n` for [Codefi Orchestrate](https://docs.orchestrate.consensys.net/en/stable/). ## Start the network diff --git a/docs/Tutorials/Private-Network/Adding-removing-IBFT-validators.md b/docs/Tutorials/Private-Network/Adding-removing-IBFT-validators.md index 397b13d73a5..c93ee072185 100644 --- a/docs/Tutorials/Private-Network/Adding-removing-IBFT-validators.md +++ b/docs/Tutorials/Private-Network/Adding-removing-IBFT-validators.md @@ -5,7 +5,7 @@ description: Adding and removing IBFT 2.0 validators # Add and remove IBFT 2.0 validators This example walks through -[adding and removing an IBFT 2.0 validator](../../HowTo/Configure/Consensus-Protocols/IBFT.md#add-and-remove-validators). +[adding and removing an IBFT 2.0 validator](../../how-to/configure/Consensus-Protocols/IBFT.md#add-and-remove-validators). ## Prerequisites diff --git a/docs/Tutorials/Private-Network/Create-IBFT-Network.md b/docs/Tutorials/Private-Network/Create-IBFT-Network.md index c138c6d7f0d..93e3dfcf88f 100644 --- a/docs/Tutorials/Private-Network/Create-IBFT-Network.md +++ b/docs/Tutorials/Private-Network/Create-IBFT-Network.md @@ -5,7 +5,7 @@ description: Hyperledger Besu private network using the IBFT 2.0 (Proof of Autho # Create a private network using the IBFT 2.0 (proof of authority) consensus protocol A private network provides a configurable network for testing. This private network uses the -[IBFT 2.0 (proof of authority) consensus protocol](../../HowTo/Configure/Consensus-Protocols/IBFT.md). +[IBFT 2.0 (proof of authority) consensus protocol](../../how-to/configure/Consensus-Protocols/IBFT.md). !!!important @@ -17,7 +17,7 @@ A private network provides a configurable network for testing. This private netw ## Prerequisites -* [Hyperledger Besu](../../HowTo/Get-Started/Installation-Options/Install-Binaries.md) +* [Hyperledger Besu](../../get-started/install/binary-distribution.md) * [Curl (or similar webservice client)](https://curl.haxx.se/download.html). ## Steps @@ -47,7 +47,7 @@ IBFT-Network/ ### 2. Create a configuration file The configuration file defines the -[IBFT 2.0 genesis file](../../HowTo/Configure/Consensus-Protocols/IBFT.md#genesis-file) and the +[IBFT 2.0 genesis file](../../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file) and the number of node key pairs to generate. The configuration file has two nested JSON nodes. The first is the `genesis` property defining @@ -377,7 +377,7 @@ When finished using the private network, stop all nodes using ++ctrl+c++ in each [6. Start First Node as Bootnode](#6-start-the-first-node-as-the-bootnode). -[IBFT 2.0 (proof of authority)consensus protocol]: ../../HowTo/Configure/Consensus-Protocols/IBFT.md +[IBFT 2.0 (proof of authority)consensus protocol]: ../../how-to/configure/Consensus-Protocols/IBFT.md *[Byzantine fault tolerant]: Ability to function correctly and reach consensus despite nodes failing or propagating incorrect information to peers. diff --git a/docs/Tutorials/Private-Network/Create-Private-Clique-Network.md b/docs/Tutorials/Private-Network/Create-Private-Clique-Network.md index bb6d6c9d9de..8b409f75795 100644 --- a/docs/Tutorials/Private-Network/Create-Private-Clique-Network.md +++ b/docs/Tutorials/Private-Network/Create-Private-Clique-Network.md @@ -14,7 +14,7 @@ A private network provides a configurable network for testing. This private netw ## Prerequisites -* [Hyperledger Besu](../../HowTo/Get-Started/Installation-Options/Install-Binaries.md) +* [Hyperledger Besu](../../get-started/install/binary-distribution.md) * [Curl (or similar webservice client)](https://curl.haxx.se/download.html). ## Steps @@ -65,7 +65,7 @@ write the node address to the specified file (`node1Address` in this example). The genesis file defines the genesis block of the blockchain (that is, the start of the blockchain). The -[Clique genesis file](../../HowTo/Configure/Consensus-Protocols/Clique.md#genesis-file) includes +[Clique genesis file](../../how-to/configure/Consensus-Protocols/Clique.md#genesis-file) includes the address of Node-1 as the initial signer in the `extraData` field. All nodes in a network must use the same genesis file. @@ -273,5 +273,5 @@ When finished using the private network, stop all nodes using ++ctrl+c++ in each [4. Start First Node as Bootnode](#4-start-first-node-as-bootnode). -[Clique (proof of authority) consensus protocol]: ../../HowTo/Configure/Consensus-Protocols/Clique.md -[Clique API to add]: ../../HowTo/Configure/Consensus-Protocols/Clique.md#adding-and-removing-signers +[Clique (proof of authority) consensus protocol]: ../../how-to/configure/Consensus-Protocols/Clique.md +[Clique API to add]: ../../how-to/configure/Consensus-Protocols/Clique.md#adding-and-removing-signers diff --git a/docs/Tutorials/Private-Network/Create-Private-Network.md b/docs/Tutorials/Private-Network/Create-Private-Network.md index 72a3d92a028..d9e2a2c9355 100644 --- a/docs/Tutorials/Private-Network/Create-Private-Network.md +++ b/docs/Tutorials/Private-Network/Create-Private-Network.md @@ -17,7 +17,7 @@ public testnets. ## Prerequisites -* [Hyperledger Besu](../../HowTo/Get-Started/Installation-Options/Install-Binaries.md) +* [Hyperledger Besu](../../get-started/install/binary-distribution.md) * [Curl (or similar webservice client)](https://curl.haxx.se/download.html). ## Steps @@ -212,12 +212,12 @@ Import accounts to MetaMask and send transactions as described in the [private key management](../../HowTo/Send-Transactions/Account-Management.md). Send transactions using `eth_sendRawTransaction` to -[send ether or, deploy or invoke contracts](../../HowTo/Send-Transactions/Transactions.md). +[send ether or, deploy or invoke contracts](../../how-to/send-transactions.md). -Use the [JSON-RPC API](../../HowTo/Interact/APIs/Using-JSON-RPC-API.md). +Use the [JSON-RPC API](../../how-to/use-besu-api/json-rpc.md). Start a node with the [`--rpc-ws-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-enabled) option -and use the [RPC Pub/Sub API](../../HowTo/Interact/APIs/RPC-PubSub.md). +and use the [RPC Pub/Sub API](../../how-to/use-besu-api/rpc-pubsub.md). ## Stop the nodes diff --git a/docs/Tutorials/Private-Network/Create-QBFT-Network.md b/docs/Tutorials/Private-Network/Create-QBFT-Network.md index b56a8aeda4e..6c40f63bd13 100644 --- a/docs/Tutorials/Private-Network/Create-QBFT-Network.md +++ b/docs/Tutorials/Private-Network/Create-QBFT-Network.md @@ -5,7 +5,7 @@ description: Hyperledger Besu private network using the QBFT (proof of authority # Create a private network using the QBFT (proof of authority) consensus protocol A private network provides a configurable network for testing. This private network uses the -[QBFT (proof of authority) consensus protocol](../../HowTo/Configure/Consensus-Protocols/QBFT.md). +[QBFT (proof of authority) consensus protocol](../../how-to/configure/Consensus-Protocols/QBFT.md). The QBFT network in this tutorial implements the [block header validator selection method] to manage validators. For a tutorial on how to implement the [contract validator selection method], follow the @@ -21,7 +21,7 @@ steps in the [example smart contract repository]. ## Prerequisites -* [Hyperledger Besu](../../HowTo/Get-Started/Installation-Options/Install-Binaries.md) +* [Hyperledger Besu](../../get-started/install/binary-distribution.md) * [Curl (or similar webservice client)](https://curl.haxx.se/download.html). ## Steps @@ -51,7 +51,7 @@ QBFT-Network/ ### 2. Create a configuration file The configuration file defines the -[QBFT genesis file](../../HowTo/Configure/Consensus-Protocols/QBFT.md#genesis-file) and the +[QBFT genesis file](../../how-to/configure/Consensus-Protocols/QBFT.md#genesis-file) and the number of node key pairs to generate. The configuration file has two nested JSON nodes. The first is the `genesis` property defining @@ -378,9 +378,9 @@ When finished using the private network, stop all nodes using ++ctrl+c++ in each [6. Start First Node as Bootnode](#6-start-the-first-node-as-the-bootnode). -[block header validator selection method]: ../../HowTo/Configure/Consensus-Protocols/QBFT.md#add-and-remove-validators-using-block-headers -[contract validator selection method]: ../../HowTo/Configure/Consensus-Protocols/QBFT.md#add-and-remove-validators-using-a-smart-contract +[block header validator selection method]: ../../how-to/configure/Consensus-Protocols/QBFT.md#add-and-remove-validators-using-block-headers +[contract validator selection method]: ../../how-to/configure/Consensus-Protocols/QBFT.md#add-and-remove-validators-using-a-smart-contract [example smart contract repository]: https://github.com/ConsenSys/validator-smart-contracts -[configuring a transition]: ../../HowTo/Configure/Consensus-Protocols/QBFT.md#transitions +[configuring a transition]: ../../how-to/configure/Consensus-Protocols/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/docs/HowTo/Get-Started/Installation-Options/Build-from-source.md b/docs/get-started/install/Build-from-source.md similarity index 86% rename from docs/HowTo/Get-Started/Installation-Options/Build-from-source.md rename to docs/get-started/install/Build-from-source.md index c666a2bb8b8..ddfaa052581 100644 --- a/docs/HowTo/Get-Started/Installation-Options/Build-from-source.md +++ b/docs/get-started/install/Build-from-source.md @@ -12,5 +12,5 @@ View the [Hyperledger Wiki] for instructions to install Hyperledger Besu from so [Hyperledger Wiki]: https://wiki.hyperledger.org/display/BESU/Building+from+source -[binary]: Install-Binaries.md -[Docker image]: Run-Docker-Image.md +[binary]: binary-distribution.md +[Docker image]: run-docker-image.md diff --git a/docs/HowTo/Get-Started/Installation-Options/Install-Binaries.md b/docs/get-started/install/binary-distribution.md similarity index 100% rename from docs/HowTo/Get-Started/Installation-Options/Install-Binaries.md rename to docs/get-started/install/binary-distribution.md diff --git a/docs/HowTo/Get-Started/Installation-Options/Options.md b/docs/get-started/install/index.md similarity index 64% rename from docs/HowTo/Get-Started/Installation-Options/Options.md rename to docs/get-started/install/index.md index c171e67b804..a48f1e08602 100644 --- a/docs/HowTo/Get-Started/Installation-Options/Options.md +++ b/docs/get-started/install/index.md @@ -7,11 +7,11 @@ description: Options for getting started with Hyperledger Besu ## New to Hyperledger Besu? -Get started with the [Developer Quickstart](../../../Tutorials/Developer-Quickstart.md). +Get started with the [Developer Quickstart](../../Tutorials/Developer-Quickstart.md). Use the quickstart to rapidly generate local blockchain networks. ## Installation options -* [Docker image](Run-Docker-Image.md) -* [Binaries](Install-Binaries.md) +* [Docker image](run-docker-image.md) +* [Binaries](binary-distribution.md) * [Build from source](Build-from-source.md) diff --git a/docs/HowTo/Get-Started/Installation-Options/Run-Docker-Image.md b/docs/get-started/install/run-docker-image.md similarity index 88% rename from docs/HowTo/Get-Started/Installation-Options/Run-Docker-Image.md rename to docs/get-started/install/run-docker-image.md index 8b3a88a069d..554da316fb6 100644 --- a/docs/HowTo/Get-Started/Installation-Options/Run-Docker-Image.md +++ b/docs/get-started/install/run-docker-image.md @@ -38,12 +38,12 @@ docker run hyperledger/besu:latest 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/CLI-Syntax.md#rpc-http-port), -[`--p2p-port`](../../../Reference/CLI/CLI-Syntax.md#p2p-port), -[`--rpc-ws-port`](../../../Reference/CLI/CLI-Syntax.md#rpc-ws-port), -[`--metrics-port`](../../../Reference/CLI/CLI-Syntax.md#metrics-port), -[`--graphql-http-port`](../../../Reference/CLI/CLI-Syntax.md#graphql-http-port), and -[`--metrics-push-port`](../../../Reference/CLI/CLI-Syntax.md#metrics-push-port) options. +[`--rpc-http-port`](../../Reference/CLI/CLI-Syntax.md#rpc-http-port), +[`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port), +[`--rpc-ws-port`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-port), +[`--metrics-port`](../../Reference/CLI/CLI-Syntax.md#metrics-port), +[`--graphql-http-port`](../../Reference/CLI/CLI-Syntax.md#graphql-http-port), and +[`--metrics-push-port`](../../Reference/CLI/CLI-Syntax.md#metrics-push-port) options. To run Besu exposing local ports for access: @@ -86,7 +86,7 @@ docker run -p :8545 -p :8546 -p :3 [`--nat-method`](../../Find-and-Connect/Specifying-NAT.md) to `NONE` or `UPNP`. You can specify -[Besu environment variables](../../../Reference/CLI/CLI-Syntax.md#besu-environment-variables) with the +[Besu environment variables](../../Reference/CLI/CLI-Syntax.md#besu-environment-variables) with the Docker image instead of the command line options. !!! example diff --git a/docs/HowTo/Backup/Backup.md b/docs/how-to/Backup/Backup.md similarity index 90% rename from docs/HowTo/Backup/Backup.md rename to docs/how-to/Backup/Backup.md index 7ce305f8fe5..07b4ed53a8e 100644 --- a/docs/HowTo/Backup/Backup.md +++ b/docs/how-to/Backup/Backup.md @@ -17,12 +17,12 @@ file under source control. If installed locally, the default data location is the Besu installation directory. We recommend mounting a -[separate volume to store data](../Get-Started/Installation-Options/Run-Docker-Image.md#starting-besu). Use the +[separate volume to store data](../../get-started/install/run-docker-image.md#starting-besu). Use the [`--data-path`](../../Reference/CLI/CLI-Syntax.md#data-path) command line option to pass the path to Besu. The default data location is the Besu installation directory, or `/opt/besu/database` if using the -[Besu Docker image](../Get-Started/Installation-Options/Run-Docker-Image.md). +[Besu Docker image](../../get-started/install/run-docker-image.md). Having some data reduces the time to synchronize a new node. You can perform periodic backups of the data directory and send the data to your preferred backup mechanism. For example, `cron` job and diff --git a/docs/HowTo/Deploy/Ansible.md b/docs/how-to/Deploy/Ansible.md similarity index 100% rename from docs/HowTo/Deploy/Ansible.md rename to docs/how-to/Deploy/Ansible.md diff --git a/docs/HowTo/Deploy/Bootnodes.md b/docs/how-to/Deploy/Bootnodes.md similarity index 100% rename from docs/HowTo/Deploy/Bootnodes.md rename to docs/how-to/Deploy/Bootnodes.md diff --git a/docs/HowTo/Deploy/Cloud.md b/docs/how-to/Deploy/Cloud.md similarity index 100% rename from docs/HowTo/Deploy/Cloud.md rename to docs/how-to/Deploy/Cloud.md diff --git a/docs/HowTo/Deploy/Ethstats.md b/docs/how-to/Deploy/Ethstats.md similarity index 100% rename from docs/HowTo/Deploy/Ethstats.md rename to docs/how-to/Deploy/Ethstats.md diff --git a/docs/HowTo/Deploy/Kubernetes.md b/docs/how-to/Deploy/Kubernetes.md similarity index 100% rename from docs/HowTo/Deploy/Kubernetes.md rename to docs/how-to/Deploy/Kubernetes.md diff --git a/docs/HowTo/Deploy/Production.md b/docs/how-to/Deploy/Production.md similarity index 100% rename from docs/HowTo/Deploy/Production.md rename to docs/how-to/Deploy/Production.md diff --git a/docs/HowTo/Deploy/Validators.md b/docs/how-to/Deploy/Validators.md similarity index 95% rename from docs/HowTo/Deploy/Validators.md rename to docs/how-to/Deploy/Validators.md index c5999085d4a..d7b39d15e3e 100644 --- a/docs/HowTo/Deploy/Validators.md +++ b/docs/how-to/Deploy/Validators.md @@ -38,4 +38,4 @@ If you remove a validator that is also a bootnode, ensure there are enough remai the network. -[vote validators in or out of the validator pool]: ../Configure/Consensus-Protocols/IBFT.md#adding-and-removing-validators +[vote validators in or out of the validator pool]: ../configure/Consensus-Protocols/IBFT.md#adding-and-removing-validators diff --git a/docs/HowTo/Develop-Dapps/Client-Libraries.md b/docs/how-to/Develop-Dapps/Client-Libraries.md similarity index 88% rename from docs/HowTo/Develop-Dapps/Client-Libraries.md rename to docs/how-to/Develop-Dapps/Client-Libraries.md index 403331f326e..90924a81380 100644 --- a/docs/HowTo/Develop-Dapps/Client-Libraries.md +++ b/docs/how-to/Develop-Dapps/Client-Libraries.md @@ -23,4 +23,4 @@ Use client libraries to: [Hyperledger Besu does not support key management inside the client](../Send-Transactions/Account-Management.md). -[Create and send private transactions]: ../Send-Transactions/Creating-Sending-Private-Transactions.md +[Create and send private transactions]: ../../private-networks/how-to/send-transactions/private-transactions.md diff --git a/docs/HowTo/Develop-Dapps/Truffle.md b/docs/how-to/Develop-Dapps/Truffle.md similarity index 100% rename from docs/HowTo/Develop-Dapps/Truffle.md rename to docs/how-to/Develop-Dapps/Truffle.md diff --git a/docs/HowTo/Interact/Client-Libraries/web3js-quorum.md b/docs/how-to/Interact/Client-Libraries/web3js-quorum.md similarity index 100% rename from docs/HowTo/Interact/Client-Libraries/web3js-quorum.md rename to docs/how-to/Interact/Client-Libraries/web3js-quorum.md diff --git a/docs/HowTo/Limit-Access/Local-Permissioning.md b/docs/how-to/Limit-Access/Local-Permissioning.md similarity index 97% rename from docs/HowTo/Limit-Access/Local-Permissioning.md rename to docs/how-to/Limit-Access/Local-Permissioning.md index 06ad3d501ba..a6eb39cb559 100644 --- a/docs/HowTo/Limit-Access/Local-Permissioning.md +++ b/docs/how-to/Limit-Access/Local-Permissioning.md @@ -34,7 +34,7 @@ need to check both ends of the connection. ### Specifying bootnodes in the allowlist -The nodes permissions list must include the [bootnodes](../Find-and-Connect/Bootnodes.md) or Hyperledger Besu doesn't +The nodes permissions list must include the [bootnodes](../../private-networks/how-to/connect/bootnodes.md) or Hyperledger Besu doesn't start with node permissions enabled. !!! example @@ -227,6 +227,6 @@ options. ``` -[specify a permissions configuration file with Docker]: ../Get-Started/Installation-Options/Run-Docker-Image.md#permissions-configuration-file +[specify a permissions configuration file with Docker]: ../../get-started/install/run-docker-image.md#permissions-configuration-file [support domain names]: ../../Concepts/Node-Keys.md#domain-name-support [onchain permissioning]: ../../Concepts/Permissioning/Onchain-Permissioning.md diff --git a/docs/HowTo/Limit-Access/Specify-Perm-Version.md b/docs/how-to/Limit-Access/Specify-Perm-Version.md similarity index 100% rename from docs/HowTo/Limit-Access/Specify-Perm-Version.md rename to docs/how-to/Limit-Access/Specify-Perm-Version.md diff --git a/docs/HowTo/Limit-Access/Updating-Permission-Lists.md b/docs/how-to/Limit-Access/Updating-Permission-Lists.md similarity index 100% rename from docs/HowTo/Limit-Access/Updating-Permission-Lists.md rename to docs/how-to/Limit-Access/Updating-Permission-Lists.md diff --git a/docs/HowTo/Send-Transactions/Account-Management.md b/docs/how-to/Send-Transactions/Account-Management.md similarity index 88% rename from docs/HowTo/Send-Transactions/Account-Management.md rename to docs/how-to/Send-Transactions/Account-Management.md index 7ef58459a61..dc719262d0d 100644 --- a/docs/HowTo/Send-Transactions/Account-Management.md +++ b/docs/how-to/Send-Transactions/Account-Management.md @@ -16,9 +16,9 @@ In Besu, you can use the JSON-RPC methods: * [`eth_getBalance`](../../Reference/API-Methods.md#eth_getbalance) to retrieve the account balance. * [`eth_sendRawTransaction`](../../Reference/API-Methods.md#eth_sendrawtransaction) to transfer ether or create and interact with contracts. For more information, see - [Transactions](Transactions.md#transactions)). + [Transactions](../send-transactions.md#transactions)). * [`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction) to send - [private transactions](Creating-Sending-Private-Transactions.md). + [private transactions](../../private-networks/how-to/send-transactions/private-transactions.md). !!! tip diff --git a/docs/HowTo/Troubleshoot/Add-Validators-Without-Voting.md b/docs/how-to/Troubleshoot/Add-Validators-Without-Voting.md similarity index 97% rename from docs/HowTo/Troubleshoot/Add-Validators-Without-Voting.md rename to docs/how-to/Troubleshoot/Add-Validators-Without-Voting.md index 57ffbc148d3..510de819163 100644 --- a/docs/HowTo/Troubleshoot/Add-Validators-Without-Voting.md +++ b/docs/how-to/Troubleshoot/Add-Validators-Without-Voting.md @@ -4,7 +4,7 @@ description: How to add or remove validators without voting # Add and remove validators without voting -[QBFT](../Configure/Consensus-Protocols/QBFT.md) or [IBFT 2.0](../Configure/Consensus-Protocols/IBFT.md) network +[QBFT](../configure/Consensus-Protocols/QBFT.md) or [IBFT 2.0](../configure/Consensus-Protocols/IBFT.md) network conditions might not allow voting to change validators. For example, if a majority of the current validators are no longer participating in the network, a vote to add or remove validators won't be successful. @@ -157,13 +157,13 @@ To add or remove validators without voting: ## Override smart contract validators When using -[QBFT contract validator selection](../Configure/Consensus-Protocols/QBFT.md#add-and-remove-validators-using-a-smart-contract), +[QBFT contract validator selection](../configure/Consensus-Protocols/QBFT.md#add-and-remove-validators-using-a-smart-contract), if network conditions require it, you can bypass the smart contract and specify new validators in the genesis file. For example, you lose quorum for your current list of contract validators, and you can't perform a transaction to vote more in. This requires temporarily -[switching to block header validator selection mode](../Configure/Consensus-Protocols/QBFT.md#swap-validator-management-methods). +[switching to block header validator selection mode](../configure/Consensus-Protocols/QBFT.md#swap-validator-management-methods). To bypass the smart contract and specify new validators: diff --git a/docs/HowTo/Troubleshoot/Java-Flight-Recording.md b/docs/how-to/Troubleshoot/Java-Flight-Recording.md similarity index 100% rename from docs/HowTo/Troubleshoot/Java-Flight-Recording.md rename to docs/how-to/Troubleshoot/Java-Flight-Recording.md diff --git a/docs/HowTo/Troubleshoot/Trace-Transactions.md b/docs/how-to/Troubleshoot/Trace-Transactions.md similarity index 100% rename from docs/HowTo/Troubleshoot/Trace-Transactions.md rename to docs/how-to/Troubleshoot/Trace-Transactions.md diff --git a/docs/HowTo/Troubleshoot/Troubleshooting.md b/docs/how-to/Troubleshoot/Troubleshooting.md similarity index 88% rename from docs/HowTo/Troubleshoot/Troubleshooting.md rename to docs/how-to/Troubleshoot/Troubleshooting.md index 8b602d21d90..a49e250bedf 100644 --- a/docs/HowTo/Troubleshoot/Troubleshooting.md +++ b/docs/how-to/Troubleshoot/Troubleshooting.md @@ -15,13 +15,13 @@ directory. ## Invalid block header -If a `TimeStampMoreRecentThanParent | Invalid block header` error occurs, the [genesis file](../Configure/Genesis-File.md) of the new node is specifying a higher -[`blockperiodseconds`](../Configure/Consensus-Protocols/IBFT.md#block-time) than the imported chain. +If a `TimeStampMoreRecentThanParent | Invalid block header` error occurs, the [genesis file](../configure/Genesis-File.md) of the new node is specifying a higher +[`blockperiodseconds`](../configure/Consensus-Protocols/IBFT.md#block-time) than the imported chain. The imported chain makes new blocks faster than the genesis file allows and Besu rejects them with this error. This error most often occurs when importing chains from older versions of Besu. -To correct this error, decrease the `blockperiodseconds` in the new [IBFT 2.0 genesis file](../Configure/Consensus-Protocols/IBFT.md#genesis-file) -or [QFBT genesis file](../Configure/Consensus-Protocols/QBFT.md#genesis-file) to a lower value that satisfies the block header validation. +To correct this error, decrease the `blockperiodseconds` in the new [IBFT 2.0 genesis file](../configure/Consensus-Protocols/IBFT.md#genesis-file) +or [QFBT genesis file](../configure/Consensus-Protocols/QBFT.md#genesis-file) to a lower value that satisfies the block header validation. !!! example @@ -29,8 +29,8 @@ or [QFBT genesis file](../Configure/Consensus-Protocols/QBFT.md#genesis-file) to decrease the `blockperiodseconds` from 4 seconds to 3 seconds to match the imported chain. After you have updated the new genesis file, if the imported chain has a `blockperiodseconds` value set lower than you prefer, you can adjust it by configuring the block time on an -[existing IBFT 2.0](../Configure/Consensus-Protocols/IBFT.md#configure-block-time-on-an-existing-network-deployment) -or [existing QBFT](../Configure/Consensus-Protocols/QBFT.md#configure-block-time-on-an-existing-network) network. +[existing IBFT 2.0](../configure/Consensus-Protocols/IBFT.md#configure-block-time-on-an-existing-network-deployment) +or [existing QBFT](../configure/Consensus-Protocols/QBFT.md#configure-block-time-on-an-existing-network) network. ## Host not authorized @@ -41,14 +41,14 @@ sending the RPC from, or `*`. ## Peers fail to connect If nodes are not communicating, ensure the -[required ports are open](../../HowTo/Find-and-Connect/Configuring-Ports.md). +[required ports are open](../connect/configure-ports.md). If your nodes are running in AWS, check you have appropriate `SecurityGroups` to allow access to the required ports. Check that the [enode URLs](../../Concepts/Node-Keys.md#enode-url) specified for -[bootnodes](../Find-and-Connect/Bootnodes.md) or -[static nodes](../Find-and-Connect/Static-Nodes.md) match the enode URLs displayed when starting the +[bootnodes](../../private-networks/how-to/connect/bootnodes.md) or +[static nodes](../connect/static-nodes.md) match the enode URLs displayed when starting the remote nodes. ## Mining @@ -70,8 +70,8 @@ On non-mining nodes, log messages indicate importing blocks. To confirm the block number is increasing, use the [`eth_blockNumber`](../../Reference/API-Methods.md#eth_blocknumber) JSON-RPC API method. -If there is no block creating in [Clique](../Configure/Consensus-Protocols/Clique.md#extra-data) -or [IBFT 2.0](../Configure/Consensus-Protocols/IBFT.md#extra-data) networks, ensure the validator +If there is no block creating in [Clique](../configure/Consensus-Protocols/Clique.md#extra-data) +or [IBFT 2.0](../configure/Consensus-Protocols/IBFT.md#extra-data) networks, ensure the validator addresses in the genesis file match running nodes. ## Transactions are not mined @@ -80,10 +80,10 @@ If you add a transaction to the [transaction pool](../../Concepts/Transactions/Transaction-Pool.md) and the transaction hash returns, but the transaction is never mined, check the [`--min-gas-price`](../../Reference/CLI/CLI-Syntax.md#min-gas-price) option on mining nodes. If the -`gasPrice` on a [transaction](../Send-Transactions/Transactions.md) is lower than 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](../Configure/FreeGas.md), you must set +In [free gas networks](../configure/FreeGas.md), you must set [`--min-gas-price`](../../Reference/CLI/CLI-Syntax.md#min-gas-price) to zero. ## Genesis milestone @@ -105,7 +105,7 @@ Restart Besu with the command line option ## Pending State Nodes not decreasing for a full node in Grafana -During [fast synchronization](../../Concepts/Node-Types.md#run-a-full-node) for a full node, the +During [fast synchronization](../../public-networks/how-to/connect/sync-node.md#run-a-full-node) for a full node, 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 synchronization and then goes to 0. @@ -188,7 +188,7 @@ following symptoms: ## Unsupported address exception while running from Docker -While [running Besu from a Docker image](../../HowTo/Get-Started/Installation-Options/Run-Docker-Image.md), you might get the following exception: +While [running Besu from a Docker image](../../get-started/install/run-docker-image.md), 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. diff --git a/docs/HowTo/Troubleshoot/Use-EVM-Tool.md b/docs/how-to/Troubleshoot/Use-EVM-Tool.md similarity index 100% rename from docs/HowTo/Troubleshoot/Use-EVM-Tool.md rename to docs/how-to/Troubleshoot/Use-EVM-Tool.md diff --git a/docs/HowTo/Upgrade/Upgrade-Node.md b/docs/how-to/Upgrade/Upgrade-Node.md similarity index 100% rename from docs/HowTo/Upgrade/Upgrade-Node.md rename to docs/how-to/Upgrade/Upgrade-Node.md diff --git a/docs/HowTo/Upgrade/Upgrade-Protocol.md b/docs/how-to/Upgrade/Upgrade-Protocol.md similarity index 100% rename from docs/HowTo/Upgrade/Upgrade-Protocol.md rename to docs/how-to/Upgrade/Upgrade-Protocol.md diff --git a/docs/HowTo/Use-Privacy/Access-Private-Transactions.md b/docs/how-to/Use-Privacy/Access-Private-Transactions.md similarity index 100% rename from docs/HowTo/Use-Privacy/Access-Private-Transactions.md rename to docs/how-to/Use-Privacy/Access-Private-Transactions.md diff --git a/docs/HowTo/Use-Privacy/Create-Manage-Privacy-Groups.md b/docs/how-to/Use-Privacy/Create-Manage-Privacy-Groups.md similarity index 100% rename from docs/HowTo/Use-Privacy/Create-Manage-Privacy-Groups.md rename to docs/how-to/Use-Privacy/Create-Manage-Privacy-Groups.md diff --git a/docs/HowTo/Use-Privacy/EEA-Compliant.md b/docs/how-to/Use-Privacy/EEA-Compliant.md similarity index 100% rename from docs/HowTo/Use-Privacy/EEA-Compliant.md rename to docs/how-to/Use-Privacy/EEA-Compliant.md diff --git a/docs/HowTo/Use-Privacy/Performance-Best-Practices.md b/docs/how-to/Use-Privacy/Performance-Best-Practices.md similarity index 100% rename from docs/HowTo/Use-Privacy/Performance-Best-Practices.md rename to docs/how-to/Use-Privacy/Performance-Best-Practices.md diff --git a/docs/HowTo/Use-Privacy/Privacy.md b/docs/how-to/Use-Privacy/Privacy.md similarity index 100% rename from docs/HowTo/Use-Privacy/Privacy.md rename to docs/how-to/Use-Privacy/Privacy.md diff --git a/docs/HowTo/Use-Privacy/Run-Tessera-With-Besu.md b/docs/how-to/Use-Privacy/Run-Tessera-With-Besu.md similarity index 96% rename from docs/HowTo/Use-Privacy/Run-Tessera-With-Besu.md rename to docs/how-to/Use-Privacy/Run-Tessera-With-Besu.md index e65226dee9c..92bbdc21933 100644 --- a/docs/HowTo/Use-Privacy/Run-Tessera-With-Besu.md +++ b/docs/how-to/Use-Privacy/Run-Tessera-With-Besu.md @@ -25,7 +25,7 @@ and [run in a separate instance](#separate-instances) to Hyperledger Besu. Privacy requires you to [configure Tessera for high availability]. Tessera also requires [`orion` mode](https://docs.tessera.consensys.net/en/stable/HowTo/Configure/Orion-Mode/) -to be enabled if **not** running Besu in [GoQuorum compatible privacy mode](../../HowTo/Use-Privacy/Use-GoQuorum-compatible-privacy.md). +to be enabled if **not** running Besu in [GoQuorum compatible privacy mode](../Use-Privacy/Use-GoQuorum-compatible-privacy.md). To successfully distribute a private transaction, all private transaction participants must be online. If any participants are offline when submitting the private transaction, the transaction is diff --git a/docs/HowTo/Use-Privacy/Sign-Privacy-Marker-Transactions.md b/docs/how-to/Use-Privacy/Sign-Privacy-Marker-Transactions.md similarity index 94% rename from docs/HowTo/Use-Privacy/Sign-Privacy-Marker-Transactions.md rename to docs/how-to/Use-Privacy/Sign-Privacy-Marker-Transactions.md index cfa19668983..253ba5756a2 100644 --- a/docs/HowTo/Use-Privacy/Sign-Privacy-Marker-Transactions.md +++ b/docs/how-to/Use-Privacy/Sign-Privacy-Marker-Transactions.md @@ -18,7 +18,7 @@ when starting Hyperledger Besu. In networks where you pay gas, you must specify a key and the associated account must contain adequate funds. -In [free gas networks](../../HowTo/Configure/FreeGas.md), to provide further anonymity by signing +In [free gas networks](../configure/FreeGas.md), to provide further anonymity by signing each privacy marker transaction with a different random key, exclude the [`--privacy-marker-transaction-signing-key-file`](../../Reference/CLI/CLI-Syntax.md#privacy-marker-transaction-signing-key-file) command line option when starting Besu. diff --git a/docs/HowTo/Use-Privacy/Use-FlexiblePrivacy.md b/docs/how-to/Use-Privacy/Use-FlexiblePrivacy.md similarity index 100% rename from docs/HowTo/Use-Privacy/Use-FlexiblePrivacy.md rename to docs/how-to/Use-Privacy/Use-FlexiblePrivacy.md diff --git a/docs/HowTo/Use-Privacy/Use-GoQuorum-compatible-privacy.md b/docs/how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md similarity index 93% rename from docs/HowTo/Use-Privacy/Use-GoQuorum-compatible-privacy.md rename to docs/how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md index 3e505957e6b..47abfa1a42c 100644 --- a/docs/HowTo/Use-Privacy/Use-GoQuorum-compatible-privacy.md +++ b/docs/how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md @@ -10,7 +10,7 @@ Besu and [GoQuorum clients] using the Tessera private transaction manager. This mode requires both networks to run an interoperable consensus algorithm such as [QBFT] to work. To run your Besu nodes in GoQuorum-compatible privacy mode, add the `isQuorum:true` flag to your -[genesis file](../Configure/Genesis-File.md). +[genesis file](../configure/Genesis-File.md). While in GoQuorum-compatible privacy mode and using Tessera, disable [`orion` mode](https://docs.tessera.consensys.net/en/stable/HowTo/Configure/Orion-Mode/) by removing `"mode": "orion",` from the [Tessera configuration file](../../Tutorials/Privacy/Configuring-Multi-Tenancy.md#3-update-the-tessera-configuration-file). @@ -26,5 +26,5 @@ The following documentation explains [the transaction lifecycle] in GoQuorum-com [GoQuorum clients]: https://consensys.net/docs/goquorum/en/stable/ -[QBFT]: ../Configure/Consensus-Protocols/QBFT.md +[QBFT]: ../configure/Consensus-Protocols/QBFT.md [the transaction lifecycle]: https://consensys.net/docs/goquorum/en/stable/concepts/privacy/private-transaction-lifecycle/ diff --git a/docs/HowTo/Configure/Alternative-EC-Curves.md b/docs/how-to/configure/Alternative-EC-Curves.md similarity index 100% rename from docs/HowTo/Configure/Alternative-EC-Curves.md rename to docs/how-to/configure/Alternative-EC-Curves.md diff --git a/docs/HowTo/Configure/Block-Proposal-Permissioning.md b/docs/how-to/configure/Block-Proposal-Permissioning.md similarity index 98% rename from docs/HowTo/Configure/Block-Proposal-Permissioning.md rename to docs/how-to/configure/Block-Proposal-Permissioning.md index bedd46d7af9..38bdeafde73 100644 --- a/docs/HowTo/Configure/Block-Proposal-Permissioning.md +++ b/docs/how-to/configure/Block-Proposal-Permissioning.md @@ -252,5 +252,5 @@ Text file containing the password to unlock the truststore file. PKI truststore type. Valid options are `JKS` and `PKCS12`. The default is `JKS`. -[QBFT consensus protocol]: ../../HowTo/Configure/Consensus-Protocols/QBFT.md +[QBFT consensus protocol]: /Consensus-Protocols/QBFT.md [certificate revocation list (CRL)]: https://www.securew2.com/blog/certificate-revocation-crl-explained diff --git a/docs/HowTo/Configure/Configure-HA/High-Availability.md b/docs/how-to/configure/Configure-HA/High-Availability.md similarity index 87% rename from docs/HowTo/Configure/Configure-HA/High-Availability.md rename to docs/how-to/configure/Configure-HA/High-Availability.md index 08b6a7f1cd4..84009ea1b0e 100644 --- a/docs/HowTo/Configure/Configure-HA/High-Availability.md +++ b/docs/how-to/configure/Configure-HA/High-Availability.md @@ -5,8 +5,8 @@ description: Hyperledger Besu high availability # High availability of JSON-RPC and RPC Pub/Sub APIs To enable high availability to the -[RPC Pub/Sub API over WebSockets](../../Interact/APIs/RPC-PubSub.md) or the -[JSON-RPC API](../../Interact/APIs/Using-JSON-RPC-API.md), run and synchronize more than one +[RPC Pub/Sub API over WebSockets](../../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. @@ -30,7 +30,7 @@ Use a load balancer to distribute requests across nodes in the cluster that are ## Determining when a node is ready Use the -[readiness endpoint](../../Interact/APIs/Using-JSON-RPC-API.md#readiness-and-liveness-endpoints) to +[readiness endpoint](../../use-besu-api/json-rpc.md#readiness-and-liveness-endpoints) to determine when a node is ready. !!! note @@ -69,14 +69,14 @@ To get correct nonces when distributing requests across a cluster, either: You can subscribe to events using: -* [RPC Pub/Sub over WebSockets](../../Interact/APIs/RPC-PubSub.md). -* [Filters over HTTP](../../Interact/Filters/Accessing-Logs-Using-JSON-RPC.md). +* [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 WebSockets](../../Interact/APIs/RPC-PubSub.md) because +We recommend using [RPC Pub/Sub over WebSockets](../../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](../../Interact/Filters/Accessing-Logs-Using-JSON-RPC.md), configure +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. ## Recovering from dropped subscriptions @@ -88,7 +88,7 @@ Dropped subscriptions can occur because of: 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](../../Interact/APIs/RPC-PubSub.md#subscribing): +[subscription type](../../use-besu-api/rpc-pubsub.md#subscribing): * [`newHeads`](#new-headers) * [`logs`](#logs) diff --git a/docs/HowTo/Configure/Configure-HA/Sample-Configuration.md b/docs/how-to/configure/Configure-HA/Sample-Configuration.md similarity index 93% rename from docs/HowTo/Configure/Configure-HA/Sample-Configuration.md rename to docs/how-to/configure/Configure-HA/Sample-Configuration.md index 924b94bacbd..762c668d95e 100644 --- a/docs/HowTo/Configure/Configure-HA/Sample-Configuration.md +++ b/docs/how-to/configure/Configure-HA/Sample-Configuration.md @@ -8,7 +8,7 @@ description: Sample load balancers 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](../../Interact/APIs/Using-JSON-RPC-API.md#readiness-and-liveness-endpoints) for +[liveness endpoint](../../use-besu-api/json-rpc.md#readiness-and-liveness-endpoints) for health checks. For finer grain control, use the Application Load Balancer: @@ -17,7 +17,7 @@ For finer grain control, use the Application Load Balancer: * Configure multiple listeners with one per port (for example, `30303`, `8545`) you are using and route to the target group. * Use the - [liveness endpoint](../../Interact/APIs/Using-JSON-RPC-API.md#readiness-and-liveness-endpoints) + [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). diff --git a/docs/HowTo/Configure/Consensus-Protocols/Clique.md b/docs/how-to/configure/Consensus-Protocols/Clique.md similarity index 100% rename from docs/HowTo/Configure/Consensus-Protocols/Clique.md rename to docs/how-to/configure/Consensus-Protocols/Clique.md diff --git a/docs/HowTo/Configure/Consensus-Protocols/IBFT.md b/docs/how-to/configure/Consensus-Protocols/IBFT.md similarity index 100% rename from docs/HowTo/Configure/Consensus-Protocols/IBFT.md rename to docs/how-to/configure/Consensus-Protocols/IBFT.md diff --git a/docs/HowTo/Configure/Consensus-Protocols/QBFT.md b/docs/how-to/configure/Consensus-Protocols/QBFT.md similarity index 100% rename from docs/HowTo/Configure/Consensus-Protocols/QBFT.md rename to docs/how-to/configure/Consensus-Protocols/QBFT.md diff --git a/docs/HowTo/Configure/Contracts-in-Genesis.md b/docs/how-to/configure/Contracts-in-Genesis.md similarity index 100% rename from docs/HowTo/Configure/Contracts-in-Genesis.md rename to docs/how-to/configure/Contracts-in-Genesis.md diff --git a/docs/HowTo/Configure/FreeGas.md b/docs/how-to/configure/FreeGas.md similarity index 100% rename from docs/HowTo/Configure/FreeGas.md rename to docs/how-to/configure/FreeGas.md diff --git a/docs/HowTo/Configure/Genesis-File.md b/docs/how-to/configure/Genesis-File.md similarity index 100% rename from docs/HowTo/Configure/Genesis-File.md rename to docs/how-to/configure/Genesis-File.md diff --git a/docs/HowTo/Configure/Passing-JVM-Options.md b/docs/how-to/configure/Passing-JVM-Options.md similarity index 100% rename from docs/HowTo/Configure/Passing-JVM-Options.md rename to docs/how-to/configure/Passing-JVM-Options.md diff --git a/docs/HowTo/Configure/TLS/Configure-TLS.md b/docs/how-to/configure/TLS/Configure-TLS.md similarity index 100% rename from docs/HowTo/Configure/TLS/Configure-TLS.md rename to docs/how-to/configure/TLS/Configure-TLS.md diff --git a/docs/HowTo/Configure/TLS/P2P-TLS.md b/docs/how-to/configure/TLS/P2P-TLS.md similarity index 100% rename from docs/HowTo/Configure/TLS/P2P-TLS.md rename to docs/how-to/configure/TLS/P2P-TLS.md diff --git a/docs/HowTo/Configure/Using-Configuration-File.md b/docs/how-to/configure/configuration-file.md similarity index 100% rename from docs/HowTo/Configure/Using-Configuration-File.md rename to docs/how-to/configure/configuration-file.md diff --git a/docs/HowTo/Configure/Configure-Mining.md b/docs/how-to/configure/mining.md similarity index 100% rename from docs/HowTo/Configure/Configure-Mining.md rename to docs/how-to/configure/mining.md diff --git a/docs/HowTo/Find-and-Connect/Configuring-Ports.md b/docs/how-to/connect/configure-ports.md similarity index 87% rename from docs/HowTo/Find-and-Connect/Configuring-Ports.md rename to docs/how-to/connect/configure-ports.md index 7c45fe83275..5cfe5cca210 100644 --- a/docs/HowTo/Find-and-Connect/Configuring-Ports.md +++ b/docs/how-to/connect/configure-ports.md @@ -9,8 +9,8 @@ an example port configuration for a Besu node on AWS. ![Port Configuration](../../images/PortConfiguration.png) -When running Besu from the [Docker image](../Get-Started/Installation-Options/Run-Docker-Image.md), -[expose ports](../Get-Started/Installation-Options/Run-Docker-Image.md#exposing-ports). +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). !!! tip @@ -41,7 +41,7 @@ Combine the P2P port with the values for the ## JSON-RPC API -To enable access to the [JSON-RPC API](../Interact/APIs/Using-JSON-RPC-API.md), open the HTTP +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 @@ -52,7 +52,7 @@ and `8546`. ## Metrics To enable -[Prometheus to access Besu](../Monitor/Metrics.md#monitor-node-performance-using-prometheus), open +[Prometheus to access Besu](../monitor/metrics.md#monitor-node-performance-using-prometheus), 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 diff --git a/docs/HowTo/Find-and-Connect/Managing-Peers.md b/docs/how-to/connect/manage-peers.md similarity index 96% rename from docs/HowTo/Find-and-Connect/Managing-Peers.md rename to docs/how-to/connect/manage-peers.md index 4bb501297a5..da930099668 100644 --- a/docs/HowTo/Find-and-Connect/Managing-Peers.md +++ b/docs/how-to/connect/manage-peers.md @@ -16,7 +16,7 @@ in small, stable networks. You can use [`admin_addPeer`](../../Reference/API-Methods.md#admin_addpeer) to attempt a specific connection, but this isn't P2P discovery. -We recommend [using bootnodes](Bootnodes.md) to initially discover peers. +We recommend [using bootnodes](../../private-networks/how-to/connect/bootnodes.md) to initially discover peers. ## Limit peers @@ -87,4 +87,4 @@ To disable P2P discovery, set the 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-Methods.md#admin_addpeer)). -[Static nodes](Static-Nodes.md) can also open connections. +[Static nodes](static-nodes.md) can also open connections. diff --git a/docs/HowTo/Find-and-Connect/Specifying-NAT.md b/docs/how-to/connect/specify-nat.md similarity index 100% rename from docs/HowTo/Find-and-Connect/Specifying-NAT.md rename to docs/how-to/connect/specify-nat.md diff --git a/docs/HowTo/Find-and-Connect/Static-Nodes.md b/docs/how-to/connect/static-nodes.md similarity index 96% rename from docs/HowTo/Find-and-Connect/Static-Nodes.md rename to docs/how-to/connect/static-nodes.md index 9aacd610271..24bfde8eee4 100644 --- a/docs/HowTo/Find-and-Connect/Static-Nodes.md +++ b/docs/how-to/connect/static-nodes.md @@ -5,8 +5,8 @@ description: Configuring static nodes # Static nodes Static nodes are a configured set of trusted nodes. Static nodes are exempt from -[maximum peer](Managing-Peers.md#limiting-peers) and -[remote connection](Managing-Peers.md#limiting-remote-connections) limits. +[maximum peer](manage-peers.md#limiting-peers) and +[remote connection](manage-peers.md#limiting-remote-connections) limits. Besu attempts to maintain connections with static nodes by periodically initiating a connection to any unconnected static node. diff --git a/docs/HowTo/Monitor/Logging.md b/docs/how-to/monitor/logging.md similarity index 96% rename from docs/HowTo/Monitor/Logging.md rename to docs/how-to/monitor/logging.md index 3f1aa9ef290..df71689d86e 100644 --- a/docs/HowTo/Monitor/Logging.md +++ b/docs/how-to/monitor/logging.md @@ -12,7 +12,7 @@ Hyperledger Besu uses Log4J2 for logging and provides two methods to configure l * [Advanced](#advanced-custom-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](Elastic-Stack.md) for log management. +[example implementation using Elastic Stack](../../private-networks/how-to/monitor/elastic-stack.md) for log management. ## Basic logging diff --git a/docs/HowTo/Monitor/Metrics.md b/docs/how-to/monitor/metrics.md similarity index 100% rename from docs/HowTo/Monitor/Metrics.md rename to docs/how-to/monitor/metrics.md diff --git a/docs/HowTo/Send-Transactions/Transactions.md b/docs/how-to/send-transactions.md similarity index 86% rename from docs/HowTo/Send-Transactions/Transactions.md rename to docs/how-to/send-transactions.md index c743c3bffa2..f3c590441bf 100644 --- a/docs/HowTo/Send-Transactions/Transactions.md +++ b/docs/how-to/send-transactions.md @@ -5,17 +5,17 @@ description: Some use cases of creating transactions on a Hyperledger Besu netwo # Creating and sending transactions You can send signed transactions using the -[`eth_sendRawTransaction`](../../Reference/API-Methods.md#eth_sendrawtransaction) JSON-RPC API +[`eth_sendRawTransaction`](../Reference/API-Methods.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/CLI-Syntax.md#rpc-tx-feecap) +the maximum transaction fee for transactions using the [`--rpc-tx-feecap`](../Reference/CLI/CLI-Syntax.md#rpc-tx-feecap) CLI option. To accept signed transactions from remote connections, set the -[API listening host](../Interact/APIs/API.md#service-hosts) to `0.0.0.0`. +[API listening host](use-besu-api/index.md#service-hosts) to `0.0.0.0`. -[Use client libraries](../Develop-Dapps/Client-Libraries.md) to create and send a signed raw transaction to transfer +[Use client libraries](Develop-Dapps/Client-Libraries.md) to create and send a signed raw transaction to transfer Ether and create a smart contract. !!! warning "Private keys" @@ -47,8 +47,8 @@ Ether and create a smart contract. ## `eth_call` vs `eth_sendRawTransaction` -You can interact with contracts using [`eth_call`](../../Reference/API-Methods.md#eth_call) or -[`eth_sendRawTransaction`](../../Reference/API-Methods.md#eth_sendrawtransaction). The table below +You can interact with contracts using [`eth_call`](../Reference/API-Methods.md#eth_call) or +[`eth_sendRawTransaction`](../Reference/API-Methods.md#eth_sendrawtransaction). The table below compares the characteristics of both calls. | `eth_call` | `eth_sendRawTransaction` | diff --git a/docs/HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.md b/docs/how-to/use-besu-api/access-logs.md similarity index 77% rename from docs/HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.md rename to docs/how-to/use-besu-api/access-logs.md index b06dee8dfd4..099600d0a87 100644 --- a/docs/HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.md +++ b/docs/how-to/use-besu-api/access-logs.md @@ -5,21 +5,21 @@ description: Accessing logs using the Hyperledger Besu API # Accessing logs using the Hyperledger Besu API Subscribe to events, such as logs, using either -[RPC Pub/Sub over WebSockets](../APIs/RPC-PubSub.md) or filters over HTTP. +[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-Methods.md#eth_getfilterchanges) -* [`eth_getFilterLogs`](../../../Reference/API-Methods.md#eth_getfilterlogs) -* [`eth_getLogs`](../../../Reference/API-Methods.md#eth_getlogs). +* [`eth_getFilterChanges`](../../Reference/API-Methods.md#eth_getfilterchanges) +* [`eth_getFilterLogs`](../../Reference/API-Methods.md#eth_getfilterlogs) +* [`eth_getLogs`](../../Reference/API-Methods.md#eth_getlogs). -Use [`eth_newFilter`](../../../Reference/API-Methods.md#eth_newfilter) to create the filter before -using [`eth_getFilterChanges`](../../../Reference/API-Methods.md#eth_getfilterchanges) and -[`eth_getFilterLogs`](../../../Reference/API-Methods.md#eth_getfilterlogs)). +Use [`eth_newFilter`](../../Reference/API-Methods.md#eth_newfilter) to create the filter before +using [`eth_getFilterChanges`](../../Reference/API-Methods.md#eth_getfilterchanges) and +[`eth_getFilterLogs`](../../Reference/API-Methods.md#eth_getfilterlogs)). -Access logs for [private contracts](../../../Concepts/Privacy/Privacy-Overview.md) using the equivalent +Access logs for [private contracts](../../Concepts/Privacy/Privacy-Overview.md) using the equivalent [`priv_*` methods and specifying the privacy group ID](#filters-for-private-contracts). For example, -[`priv_getLogs`](../../../Reference/API-Methods.md#priv_getlogs). +[`priv_getLogs`](../../Reference/API-Methods.md#priv_getlogs). !!! note @@ -28,7 +28,7 @@ Access logs for [private contracts](../../../Concepts/Privacy/Privacy-Overview.m ## Creating a filter -Create a filter using [`eth_newFilter`](../../../Reference/API-Methods.md#eth_newfilter). +Create a filter using [`eth_newFilter`](../../Reference/API-Methods.md#eth_newfilter). !!! example @@ -55,14 +55,14 @@ Create a filter using [`eth_newFilter`](../../../Reference/API-Methods.md#eth_ne } ``` -[`eth_newFilter`](../../../Reference/API-Methods.md#eth_newfilter) returns a filter ID hash (for +[`eth_newFilter`](../../Reference/API-Methods.md#eth_newfilter) returns a filter ID hash (for example, `0x1ddf0c00989044e9b41cc0ae40272df3`). ### Polling a filter for changes To poll the filter for changes since the last poll, use -[`eth_getFilterChanges`](../../../Reference/API-Methods.md#eth_getfilterchanges) with the filter ID -hash returned by [`eth_newFilter`](../../../Reference/API-Methods.md#eth_newfilter). +[`eth_getFilterChanges`](../../Reference/API-Methods.md#eth_getfilterchanges) with the filter ID +hash returned by [`eth_newFilter`](../../Reference/API-Methods.md#eth_newfilter). !!! example @@ -97,7 +97,7 @@ hash returned by [`eth_newFilter`](../../../Reference/API-Methods.md#eth_newfilt ### Getting all logs for a filter To get all logs for a filter, use -[`eth_getFilterLogs`](../../../Reference/API-Methods.md#eth_getfilterlogs). +[`eth_getFilterLogs`](../../Reference/API-Methods.md#eth_getfilterlogs). !!! example @@ -151,20 +151,20 @@ To get all logs for a filter, use ## Uninstalling a filter When a filter is no longer required, use -[`eth_uninstallFilter`](../../../Reference/API-Methods.md#eth_uninstallfilter) to remove the +[`eth_uninstallFilter`](../../Reference/API-Methods.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-Methods.md#priv_getfilterchanges) -* [`priv_getFilterLogs`](../../../Reference/API-Methods.md#priv_getfilterlogs) -* [`priv_getLogs`](../../../Reference/API-Methods.md#priv_getlogs) -* [`priv_newFilter`](../../../Reference/API-Methods.md#priv_newfilter) -* [`priv_uninstallFilter`](../../../Reference/API-Methods.md#priv_uninstallfilter). +* [`priv_getFilterChanges`](../../Reference/API-Methods.md#priv_getfilterchanges) +* [`priv_getFilterLogs`](../../Reference/API-Methods.md#priv_getfilterlogs) +* [`priv_getLogs`](../../Reference/API-Methods.md#priv_getlogs) +* [`priv_newFilter`](../../Reference/API-Methods.md#priv_newfilter) +* [`priv_uninstallFilter`](../../Reference/API-Methods.md#priv_uninstallfilter). -The [privacy group ID](../../../Concepts/Privacy/Privacy-Overview.md) must be specified as parameter 0 +The [privacy group ID](../../Concepts/Privacy/Privacy-Overview.md) must be specified as parameter 0 for the `priv` methods. !!! example @@ -189,7 +189,7 @@ for the `priv` methods. ## Getting logs using a filter options object To get all logs for a filter options object, use -[`eth_getLogs`](../../../Reference/API-Methods.md#eth_getlogs) or [`priv_getLogs`](../../../Reference/API-Methods.md#priv_getlogs) +[`eth_getLogs`](../../Reference/API-Methods.md#eth_getlogs) or [`priv_getLogs`](../../Reference/API-Methods.md#priv_getlogs) for a private contract. !!! example diff --git a/docs/HowTo/Interact/APIs/Authentication.md b/docs/how-to/use-besu-api/authenticate.md similarity index 88% rename from docs/HowTo/Interact/APIs/Authentication.md rename to docs/how-to/use-besu-api/authenticate.md index f0c17ebfa95..ae777e1f55f 100644 --- a/docs/HowTo/Interact/APIs/Authentication.md +++ b/docs/how-to/use-besu-api/authenticate.md @@ -7,7 +7,7 @@ description: Hyperledger Besu authentication and authorization for 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](../../../Concepts/Privacy/Multi-Tenancy.md) to verify tenant data access. +[multi-tenancy](../../Concepts/Privacy/Multi-Tenancy.md) to verify tenant data access. Besu supports two mutually exclusive authentication methods: @@ -57,11 +57,11 @@ 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/CLI-Subcommands.md#password) subcommand to generate the + [`password hash`](../../Reference/CLI/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](../../../Concepts/Privacy/Multi-Tenancy.md). + [multi-tenancy](../../Concepts/Privacy/Multi-Tenancy.md). !!! example "Password hash subcommand" @@ -80,13 +80,13 @@ Each user requiring JSON-RPC access the configuration file lists the: ### 2. Enable authentication To require authentication for the JSON-RPC API, use the -[`--rpc-http-authentication-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-authentication-enabled) -or [`--rpc-ws-authentication-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-ws-authentication-enabled) +[`--rpc-http-authentication-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-http-authentication-enabled) +or [`--rpc-ws-authentication-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-authentication-enabled) options. To specify the [credentials file](#1-create-the-credentials-file), use the -[`--rpc-http-authentication-credentials-file`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-authentication-credentials-file) -and [`--rpc-ws-authentication-credentials-file`](../../../Reference/CLI/CLI-Syntax.md#rpc-ws-authentication-credentials-file) +[`--rpc-http-authentication-credentials-file`](../../Reference/CLI/CLI-Syntax.md#rpc-http-authentication-credentials-file) +and [`--rpc-ws-authentication-credentials-file`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-authentication-credentials-file) options. ### 3. Generate an authentication token @@ -208,7 +208,7 @@ 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](../../../Concepts/Privacy/Multi-Tenancy.md). + [multi-tenancy](../../Concepts/Privacy/Multi-Tenancy.md). !!! example "JWT generation example" @@ -229,13 +229,13 @@ Each payload for the JWT must contain: ### 3. Enable authentication To require authentication for the JSON-RPC API, use the -[`--rpc-http-authentication-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-authentication-enabled) -or [`--rpc-ws-authentication-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-ws-authentication-enabled) +[`--rpc-http-authentication-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-http-authentication-enabled) +or [`--rpc-ws-authentication-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-authentication-enabled) options. To specify the JWT provider's public key file to use with the externally created JWT, use the -[`--rpc-http-authentication-jwt-public-key-file`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-authentication-jwt-public-key-file) -or [`--rpc-ws-authentication-jwt-public-key-file`](../../../Reference/CLI/CLI-Syntax.md#rpc-ws-authentication-jwt-public-key-file) +[`--rpc-http-authentication-jwt-public-key-file`](../../Reference/CLI/CLI-Syntax.md#rpc-http-authentication-jwt-public-key-file) +or [`--rpc-ws-authentication-jwt-public-key-file`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-authentication-jwt-public-key-file) options. ## JSON-RPC permissions diff --git a/docs/HowTo/Interact/APIs/GraphQL.md b/docs/how-to/use-besu-api/graphql.md similarity index 85% rename from docs/HowTo/Interact/APIs/GraphQL.md rename to docs/how-to/use-besu-api/graphql.md index 1f49c6a8576..28f41f8faba 100644 --- a/docs/HowTo/Interact/APIs/GraphQL.md +++ b/docs/how-to/use-besu-api/graphql.md @@ -8,21 +8,21 @@ GraphQL can reduce the overhead needed for common queries. For example, instead 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](API.md#enabling-api-access). +service using [command line options](index.md#enabling-api-access). !!! note GraphQL is not supported over WebSockets. Access the GraphQL endpoint at `http://:/graphql`. Configure `` and `` -using [`graphql-http-host`](../../../Reference/CLI/CLI-Syntax.md#graphql-http-host) and -[`graphql-http-port`](../../../Reference/CLI/CLI-Syntax.md#graphql-http-port). The default endpoint +using [`graphql-http-host`](../../Reference/CLI/CLI-Syntax.md#graphql-http-host) and +[`graphql-http-port`](../../Reference/CLI/CLI-Syntax.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-Methods.md) with an equivalent -[GraphQL](GraphQL.md) query include a GraphQL request and result in the method example. +[Hyperledger Besu JSON-RPC API methods](../../Reference/API-Methods.md) with an equivalent +[GraphQL](graphql.md) query include a GraphQL request and result in the method example. !!! example @@ -39,7 +39,7 @@ The third-party tool, [GraphiQL](https://github.com/skevy/graphiql-app), provide interface for editing and testing GraphQL queries and mutations. GraphiQL also provides access to the [Besu GraphQL schema] from within the app. -![GraphiQL](../../../images/GraphiQL.png) +![GraphiQL](../../images/GraphiQL.png) ## Pending diff --git a/docs/HowTo/Interact/APIs/API.md b/docs/how-to/use-besu-api/index.md similarity index 63% rename from docs/HowTo/Interact/APIs/API.md rename to docs/how-to/use-besu-api/index.md index 40d15fc8c28..1976eb23713 100644 --- a/docs/HowTo/Interact/APIs/API.md +++ b/docs/how-to/use-besu-api/index.md @@ -4,20 +4,20 @@ description: Hyperledger Besu API # Access the Hyperledger Besu API -Access the [Hyperledger Besu API](../../../Reference/API-Methods.md) using: +Access the [Hyperledger Besu API](../../Reference/API-Methods.md) using: -* [JSON-RPC over HTTP, WebSocket, or IPC](Using-JSON-RPC-API.md) -* [RPC Pub/Sub over WebSockets](RPC-PubSub.md) -* [GraphQL over HTTP](GraphQL.md). +* [JSON-RPC over HTTP, WebSocket, or IPC](json-rpc.md) +* [RPC Pub/Sub over WebSockets](rpc-pubsub.md) +* [GraphQL over HTTP](graphql.md). 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/CLI-Syntax.md#rpc-http-enabled), -[`--ws-http-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-ws-enabled), -[`--graphql-http-enabled`](../../../Reference/CLI/CLI-Syntax.md#graphql-http-enabled), and +[`--rpc-http-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled), +[`--ws-http-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-enabled), +[`--graphql-http-enabled`](../../Reference/CLI/CLI-Syntax.md#graphql-http-enabled), and `--Xrpc-ipc-enabled` options. !!! caution @@ -27,9 +27,9 @@ To enable API access, use the ## Service hosts To specify the host the API service listens on, use the -[`--rpc-http-host`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-host), -[`--rpc-ws-host`](../../../Reference/CLI/CLI-Syntax.md#rpc-ws-host), and -[`--graphql-http-host`](../../../Reference/CLI/CLI-Syntax.md#graphql-http-host) options. The +[`--rpc-http-host`](../../Reference/CLI/CLI-Syntax.md#rpc-http-host), +[`--rpc-ws-host`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-host), and +[`--graphql-http-host`](../../Reference/CLI/CLI-Syntax.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`. @@ -43,9 +43,9 @@ To allow remote connections, set the host to `0.0.0.0`. ## Service ports To specify the port the API service listens on, use the -[`--rpc-http-port`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-port), -[`--rpc-ws-port`](../../../Reference/CLI/CLI-Syntax.md#rpc-ws-port), and -[`--graphql-http-port`](../../../Reference/CLI/CLI-Syntax.md#graphql-http-port) options. +[`--rpc-http-port`](../../Reference/CLI/CLI-Syntax.md#rpc-http-port), +[`--rpc-ws-port`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-port), and +[`--graphql-http-port`](../../Reference/CLI/CLI-Syntax.md#graphql-http-port) options. The default ports are: @@ -53,7 +53,7 @@ The default ports are: * 8546 for JSON-RPC over WebSocket. * 8547 for GraphQL over HTTP. -Ports must be [exposed appropriately](../../Find-and-Connect/Configuring-Ports.md). +Ports must be [exposed appropriately](../connect/configure-ports.md). ## Socket path @@ -69,7 +69,7 @@ The default path is `besu.ipc` in the Besu data directory. 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/CLI-Syntax.md#host-allowlist) option matches the request host headers. +[`--host-allowlist`](../../Reference/CLI/CLI-Syntax.md#host-allowlist) option matches the request host headers. By default, Besu accepts requests and connections from `localhost` and `127.0.0.1`. !!! important @@ -99,10 +99,10 @@ Specify "*" for `--host-allowlist` to effectively disable host protection. 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-Methods.md#eth_sendrawtransaction). +[`eth_sendRawTransaction`](../../Reference/API-Methods.md#eth_sendrawtransaction). `eth_sendTransaction` is not implemented. -For [account management](../../Send-Transactions/Account-Management.md), use third-party wallets. +For [account management](../Send-Transactions/Account-Management.md), use third-party wallets. ### Protocols diff --git a/docs/HowTo/Interact/APIs/Using-JSON-RPC-API.md b/docs/how-to/use-besu-api/json-rpc.md similarity index 86% rename from docs/HowTo/Interact/APIs/Using-JSON-RPC-API.md rename to docs/how-to/use-besu-api/json-rpc.md index 0d5d2bb2681..1e4d938e0ce 100644 --- a/docs/HowTo/Interact/APIs/Using-JSON-RPC-API.md +++ b/docs/how-to/use-besu-api/json-rpc.md @@ -5,10 +5,10 @@ description: How to access the Hyperledger Besu API using JSON-RPC # JSON-RPC over HTTP, WebSockets and IPC To enable JSON-RPC over HTTP or WebSockets, use the -[`--rpc-http-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled) and -[`--rpc-ws-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-ws-enabled) options. +[`--rpc-http-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled) and +[`--rpc-ws-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-enabled) options. -To enable JSON-RPC over an [IPC socket](API.md#socket-path), use the +To enable JSON-RPC over an [IPC socket](index.md#socket-path), use the `--Xrpc-ipc-enabled` option. !!! caution @@ -25,9 +25,9 @@ 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/CLI-Syntax.md#rpc-http-enabled) or `--Xrpc-ipc-enabled` option. + [`--rpc-http-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled) or `--Xrpc-ipc-enabled` option. 1. Specify which APIs to enable using the - [`--rpc-http-api`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-api) or `--Xrpc-ipc-api` option. + [`--rpc-http-api`](../../Reference/CLI/CLI-Syntax.md#rpc-http-api) or `--Xrpc-ipc-api` option. 1. Start the geth console specifying the JSON-RPC endpoint: !!! example @@ -44,7 +44,7 @@ To use the geth console with Besu: geth attach /path/to/besu.ipc ``` -Use the geth console to call [JSON-RPC API methods](../../../Reference/API-Methods.md) that geth +Use the geth console to call [JSON-RPC API methods](../../Reference/API-Methods.md) that geth and Besu share. !!! example @@ -55,7 +55,7 @@ and Besu share. ## JSON-RPC authentication -Besu disables [Authentication](Authentication.md) by default. +Besu disables [Authentication](authenticate.md) by default. ## HTTP and WebSocket requests @@ -190,7 +190,7 @@ Besu provides readiness and liveness endpoints to confirm the Besu node status. 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/CLI-Syntax.md#p2p-enabled), you do not need +[disabled P2P communication](../../Reference/CLI/CLI-Syntax.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 @@ -236,8 +236,8 @@ 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/CLI-Syntax.md#rpc-http-api), -[`--rpc-ws-api`](../../../Reference/CLI/CLI-Syntax.md#rpc-ws-api), or +[`--rpc-http-api`](../../Reference/CLI/CLI-Syntax.md#rpc-http-api), +[`--rpc-ws-api`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-api), or `--Xrpc-ipc-api` options. !!! caution @@ -248,7 +248,7 @@ To enable the `ADMIN`, `CLIQUE`, `DEBUG`, `EEA`, `IBFT`, `MINER`, `PERM`, `PLUGI 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-Methods.md#eth_gettransactionbyblocknumberandindex) +[`eth_getTransactionByBlockNumberAndIndex`](../../Reference/API-Methods.md#eth_gettransactionbyblocknumberandindex) have a block parameter. The block parameter can have the following values: @@ -258,7 +258,7 @@ The block parameter can have the following values: * `earliest` : `tag` - The earliest (genesis) block. * `latest` : `tag` - The last block mined. * `pending` : `tag` - The last block mined plus pending transactions. Use only with - [`eth_getTransactionCount`](../../../Reference/API-Methods.md#eth_gettransactioncount). + [`eth_getTransactionCount`](../../Reference/API-Methods.md#eth_gettransactioncount). * `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 diff --git a/docs/HowTo/Interact/APIs/jwt.png b/docs/how-to/use-besu-api/jwt.png similarity index 100% rename from docs/HowTo/Interact/APIs/jwt.png rename to docs/how-to/use-besu-api/jwt.png diff --git a/docs/HowTo/Interact/APIs/RPC-PubSub.md b/docs/how-to/use-besu-api/rpc-pubsub.md similarity index 95% rename from docs/HowTo/Interact/APIs/RPC-PubSub.md rename to docs/how-to/use-besu-api/rpc-pubsub.md index c89198c0602..8a296d8b3b4 100644 --- a/docs/HowTo/Interact/APIs/RPC-PubSub.md +++ b/docs/how-to/use-besu-api/rpc-pubsub.md @@ -7,7 +7,7 @@ description: Using RPC Pub/Sub with Hyperledger Besu WebSockets ## Introduction Subscribe to events by using either RPC Pub/Sub over WebSockets or -[filters over HTTP](../Filters/Accessing-Logs-Using-JSON-RPC.md). +[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. @@ -15,7 +15,7 @@ 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](../../../Concepts/Privacy/Privacy-Overview.md). +* `priv_subscribe` and `priv_unsubscribe` - create or cancel a subscription for [private logs](../../Concepts/Privacy/Privacy-Overview.md). !!!important @@ -26,7 +26,7 @@ Methods specific to RPC Pub/Sub are: ### Using RPC Pub/Sub -[WebSockets](Using-JSON-RPC-API.md#http-and-websocket-requests) supports the RPC Pub/Sub API. +[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`. @@ -91,9 +91,9 @@ chain. This means the subscription can publish notifications for multiple blocks on the blockchain. The new headers notification returns -[block objects](../../../Reference/API-Objects.md#block-object). The second parameter is optional. +[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 +[transaction objects](../../Reference/API-Objects.md#transaction-object), Otherwise, the notifications include transaction hashes. !!!example @@ -178,7 +178,7 @@ notifications include transaction hashes. ### Logs -To notify you about [logs](../../../Concepts/Events-and-Logs.md) included in new blocks, use the +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. @@ -187,7 +187,7 @@ 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). + [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. @@ -196,11 +196,11 @@ logs for a private contract subscription. If you create a subscription for a pri 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) +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). +The logs subscription returns [log objects](../../Reference/API-Objects.md#log-object). !!!example "Public logs" diff --git a/docs/index.md b/docs/index.md index e3e6c18df37..7e08f10d05b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -23,7 +23,7 @@ Besu supports enterprise features including privacy and permissioning. ## What can you do with Besu? Besu includes a [command line interface](Reference/CLI/CLI-Syntax.md) and -[JSON-RPC API](HowTo/Interact/APIs/API.md) for running, maintaining, debugging, and monitoring +[JSON-RPC API](how-to/use-besu-api/index.md) for running, maintaining, debugging, and monitoring nodes in an Ethereum network. You can use the API via RPC over HTTP or via WebSockets. Besu also supports Pub/Sub. The API supports typical Ethereum functionalities such as: @@ -45,6 +45,6 @@ use cases, using tools such as [Truffle](http://truffleframework.com/), [Remix](https://github.com/ethereum/remix), and [web3j](https://web3j.io/). The client supports common JSON-RPC API methods such as `eth`, `net`, `web3`, `debug`, and `miner`. -Besu doesn't support [key management](HowTo/Send-Transactions/Account-Management.md) inside the +Besu doesn't support [key management](how-to/Send-Transactions/Account-Management.md) inside the client. You can use [EthSigner](http://docs.ethsigner.consensys.net/en/latest/) with Besu to access your key store and sign transactions. diff --git a/docs/HowTo/Get-Started/System-Requirements/System-Requirements-Private.md b/docs/private-networks/get-started/system-requirements.md similarity index 82% rename from docs/HowTo/Get-Started/System-Requirements/System-Requirements-Private.md rename to docs/private-networks/get-started/system-requirements.md index e341d4df259..93767591fab 100644 --- a/docs/HowTo/Get-Started/System-Requirements/System-Requirements-Private.md +++ b/docs/private-networks/get-started/system-requirements.md @@ -6,8 +6,8 @@ description: System requirements to sync and run Besu # System requirements for private networks A Hyperledger Besu private network is a network not connected to Ethereum Mainnet or an Ethereum testnet. -Private networks typically use a different [chain ID](../../../Concepts/NetworkID-And-ChainID.md) and -[consensus protocol](../../../Concepts/Consensus-Protocols/Overview-Consensus.md). +Private networks typically use a different [chain ID](../../Concepts/NetworkID-And-ChainID.md) and +[consensus protocol](../../Concepts/Consensus-Protocols/Overview-Consensus.md). Participation in private networks is typically restricted in some way, so the volume of traffic is much lower than Mainnet, resulting in lower system requirements. @@ -15,15 +15,15 @@ Private network system requirements depend on many factors, including: * Size of the world state for the network. * Number of transactions submitted to the network. -* [Block gas limit](../../../Reference/Config-Items.md#genesis-block-parameters). -* Number and complexity of [JSON-RPC](../../Interact/APIs/Using-JSON-RPC-API.md), - [PubSub](../../Interact/APIs/RPC-PubSub.md), or [GraphQL](../../Interact/APIs/GraphQL.md) queries +* [Block gas limit](../../Reference/Config-Items.md#genesis-block-parameters). +* Number and complexity of [JSON-RPC](../../how-to/use-besu-api/json-rpc.md), + [PubSub](../../how-to/use-besu-api/rpc-pubsub.md), or [GraphQL](../../how-to/use-besu-api/graphql.md) queries handled by the node. ## Determining system requirements To determine system requirements, check CPU and disk space requirements using -[Prometheus](../../Monitor/Metrics.md#monitor-node-performance-using-prometheus). Grafana provides a +[Prometheus](../../how-to/monitor/metrics.md#monitor-node-performance-using-prometheus). Grafana provides a [sample dashboard](https://grafana.com/grafana/dashboards/10273) for Besu. ## Java Virtual Machine size diff --git a/docs/HowTo/Find-and-Connect/Bootnodes.md b/docs/private-networks/how-to/connect/bootnodes.md similarity index 76% rename from docs/HowTo/Find-and-Connect/Bootnodes.md rename to docs/private-networks/how-to/connect/bootnodes.md index 96e35238d88..1d30527880d 100644 --- a/docs/HowTo/Find-and-Connect/Bootnodes.md +++ b/docs/private-networks/how-to/connect/bootnodes.md @@ -21,18 +21,18 @@ Bootnodes are regular nodes used to discover other nodes. For Mainnet and the Rinkeby, Ropsten, Sepolia, and Goerli testnets, Hyperledger Besu has an internal list of enode URLs and uses this list automatically when you specify the -[`--network`](../../Reference/CLI/CLI-Syntax.md#network) option. +[`--network`](../../../Reference/CLI/CLI-Syntax.md#network) option. ## Private networks In private networks for development or testing purposes, specify at least one bootnode. -In production networks, [configure two or more nodes as bootnodes](../Deploy/Bootnodes.md). +In production networks, [configure two or more nodes as bootnodes](../../../how-to/Deploy/Bootnodes.md). ### Specify a bootnode -To start a node, specifying a bootnode [enode](../../Concepts/Node-Keys.md) for P2P discovery, -using the [`--bootnodes`](../../Reference/CLI/CLI-Syntax.md#bootnodes) option. +To start a node, specifying a bootnode [enode](../../../Concepts/Node-Keys.md) for P2P discovery, +using the [`--bootnodes`](../../../Reference/CLI/CLI-Syntax.md#bootnodes) option. !!! example @@ -42,9 +42,9 @@ using the [`--bootnodes`](../../Reference/CLI/CLI-Syntax.md#bootnodes) option. The default host and port advertised to other peers for P2P discovery is `127.0.0.1:30303`. To specify a different host or port, use the -[`--p2p-host`](../../Reference/CLI/CLI-Syntax.md#p2p-host) and -[`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port) options. +[`--p2p-host`](../../../Reference/CLI/CLI-Syntax.md#p2p-host) and +[`--p2p-port`](../../../Reference/CLI/CLI-Syntax.md#p2p-port) options. By default, peer discovery listens on all available network interfaces. If the device Besu is running on must bind to a specific network interface, specify the interface using the -[`--p2p-interface`](../../Reference/CLI/CLI-Syntax.md#p2p-interface) option. +[`--p2p-interface`](../../../Reference/CLI/CLI-Syntax.md#p2p-interface) option. diff --git a/docs/HowTo/Monitor/Elastic-Stack.md b/docs/private-networks/how-to/monitor/elastic-stack.md similarity index 86% rename from docs/HowTo/Monitor/Elastic-Stack.md rename to docs/private-networks/how-to/monitor/elastic-stack.md index ceace44c9cc..27cefe2a780 100644 --- a/docs/HowTo/Monitor/Elastic-Stack.md +++ b/docs/private-networks/how-to/monitor/elastic-stack.md @@ -5,7 +5,7 @@ description: Using Elastick Stack (ELK) with Hyperledger Besu # Elastic Stack [Elastic Stack] (ELK) is an open-source log management platform that is available when using the -[Developer Quickstart](../../Tutorials/Developer-Quickstart.md). +[Developer Quickstart](../../../Tutorials/Developer-Quickstart.md). The [Filebeat] configuration ingests logs and the [Metricbeat] configuration collects metrics from the nodes at regular defined intervals and outputs them to Redis for storage. @@ -21,11 +21,11 @@ The [pipeline configuration] defines the JSON format used for Besu logs and auto To see the Besu Quickstart network logs in Kibana: -1. [Start the Developer Quickstart with Besu](../../Tutorials/Developer-Quickstart.md), selecting ELK monitoring. +1. [Start the Developer Quickstart with Besu](../../../Tutorials/Developer-Quickstart.md), selecting ELK monitoring. 1. Open the [`Kibana logs address`](http://localhost:5601/app/kibana#/discover) listed by the sample networks `list.sh` script. The logs display in Kibana. - ![Kibana](../../images/KibanaQuickstart.png) + ![Kibana](../../../images/KibanaQuickstart.png) [Filebeat]: https://github.com/ConsenSys/quorum-dev-quickstart/blob/master/files/common/filebeat/filebeat.yml diff --git a/docs/HowTo/Monitor/OpenTelemetry-Collector.md b/docs/private-networks/how-to/monitor/opentelemetry.md similarity index 95% rename from docs/HowTo/Monitor/OpenTelemetry-Collector.md rename to docs/private-networks/how-to/monitor/opentelemetry.md index 29eec33f13d..209338f3d91 100644 --- a/docs/HowTo/Monitor/OpenTelemetry-Collector.md +++ b/docs/private-networks/how-to/monitor/opentelemetry.md @@ -5,8 +5,8 @@ description: Collect Besu information with the OpenTelemetry Collector # OpenTelemetry You can use the OpenTelemetry monitoring and tracing service to gather node metrics and traces. -To enable OpenTelemetry to access Hyperledger Besu, use the [`--metrics-enabled`](../../Reference/CLI/CLI-Syntax.md#metrics-enabled) -and [`--metrics-protocol=opentelemetry`](../../Reference/CLI/CLI-Syntax.md#metrics-protocol) options. +To enable OpenTelemetry to access Hyperledger Besu, use the [`--metrics-enabled`](../../../Reference/CLI/CLI-Syntax.md#metrics-enabled) +and [`--metrics-protocol=opentelemetry`](../../../Reference/CLI/CLI-Syntax.md#metrics-protocol) options. Use [Splunk](https://splunk.com) to visualize the collected data. A [Besu Sync example](https://github.com/splunk/splunk-connect-for-ethereum/tree/master/examples/besu-sync) is available. @@ -140,8 +140,8 @@ Download and install the [OpenTelemetry Collector](https://github.com/open-telem You can also refer to this [Docker-compose example](https://github.com/splunk/splunk-connect-for-ethereum/blob/master/examples/besu-sync/full-sync/docker-compose.yaml). -1. Start Besu with the [`--metrics-enabled`](../../Reference/CLI/CLI-Syntax.md#metrics-enabled) and - [`--metrics-protocol=opentelemetry`](../../Reference/CLI/CLI-Syntax.md#metrics-protocol) options. +1. Start Besu with the [`--metrics-enabled`](../../../Reference/CLI/CLI-Syntax.md#metrics-enabled) and + [`--metrics-protocol=opentelemetry`](../../../Reference/CLI/CLI-Syntax.md#metrics-protocol) options. For example, run the following command to start a single node: === "Syntax" diff --git a/docs/HowTo/Monitor/Quorum-Hibernate.md b/docs/private-networks/how-to/monitor/quorum-hibernate.md similarity index 100% rename from docs/HowTo/Monitor/Quorum-Hibernate.md rename to docs/private-networks/how-to/monitor/quorum-hibernate.md diff --git a/docs/HowTo/Monitor/Splunk-Enterprise.md b/docs/private-networks/how-to/monitor/splunk.md similarity index 96% rename from docs/HowTo/Monitor/Splunk-Enterprise.md rename to docs/private-networks/how-to/monitor/splunk.md index f3450933cc2..00aa4da27c5 100644 --- a/docs/HowTo/Monitor/Splunk-Enterprise.md +++ b/docs/private-networks/how-to/monitor/splunk.md @@ -21,7 +21,7 @@ Options for running Splunk and Besu are: To view the Quickstart network logs in Splunk: -1. [Start the Developer Quickstart with Besu](../../Tutorials/Developer-Quickstart.md), selecting Splunk monitoring. +1. [Start the Developer Quickstart with Besu](../../../Tutorials/Developer-Quickstart.md), selecting Splunk monitoring. 1. Open the [Splunk UI](http://localhost:8000). ## Splunk Connect for Ethereum Docker Compose @@ -68,7 +68,7 @@ Docker Compose environment provided by Splunk. ### Requirements - [Docker](https://docs.docker.com/compose/install/) -- [Besu 1.4.4](https://github.com/hyperledger/besu/blob/master/CHANGELOG.md#144) or later [installed](../Get-Started/Installation-Options/Install-Binaries.md) +- [Besu 1.4.4](https://github.com/hyperledger/besu/blob/master/CHANGELOG.md#144) or later [installed](../../../get-started/install/binary-distribution.md) !!! important @@ -140,7 +140,7 @@ Docker Compose environment provided by Splunk. Congratulations! You can now play with the search and other Splunk features to explore your Besu logs. - ![Splunk search page](../../images/splunk-ui.png) + ![Splunk search page](../../../images/splunk-ui.png) 1. Stop Besu with ++ctrl+c++. Stop the Splunk container with `docker stop splunk-demo`. @@ -150,7 +150,7 @@ Docker Compose environment provided by Splunk. ### Requirements - [Splunk Enterprise license](https://www.splunk.com/) -- [Besu 1.4.4](https://github.com/hyperledger/besu/blob/master/CHANGELOG.md#144) or later [installed](../Get-Started/Installation-Options/Install-Binaries.md) +- [Besu 1.4.4](https://github.com/hyperledger/besu/blob/master/CHANGELOG.md#144) or later [installed](../../../get-started/install/binary-distribution.md) ### Steps diff --git a/docs/HowTo/Send-Transactions/Concurrent-Private-Transactions.md b/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md similarity index 69% rename from docs/HowTo/Send-Transactions/Concurrent-Private-Transactions.md rename to docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md index 304a23629e7..11aa2b09415 100644 --- a/docs/HowTo/Send-Transactions/Concurrent-Private-Transactions.md +++ b/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md @@ -5,16 +5,16 @@ description: Creating and sending concurrent private transactions with Hyperledg # Sending concurrent private transactions Private transaction processing involves two transactions, the private transaction and the -[privacy marker transaction (PMT)](../../Concepts/Privacy/Private-Transaction-Processing.md). -The private transaction and the PMT each have their own [nonce](../../Concepts/Privacy/Private-Transactions.md#nonces). +[privacy marker transaction (PMT)](../../../Concepts/Privacy/Private-Transaction-Processing.md). +The private transaction and the PMT each have their own [nonce](../../../Concepts/Privacy/Private-Transactions.md#nonces). If your private transaction rate requires sending private transactions without waiting for the previous -private transaction to be mined, using [`eth_getTransactionCount`](../../Reference/API-Methods.md#eth_gettransactioncount) -and [`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction) may result in -[incorrect nonces](../../Concepts/Privacy/Private-Transactions.md#private-nonce-management). +private transaction to be mined, using [`eth_getTransactionCount`](../../../Reference/API-Methods.md#eth_gettransactioncount) +and [`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction) may result in +[incorrect nonces](../../../Concepts/Privacy/Private-Transactions.md#private-nonce-management). -In this case, use [`priv_distributeRawTransaction`](Creating-Sending-Private-Transactions.md#priv_distributerawtransaction) -instead of [`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction). +In this case, use [`priv_distributeRawTransaction`](private-transactions.md#priv_distributerawtransaction) +instead of [`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction). !!! note @@ -22,10 +22,10 @@ instead of [`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendraw [`priv_getEeaTransactionCount`](../../Reference/API-Methods.md#priv_geteeatransactioncount) to get the nonce for an account for the specified privacy group or participants. -Send the corresponding PMT using [`eth_sendRawTransaction`](../../Reference/API-Methods.md#eth_sendrawtransaction), +Send the corresponding PMT using [`eth_sendRawTransaction`](../../../Reference/API-Methods.md#eth_sendrawtransaction), specifying the public PMT nonce. This method allows you to create and send the PMT yourself rather than -[`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction) handling the PMT. +[`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction) handling the PMT. !!! important diff --git a/docs/HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md b/docs/private-networks/how-to/send-transactions/private-transactions.md similarity index 75% rename from docs/HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md rename to docs/private-networks/how-to/send-transactions/private-transactions.md index 3acac924ddd..008e35b08df 100644 --- a/docs/HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md +++ b/docs/private-networks/how-to/send-transactions/private-transactions.md @@ -4,9 +4,9 @@ description: Creating and sending private transactions with Hyperledger Besu # Creating and sending private transactions -Create and send [private transactions](../../Concepts/Privacy/Privacy-Overview.md) using: +Create and send [private transactions](../../../Concepts/Privacy/Privacy-Overview.md) using: -* [web3js-quorum client library](../Interact/Client-Libraries/web3js-quorum.md) or +* [web3js-quorum client library](../../../how-to/Interact/Client-Libraries/web3js-quorum.md) or [web3j client library](https://github.com/web3j/web3j) * [`eea_sendTransaction` with EthSigner](https://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/) * [`eea_sendRawTransaction`](#eea_sendrawtransaction) @@ -17,7 +17,7 @@ distributed. If any participants are offline when submitting the private transac transaction is not attempted and you must resubmit the transaction. The `gas` and `gasPrice` specified when sending a private transaction are used by the -[privacy marker transaction (PMT)](../../Concepts/Privacy/Private-Transaction-Processing.md), not the private transaction itself. +[privacy marker transaction (PMT)](../../../Concepts/Privacy/Private-Transaction-Processing.md), not the private transaction itself. !!! note @@ -26,9 +26,9 @@ The `gas` and `gasPrice` specified when sending a private transaction are used b ## `eea_sendRawTransaction` -[`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction) distributes the +[`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction) distributes the private transaction to the participating nodes, and signs and submits the PMT, as described in -[Private transaction processing](../../Concepts/Privacy/Private-Transaction-Processing.md). +[Private transaction processing](../../../Concepts/Privacy/Private-Transaction-Processing.md). !!! note @@ -38,28 +38,28 @@ private transaction to the participating nodes, and signs and submits the PMT, a ## `priv_distributeRawTransaction` -Use [`priv_distributeRawTransaction`](../../Reference/API-Methods.md#priv_distributerawtransaction) instead of -[`eea_sendRawTransaction`](#eea_sendrawtransaction) when sending [concurrent private transactions](Concurrent-Private-Transactions.md). +Use [`priv_distributeRawTransaction`](../../../Reference/API-Methods.md#priv_distributerawtransaction) instead of +[`eea_sendRawTransaction`](#eea_sendrawtransaction) when sending [concurrent private transactions](concurrent-private-transactions.md). -[`priv_distributeRawTransaction`](../../Reference/API-Methods.md#priv_distributerawtransaction) +[`priv_distributeRawTransaction`](../../../Reference/API-Methods.md#priv_distributerawtransaction) distributes the private transaction to the participating nodes but does not sign and submit the PMT. -That is, it performs steps 1 to 5 of [Private Transaction Processing](../../Concepts/Privacy/Private-Transaction-Processing.md). +That is, it performs steps 1 to 5 of [Private Transaction Processing](../../../Concepts/Privacy/Private-Transaction-Processing.md). If using -[`priv_distributeRawTransaction`](../../Reference/API-Methods.md#priv_distributerawtransaction) -instead of [`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction), use +[`priv_distributeRawTransaction`](../../../Reference/API-Methods.md#priv_distributerawtransaction) +instead of [`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction), use the value returned by -[`priv_distributeRawTransaction`](../../Reference/API-Methods.md#priv_distributerawtransaction), +[`priv_distributeRawTransaction`](../../../Reference/API-Methods.md#priv_distributerawtransaction), which is the enclave key to the private transaction in [Tessera](https://docs.tessera.consensys.net/), in the `data` field of a call to -[`eth_sendRawTransaction`](../../Reference/API-Methods.md#eth_sendrawtransaction). +[`eth_sendRawTransaction`](../../../Reference/API-Methods.md#eth_sendrawtransaction). Use the value returned by -[`priv_getPrivacyPrecompileAddress`](../../Reference/API-Methods.md#priv_getprivacyprecompileaddress), which is the -address of the [privacy precompiled contract](../../Concepts/Privacy/Private-Transaction-Processing.md), in the `to` +[`priv_getPrivacyPrecompileAddress`](../../../Reference/API-Methods.md#priv_getprivacyprecompileaddress), which is the +address of the [privacy precompiled contract](../../../Concepts/Privacy/Private-Transaction-Processing.md), in the `to` field of the call. -By using the [public Ethereum transaction](Transactions.md), -[`eth_sendRawTransaction`](../../Reference/API-Methods.md#eth_sendrawtransaction), you are signing +By using the [public Ethereum transaction](../../../how-to/send-transactions.md), +[`eth_sendRawTransaction`](../../../Reference/API-Methods.md#eth_sendrawtransaction), you are signing and submitting the PMT yourself instead of having it signed by the Besu node, giving you greater control over the PMT. !!! warning @@ -111,15 +111,15 @@ and submitting the PMT yourself instead of having it signed by the Besu node, gi To create an [EEA-compliant private transaction], specify `privateFor` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction). To create a [Besu-extended private transaction], specify a `privacyGroupId` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction). ## Unsigned and unencoded private transactions -The [`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction) parameter is +The [`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction) parameter is a signed RLP-encoded private transaction. Shown below are examples of unsigned and unencoded private transactions to create a contract. @@ -163,5 +163,5 @@ private transactions to create a contract. -[EEA-compliant private transaction]: ../../Concepts/Privacy/Privacy-Groups.md#enterprise-ethereum-alliance-privacy -[Besu-extended private transaction]: ../../Concepts/Privacy/Privacy-Groups.md#besu-extended-privacy +[EEA-compliant private transaction]: ../../../Concepts/Privacy/Privacy-Groups.md#enterprise-ethereum-alliance-privacy +[Besu-extended private transaction]: ../../../Concepts/Privacy/Privacy-Groups.md#besu-extended-privacy diff --git a/docs/HowTo/Send-Transactions/Revert-Reason.md b/docs/private-networks/how-to/send-transactions/revert-reason.md similarity index 85% rename from docs/HowTo/Send-Transactions/Revert-Reason.md rename to docs/private-networks/how-to/send-transactions/revert-reason.md index 866deba3ede..941687d2f3c 100644 --- a/docs/HowTo/Send-Transactions/Revert-Reason.md +++ b/docs/private-networks/how-to/send-transactions/revert-reason.md @@ -41,11 +41,11 @@ client an optional string message containing information about the error. ## Enabling revert reason -Use the [`--revert-reason-enabled`](../../Reference/CLI/CLI-Syntax.md#revert-reason-enabled) +Use the [`--revert-reason-enabled`](../../../Reference/CLI/CLI-Syntax.md#revert-reason-enabled) command line option to include the revert reason in the transaction receipt, -[`eth_estimateGas`](../../Reference/API-Methods.md#eth_estimategas) error, -[`eth_call`](../../Reference/API-Methods.md#eth_call) error, and -[`trace`](../../Reference/Trace-Types.md#trace) response in Hyperledger Besu. +[`eth_estimateGas`](../../../Reference/API-Methods.md#eth_estimategas) error, +[`eth_call`](../../../Reference/API-Methods.md#eth_call) error, and +[`trace`](../../../Reference/Trace-Types.md#trace) response in Hyperledger Besu. !!! caution @@ -55,7 +55,7 @@ command line option to include the revert reason in the transaction receipt, ## Where is the revert reason included With revert reason enabled, the transaction receipt returned by -[`eth_getTransactionReceipt`](../../Reference/API-Methods.md#eth_gettransactionreceipt) includes +[`eth_getTransactionReceipt`](../../../Reference/API-Methods.md#eth_gettransactionreceipt) includes the revert reason as an ABI-encoded string. !!! important @@ -90,8 +90,8 @@ the revert reason as an ABI-encoded string. } ``` -The error returned by [`eth_estimateGas`](../../Reference/API-Methods.md#eth_estimategas) and -[`eth_call`](../../Reference/API-Methods.md#eth_call) includes the revert reason as an ABI-encoded string in the `data` field. +The error returned by [`eth_estimateGas`](../../../Reference/API-Methods.md#eth_estimategas) and +[`eth_call`](../../../Reference/API-Methods.md#eth_call) includes the revert reason as an ABI-encoded string in the `data` field. !!! example "Example of `eth_estimateGas` and `eth_call` error" @@ -107,10 +107,10 @@ The error returned by [`eth_estimateGas`](../../Reference/API-Methods.md#eth_est } ``` -The list items in the [`trace`](../../Reference/Trace-Types.md#trace) response returned by -[`trace_replayBlockTransactions`](../../Reference/API-Methods.md#trace_replayblocktransactions), -[`trace_block`](../../Reference/API-Methods.md#trace_block), and -[`trace_transaction`](../../Reference/API-Methods.md#trace_transaction) include the revert reason as an ABI-encoded string. +The list items in the [`trace`](../../../Reference/Trace-Types.md#trace) response returned by +[`trace_replayBlockTransactions`](../../../Reference/API-Methods.md#trace_replayblocktransactions), +[`trace_block`](../../../Reference/API-Methods.md#trace_block), and +[`trace_transaction`](../../../Reference/API-Methods.md#trace_transaction) include the revert reason as an ABI-encoded string. !!! example "Example of `trace` response list item" diff --git a/docs/HowTo/Get-Started/Starting-node.md b/docs/public-networks/get-started/start-node.md similarity index 95% rename from docs/HowTo/Get-Started/Starting-node.md rename to docs/public-networks/get-started/start-node.md index 6d09081ecdb..e7eca0ac49e 100644 --- a/docs/HowTo/Get-Started/Starting-node.md +++ b/docs/public-networks/get-started/start-node.md @@ -13,7 +13,7 @@ with the most common options. ## Prerequisites -[Besu Installed](Installation-Options/Install-Binaries.md) +[Besu Installed](../../get-started/install/binary-distribution.md) ## Local block data @@ -45,13 +45,13 @@ the file using the [`--genesis-file`](../../Reference/CLI/CLI-Syntax.md#genesis- ## Syncing and storage By default, Besu syncs to the current state of the blockchain using -[fast sync](../../Concepts/Node-Types.md#fast-synchronization) in: +[fast sync](../how-to/connect/sync-node.md#fast-synchronization) in: - Networks specified using [`--network`](../../Reference/CLI/CLI-Syntax.md#network) except for the `dev` development network. - Ethereum Mainnet. -We recommend using [snap sync](../../Concepts/Node-Types.md#snap-synchronization) for a faster sync, by starting Besu +We recommend using [snap sync](../how-to/connect/sync-node.md#snap-synchronization) for a faster sync, by starting Besu with [`--sync-mode=X_SNAP`](../../Reference/CLI/CLI-Syntax.md#sync-mode). By default, Besu stores data in the [Forest of Tries](../../Concepts/Data-Storage-Formats.md#forest-of-tries) format. @@ -101,7 +101,7 @@ To run a node that mines blocks at a rate suitable for testing purposes: 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](../Configure/Using-Configuration-File.md) +You can also use the following [configuration file](../../how-to/configure/configuration-file.md) on the command line to start a node with the same options as above: ```toml @@ -200,7 +200,7 @@ besu --rpc-http-enabled ## Besu launcher Use the Besu launcher to interactively configure and start a node with the most common options. The -launcher asks a series of questions and generates a [configuration file](../Configure/Using-Configuration-File.md). +launcher asks a series of questions and generates a [configuration file](../../how-to/configure/configuration-file.md). To run the Besu launcher: diff --git a/docs/HowTo/Get-Started/System-Requirements/System-Requirements-Public.md b/docs/public-networks/get-started/system-requirements.md similarity index 83% rename from docs/HowTo/Get-Started/System-Requirements/System-Requirements-Public.md rename to docs/public-networks/get-started/system-requirements.md index bacacda154f..a206026030f 100644 --- a/docs/HowTo/Get-Started/System-Requirements/System-Requirements-Public.md +++ b/docs/public-networks/get-started/system-requirements.md @@ -8,7 +8,7 @@ description: System requirements to sync and run Besu You can use Hyperledger Besu on Ethereum Mainnet and public Ethereum testnets. Determine public network system requirements by checking CPU and disk space requirements using -[Prometheus](../../Monitor/Metrics.md#monitor-node-performance-using-prometheus). +[Prometheus](../../how-to/monitor/metrics.md#monitor-node-performance-using-prometheus). Grafana provides a [sample dashboard](https://grafana.com/grafana/dashboards/10273) for Besu. !!! tip @@ -25,9 +25,9 @@ to the chain head. Monitor your system to determine your actual JVM memory needs ## Disk space -[Fast synchronization](../../../Reference/CLI/CLI-Syntax.md#sync-mode) with -[pruning](../../../Concepts/Pruning.md) enabled requires approximately 750 GB of disk space. -[Full synchronization](../../../Reference/CLI/CLI-Syntax.md#sync-mode) requires approximately 3 TB. +[Fast synchronization](../../Reference/CLI/CLI-Syntax.md#sync-mode) with +[pruning](../../Concepts/Pruning.md) enabled requires approximately 750 GB of disk space. +[Full synchronization](../../Reference/CLI/CLI-Syntax.md#sync-mode) requires approximately 3 TB. ## Disk type diff --git a/docs/Concepts/Node-Types.md b/docs/public-networks/how-to/connect/sync-node.md similarity index 85% rename from docs/Concepts/Node-Types.md rename to docs/public-networks/how-to/connect/sync-node.md index 20a1f54c013..cce30682fff 100644 --- a/docs/Concepts/Node-Types.md +++ b/docs/public-networks/how-to/connect/sync-node.md @@ -31,7 +31,7 @@ You can run a full node using [fast synchronization (fast sync)](#fast-synchroni ### Fast synchronization -Enable fast sync using [`--sync-mode=FAST`](../Reference/CLI/CLI-Syntax.md#sync-mode). +Enable fast sync using [`--sync-mode=FAST`](../../../Reference/CLI/CLI-Syntax.md#sync-mode). Fast sync downloads the block headers and transaction receipts, and verifies the chain of block headers from the genesis block. @@ -39,16 +39,16 @@ 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/CLI-Syntax.md#network) +Fast sync is the default for named networks specified using the [`--network`](../../../Reference/CLI/CLI-Syntax.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/CLI-Syntax.md#network) or [`--genesis-file`](../Reference/CLI/CLI-Syntax.md#genesis-file) +[`--network`](../../../Reference/CLI/CLI-Syntax.md#network) or [`--genesis-file`](../../../Reference/CLI/CLI-Syntax.md#genesis-file) options. -Using fast sync with [private transactions](../Concepts/Privacy/Privacy-Overview.md) isn't supported. +Using fast sync with [private transactions](../../../Concepts/Privacy/Privacy-Overview.md) isn't supported. You can observe the `besu_synchronizer_fast_sync_*` and `besu_synchronizer_world_state_*` -[metrics](../HowTo/Monitor/Metrics.md#metrics-list) to monitor fast sync. +[metrics](../../../how-to/monitor/metrics.md#metrics-list) to monitor fast sync. !!! warning @@ -87,10 +87,10 @@ You can observe the `besu_synchronizer_fast_sync_*` and `besu_synchronizer_world We recommend using snap sync with the [Bonsai](Data-Storage-Formats.md#bonsai-tries) data storage format for the fastest sync and lowest storage requirements. -Enable snap sync using [`--sync-mode=X_SNAP`](../Reference/CLI/CLI-Syntax.md#sync-mode). +Enable snap sync using [`--sync-mode=X_SNAP`](../../../Reference/CLI/CLI-Syntax.md#sync-mode). You need Besu version 22.4.0 or later to use snap sync. -Instead of downloading the [state trie](Data-Storage-Formats.md) node by node, snap sync downloads as many leaves of the +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. @@ -103,12 +103,12 @@ deleting the data directory, and starting over using `--sync-mode=X_SNAP`. Checkpoint sync is an experimental feature. -Enable checkpoint sync using [`--sync-mode=X_CHECKPOINT`](../Reference/CLI/CLI-Syntax.md#sync-mode). +Enable checkpoint sync using [`--sync-mode=X_CHECKPOINT`](../../../Reference/CLI/CLI-Syntax.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](../HowTo/Configure/Genesis-File.md). +file](../../../how-to/configure/Genesis-File.md). You can configure a checkpoint in the genesis file by specifying the block hash, number, and total difficulty as in the following example. @@ -137,6 +137,6 @@ sync from the genesis block. ## Run an archive node To run an archive node, enable full synchronization (full sync) using -[`--sync-mode=FULL`](../Reference/CLI/CLI-Syntax.md#sync-mode). +[`--sync-mode=FULL`](../../../Reference/CLI/CLI-Syntax.md#sync-mode). Full sync starts from the genesis block and reprocesses all transactions. diff --git a/docs/HowTo/Upgrade/Prepare-for-The-Merge.md b/docs/public-networks/how-to/prepare-for-the-merge.md similarity index 94% rename from docs/HowTo/Upgrade/Prepare-for-The-Merge.md rename to docs/public-networks/how-to/prepare-for-the-merge.md index f143a02d1b5..19d3113d230 100644 --- a/docs/HowTo/Upgrade/Prepare-for-The-Merge.md +++ b/docs/public-networks/how-to/prepare-for-the-merge.md @@ -31,7 +31,7 @@ You can use Besu with any consensus client. ### 1. Configure the Engine API -The beacon node and Besu communicate using the [Engine API](../Interact/APIs/Engine-API.md). +The beacon node and Besu communicate using the [Engine API](use-engine-api.md). Configure the Engine API by setting [`engine-rpc-port`](../../Reference/CLI/CLI-Syntax.md#engine-rpc-port) in the Besu configuration file. @@ -60,7 +60,7 @@ configured data directory. ### 3. Sync Besu Validators can't produce attestations or blocks without a fully synced execution endpoint. -To expedite network participation, [sync Besu](../../Concepts/Node-Types.md) on Ethereum Mainnet before the Merge +To expedite network participation, [sync Besu](connect/sync-node.md) on Ethereum Mainnet before the Merge configuration (Bellatrix) comes online. ## Update Besu diff --git a/docs/HowTo/Interact/APIs/Engine-API.md b/docs/public-networks/how-to/use-engine-api.md similarity index 84% rename from docs/HowTo/Interact/APIs/Engine-API.md rename to docs/public-networks/how-to/use-engine-api.md index 3f4cb0a0458..98d67738b32 100644 --- a/docs/HowTo/Interact/APIs/Engine-API.md +++ b/docs/public-networks/how-to/use-engine-api.md @@ -4,15 +4,15 @@ description: How to enable and use the Engine API # Use the Engine API -After [The Merge](../../../Concepts/Merge.md), consensus and execution clients communicate with each other using the Engine API. -These [API methods](../../../Reference/Engine-API-Methods.md) are a separate subsection of the [JSON-RPC API](API.md). +After [The Merge](../../Concepts/Merge.md), consensus and execution clients communicate with each other using the Engine API. +These [API methods](../../Reference/Engine-API-Methods.md) are a separate subsection of the [JSON-RPC API](../../how-to/use-besu-api/index.md). ## Configure the Engine API To configure the Engine API: -- [Enable the JSON-RPC API](API.md#enable-api-access). - Ensure the [`ETH` method is enabled](Using-JSON-RPC-API.md#api-methods-enabled-by-default) (it's enabled by default). +- [Enable the JSON-RPC API](../../how-to/use-besu-api/index.md#enable-api-access). + Ensure the [`ETH` method is enabled](../../how-to/use-besu-api/json-rpc.md#api-methods-enabled-by-default) (it's enabled by default). - Specify the [service ports](#service-ports). - Specify the [host allowlist](#host-allowlist). @@ -25,7 +25,7 @@ To configure the Engine API: ### Service ports To specify the port the Engine API service listens on for HTTP and WebSocket, use the -[`--engine-rpc-port`](../../../Reference/CLI/CLI-Syntax.md#engine-rpc-port) option. +[`--engine-rpc-port`](../../Reference/CLI/CLI-Syntax.md#engine-rpc-port) option. The default is `8551`. ### Host allowlist @@ -33,7 +33,7 @@ The default is `8551`. 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/CLI-Syntax.md#engine-host-allowlist) option matches the request host headers. +[`--engine-host-allowlist`](../../Reference/CLI/CLI-Syntax.md#engine-host-allowlist) option matches the request host headers. By default, Besu accepts requests and connections from `localhost` and `127.0.0.1`. !!! important @@ -51,21 +51,21 @@ Specify "*" for `--engine-host-allowlist` to effectively disable host protection ## Authentication -By default, [authentication](Authentication.md) for the Engine API is enabled. -To disable, set the [`--engine-jwt-disabled`](../../../Reference/CLI/CLI-Syntax.md#engine-jwt-disabled) option to `true`. +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/CLI-Syntax.md#engine-jwt-disabled) option to `true`. !!! warning Don't disable JWT authentication in production environments. Disable only for testing purposes. -Set the [JWT secret](Authentication.md#jwt-public-key-authentication) by using the [`--engine-jwt-secret`](../../../Reference/CLI/CLI-Syntax.md#engine-jwt-secret) option. +Set the [JWT secret](../../how-to/use-besu-api/authenticate.md#jwt-public-key-authentication) by using the [`--engine-jwt-secret`](../../Reference/CLI/CLI-Syntax.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-Methods.md#engine_forkchoiceupdatedv1). +Prepare to send a payload using [`engine_forkchoiceUpdatedV1`](../../Reference/Engine-API-Methods.md#engine_forkchoiceupdatedv1). !!! example @@ -94,7 +94,7 @@ Prepare to send a payload using [`engine_forkchoiceUpdatedV1`](../../../Referenc ### 2. Get the payload -Get the payload using [`engine_getPayloadV1`](../../../Reference/Engine-API-Methods.md#engine_getpayloadv1) +Get the payload using [`engine_getPayloadV1`](../../Reference/Engine-API-Methods.md#engine_getpayloadv1) !!! example @@ -131,7 +131,7 @@ Get the payload using [`engine_getPayloadV1`](../../../Reference/Engine-API-Meth ### 3. Execute the payload -Execute the payload using [`engine_newPayloadV1`](../../../Reference/Engine-API-Methods.md#engine_newpayloadv1) +Execute the payload using [`engine_newPayloadV1`](../../Reference/Engine-API-Methods.md#engine_newpayloadv1) !!! example @@ -174,7 +174,7 @@ Execute the payload using [`engine_newPayloadV1`](../../../Reference/Engine-API- ### 4. Update the fork choice -Update the fork choice using [`engine_forkchoiceUpdatedV1`](../../../Reference/Engine-API-Methods.md#engine_forkchoiceupdatedv1) again. +Update the fork choice using [`engine_forkchoiceUpdatedV1`](../../Reference/Engine-API-Methods.md#engine_forkchoiceupdatedv1) again. !!! example diff --git a/mkdocs.yml b/mkdocs.yml index 1b3ac2c341d..f8e81c5e6b0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -59,187 +59,80 @@ extra_javascript: - assets/javascripts/zoomify.min.js nav: - - How to: - - Get started with Besu: - - System requirements: - - Private network: HowTo/Get-Started/System-Requirements/System-Requirements-Private.md - - Public network: HowTo/Get-Started/System-Requirements/System-Requirements-Public.md + - Public networks: + - Get started: + - System requirements: public-networks/get-started/system-requirements.md - Install Besu: - - Options: HowTo/Get-Started/Installation-Options/Options.md - - Run Besu from Docker image: HowTo/Get-Started/Installation-Options/Run-Docker-Image.md - - Install binary distribution: HowTo/Get-Started/Installation-Options/Install-Binaries.md - - Build from source: HowTo/Get-Started/Installation-Options/Build-from-source.md - - Start Besu: HowTo/Get-Started/Starting-node.md - - Configure Besu: - - Consensus protocols: - - QBFT: HowTo/Configure/Consensus-Protocols/QBFT.md - - IBFT 2.0: HowTo/Configure/Consensus-Protocols/IBFT.md - - Clique: HowTo/Configure/Consensus-Protocols/Clique.md - - Create a genesis file: HowTo/Configure/Genesis-File.md - - Specify options in a configuration file: HowTo/Configure/Using-Configuration-File.md - - Configure a free gas network: HowTo/Configure/FreeGas.md - - TLS: - - Client and server TLS: HowTo/Configure/TLS/Configure-TLS.md - - Peer-to-peer TLS: HowTo/Configure/TLS/P2P-TLS.md - - High availability: - - Configure high availability of APIs: HowTo/Configure/Configure-HA/High-Availability.md - - Sample load balancer configurations: HowTo/Configure/Configure-HA/Sample-Configuration.md - - Predeploy a contract in the genesis file: HowTo/Configure/Contracts-in-Genesis.md - - Configure mining: HowTo/Configure/Configure-Mining.md - - Pass JVM options: HowTo/Configure/Passing-JVM-Options.md - - Alternative elliptic curves: HowTo/Configure/Alternative-EC-Curves.md - - Block proposal permissioning: HowTo/Configure/Block-Proposal-Permissioning.md - - Interact with node: - - Besu APIs: - - Access Besu APIs: HowTo/Interact/APIs/API.md - - Use JSON-RPC API over HTTP or WebSockets: HowTo/Interact/APIs/Using-JSON-RPC-API.md - - Use RPC Pub/Sub API over WebSockets: HowTo/Interact/APIs/RPC-PubSub.md - - Use GraphQL over HTTP: HowTo/Interact/APIs/GraphQL.md - - Authenticate JSON-RPC requests: HowTo/Interact/APIs/Authentication.md - - Use the Engine API: HowTo/Interact/APIs/Engine-API.md - - Client libraries: - - Use the web3js-quorum client library: HowTo/Interact/Client-Libraries/web3js-quorum.md - - Filters: - - Access logs using JSON-RPC API: HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.md - - Find and connect to peers: - - Specify bootnodes: HowTo/Find-and-Connect/Bootnodes.md - - Configure static nodes: HowTo/Find-and-Connect/Static-Nodes.md - - Configure ports for access: HowTo/Find-and-Connect/Configuring-Ports.md - - Manage peers: HowTo/Find-and-Connect/Managing-Peers.md - - Specify NAT method: HowTo/Find-and-Connect/Specifying-NAT.md - - Monitor nodes: - - Use metrics: HowTo/Monitor/Metrics.md - - Use Elastic Stack: HowTo/Monitor/Elastic-Stack.md - - Use Quorum Hibernate: HowTo/Monitor/Quorum-Hibernate.md - - Use Splunk: HowTo/Monitor/Splunk-Enterprise.md - - Use OpenTelemetry: HowTo/Monitor/OpenTelemetry-Collector.md - - Configure logging: HowTo/Monitor/Logging.md - - Send transactions: - - Use wallets for key management: HowTo/Send-Transactions/Account-Management.md - - Create and send transactions: HowTo/Send-Transactions/Transactions.md - - Create and send private transactions: HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md - - Send concurrent private transactions: HowTo/Send-Transactions/Concurrent-Private-Transactions.md - - Include revert reason: HowTo/Send-Transactions/Revert-Reason.md - - Limit access to node: - - Use local permissioning: HowTo/Limit-Access/Local-Permissioning.md - - Update onchain allowlists: HowTo/Limit-Access/Updating-Permission-Lists.md - - Specify interface version: HowTo/Limit-Access/Specify-Perm-Version.md - - Use privacy features: - - Use EEA-compliant privacy: HowTo/Use-Privacy/EEA-Compliant.md - - Use Besu-extended privacy: HowTo/Use-Privacy/Privacy.md - - Create and manage privacy groups: HowTo/Use-Privacy/Create-Manage-Privacy-Groups.md - - Sign privacy marker transactions: HowTo/Use-Privacy/Sign-Privacy-Marker-Transactions.md - - Access private and privacy marker transactions: HowTo/Use-Privacy/Access-Private-Transactions.md - - Run Tessera with Besu: HowTo/Use-Privacy/Run-Tessera-With-Besu.md - - Use flexible privacy: HowTo/Use-Privacy/Use-FlexiblePrivacy.md - - Use GoQuorum-compatible privacy: HowTo/Use-Privacy/Use-GoQuorum-compatible-privacy.md - - Private transaction performance best practices: HowTo/Use-Privacy/Performance-Best-Practices.md - - Deploy for production: - - Deploy to the cloud: HowTo/Deploy/Cloud.md - - Use Ansible to deploy Besu: HowTo/Deploy/Ansible.md - - Use Kubernetes to deploy a private network: HowTo/Deploy/Kubernetes.md - - Configure bootnodes: HowTo/Deploy/Bootnodes.md - - Configure validators: HowTo/Deploy/Validators.md - - Deploy permissioning management dapp: HowTo/Deploy/Production.md - - Use Ethstats network monitor: HowTo/Deploy/Ethstats.md - - Backup and restore: HowTo/Backup/Backup.md - - Upgrade: - - Upgrade node: HowTo/Upgrade/Upgrade-Node.md - - Upgrade protocol: HowTo/Upgrade/Upgrade-Protocol.md - - Prepare for The Merge: HowTo/Upgrade/Prepare-for-The-Merge.md - - Develop dapps on Besu: - - Use Truffle: HowTo/Develop-Dapps/Truffle.md - - Use client libraries: HowTo/Develop-Dapps/Client-Libraries.md - - Troubleshoot: - - Add and remove validators without voting: HowTo/Troubleshoot/Add-Validators-Without-Voting.md - - Use EVM tool: HowTo/Troubleshoot/Use-EVM-Tool.md - - Collect Java runtime data: HowTo/Troubleshoot/Java-Flight-Recording.md - - Trace transactions: HowTo/Troubleshoot/Trace-Transactions.md - - Solve common problems: HowTo/Troubleshoot/Troubleshooting.md - - Tutorials: - - Quorum Developer Quickstart: Tutorials/Developer-Quickstart.md - - Create a private network: - - Use QBFT (PoA): Tutorials/Private-Network/Create-QBFT-Network.md - - Use IBFT 2.0 (PoA): Tutorials/Private-Network/Create-IBFT-Network.md - - Use Clique (PoA): Tutorials/Private-Network/Create-Private-Clique-Network.md - - Use Ethash (PoW): Tutorials/Private-Network/Create-Private-Network.md - - Add and remove IBFT 2.0 validators: Tutorials/Private-Network/Adding-removing-IBFT-validators.md - - Permissioning: - - Create a permissioned network: Tutorials/Permissioning/Create-Permissioned-Network.md - - Get started with onchain permissioning: Tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md - - Upgrade the permissioning contracts: Tutorials/Permissioning/Upgrade-Permissioning-Contract.md - - Smart contracts and transactions: - - Deploy a contract: Tutorials/Contracts/Deploying-Contracts.md - - Interact with a deployed contract: Tutorials/Contracts/Calling-Contract-Functions.md - - Transfer account funds: Tutorials/Contracts/Account-Funds-Transfers.md - - Privacy: - - Create a privacy-enabled network: Tutorials/Privacy/Configuring-Privacy.md - - Create a privacy-enabled network using the Quickstart: Tutorials/Privacy/Privacy-Example.md - - Configure a multi-tenant network: Tutorials/Privacy/Configuring-Multi-Tenancy.md - - Use web3js-quorum multinode example: Tutorials/Privacy/web3js-quorum-Multinode-example.md - - Kubernetes: - - Overview: Tutorials/Kubernetes/Overview.md - - Local playground: Tutorials/Kubernetes/Playground.md - - Create a cluster: Tutorials/Kubernetes/Create-Cluster.md - - Deploy charts: Tutorials/Kubernetes/Deploy-Charts.md - - Quorum Explorer: Tutorials/Kubernetes/Quorum-Explorer.md - - Maintenance: Tutorials/Kubernetes/Maintenance.md - - Production: Tutorials/Kubernetes/Production.md - - Configure Kubernetes mode in NAT Manager : Tutorials/Kubernetes/Nat-Manager-Kubernetes.md - - Deploy on Microsoft Azure: Tutorials/Private-Network-Example-Azure.md - - Run Besu and Teku on the Merge testnet: Tutorials/Merge-Testnet.md - - Concepts: - - Architecture: Concepts/ArchitectureOverview.md - - Consensus protocols: - - Overview: Concepts/Consensus-Protocols/Overview-Consensus.md - - Comparing PoA consensus protocols: Concepts/Consensus-Protocols/Comparing-PoA.md - - Data storage formats: Concepts/Data-Storage-Formats.md - - Events and logs: Concepts/Events-and-Logs.md - - The Merge: Concepts/Merge.md - - Mining: Concepts/Mining.md - - Monitoring: Concepts/Monitoring.md - - Network ID and chain ID: Concepts/NetworkID-And-ChainID.md - - Network vs node configuration: Concepts/Network-vs-Node.md - - Node keys: Concepts/Node-Keys.md - - Node types: Concepts/Node-Types.md - - Permissioning: - - Overview: Concepts/Permissioning/Permissioning-Overview.md - - Onchain permissioning: Concepts/Permissioning/Onchain-Permissioning.md - - Permissioning plugin: Concepts/Permissioning/Plugin-Permissioning.md - - Plugins: Concepts/Plugins.md - - Privacy: - - Overview: Concepts/Privacy/Privacy-Overview.md - - Private transactions: Concepts/Privacy/Private-Transactions.md - - Privacy groups: Concepts/Privacy/Privacy-Groups.md - - Processing private transactions: Concepts/Privacy/Private-Transaction-Processing.md - - Flexible privacy groups: Concepts/Privacy/Flexible-PrivacyGroups.md - - Multi-tenancy: Concepts/Privacy/Multi-Tenancy.md - - Privacy plugin: Concepts/Privacy/Plugin-Privacy.md - - Protocol upgrades: Concepts/Protocol-Upgrades.md - - Pruning: Concepts/Pruning.md - - Public key infrastructure: Concepts/PKI.md - - TLS communication: Concepts/TLS.md - - Transactions: - - Transaction types: Concepts/Transactions/Transaction-Types.md - - Transaction pool: Concepts/Transactions/Transaction-Pool.md - - Validating transactions: Concepts/Transactions/Transaction-Validation.md - - Reference: - - Besu command line: - - Options: Reference/CLI/CLI-Syntax.md - - Subcommands: Reference/CLI/CLI-Subcommands.md - - Besu API methods: Reference/API-Methods.md - - Besu API objects: Reference/API-Objects.md - - Engine API methods: Reference/Engine-API-Methods.md - - Engine API objects: Reference/Engine-API-Objects.md - - Transaction trace types: Reference/Trace-Types.md - - Genesis file items: Reference/Config-Items.md - - Web3js-quorum reference: Reference/web3js-quorum.md - - Plugin API interfaces: Reference/Plugin-API-Interfaces.md - - Accounts for testing: Reference/Accounts-for-Testing.md - - EVM tool: Reference/Evm-Tool.md - - Projects using Besu: Reference/Projects-Using-Besu.md - - Security disclosure policy: Reference/Responsible-Disclosure.md - - Blog posts and webinars: Reference/Resources.md + - Index: get-started/install/index.md + - Run Besu from Docker image: get-started/install/run-from-docker-image.md + - Install binary distribution: get-started/install/binary-distribution.md + - Start Besu: public-networks/get-started/start-node.md + - How to: + - Prepare for The Merge: public-networks/how-to/prepare-for-the-merge.md + - Use the Besu API: + - Index: how-to/use-besu-api/index.md + - Use JSON-RPC over HTTP, WS, and IPC: how-to/use-besu-api/json-rpc.md + - Use RPC Pub/Sub over WS: how-to/use-besu-api/rpc-pubsub.md + - Use GraphQL over HTTP: how-to/use-besu-api/graphql.md + - Authenticate JSON-RPC requests: how-to/use-besu-api/authenticate.md + - Access logs using JSON-RPC: how-to/use-besu-api/access-logs.md + - Use the Engine API: public-networks/how-to/use-engine-api.md + - Create and send transactions: how-to/send-transactions.md + - Connect to a network: + - Sync Besu: public-networks/how-to/connect/sync-node.md + - Configure static nodes: how-to/connect/static-nodes.md + - Configure ports: how-to/connect/configure-ports.md + - Manage peers: how-to/connect/manage-peers.md + - Specify NAT method: how-to/connect/specify-nat-method.md + - Monitor nodes: + - Use metrics: how-to/monitor/metrics.md + - Configure logging: how-to/monitor/logging.md + - Use a configuration file: how-to/configure/configuration-file.md + - Use proof of work: + - Configure mining: how-to/configure/mining.md + - Concepts: + - Tutorials: + - Reference: + - Private networks: + - Get started: + - System requirements: private-networks/get-started/system-requirements.md + - Install Besu: + - Index: get-started/install/index.md + - Run Besu from Docker image: get-started/install/run-from-docker-image.md + - Install binary distribution: get-started/install/binary-distribution.md + - Start Besu: private-networks/get-started/start-node.md + - How to: + - Configure: + - Mining: how-to/configure/mining.md + - Use a configuration file: how-to/configure/configuration-file.md + - Use the Besu API: + - Index: how-to/use-besu-api/index.md + - Use JSON-RPC over HTTP, WS, and IPC: how-to/use-besu-api/json-rpc.md + - Use RPC Pub/Sub over WS: how-to/use-besu-api/rpc-pubsub.md + - Use GraphQL over HTTP: how-to/use-besu-api/graphql.md + - Authenticate JSON-RPC requests: how-to/use-besu-api/authenticate.md + - Access logs using JSON-RPC: how-to/use-besu-api/access-logs.md + - Create and send transactions: + - Index: how-to/send-transactions.md + - Create and send private transactions: private-networks/how-to/send-transactions/private-transactions.md + - Send concurrent private transactions: private-networks/how-to/send-transactions/concurent-private-transactions.md + - Include revert reason: private-networks/how-to/send-transactions/revert-reason.md + - Find and connect to peers: + - Configure bootnodes: private-networks/how-to/connect/bootnodes.md + - Configure static nodes: how-to/connect/static-nodes.md + - Configure ports: how-to/connect/configure-ports.md + - Manage peers: how-to/connect/manage-peers.md + - Specify NAT method: how-to/connect/specify-nat-method.md + - Monitor nodes: + - Use metrics: how-to/monitor/metrics.md + - Use Elastic Stack: private-networks/how-to/monitor/elastic-stack.md + - Use Quorum Hibernate: private-networks/how-to/monitor/quorum-hibernate.md + - Use Splunk: private-networks/how-to/monitor/splunk.md + - Use OpenTelemtry: private-networks/how-to/monitor/opentelemetry.md + - Configure logging: how-to/monitor/logging.md + - Concepts: + - Tutorials: + - Reference: markdown_extensions: - toc: @@ -291,15 +184,15 @@ plugins: # old_path.md: new_path.md # you can't use an already redirected path as an old_path. # new_path can be a file inside the docs/ folder or any URL (http://...) - HowTo/Get-Started/System-Requirements-Private.md: HowTo/Get-Started/System-Requirements/System-Requirements-Private.md - HowTo/Get-Started/System-Requirements-Public.md: HowTo/Get-Started/System-Requirements/System-Requirements-Public.md - HowTo/Get-Started/Install-Binaries.md: HowTo/Get-Started/Installation-Options/Install-Binaries.md - HowTo/Get-Started/Build-from-source.md: HowTo/Get-Started/Installation-Options/Build-from-source.md - HowTo/Get-Started/Run-Docker-Image.md: HowTo/Get-Started/Installation-Options/Run-Docker-Image.md + HowTo/Get-Started/System-Requirements-Private.md: private-networks/get-started/system-requirements.md + HowTo/Get-Started/System-Requirements-Public.md: HowTo/Get-Started/System-Requirements/system-requirements.md + HowTo/Get-Started/Install-Binaries.md: get-started/install/binary-distribution.md + HowTo/Get-Started/Build-from-source.md: get-started/install/index.md + HowTo/Get-Started/Run-Docker-Image.md: get-started/install/run-docker-image.md HowTo/Deploy/High-Availability.md: HowTo/Configure/Configure-HA/High-Availability.md - HowTo/Deploy/Monitoring-Performance.md: HowTo/Monitor/Metrics.md + HowTo/Deploy/Monitoring-Performance.md: how-to/monitor/metrics.md HowTo/Upgrade/Upgrade-Network.md: HowTo/Upgrade/Upgrade-Node.md - HowTo/Find-and-Connect/Using-UPnP.md: HowTo/Find-and-Connect/Specifying-NAT.md + HowTo/Find-and-Connect/Using-UPnP.md: HowTo/Find-and-Connect/specify-nat.md HowTo/Use-Privacy/Run-Orion-With-Besu.md: HowTo/Use-Privacy/Run-Tessera-With-Besu.md Concepts/Transactions/Trace-Types.md: Reference/Trace-Types.md HowTo/Develop-Dapps/Use-web3js.md: HowTo/Develop-Dapps/Client-Libraries.md @@ -323,3 +216,37 @@ plugins: Tutorials/Examples/Nat-Manager-Kubernetes.md: Tutorials/Kubernetes/Nat-Manager-Kubernetes.md Tutorials/Examples/Private-Network-Example-Azure.md: Tutorials/Private-Network-Example-Azure.md HowTo/Configure/Consensus-Protocols/Add-Validators.md: HowTo/Configure/Consensus-Protocols/QBFT.md + + HowTo/Get-Started/System-Requirements/System-Requirements-Private.md: private-networks/get-started/system-requirements.md + HowTo/Get-Started/System-Requirements/System-Requirements-Public.md: public-networks/get-started/system-requirements.md + HowTo/Get-Started/Installation-Options/Install-Binaries.md: get-started/install/binary-distribution.md + HowTo/Get-Started/Installation-Options/Build-from-source.md: get-started/install/index.md + HowTo/Get-Started/Installation-Options/Run-Docker-Image.md: get-started/install/run-docker-image.md + HowTo/Get-Started/Starting-node.md: public-networks/get-started/start-node.md + HowTo/Upgrade/Prepare-for-The-Merge.md: public-networks/how-to/prepare-for-the-merge.md + HowTo/Interact/APIs/API.md: how-to/use-besu-api/index.md + HowTo/Interact/APIs/Using-JSON-RPC-API.md: how-to/use-besu-api/json-rpc.md + HowTo/Interact/APIs/RPC-PubSub.md: how-to/use-besu-api/rpc-pubsub.md + HowTo/Interact/APIs/GraphQL.md: how-to/use-besu-api/graphql.md + HowTo/Interact/APIs/Authentication.md: how-to/use-besu-api/authenticate.md + HowTo/Interact/APIs/Engine-API.md: how-to/use-engine-api.md + HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.md: how-to/use-besu-api/access-logs.md + HowTo/Send-Transactions/Transactions.md: how-to/send-transactions.md + HowTo/Send-Transactions/Account-Management.md: how-to/send-transactions.md + HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md: private-networks/how-to/send-transactions/private-transactions.md + HowTo/Send-Transactions/Concurrent-Private-Transactions.md: private-networks/how-to/send-transactions/concurrent-private-transactions.md + HowTo/Send-Transactions/Revert-Reason.md: private-networks/how-to/send-transactions/revert-reason.md + HowTo/Find-and-Connect/Bootnodes.md: private-networks/how-to/connect/bootnodes.md + HowTo/Find-and-Connect/Static-Nodes.md: how-to/connect/static-nodes.md + HowTo/Find-and-Connect/Configuring-Ports.md: how-to/connect/configure-ports.md + HowTo/Find-and-Connect/Managing-Peers.md: how-to/connect/manage-peers.md + HowTo/Find-and-Connect/Specifying-NAT.md: how-to/connect/specify-nat.md + Concepts/Node-Types.md: public-networks/how-to/connect/sync-node.md + HowTo/Monitor/Metrics.md: how-to/monitor/metrics.md + HowTo/Monitor/Logging.md: how-to/monitor/logging.md + HowTo/Monitor/Elastic-Stack.md: private-networks/how-to/monitor/elastic-stack.md + HowTo/Monitor/Quorum-Hibernate.md: private-networks/how-to/monitor/quorum-hibernate.md + HowTo/Monitor/Splunk-Enterprise.md: private-networks/how-to/monitor/splunk.md + HowTo/Monitor/OpenTelemetry-Collector.md: private-networks/how-to/monitor/opentelemetry.md + HowTo/Configure/Using-Configuration-File.md: how-to/configure/configuration-file.md + HowTo/Configure/Configure-Mining.md: how-to/configure/mining.md From 112306191f0c63aeadd2df6e3c79a518cdd74511 Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Tue, 12 Jul 2022 10:50:52 -0700 Subject: [PATCH 02/31] finish public networks restructure Signed-off-by: Alexandra Tran --- .../ArchitectureOverview.md | 0 .../Consensus-Protocols/Comparing-PoA.md | 0 .../Consensus-Protocols/Overview-Consensus.md | 6 +- docs/{Concepts => concepts}/Mining.md | 0 docs/{Concepts => concepts}/Monitoring.md | 0 .../{Concepts => concepts}/Network-vs-Node.md | 6 +- docs/{Concepts => concepts}/PKI.md | 0 .../Permissioning/Onchain-Permissioning.md | 4 +- .../Permissioning/Permissioning-Overview.md | 0 .../Permissioning/Plugin-Permissioning.md | 0 docs/{Concepts => concepts}/Plugins.md | 2 +- .../Privacy/Flexible-PrivacyGroups.md | 8 +- .../Privacy/Multi-Tenancy.md | 0 .../Privacy/Plugin-Privacy.md | 4 +- .../Privacy/Privacy-Groups.md | 2 +- .../Privacy/Privacy-Overview.md | 0 .../Privacy/Private-Transaction-Processing.md | 6 +- .../Privacy/Private-Transactions.md | 10 +- .../Protocol-Upgrades.md | 4 +- docs/{Concepts => concepts}/Pruning.md | 4 +- docs/{Concepts => concepts}/TLS.md | 0 .../Transactions/Transaction-Pool.md | 16 +- .../Transactions/Transaction-Types.md | 8 +- .../Transactions/Transaction-Validation.md | 0 .../events-and-logs.md} | 4 +- .../genesis-file.md} | 8 +- .../network-and-chain-id.md} | 12 +- .../Node-Keys.md => concepts/node-keys.md} | 20 +- docs/get-started/install/index.md | 2 +- docs/get-started/install/run-docker-image.md | 14 +- docs/how-to/Backup/Backup.md | 4 +- docs/how-to/Deploy/Bootnodes.md | 10 +- docs/how-to/Deploy/Cloud.md | 2 +- docs/how-to/Deploy/Ethstats.md | 4 +- docs/how-to/Deploy/Kubernetes.md | 2 +- docs/how-to/Deploy/Production.md | 2 +- docs/how-to/Deploy/Validators.md | 2 +- docs/how-to/Develop-Dapps/Client-Libraries.md | 2 +- .../Client-Libraries/web3js-quorum.md | 4 +- .../Limit-Access/Local-Permissioning.md | 50 +-- .../Limit-Access/Specify-Perm-Version.md | 4 +- .../Limit-Access/Updating-Permission-Lists.md | 10 +- .../Send-Transactions/Account-Management.md | 6 +- .../how-to/Troubleshoot/Trace-Transactions.md | 48 --- .../Access-Private-Transactions.md | 10 +- .../Create-Manage-Privacy-Groups.md | 6 +- docs/how-to/Use-Privacy/EEA-Compliant.md | 12 +- docs/how-to/Use-Privacy/Privacy.md | 16 +- .../Use-Privacy/Run-Tessera-With-Besu.md | 2 +- .../Sign-Privacy-Marker-Transactions.md | 6 +- .../how-to/Use-Privacy/Use-FlexiblePrivacy.md | 18 +- .../Use-GoQuorum-compatible-privacy.md | 4 +- .../how-to/configure/Alternative-EC-Curves.md | 2 +- .../configure/Block-Proposal-Permissioning.md | 4 +- .../Configure-HA/High-Availability.md | 20 +- .../configure/Consensus-Protocols/Clique.md | 36 +- .../configure/Consensus-Protocols/IBFT.md | 42 +- .../configure/Consensus-Protocols/QBFT.md | 42 +- docs/how-to/configure/Contracts-in-Genesis.md | 2 +- docs/how-to/configure/FreeGas.md | 6 +- docs/how-to/configure/TLS/Configure-TLS.md | 26 +- docs/how-to/configure/TLS/P2P-TLS.md | 2 +- docs/how-to/configure/configuration-file.md | 4 +- docs/how-to/configure/mining.md | 28 +- ...ing-JVM-Options.md => pass-jvm-options.md} | 0 docs/how-to/connect/configure-ports.md | 18 +- docs/how-to/connect/manage-peers.md | 30 +- docs/how-to/connect/specify-nat.md | 20 +- docs/how-to/connect/static-nodes.md | 16 +- docs/how-to/monitor/logging.md | 4 +- docs/how-to/monitor/metrics.md | 30 +- docs/how-to/send-transactions.md | 8 +- .../Add-Validators-Without-Voting.md | 4 +- .../how-to/troubleshoot/Trace-Transactions.md | 48 +++ .../Troubleshooting.md | 20 +- .../evm-tool.md} | 6 +- .../java-flight-recorder.md} | 0 .../Upgrade-Node.md => upgrade/node.md} | 0 docs/how-to/use-besu-api/access-logs.md | 42 +- docs/how-to/use-besu-api/authenticate.md | 24 +- docs/how-to/use-besu-api/graphql.md | 6 +- docs/how-to/use-besu-api/index.md | 24 +- docs/how-to/use-besu-api/json-rpc.md | 20 +- docs/how-to/use-besu-api/rpc-pubsub.md | 14 +- docs/index.md | 6 +- .../get-started/system-requirements.md | 6 +- .../how-to/connect/bootnodes.md | 12 +- .../how-to/monitor/elastic-stack.md | 4 +- .../how-to/monitor/opentelemetry.md | 8 +- .../private-networks/how-to/monitor/splunk.md | 2 +- .../concurrent-private-transactions.md | 16 +- .../send-transactions/private-transactions.md | 38 +- .../how-to/send-transactions/revert-reason.md | 22 +- .../how-to/upgrade/protocol.md} | 6 +- .../concepts/data-storage-formats.md} | 14 +- .../concepts/the-merge.md} | 14 +- .../public-networks/get-started/start-node.md | 28 +- .../get-started/system-requirements.md | 6 +- .../how-to/connect/sync-node.md | 18 +- .../how-to/prepare-for-the-merge.md | 16 +- docs/public-networks/how-to/use-engine-api.md | 20 +- .../reference/engine-api/index.md} | 20 +- .../reference/engine-api/objects.md} | 16 +- .../tutorials/merge-testnet.md} | 12 +- .../Accounts-for-Testing.md | 4 +- .../Plugin-API-Interfaces.md | 4 +- docs/{Reference => reference}/Resources.md | 0 .../API-Methods.md => reference/api/index.md} | 368 +++++++++--------- .../api/objects.md} | 118 +++--- .../cli/options.md} | 74 ++-- .../cli/subcommands.md} | 20 +- .../disclosure.md} | 2 +- .../Evm-Tool.md => reference/evm-tool.md} | 2 +- .../genesis-items.md} | 10 +- .../projects-using-besu.md} | 0 .../trace-types.md} | 22 +- .../{Reference => reference}/web3js-quorum.md | 0 .../Contracts/Account-Funds-Transfers.md | 2 +- .../Contracts/Calling-Contract-Functions.md | 0 .../Contracts/Deploying-Contracts.md | 10 +- .../Developer-Quickstart.md | 10 +- .../Kubernetes/Create-Cluster.md | 0 .../Kubernetes/Deploy-Charts.md | 2 +- .../Kubernetes/Maintenance.md | 0 .../Kubernetes/Nat-Manager-Kubernetes.md | 0 .../Kubernetes/Overview.md | 0 .../Kubernetes/Playground.md | 0 .../Kubernetes/Production.md | 0 .../Kubernetes/Quorum-Explorer.md | 0 .../Create-Permissioned-Network.md | 48 +-- .../Getting-Started-Onchain-Permissioning.md | 38 +- .../Upgrade-Permissioning-Contract.md | 0 .../Privacy/Configuring-Multi-Tenancy.md | 12 +- .../Privacy/Configuring-Privacy.md | 18 +- .../Privacy/Privacy-Example.md | 4 +- .../web3js-quorum-Multinode-example.md | 2 +- .../Private-Network-Example-Azure.md | 0 .../Adding-removing-IBFT-validators.md | 16 +- .../Private-Network/Create-IBFT-Network.md | 36 +- .../Create-Private-Clique-Network.md | 30 +- .../Private-Network/Create-Private-Network.md | 28 +- .../Private-Network/Create-QBFT-Network.md | 36 +- mkdocs.yml | 126 ++++-- 143 files changed, 1156 insertions(+), 1082 deletions(-) rename docs/{Concepts => concepts}/ArchitectureOverview.md (100%) rename docs/{Concepts => concepts}/Consensus-Protocols/Comparing-PoA.md (100%) rename docs/{Concepts => concepts}/Consensus-Protocols/Overview-Consensus.md (86%) rename docs/{Concepts => concepts}/Mining.md (100%) rename docs/{Concepts => concepts}/Monitoring.md (100%) rename docs/{Concepts => concepts}/Network-vs-Node.md (64%) rename docs/{Concepts => concepts}/PKI.md (100%) rename docs/{Concepts => concepts}/Permissioning/Onchain-Permissioning.md (95%) rename docs/{Concepts => concepts}/Permissioning/Permissioning-Overview.md (100%) rename docs/{Concepts => concepts}/Permissioning/Plugin-Permissioning.md (100%) rename docs/{Concepts => concepts}/Plugins.md (96%) rename docs/{Concepts => concepts}/Privacy/Flexible-PrivacyGroups.md (91%) rename docs/{Concepts => concepts}/Privacy/Multi-Tenancy.md (100%) rename docs/{Concepts => concepts}/Privacy/Plugin-Privacy.md (97%) rename docs/{Concepts => concepts}/Privacy/Privacy-Groups.md (97%) rename docs/{Concepts => concepts}/Privacy/Privacy-Overview.md (100%) rename docs/{Concepts => concepts}/Privacy/Private-Transaction-Processing.md (94%) rename docs/{Concepts => concepts}/Privacy/Private-Transactions.md (93%) rename docs/{Concepts => concepts}/Protocol-Upgrades.md (88%) rename docs/{Concepts => concepts}/Pruning.md (77%) rename docs/{Concepts => concepts}/TLS.md (100%) rename docs/{Concepts => concepts}/Transactions/Transaction-Pool.md (77%) rename docs/{Concepts => concepts}/Transactions/Transaction-Types.md (92%) rename docs/{Concepts => concepts}/Transactions/Transaction-Validation.md (100%) rename docs/{Concepts/Events-and-Logs.md => concepts/events-and-logs.md} (97%) rename docs/{how-to/configure/Genesis-File.md => concepts/genesis-file.md} (79%) rename docs/{Concepts/NetworkID-And-ChainID.md => concepts/network-and-chain-id.md} (84%) rename docs/{Concepts/Node-Keys.md => concepts/node-keys.md} (84%) delete mode 100644 docs/how-to/Troubleshoot/Trace-Transactions.md rename docs/how-to/configure/{Passing-JVM-Options.md => pass-jvm-options.md} (100%) rename docs/how-to/{Troubleshoot => troubleshoot}/Add-Validators-Without-Voting.md (98%) create mode 100644 docs/how-to/troubleshoot/Trace-Transactions.md rename docs/how-to/{Troubleshoot => troubleshoot}/Troubleshooting.md (91%) rename docs/how-to/{Troubleshoot/Use-EVM-Tool.md => troubleshoot/evm-tool.md} (91%) rename docs/how-to/{Troubleshoot/Java-Flight-Recording.md => troubleshoot/java-flight-recorder.md} (100%) rename docs/how-to/{Upgrade/Upgrade-Node.md => upgrade/node.md} (100%) rename docs/{how-to/Upgrade/Upgrade-Protocol.md => private-networks/how-to/upgrade/protocol.md} (73%) rename docs/{Concepts/Data-Storage-Formats.md => public-networks/concepts/data-storage-formats.md} (82%) rename docs/{Concepts/Merge.md => public-networks/concepts/the-merge.md} (82%) rename docs/{Reference/Engine-API-Methods.md => public-networks/reference/engine-api/index.md} (90%) rename docs/{Reference/Engine-API-Objects.md => public-networks/reference/engine-api/objects.md} (82%) rename docs/{Tutorials/Merge-Testnet.md => public-networks/tutorials/merge-testnet.md} (94%) rename docs/{Reference => reference}/Accounts-for-Testing.md (83%) rename docs/{Reference => reference}/Plugin-API-Interfaces.md (98%) rename docs/{Reference => reference}/Resources.md (100%) rename docs/{Reference/API-Methods.md => reference/api/index.md} (94%) rename docs/{Reference/API-Objects.md => reference/api/objects.md} (79%) rename docs/{Reference/CLI/CLI-Syntax.md => reference/cli/options.md} (96%) rename docs/{Reference/CLI/CLI-Subcommands.md => reference/cli/subcommands.md} (94%) rename docs/{Reference/Responsible-Disclosure.md => reference/disclosure.md} (94%) rename docs/{Reference/Evm-Tool.md => reference/evm-tool.md} (99%) rename docs/{Reference/Config-Items.md => reference/genesis-items.md} (93%) rename docs/{Reference/Projects-Using-Besu.md => reference/projects-using-besu.md} (100%) rename docs/{Reference/Trace-Types.md => reference/trace-types.md} (90%) rename docs/{Reference => reference}/web3js-quorum.md (100%) rename docs/{Tutorials => tutorials}/Contracts/Account-Funds-Transfers.md (99%) rename docs/{Tutorials => tutorials}/Contracts/Calling-Contract-Functions.md (100%) rename docs/{Tutorials => tutorials}/Contracts/Deploying-Contracts.md (97%) rename docs/{Tutorials => tutorials}/Developer-Quickstart.md (97%) rename docs/{Tutorials => tutorials}/Kubernetes/Create-Cluster.md (100%) rename docs/{Tutorials => tutorials}/Kubernetes/Deploy-Charts.md (99%) rename docs/{Tutorials => tutorials}/Kubernetes/Maintenance.md (100%) rename docs/{Tutorials => tutorials}/Kubernetes/Nat-Manager-Kubernetes.md (100%) rename docs/{Tutorials => tutorials}/Kubernetes/Overview.md (100%) rename docs/{Tutorials => tutorials}/Kubernetes/Playground.md (100%) rename docs/{Tutorials => tutorials}/Kubernetes/Production.md (100%) rename docs/{Tutorials => tutorials}/Kubernetes/Quorum-Explorer.md (100%) rename docs/{Tutorials => tutorials}/Permissioning/Create-Permissioned-Network.md (88%) rename docs/{Tutorials => tutorials}/Permissioning/Getting-Started-Onchain-Permissioning.md (90%) rename docs/{Tutorials => tutorials}/Permissioning/Upgrade-Permissioning-Contract.md (100%) rename docs/{Tutorials => tutorials}/Privacy/Configuring-Multi-Tenancy.md (91%) rename docs/{Tutorials => tutorials}/Privacy/Configuring-Privacy.md (94%) rename docs/{Tutorials => tutorials}/Privacy/Privacy-Example.md (97%) rename docs/{Tutorials => tutorials}/Privacy/web3js-quorum-Multinode-example.md (98%) rename docs/{Tutorials => tutorials}/Private-Network-Example-Azure.md (100%) rename docs/{Tutorials => tutorials}/Private-Network/Adding-removing-IBFT-validators.md (82%) rename docs/{Tutorials => tutorials}/Private-Network/Create-IBFT-Network.md (90%) rename docs/{Tutorials => tutorials}/Private-Network/Create-Private-Clique-Network.md (88%) rename docs/{Tutorials => tutorials}/Private-Network/Create-Private-Network.md (85%) rename docs/{Tutorials => tutorials}/Private-Network/Create-QBFT-Network.md (91%) diff --git a/docs/Concepts/ArchitectureOverview.md b/docs/concepts/ArchitectureOverview.md similarity index 100% rename from docs/Concepts/ArchitectureOverview.md rename to docs/concepts/ArchitectureOverview.md diff --git a/docs/Concepts/Consensus-Protocols/Comparing-PoA.md b/docs/concepts/Consensus-Protocols/Comparing-PoA.md similarity index 100% rename from docs/Concepts/Consensus-Protocols/Comparing-PoA.md rename to docs/concepts/Consensus-Protocols/Comparing-PoA.md diff --git a/docs/Concepts/Consensus-Protocols/Overview-Consensus.md b/docs/concepts/Consensus-Protocols/Overview-Consensus.md similarity index 86% rename from docs/Concepts/Consensus-Protocols/Overview-Consensus.md rename to docs/concepts/Consensus-Protocols/Overview-Consensus.md index 16566414454..8cd4e7c155a 100644 --- a/docs/Concepts/Consensus-Protocols/Overview-Consensus.md +++ b/docs/concepts/Consensus-Protocols/Overview-Consensus.md @@ -13,10 +13,10 @@ Besu supports the following consensus protocols: production use. You can [migrate a network using Clique to another consensus protocol](../../how-to/configure/Consensus-Protocols/Clique.md#migrate-from-clique-to-another-consensus-protocol). * [Proof of stake](https://docs.teku.consensys.net/en/latest/Concepts/Proof-of-Stake/) - Used on Ethereum Mainnet - post-[Merge](../../Concepts/Merge.md) and can also be used on the [Merge testnet](../../Tutorials/Merge-Testnet.md). + post-[Merge](../../public-networks/concepts/the-merge.md) and can also be used on the [Merge testnet](../../public-networks/tutorials/merge-testnet.md). * [Ethash](https://ethereum.org/en/developers/docs/consensus-mechanisms/pow/) (proof of work) - Used on Ethereum Mainnet - pre-[Merge](../../Concepts/Merge.md) and can also be used in - [small development networks](../../Tutorials/Private-Network/Create-Private-Network.md). + pre-[Merge](../../public-networks/concepts/the-merge.md) and can also be used in + [small development networks](../../tutorials/Private-Network/Create-Private-Network.md). See a [comparison of the proof of authority consensus protocols](Comparing-PoA.md). diff --git a/docs/Concepts/Mining.md b/docs/concepts/Mining.md similarity index 100% rename from docs/Concepts/Mining.md rename to docs/concepts/Mining.md diff --git a/docs/Concepts/Monitoring.md b/docs/concepts/Monitoring.md similarity index 100% rename from docs/Concepts/Monitoring.md rename to docs/concepts/Monitoring.md diff --git a/docs/Concepts/Network-vs-Node.md b/docs/concepts/Network-vs-Node.md similarity index 64% rename from docs/Concepts/Network-vs-Node.md rename to docs/concepts/Network-vs-Node.md index dd2fda799f2..0e5464eb1df 100644 --- a/docs/Concepts/Network-vs-Node.md +++ b/docs/concepts/Network-vs-Node.md @@ -6,11 +6,11 @@ description: Configuring Besu at the network level compared to the node level You can configure Besu at the network level and the node level. -Specify network-wide settings in the [genesis file](../Reference/Config-Items.md). For example, +Specify network-wide settings in the [genesis file](../reference/genesis-items.md). For example, include `evmStackSize` or specify the [consensus mechanism](Consensus-Protocols/Overview-Consensus.md). Specify node settings on the command line or in the [node configuration file](../how-to/configure/configuration-file.md). For example, enable -[JSON-RPC API methods](../Reference/API-Methods.md) or specify the -[data directory](../Reference/CLI/CLI-Syntax.md#data-path) for the node. +[JSON-RPC API methods](../reference/api/index.md) or specify the +[data directory](../reference/cli/options.md#data-path) for the node. diff --git a/docs/Concepts/PKI.md b/docs/concepts/PKI.md similarity index 100% rename from docs/Concepts/PKI.md rename to docs/concepts/PKI.md diff --git a/docs/Concepts/Permissioning/Onchain-Permissioning.md b/docs/concepts/Permissioning/Onchain-Permissioning.md similarity index 95% rename from docs/Concepts/Permissioning/Onchain-Permissioning.md rename to docs/concepts/Permissioning/Onchain-Permissioning.md index 9bd8593e09f..0312fd75a41 100644 --- a/docs/Concepts/Permissioning/Onchain-Permissioning.md +++ b/docs/concepts/Permissioning/Onchain-Permissioning.md @@ -94,5 +94,5 @@ bootnodes to rediscover peers. All bootnodes must be on the nodes allowlist. -[permissioning management dapp]: ../../Tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md -[`--privacy-marker-transaction-signing-key-file`]: ../../Reference/CLI/CLI-Syntax.md#privacy-marker-transaction-signing-key-file +[permissioning management dapp]: ../../tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md +[`--privacy-marker-transaction-signing-key-file`]: ../../reference/cli/options.md#privacy-marker-transaction-signing-key-file diff --git a/docs/Concepts/Permissioning/Permissioning-Overview.md b/docs/concepts/Permissioning/Permissioning-Overview.md similarity index 100% rename from docs/Concepts/Permissioning/Permissioning-Overview.md rename to docs/concepts/Permissioning/Permissioning-Overview.md diff --git a/docs/Concepts/Permissioning/Plugin-Permissioning.md b/docs/concepts/Permissioning/Plugin-Permissioning.md similarity index 100% rename from docs/Concepts/Permissioning/Plugin-Permissioning.md rename to docs/concepts/Permissioning/Plugin-Permissioning.md diff --git a/docs/Concepts/Plugins.md b/docs/concepts/Plugins.md similarity index 96% rename from docs/Concepts/Plugins.md rename to docs/concepts/Plugins.md index 6d9eab681b9..f8c3f0aaecf 100644 --- a/docs/Concepts/Plugins.md +++ b/docs/concepts/Plugins.md @@ -20,7 +20,7 @@ third-party application. The API exposes data about the following components: ![Besu plugin API](../images/Hyperledger-Besu-Plugin-API.png) -The plugin API provides access to [interfaces](../Reference/Plugin-API-Interfaces.md) allowing you +The plugin API provides access to [interfaces](../reference/Plugin-API-Interfaces.md) allowing you to build the plugin. !!! tip diff --git a/docs/Concepts/Privacy/Flexible-PrivacyGroups.md b/docs/concepts/Privacy/Flexible-PrivacyGroups.md similarity index 91% rename from docs/Concepts/Privacy/Flexible-PrivacyGroups.md rename to docs/concepts/Privacy/Flexible-PrivacyGroups.md index c7c080e8eef..e80fc8a494e 100644 --- a/docs/Concepts/Privacy/Flexible-PrivacyGroups.md +++ b/docs/concepts/Privacy/Flexible-PrivacyGroups.md @@ -80,16 +80,16 @@ but later removed from, Besu allows the user access to the following functionali group: - Private transactions using `priv_getTransaction` and private transaction receipts using - [`priv_getTransactionReceipt`](../../Reference/API-Methods.md#priv_gettransactionreceipt) from blocks up to (and + [`priv_getTransactionReceipt`](../../reference/api/index.md#priv_gettransactionreceipt) from blocks up to (and including) the removal block. !!! note A removed group member may have access to some private transactions after the removal PMT in the same block. -- Using [`priv_call`](../../Reference/API-Methods.md#priv_call) on blocks up to (and including) the removal block. +- Using [`priv_call`](../../reference/api/index.md#priv_call) on blocks up to (and including) the removal block. -- Private logs using [`priv_getLogs`](../../Reference/API-Methods.md#priv_getlogs) for blocks up to (and including) the +- Private logs using [`priv_getLogs`](../../reference/api/index.md#priv_getlogs) for blocks up to (and including) the removal block. When the `toBlock` is greater than the removal block, `priv_getLogs` still returns logs up to the removal block. @@ -99,4 +99,4 @@ group: they've created are also removed and can't be accessed. A user can only create and access filters for a privacy group they are currently a member of. -All other [`PRIV` API methods](../../Reference/API-Methods.md#priv-methods) fail for the removed group member. +All other [`PRIV` API methods](../../reference/api/index.md#priv-methods) fail for the removed group member. diff --git a/docs/Concepts/Privacy/Multi-Tenancy.md b/docs/concepts/Privacy/Multi-Tenancy.md similarity index 100% rename from docs/Concepts/Privacy/Multi-Tenancy.md rename to docs/concepts/Privacy/Multi-Tenancy.md diff --git a/docs/Concepts/Privacy/Plugin-Privacy.md b/docs/concepts/Privacy/Plugin-Privacy.md similarity index 97% rename from docs/Concepts/Privacy/Plugin-Privacy.md rename to docs/concepts/Privacy/Plugin-Privacy.md index 1eaf850ae8b..f502e9edeb6 100644 --- a/docs/Concepts/Privacy/Plugin-Privacy.md +++ b/docs/concepts/Privacy/Plugin-Privacy.md @@ -29,7 +29,7 @@ for the PMT is. ### Sending transactions -When submitting a private transaction using [`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction), +When submitting a private transaction using [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction), the signed transaction must be sent to `0x000000000000000000000000000000000000007a` to indicate which [privacy precompiled contract](../Privacy/Private-Transaction-Processing.md) is being used. @@ -48,7 +48,7 @@ The transaction flow is as follows: The process of mining transactions happens in reverse to sending transactions. 1. The Mainnet transaction processor processes the PMT in the same way as - any other public transaction. On nodes containing the [privacy precompile contract](../../Reference/API-Methods.md#priv_getprivacyprecompileaddress) + any other public transaction. On nodes containing the [privacy precompile contract](../../reference/api/index.md#priv_getprivacyprecompileaddress) specified in the `to` attribute of the PMT, the Mainnet transaction processor passes the PMT to the privacy precompile contract. !!! note diff --git a/docs/Concepts/Privacy/Privacy-Groups.md b/docs/concepts/Privacy/Privacy-Groups.md similarity index 97% rename from docs/Concepts/Privacy/Privacy-Groups.md rename to docs/concepts/Privacy/Privacy-Groups.md index 678a1f08f77..6c7355e6eda 100644 --- a/docs/Concepts/Privacy/Privacy-Groups.md +++ b/docs/concepts/Privacy/Privacy-Groups.md @@ -83,7 +83,7 @@ provided by Tessera. ### Besu-extended privacy The Besu-extended privacy implementation creates a privacy group using -[`priv_createPrivacyGroup`](../../Reference/API-Methods.md#priv_createprivacygroup) with private +[`priv_createPrivacyGroup`](../../reference/api/index.md#priv_createprivacygroup) with private transactions sent to the privacy group ID. !!! example diff --git a/docs/Concepts/Privacy/Privacy-Overview.md b/docs/concepts/Privacy/Privacy-Overview.md similarity index 100% rename from docs/Concepts/Privacy/Privacy-Overview.md rename to docs/concepts/Privacy/Privacy-Overview.md diff --git a/docs/Concepts/Privacy/Private-Transaction-Processing.md b/docs/concepts/Privacy/Private-Transaction-Processing.md similarity index 94% rename from docs/Concepts/Privacy/Private-Transaction-Processing.md rename to docs/concepts/Privacy/Private-Transaction-Processing.md index 4d8daadb89e..bfa9d73835b 100644 --- a/docs/Concepts/Privacy/Private-Transaction-Processing.md +++ b/docs/concepts/Privacy/Private-Transaction-Processing.md @@ -17,7 +17,7 @@ Processing [private transactions](Private-Transactions.md) involves the followin * **Privacy marker transaction (PMT)**: A public Ethereum transaction with a payload of the enclave key. The enclave key is a pointer to the private transaction in Tessera. - The `to` attribute of the PMT is the [address of the privacy precompiled contract](../../Reference/API-Methods.md#priv_getprivacyprecompileaddress). + The `to` attribute of the PMT is the [address of the privacy precompiled contract](../../reference/api/index.md#priv_getprivacyprecompileaddress). The PMT is [signed with a random key or the key specified on the command line]. @@ -25,7 +25,7 @@ Private transaction processing is illustrated and described in the following dia ![Processing Private Transactions](../../images/PrivateTransactionProcessing.png) -1. Submit a private transaction using [`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction). +1. Submit a private transaction using [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction). The signed transaction includes transaction parameters specific to private transactions, including: * `privateFor` or `privacyGroupId`, which specifies the list of recipients. @@ -55,7 +55,7 @@ Private transaction processing is illustrated and described in the following dia 1. Besu mines the PMT into a block and the PMT is distributed to all Ethereum nodes in the network. 1. The Mainnet Transaction Processor processes the PMT in the same way as any other public transaction. - On nodes containing the [privacy precompile contract](../../Reference/API-Methods.md#priv_getprivacyprecompileaddress) + On nodes containing the [privacy precompile contract](../../reference/api/index.md#priv_getprivacyprecompileaddress) specified in the `to` attribute of the PMT, the Mainnet Transaction Processor passes the PMT to the privacy precompile contract. diff --git a/docs/Concepts/Privacy/Private-Transactions.md b/docs/concepts/Privacy/Private-Transactions.md similarity index 93% rename from docs/Concepts/Privacy/Private-Transactions.md rename to docs/concepts/Privacy/Private-Transactions.md index 0e5ab6d013f..16921393fc9 100644 --- a/docs/Concepts/Privacy/Private-Transactions.md +++ b/docs/concepts/Privacy/Private-Transactions.md @@ -42,7 +42,7 @@ You can [create and send private transactions](../../private-networks/how-to/sen Besu and Tessera nodes both have public/private key pairs identifying them. A Besu node sending a private transaction to a Tessera node signs the transaction with the Besu node private key. The `privateFrom` and `privateFor` parameters specified in the RLP-encoded transaction string for -[`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction) are the public keys of the Tessera +[`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) are the public keys of the Tessera nodes sending and receiving the transaction. !!! important @@ -62,7 +62,7 @@ Since the PMT is a public transaction, the PMT nonce is the public nonce for the ### Private transaction nonce -Besu maintains separate private states for each [privacy group](../../Concepts/Privacy/Privacy-Groups.md). +Besu maintains separate private states for each [privacy group](../Privacy/Privacy-Groups.md). The private transaction nonce for an account is specific to the privacy group. That is, the nonce for account A for privacy group ABC is different to the nonce for account A for privacy group AB. @@ -83,7 +83,7 @@ The following private transaction flow illustrates when nonce validation occurs: 1. Submit a private transaction with a [nonce value](#private-transaction-nonce). 1. The private transaction is distributed to all participants in the privacy group. 1. The PMT is created and submitted to the transaction pool with a nonce of `0` if using one-time accounts. - If using a specific account with [`--privacy-marker-transaction-signing-key-file`](../../Reference/CLI/CLI-Syntax.md#privacy-marker-transaction-signing-key-file), + If using a specific account with [`--privacy-marker-transaction-signing-key-file`](../../reference/cli/options.md#privacy-marker-transaction-signing-key-file), the public nonce for that account is obtained and used for the PMT. 1. The PMT is mined and included in the block. 1. After the block containing the PMT is imported, and the PMT is processed, the private transaction is retrieved from @@ -94,8 +94,8 @@ The following private transaction flow illustrates when nonce validation occurs: ### Private nonce management -In Besu, you call [`eth_getTransactionCount`](../../Reference/API-Methods.md#eth_gettransactioncount) to get a nonce, -then use that nonce with [`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction) to send a +In Besu, you call [`eth_getTransactionCount`](../../reference/api/index.md#eth_gettransactioncount) to get a nonce, +then use that nonce with [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) to send a private transaction. However, when you send multiple transactions in row, if a subsequent call to `getTransactionCount` happens before a diff --git a/docs/Concepts/Protocol-Upgrades.md b/docs/concepts/Protocol-Upgrades.md similarity index 88% rename from docs/Concepts/Protocol-Upgrades.md rename to docs/concepts/Protocol-Upgrades.md index 515519c823a..7a12e1ab070 100644 --- a/docs/Concepts/Protocol-Upgrades.md +++ b/docs/concepts/Protocol-Upgrades.md @@ -12,8 +12,8 @@ definitions are in Hyperledger Besu. Upgrading your Besu client applies the netw For private networks, all network participants must agree on the protocol upgrades and then coordinate the network upgrades. The genesis file specifies the -[milestone block](../Reference/Config-Items.md#milestone-blocks) at which to apply the -[protocol upgrade](../how-to/Upgrade/Upgrade-Protocol.md). +[milestone block](../reference/genesis-items.md#milestone-blocks) at which to apply the +[protocol upgrade](../private-networks/how-to/upgrade/protocol.md). ## Backward compatibility diff --git a/docs/Concepts/Pruning.md b/docs/concepts/Pruning.md similarity index 77% rename from docs/Concepts/Pruning.md rename to docs/concepts/Pruning.md index 172e6835189..086103b60ca 100644 --- a/docs/Concepts/Pruning.md +++ b/docs/concepts/Pruning.md @@ -5,10 +5,10 @@ description: Pruning concept information. # Pruning In Besu, pruning reduces the storage required by removing state trie nodes that are unreachable -from [recent blocks](../Reference/CLI/CLI-Syntax.md#pruning-blocks-retained). +from [recent blocks](../reference/cli/options.md#pruning-blocks-retained). Pruning is disabled by default, and can be enabled with the -[`--pruning-enabled`](../Reference/CLI/CLI-Syntax.md#pruning-enabled) command line option. +[`--pruning-enabled`](../reference/cli/options.md#pruning-enabled) command line option. !!! Important diff --git a/docs/Concepts/TLS.md b/docs/concepts/TLS.md similarity index 100% rename from docs/Concepts/TLS.md rename to docs/concepts/TLS.md diff --git a/docs/Concepts/Transactions/Transaction-Pool.md b/docs/concepts/Transactions/Transaction-Pool.md similarity index 77% rename from docs/Concepts/Transactions/Transaction-Pool.md rename to docs/concepts/Transactions/Transaction-Pool.md index 82f954faf74..987fbbf11e5 100644 --- a/docs/Concepts/Transactions/Transaction-Pool.md +++ b/docs/concepts/Transactions/Transaction-Pool.md @@ -8,13 +8,13 @@ All nodes maintain a transaction pool to store pending transactions before proce Options and methods for configuring and monitoring the transaction pool include: -* [`txpool_besuTransactions`](../../Reference/API-Methods.md#txpool_besutransactions) JSON-RPC API +* [`txpool_besuTransactions`](../../reference/api/index.md#txpool_besutransactions) JSON-RPC API method to list transactions in the transaction pool. -* [`--tx-pool-max-size`](../../Reference/CLI/CLI-Syntax.md#tx-pool-max-size) command line option to +* [`--tx-pool-max-size`](../../reference/cli/options.md#tx-pool-max-size) command line option to specify the maximum number of transactions in the transaction pool. -* [`--tx-pool-price-bump`](../../Reference/CLI/CLI-Syntax.md#tx-pool-price-bump) command line +* [`--tx-pool-price-bump`](../../reference/cli/options.md#tx-pool-price-bump) command line option to specify the price bump percentage to replace an existing transaction. -* [`--tx-pool-retention-hours`](../../Reference/CLI/CLI-Syntax.md#tx-pool-retention-hours) command +* [`--tx-pool-retention-hours`](../../reference/cli/options.md#tx-pool-retention-hours) command line option to specify the maximum number of hours to keep pending transactions in the transaction pool. * [`newPendingTransactions`](../../how-to/use-besu-api/rpc-pubsub.md#pending-transactions) and @@ -40,20 +40,20 @@ You can replace a pending transaction with a transaction that has the same sende If sending a [legacy transaction](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/CLI-Syntax.md#tx-pool-price-bump). +[`--tx-pool-price-bump`](../../reference/cli/options.md#tx-pool-price-bump). If sending an [`EIP1559` transaction](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/CLI-Syntax.md#tx-pool-price-bump) AND the new effective priority fee is + [`--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/CLI-Syntax.md#tx-pool-price-bump). + [`--tx-pool-price-bump`](../../reference/cli/options.md#tx-pool-price-bump). -The default value for [`--tx-pool-price-bump`](../../Reference/CLI/CLI-Syntax.md#tx-pool-price-bump) is 10%. +The default value for [`--tx-pool-price-bump`](../../reference/cli/options.md#tx-pool-price-bump) is 10%. ## Size of the transaction pool diff --git a/docs/Concepts/Transactions/Transaction-Types.md b/docs/concepts/Transactions/Transaction-Types.md similarity index 92% rename from docs/Concepts/Transactions/Transaction-Types.md rename to docs/concepts/Transactions/Transaction-Types.md index 9312f78f4a7..08cfc3f659f 100644 --- a/docs/Concepts/Transactions/Transaction-Types.md +++ b/docs/concepts/Transactions/Transaction-Types.md @@ -9,10 +9,10 @@ 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) +- [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 diff --git a/docs/Concepts/Transactions/Transaction-Validation.md b/docs/concepts/Transactions/Transaction-Validation.md similarity index 100% rename from docs/Concepts/Transactions/Transaction-Validation.md rename to docs/concepts/Transactions/Transaction-Validation.md diff --git a/docs/Concepts/Events-and-Logs.md b/docs/concepts/events-and-logs.md similarity index 97% rename from docs/Concepts/Events-and-Logs.md rename to docs/concepts/events-and-logs.md index 773ff224e77..02288456601 100644 --- a/docs/Concepts/Events-and-Logs.md +++ b/docs/concepts/events-and-logs.md @@ -15,7 +15,7 @@ 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-Methods.md#admin_generatelogbloomcache) to +Use [`admin_generateLogBloomCache`](../reference/api/index.md#admin_generatelogbloomcache) to improve log retrieval performance. ## Topics @@ -182,7 +182,7 @@ for event 2 is `keccak('Event2(uint256)')`. The hashes are: ## Topic filters -[Filter options objects](../Reference/API-Objects.md#filter-options-object) have a `topics` key to +[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 diff --git a/docs/how-to/configure/Genesis-File.md b/docs/concepts/genesis-file.md similarity index 79% rename from docs/how-to/configure/Genesis-File.md rename to docs/concepts/genesis-file.md index 1d91a5d820f..89ef026d59a 100644 --- a/docs/how-to/configure/Genesis-File.md +++ b/docs/concepts/genesis-file.md @@ -9,14 +9,14 @@ want to join. For Ethereum Mainnet and public testnets (for example, Rinkeby) the genesis configuration definition is in Besu and used when specifying a public network using the -[`--network`](../../Reference/CLI/CLI-Syntax.md#network) command line option. +[`--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/CLI-Syntax.md#genesis-file) command line option. +[`--genesis-file`](../reference/cli/options.md#genesis-file) command line option. -The genesis file specifies the [network-wide settings](../../Reference/Config-Items.md), such as -those for a [free gas network](FreeGas.md), so all nodes in a network must use the same genesis +The genesis file specifies the [network-wide settings](../reference/genesis-items.md), such as +those for a [free gas network](../how-to/configure/FreeGas.md), so all nodes in a network must use the same genesis file. !!! example "Example IBFT 2.0 genesis file" diff --git a/docs/Concepts/NetworkID-And-ChainID.md b/docs/concepts/network-and-chain-id.md similarity index 84% rename from docs/Concepts/NetworkID-And-ChainID.md rename to docs/concepts/network-and-chain-id.md index 207633fba88..79d8bcdc3bd 100644 --- a/docs/Concepts/NetworkID-And-ChainID.md +++ b/docs/concepts/network-and-chain-id.md @@ -33,8 +33,8 @@ the same, with the network ID defaulting to the chain ID, as specified in the ge ``` Besu sets the chain ID (and by default the network ID) automatically, using either the -[`--genesis-file`](../Reference/CLI/CLI-Syntax.md#genesis-file) option or when specifying a -network using the [`--network`](../Reference/CLI/CLI-Syntax.md#network) option. The following +[`--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 | @@ -55,21 +55,21 @@ table lists the available networks and their chain and network IDs. 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/CLI-Syntax.md#network-id) option. +[`--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](../how-to/configure/Genesis-File.md), including the chain ID, in order to peer. +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](../how-to/configure/Genesis-File.md) with the new chain ID. +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](../Tutorials/Private-Network/Create-IBFT-Network.md#6-start-the-first-node-as-the-bootnode). +5. [Restart the nodes](../tutorials/Private-Network/Create-IBFT-Network.md#6-start-the-first-node-as-the-bootnode). !!! important diff --git a/docs/Concepts/Node-Keys.md b/docs/concepts/node-keys.md similarity index 84% rename from docs/Concepts/Node-Keys.md rename to docs/concepts/node-keys.md index bdc87ad2241..474cb914029 100644 --- a/docs/Concepts/Node-Keys.md +++ b/docs/concepts/node-keys.md @@ -10,7 +10,7 @@ pair to sign and verify transactions, and the node address as an identifier for ## Node private key When starting Hyperledger Besu, if the -[`--node-private-key-file`](../Reference/CLI/CLI-Syntax.md#node-private-key-file) option is not +[`--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. @@ -27,7 +27,7 @@ The node public key displays in the log after starting Besu. Also referred to as 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/CLI-Subcommands.md#public-key) subcommand. +[`public-key export`](../reference/cli/subcommands.md#public-key) subcommand. ## Node address @@ -35,11 +35,11 @@ Besu generates the node address by creating a hash of the node public key and us 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/CLI-Subcommands.md#public-key) subcommand. +[`public-key export-address`](../reference/cli/subcommands.md#public-key) subcommand. ## Specifying a custom node private key file -Use the [`--node-private-key-file`](../Reference/CLI/CLI-Syntax.md#node-private-key-file) option to +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 @@ -56,16 +56,16 @@ writes a generated private key to `privatekeyfile`. ## Enode URL -The enode URL identifies a node. For example, the [`--bootnodes`](../Reference/CLI/CLI-Syntax.md#bootnodes) option and -the [`perm_addNodesToAllowlist`](../Reference/API-Methods.md#perm_addnodestoallowlist) method specify nodes by +The enode URL identifies a node. For example, the [`--bootnodes`](../reference/cli/options.md#bootnodes) option and +the [`perm_addNodesToAllowlist`](../reference/api/index.md#perm_addnodestoallowlist) method specify nodes by 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/CLI-Syntax.md#p2p-host) and - [`--p2p-port`](../Reference/CLI/CLI-Syntax.md#p2p-port) options. The default host is `127.0.0.1` + 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 @@ -90,7 +90,7 @@ The enode URL format is `enode://@[?discport=]` where: `enode://c35c3ec90a8a51fd5703594c6303382f3ae6b2ecb9589bab2c04b3794f2bc3fc2631dabb0c08af795787a6c004d8f532230ae6e9925cbbefb0b28b79295d615f@127.0.0.1:30303` The enode URL displays when starting a Besu node. Use the -[`net_enode`](../Reference/API-Methods.md#net_enode) JSON-RPC API method to get the enode URL of +[`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 @@ -123,5 +123,5 @@ To use domain names in enode URLs: Use the [`--Xhelp`](../Reference/CLI/CLI-Syntax.md#xhelp) command line option to view experimental options and their descriptions. -If nodes are not connecting as expected, set the [log level to TRACE](../Reference/API-Methods.md#admin_changeloglevel) to +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/docs/get-started/install/index.md b/docs/get-started/install/index.md index a48f1e08602..1b2d7a47040 100644 --- a/docs/get-started/install/index.md +++ b/docs/get-started/install/index.md @@ -7,7 +7,7 @@ description: Options for getting started with Hyperledger Besu ## New to Hyperledger Besu? -Get started with the [Developer Quickstart](../../Tutorials/Developer-Quickstart.md). +Get started with the [Developer Quickstart](../../tutorials/Developer-Quickstart.md). Use the quickstart to rapidly generate local blockchain networks. ## Installation options diff --git a/docs/get-started/install/run-docker-image.md b/docs/get-started/install/run-docker-image.md index 554da316fb6..9fcb7ac9e70 100644 --- a/docs/get-started/install/run-docker-image.md +++ b/docs/get-started/install/run-docker-image.md @@ -38,12 +38,12 @@ docker run hyperledger/besu:latest 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/CLI-Syntax.md#rpc-http-port), -[`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port), -[`--rpc-ws-port`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-port), -[`--metrics-port`](../../Reference/CLI/CLI-Syntax.md#metrics-port), -[`--graphql-http-port`](../../Reference/CLI/CLI-Syntax.md#graphql-http-port), and -[`--metrics-push-port`](../../Reference/CLI/CLI-Syntax.md#metrics-push-port) options. +[`--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: @@ -86,7 +86,7 @@ docker run -p :8545 -p :8546 -p :3 [`--nat-method`](../../Find-and-Connect/Specifying-NAT.md) to `NONE` or `UPNP`. You can specify -[Besu environment variables](../../Reference/CLI/CLI-Syntax.md#besu-environment-variables) with the +[Besu environment variables](../../reference/cli/options.md#besu-environment-variables) with the Docker image instead of the command line options. !!! example diff --git a/docs/how-to/Backup/Backup.md b/docs/how-to/Backup/Backup.md index 07b4ed53a8e..19f23e58d7f 100644 --- a/docs/how-to/Backup/Backup.md +++ b/docs/how-to/Backup/Backup.md @@ -18,7 +18,7 @@ If installed locally, the default data location is the Besu installation directo We recommend mounting a [separate volume to store data](../../get-started/install/run-docker-image.md#starting-besu). Use the -[`--data-path`](../../Reference/CLI/CLI-Syntax.md#data-path) command line option to pass the path +[`--data-path`](../../reference/cli/options.md#data-path) command line option to pass the path to Besu. The default data location is the Besu installation directory, or `/opt/besu/database` if using the @@ -52,4 +52,4 @@ The process for finding peers after restarting is the same as for [finding peers after upgrading and restarting]. -[finding peers after upgrading and restarting]: ../Upgrade/Upgrade-Node.md#finding-peers-on-restarting +[finding peers after upgrading and restarting]: ../upgrade/node.md#finding-peers-on-restarting diff --git a/docs/how-to/Deploy/Bootnodes.md b/docs/how-to/Deploy/Bootnodes.md index 3635091b44b..8df55b95709 100644 --- a/docs/how-to/Deploy/Bootnodes.md +++ b/docs/how-to/Deploy/Bootnodes.md @@ -8,14 +8,14 @@ A network must have at least one operating bootnode. To allow for continuity in failure, configure two or more bootnodes. We do not recommend putting bootnodes behind a load balancer because the -[enode](../../Concepts/Node-Keys.md#enode-url) relates to the node public key, IP address, and +[enode](../../concepts/node-keys.md#enode-url) relates to the node public key, IP address, and discovery ports. Any changes to a bootnode enode prevents other nodes from being able to establish a connection with the bootnode. This is why we recommend putting more bootnodes on the network itself. To ensure that a bootnode enode does not change when recovering from a complete bootnode failure: -1. Create the [node key pair](../../Concepts/Node-Keys.md) (that is, the private and public key) +1. Create the [node key pair](../../concepts/node-keys.md) (that is, the private and public key) before starting the bootnode. 1. When creating bootnodes in the cloud (for example, AWS and Azure), attempt to assign a static IP address to them. If your network is: @@ -48,10 +48,10 @@ To allow for failure, specify all bootnodes on the command line (even to the boo ## Adding and removing bootnodes Adding new bootnodes is a similar process to creating bootnodes. After creating the bootnodes and -adding them to the network,update the [`--bootnodes`](../../Reference/CLI/CLI-Syntax.md#bootnodes) +adding them to the network,update the [`--bootnodes`](../../reference/cli/options.md#bootnodes) command line option for each node to include the new bootnodes. When adding bootnodes, you do not need to restart running nodes. By updating the -[`--bootnodes`](../../Reference/CLI/CLI-Syntax.md#bootnodes) option, the next time you restart the -nodes (for example, when [upgrading](../Upgrade/Upgrade-Node.md)), the nodes connect to the new +[`--bootnodes`](../../reference/cli/options.md#bootnodes) option, the next time you restart the +nodes (for example, when [upgrading](../upgrade/node.md)), the nodes connect to the new bootnodes. diff --git a/docs/how-to/Deploy/Cloud.md b/docs/how-to/Deploy/Cloud.md index ed4aabd9d06..5f0bedc0052 100644 --- a/docs/how-to/Deploy/Cloud.md +++ b/docs/how-to/Deploy/Cloud.md @@ -10,4 +10,4 @@ When deploying Besu to the cloud: bootnodes and validators. * If your network is a multi-region network, consider using VPC Peering to reduce latency. * Where required, use VPNs to connect to your on premise systems, or single private chains. -* If deploying to Kubernetes, please refer to the [tutorial](../../Tutorials/Kubernetes/Overview.md). +* If deploying to Kubernetes, please refer to the [tutorial](../../tutorials/Kubernetes/Overview.md). diff --git a/docs/how-to/Deploy/Ethstats.md b/docs/how-to/Deploy/Ethstats.md index 156e63dc6d9..1acf530ea63 100644 --- a/docs/how-to/Deploy/Ethstats.md +++ b/docs/how-to/Deploy/Ethstats.md @@ -36,8 +36,8 @@ for installing those components and connecting to a dashboard. You can use command line options to connect a node directly to a [dashboard](https://github.com/goerli/ethstats-client#available-dashboards), without using a client. -Start a node using the [`--ethstats`](../../Reference/CLI/CLI-Syntax.md#ethstats) option to specify the Ethstats server URL. -You can specify a contact email to send to the server using [`--ethstats-contact`](../../Reference/CLI/CLI-Syntax.md#ethstats-contact). +Start a node using the [`--ethstats`](../../reference/cli/options.md#ethstats) option to specify the Ethstats server URL. +You can specify a contact email to send to the server using [`--ethstats-contact`](../../reference/cli/options.md#ethstats-contact). !!! example diff --git a/docs/how-to/Deploy/Kubernetes.md b/docs/how-to/Deploy/Kubernetes.md index cae8d75aee9..6b8901a987c 100644 --- a/docs/how-to/Deploy/Kubernetes.md +++ b/docs/how-to/Deploy/Kubernetes.md @@ -10,5 +10,5 @@ private networks using Kubernetes (K8s). The repository has full support for clo AWS, Azure, GCP, and IBM, and has production setups that use of identities and cloud-native secret storage services like Azure KeyVault and AWS Secrets Manager. -Refer to the [tutorial](../../Tutorials/Kubernetes/Overview.md) and familiarize yourself with +Refer to the [tutorial](../../tutorials/Kubernetes/Overview.md) and familiarize yourself with the reference implementations, and customize them to your requirements. diff --git a/docs/how-to/Deploy/Production.md b/docs/how-to/Deploy/Production.md index e95291c708e..52873edff84 100644 --- a/docs/how-to/Deploy/Production.md +++ b/docs/how-to/Deploy/Production.md @@ -35,4 +35,4 @@ procedure above to deploy the permissioning management dapp to your Web server. [projects release page]: https://github.com/ConsenSys/permissioning-smart-contracts/releases/latest -[Getting started with onchain permissioning]: ../../Tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md +[Getting started with onchain permissioning]: ../../tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md diff --git a/docs/how-to/Deploy/Validators.md b/docs/how-to/Deploy/Validators.md index d7b39d15e3e..50c0715b329 100644 --- a/docs/how-to/Deploy/Validators.md +++ b/docs/how-to/Deploy/Validators.md @@ -6,7 +6,7 @@ description: Configuring validators in production networks As when [configuring bootnodes](Bootnodes.md): -1. Create the [node key pair](../../Concepts/Node-Keys.md) (that is, the private and public key) +1. Create the [node key pair](../../concepts/node-keys.md) (that is, the private and public key) before starting the validator. 1. When creating validators in the cloud (for example, AWS or Azure), attempt to assign static IP addresses to them. If your network is: diff --git a/docs/how-to/Develop-Dapps/Client-Libraries.md b/docs/how-to/Develop-Dapps/Client-Libraries.md index 90924a81380..be8390eecc8 100644 --- a/docs/how-to/Develop-Dapps/Client-Libraries.md +++ b/docs/how-to/Develop-Dapps/Client-Libraries.md @@ -10,7 +10,7 @@ forward JSON-RPC requests to Hyperledger Besu. Any client library implementing c methods works with Besu. Use the [web3js-quorum library](../Interact/Client-Libraries/web3js-quorum.md) with Besu for -[privacy features](../../Concepts/Privacy/Privacy-Overview.md). +[privacy features](../../concepts/Privacy/Privacy-Overview.md). ![Client Libraries](../../images/Hyperledger-Besu-Client-Libraries.png) diff --git a/docs/how-to/Interact/Client-Libraries/web3js-quorum.md b/docs/how-to/Interact/Client-Libraries/web3js-quorum.md index 3e2d463f9bb..68887b2eab3 100644 --- a/docs/how-to/Interact/Client-Libraries/web3js-quorum.md +++ b/docs/how-to/Interact/Client-Libraries/web3js-quorum.md @@ -35,8 +35,8 @@ npm install web3js-quorum Initialize your client where: * `` is the JSON-RPC HTTP endpoint of your Hyperledger Besu node. Specified - by the [`--rpc-http-host`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-host) and - [`--rpc-http-port`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-port) command line options. + by the [`--rpc-http-host`](../../../reference/cli/options.md#rpc-http-host) and + [`--rpc-http-port`](../../../reference/cli/options.md#rpc-http-port) command line options. !!! example diff --git a/docs/how-to/Limit-Access/Local-Permissioning.md b/docs/how-to/Limit-Access/Local-Permissioning.md index a6eb39cb559..33ca2e8b794 100644 --- a/docs/how-to/Limit-Access/Local-Permissioning.md +++ b/docs/how-to/Limit-Access/Local-Permissioning.md @@ -4,7 +4,7 @@ description: Hyperledger Besu local permissioning # Local permissioning -[Local permissioning](../../Concepts/Permissioning/Permissioning-Overview.md#local) supports node and account allowlisting. +[Local permissioning](../../concepts/Permissioning/Permissioning-Overview.md#local) supports node and account allowlisting. ## Node allowlisting @@ -26,7 +26,7 @@ enabled, communication is only between nodes in the allowlist. Node allowlisting is at the node level. That is, each node in the network has a [permissions configuration file](#permissions-configuration-file) file in the -[data directory](../../Reference/CLI/CLI-Syntax.md#data-path) for the node. +[data directory](../../reference/cli/options.md#data-path) for the node. Local permissioning doesn't check that the node using the permissions configuration file is listed in the allowlist, it only checks that the remote end of the connection is in the allowlist. Use [onchain permissioning] if you @@ -57,23 +57,23 @@ start with node permissions enabled. ### Enabling node allowlisting To enable node allowlisting, specify the -[`--permissions-nodes-config-file-enabled`](../../Reference/CLI/CLI-Syntax.md#permissions-nodes-config-file-enabled) +[`--permissions-nodes-config-file-enabled`](../../reference/cli/options.md#permissions-nodes-config-file-enabled) option when starting Besu. The `PERM` API methods are not enabled by default. To enable the `PERM` API methods, use the -[`--rpc-http-api`](../../Reference/CLI/CLI-Syntax.md#rpc-http-api) or -[`--rpc-ws-api`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-api) options. +[`--rpc-http-api`](../../reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../reference/cli/options.md#rpc-ws-api) options. ### Updating the node allowlist To update the nodes allowlist while the node is running, use the following JSON-RPC API methods: -* [perm_addNodesToAllowlist](../../Reference/API-Methods.md#perm_addnodestoallowlist) -* [perm_removeNodesFromAllowlist](../../Reference/API-Methods.md#perm_removenodesfromallowlist) +* [perm_addNodesToAllowlist](../../reference/api/index.md#perm_addnodestoallowlist) +* [perm_removeNodesFromAllowlist](../../reference/api/index.md#perm_removenodesfromallowlist) You can also update the [`permissions_config.toml`](#permissions-configuration-file) file directly and then update the allowlist using the -[`perm_reloadPermissionsFromFile`](../../Reference/API-Methods.md#perm_reloadpermissionsfromfile) +[`perm_reloadPermissionsFromFile`](../../reference/api/index.md#perm_reloadpermissionsfromfile) method. Updates to the permissions configuration file persist across node restarts. @@ -81,7 +81,7 @@ Updates to the permissions configuration file persist across node restarts. ### Viewing the node allowlist To view the nodes allowlist, use the -[perm_getNodesAllowlist](../../Reference/API-Methods.md#perm_getnodesallowlist) method. +[perm_getNodesAllowlist](../../reference/api/index.md#perm_getnodesallowlist) method. !!! note @@ -111,7 +111,7 @@ permissioning accepts transactions only from accounts in the accounts allowlist. Account allowlisting is at the node level. That is, each node in the network has a [permissions configuration file](#permissions-configuration-file) in the -[data directory](../../Reference/CLI/CLI-Syntax.md#data-path) for the node. +[data directory](../../reference/cli/options.md#data-path) for the node. !!! caution "Using account permissioning and privacy" @@ -126,7 +126,7 @@ Account allowlisting is at the node level. That is, each node in the network has Transaction validation against the accounts allowlist occurs at the following points: * Submitted by JSON-RPC API method - [`eth_sendRawTransaction`](../../Reference/API-Methods.md#eth_sendrawtransaction) + [`eth_sendRawTransaction`](../../reference/api/index.md#eth_sendrawtransaction) * Received via propagation from another node * Added to a block by a mining node @@ -165,23 +165,23 @@ The following diagram illustrates applying local and onchain permissioning rules ### Enabling account allowlisting To enable account allowlisting, specify the -[`--permissions-accounts-config-file-enabled`](../../Reference/CLI/CLI-Syntax.md#permissions-accounts-config-file-enabled) +[`--permissions-accounts-config-file-enabled`](../../reference/cli/options.md#permissions-accounts-config-file-enabled) option when starting Besu. The `PERM` API methods are not enabled by default. To enable the `PERM` API methods, use the -[`--rpc-http-api`](../../Reference/CLI/CLI-Syntax.md#rpc-http-api) or -[`--rpc-ws-api`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-api) options. +[`--rpc-http-api`](../../reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../reference/cli/options.md#rpc-ws-api) options. ### Updating the account allowlist To update the accounts allowlist when the node is running, use the JSON-RPC API methods: -* [`perm_addAccountsToAllowlist`](../../Reference/API-Methods.md#perm_addaccountstoallowlist) -* [`perm_removeAccountsFromAllowlist`](../../Reference/API-Methods.md#perm_removeaccountsfromallowlist). +* [`perm_addAccountsToAllowlist`](../../reference/api/index.md#perm_addaccountstoallowlist) +* [`perm_removeAccountsFromAllowlist`](../../reference/api/index.md#perm_removeaccountsfromallowlist). You can also update the [`permissions_config.toml`](#permissions-configuration-file) file directly and use the -[`perm_reloadPermissionsFromFile`](../../Reference/API-Methods.md#perm_reloadpermissionsfromfile) +[`perm_reloadPermissionsFromFile`](../../reference/api/index.md#perm_reloadpermissionsfromfile) method to update the allowlists. Updates to the permissions configuration file persist across node restarts. @@ -189,25 +189,25 @@ Updates to the permissions configuration file persist across node restarts. ### Viewing the account allowlist To view the accounts allowlist, use the -[`perm_getAccountsAllowlist`](../../Reference/API-Methods.md#perm_getaccountsallowlist) method. +[`perm_getAccountsAllowlist`](../../reference/api/index.md#perm_getaccountsallowlist) method. ## Permissions configuration file The permissions configuration file contains the nodes and accounts allowlists. If the -[`--permissions-accounts-config-file`](../../Reference/CLI/CLI-Syntax.md#permissions-accounts-config-file) -and [`--permissions-nodes-config-file`](../../Reference/CLI/CLI-Syntax.md#permissions-nodes-config-file) +[`--permissions-accounts-config-file`](../../reference/cli/options.md#permissions-accounts-config-file) +and [`--permissions-nodes-config-file`](../../reference/cli/options.md#permissions-nodes-config-file) options are not specified, the name of the permissions configuration file must be [`permissions_config.toml`](#permissions-configuration-file) and must be in the -[data directory](../../Reference/CLI/CLI-Syntax.md#data-path) for the node. +[data directory](../../reference/cli/options.md#data-path) for the node. You can specify the accounts and nodes allowlists in the same file or in separate files for accounts and nodes. To specify a permissions configuration file (or separate files for accounts and nodes) in any location, use the -[`--permissions-accounts-config-file`](../../Reference/CLI/CLI-Syntax.md#permissions-accounts-config-file) +[`--permissions-accounts-config-file`](../../reference/cli/options.md#permissions-accounts-config-file) and -[`--permissions-nodes-config-file`](../../Reference/CLI/CLI-Syntax.md#permissions-nodes-config-file) +[`--permissions-nodes-config-file`](../../reference/cli/options.md#permissions-nodes-config-file) options. !!!note @@ -228,5 +228,5 @@ options. [specify a permissions configuration file with Docker]: ../../get-started/install/run-docker-image.md#permissions-configuration-file -[support domain names]: ../../Concepts/Node-Keys.md#domain-name-support -[onchain permissioning]: ../../Concepts/Permissioning/Onchain-Permissioning.md +[support domain names]: ../../concepts/node-keys.md#domain-name-support +[onchain permissioning]: ../../concepts/Permissioning/Onchain-Permissioning.md diff --git a/docs/how-to/Limit-Access/Specify-Perm-Version.md b/docs/how-to/Limit-Access/Specify-Perm-Version.md index 49e7907407f..b898050b620 100644 --- a/docs/how-to/Limit-Access/Specify-Perm-Version.md +++ b/docs/how-to/Limit-Access/Specify-Perm-Version.md @@ -4,8 +4,8 @@ description: Specify the permissioning interface version # Specify the permissioning contract interface version -Use the [`--permissions-nodes-contract-version`](../../Reference/CLI/CLI-Syntax.md#permissions-nodes-contract-version) -command line option to specify the version of the [permissioning contract interface](../../Concepts/Permissioning/Onchain-Permissioning.md#permissioning-contracts). +Use the [`--permissions-nodes-contract-version`](../../reference/cli/options.md#permissions-nodes-contract-version) +command line option to specify the version of the [permissioning contract interface](../../concepts/Permissioning/Onchain-Permissioning.md#permissioning-contracts). The default is 1. Specify the contract interface version that maps to the version of the [Enterprise Ethereum Alliance Client Specification](https://entethalliance.org/technical-specifications/) diff --git a/docs/how-to/Limit-Access/Updating-Permission-Lists.md b/docs/how-to/Limit-Access/Updating-Permission-Lists.md index cd88222a20c..dca7f4788fd 100644 --- a/docs/how-to/Limit-Access/Updating-Permission-Lists.md +++ b/docs/how-to/Limit-Access/Updating-Permission-Lists.md @@ -4,17 +4,17 @@ description: Updating Hyperledger Besu onchain allowlists # Updating nodes and accounts allowlists -When using [onchain permissioning](../../Concepts/Permissioning/Onchain-Permissioning.md), you can update +When using [onchain permissioning](../../concepts/Permissioning/Onchain-Permissioning.md), you can update [nodes](#update-nodes-allowlist) and [accounts](#update-accounts-allowlist) allowlists. ## Update nodes allowlist To add a node to the Hyperledger Besu nodes allowlist: -1. On the **Nodes** tab of the [permissioning management dapp](../../Tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md), +1. On the **Nodes** tab of the [permissioning management dapp](../../tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md), select **Add Node**. The **Add Node** window displays. -2. Enter the [enode URL](../../Concepts/Node-Keys.md#enode-url) of the node you are adding and select **Add Node**. +2. Enter the [enode URL](../../concepts/node-keys.md#enode-url) of the node you are adding and select **Add Node**. !!! tip @@ -61,7 +61,7 @@ To remove a node from the nodes allowlist: To add an account to the accounts allowlist: -1. On the **Accounts** tab of the [permissioning management dapp](../../Tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md), +1. On the **Accounts** tab of the [permissioning management dapp](../../tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md), select **Add Account**. The **Add Account** window displays. 1. Enter the account address in the **Account Address** field and select **Add Account**. @@ -75,4 +75,4 @@ To remove an account from the accounts allowlist: You can add or remove admins in the same way as [accounts](#update-accounts-allowlist), except on the **Admins** tab. -[support domain names]: ../../Concepts/Node-Keys.md#domain-name-support +[support domain names]: ../../concepts/node-keys.md#domain-name-support diff --git a/docs/how-to/Send-Transactions/Account-Management.md b/docs/how-to/Send-Transactions/Account-Management.md index dc719262d0d..646f3447f62 100644 --- a/docs/how-to/Send-Transactions/Account-Management.md +++ b/docs/how-to/Send-Transactions/Account-Management.md @@ -13,11 +13,11 @@ Hyperledger Besu does not support key management inside the client. Use: In Besu, you can use the JSON-RPC methods: -* [`eth_getBalance`](../../Reference/API-Methods.md#eth_getbalance) to retrieve the account balance. -* [`eth_sendRawTransaction`](../../Reference/API-Methods.md#eth_sendrawtransaction) to transfer +* [`eth_getBalance`](../../reference/api/index.md#eth_getbalance) to retrieve the account balance. +* [`eth_sendRawTransaction`](../../reference/api/index.md#eth_sendrawtransaction) to transfer ether or create and interact with contracts. For more information, see [Transactions](../send-transactions.md#transactions)). -* [`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction) to send +* [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) to send [private transactions](../../private-networks/how-to/send-transactions/private-transactions.md). !!! tip diff --git a/docs/how-to/Troubleshoot/Trace-Transactions.md b/docs/how-to/Troubleshoot/Trace-Transactions.md deleted file mode 100644 index d295be710e6..00000000000 --- a/docs/how-to/Troubleshoot/Trace-Transactions.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -description: How to trace transactions ---- - -# Trace transactions - -To get detailed information about transaction processing, use the -[`TRACE` API](../../Reference/API-Methods.md#trace-methods). -Enable the `TRACE` API using the -[`--rpc-http-api`](../../Reference/CLI/CLI-Syntax.md#rpc-http-api) or -[`--rpc-ws-api`](../../Reference/CLI/CLI-Syntax.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 different diagnostic options when tracing calls or transactions. -The options are [`trace`, `vmTrace`, or `stateDiff`](../../Reference/Trace-Types.md). - -To use the ad-hoc tracing APIs, the requested block or transaction must be within the -number of [blocks retained](../../Reference/CLI/CLI-Syntax.md#pruning-blocks-retained) with [pruning enabled](../../Reference/CLI/CLI-Syntax.md#pruning-enabled) -(by default, 1024). - -The ad-hoc tracing APIs are: - -* [trace_call](../../Reference/API-Methods.md#trace_call) -* [trace_callMany](../../Reference/API-Methods.md#trace_callmany) -* [trace_rawTransaction](../../Reference/API-Methods.md#trace_rawtransaction) -* [trace_replayBlockTransactions](../../Reference/API-Methods.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 -(that is, synchronized without pruning or fast sync) or the -requested block or transaction must be within the -number of [blocks retained](../../Reference/CLI/CLI-Syntax.md#pruning-blocks-retained) with [pruning enabled](../../Reference/CLI/CLI-Syntax.md#pruning-enabled) -(by default, 1024). - -The transaction-trace filtering APIs are: - -* [trace_block](../../Reference/API-Methods.md#trace_block) -* [trace_filter](../../Reference/API-Methods.md#trace_filter) -* [trace_get](../../Reference/API-Methods.md#trace_get) -* [trace_transaction](../../Reference/API-Methods.md#trace_transaction) diff --git a/docs/how-to/Use-Privacy/Access-Private-Transactions.md b/docs/how-to/Use-Privacy/Access-Private-Transactions.md index 6e64d1ee0b1..71f0005e098 100644 --- a/docs/how-to/Use-Privacy/Access-Private-Transactions.md +++ b/docs/how-to/Use-Privacy/Access-Private-Transactions.md @@ -12,7 +12,7 @@ description: Methods for accessing and managing private transactions and privacy and about all the [new Tessera features](https://consensys.net/blog/quorum/tessera-the-privacy-manager-of-choice-for-consensys-quorum-networks). A Hyperledger Besu private transaction creates a -[privacy marker transaction](../../Concepts/Privacy/Private-Transaction-Processing.md) and +[privacy marker transaction](../../concepts/Privacy/Private-Transaction-Processing.md) and the private transaction itself. ## Transaction receipts @@ -21,9 +21,9 @@ With the transaction hash returned when submitting the private transaction, to g receipt for the: * Private transaction, use - [`priv_getTransactionReceipt`](../../Reference/API-Methods.md#priv_gettransactionreceipt). + [`priv_getTransactionReceipt`](../../reference/api/index.md#priv_gettransactionreceipt). * Privacy marker transaction, use - [`eth_getTransactionReceipt`](../../Reference/API-Methods.md#eth_gettransactionreceipt). + [`eth_getTransactionReceipt`](../../reference/api/index.md#eth_gettransactionreceipt). The transaction receipt includes a `status` indicating if the transaction failed (`0x0`), succeeded (`0x1`), or was invalid (`0x2`). @@ -40,6 +40,6 @@ was invalid (`0x2`). With the transaction hash returned when submitting the private transaction, to get the: * Private transaction, use - [`priv_getPrivateTransaction`](../../Reference/API-Methods.md#priv_getprivatetransaction). + [`priv_getPrivateTransaction`](../../reference/api/index.md#priv_getprivatetransaction). * Privacy marker transaction, use - [`eth_getTransactionByHash`](../../Reference/API-Methods.md#eth_gettransactionbyhash). + [`eth_getTransactionByHash`](../../reference/api/index.md#eth_gettransactionbyhash). diff --git a/docs/how-to/Use-Privacy/Create-Manage-Privacy-Groups.md b/docs/how-to/Use-Privacy/Create-Manage-Privacy-Groups.md index c8916b15be9..2b3c1fc29d0 100644 --- a/docs/how-to/Use-Privacy/Create-Manage-Privacy-Groups.md +++ b/docs/how-to/Use-Privacy/Create-Manage-Privacy-Groups.md @@ -13,9 +13,9 @@ description: Create and manage privacy groups with Hyperledger Besu Hyperledger Besu-extended privacy provides JSON-RPC API methods for creating and managing privacy groups: -* [`priv_createPrivacyGroup`](../../Reference/API-Methods.md#priv_createprivacygroup) -* [`priv_findPrivacyGroup`](../../Reference/API-Methods.md#priv_findprivacygroup) -* [`priv_deletePrivacyGroup`](../../Reference/API-Methods.md#priv_deleteprivacygroup). +* [`priv_createPrivacyGroup`](../../reference/api/index.md#priv_createprivacygroup) +* [`priv_findPrivacyGroup`](../../reference/api/index.md#priv_findprivacygroup) +* [`priv_deletePrivacyGroup`](../../reference/api/index.md#priv_deleteprivacygroup). !!! tip diff --git a/docs/how-to/Use-Privacy/EEA-Compliant.md b/docs/how-to/Use-Privacy/EEA-Compliant.md index 1c36c896cb0..7c88e2413fb 100644 --- a/docs/how-to/Use-Privacy/EEA-Compliant.md +++ b/docs/how-to/Use-Privacy/EEA-Compliant.md @@ -10,23 +10,23 @@ description: Hyperledger Besu JSON-RPC methods to use for EEA-compliant privacy Read our [Orion to Tessera migration guide](https://docs.orion.consensys.net/en/latest/Tutorials/Migrating-from-Orion-to-Tessera/) and about all the [new Tessera features](https://consensys.net/blog/quorum/tessera-the-privacy-manager-of-choice-for-consensys-quorum-networks). -When using Hyperledger Besu [EEA-compliant privacy](../../Concepts/Privacy/Privacy-Groups.md), the +When using Hyperledger Besu [EEA-compliant privacy](../../concepts/Privacy/Privacy-Groups.md), the group of nodes specified by `privateFrom` and `privateFor` form a privacy group, to which Tessera assigns a unique privacy group ID. -To enable the [`EEA` API methods](../../Reference/API-Methods.md#eea-methods), use the -[`--rpc-http-api`](../../Reference/CLI/CLI-Syntax.md#rpc-http-api) or -[`--rpc-ws-api`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-api) command line options. +To enable the [`EEA` API methods](../../reference/api/index.md#eea-methods), use 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. To create an EEA-compliant private transaction, specify `privateFor` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction). ## Privacy group type Privacy groups created when specifying `privateFrom` and `privateFor` have a `LEGACY` privacy group type when returned by -[`priv_findPrivacyGroup`](../../Reference/API-Methods.md#priv_findprivacygroup). +[`priv_findPrivacyGroup`](../../reference/api/index.md#priv_findprivacygroup). !!! example diff --git a/docs/how-to/Use-Privacy/Privacy.md b/docs/how-to/Use-Privacy/Privacy.md index 0e4e31bf15a..e590ca22cc8 100644 --- a/docs/how-to/Use-Privacy/Privacy.md +++ b/docs/how-to/Use-Privacy/Privacy.md @@ -11,26 +11,26 @@ description: Hyperledger Besu-extended privacy and about all the [new Tessera features](https://consensys.net/blog/quorum/tessera-the-privacy-manager-of-choice-for-consensys-quorum-networks). Hyperledger Besu provides an extended implementation of privacy allowing you to -[create a privacy group for a set of participants](../../Concepts/Privacy/Privacy-Groups.md). You +[create a privacy group for a set of participants](../../concepts/Privacy/Privacy-Groups.md). You must specify the privacy group ID when sending private transactions. -To enable the [`PRIV` API methods](../../Reference/API-Methods.md#priv-methods), use the -[`--rpc-http-api`](../../Reference/CLI/CLI-Syntax.md#rpc-http-api) or -[`--rpc-ws-api`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-api) command line options. +To enable the [`PRIV` API methods](../../reference/api/index.md#priv-methods), use 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. To create the privacy group containing the recipients of a private transaction, use -[`priv_createPrivacyGroup`](../../Reference/API-Methods.md#priv_createprivacygroup). +[`priv_createPrivacyGroup`](../../reference/api/index.md#priv_createprivacygroup). To create an EEA-compliant private transaction, specify `privacyGroupId` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction). ## Privacy group type Privacy groups created using -[`priv_createPrivacyGroup`](../../Reference/API-Methods.md#priv_createprivacygroup) +[`priv_createPrivacyGroup`](../../reference/api/index.md#priv_createprivacygroup) have a `BESU` privacy group type when returned by -[`priv_findPrivacyGroup`](../../Reference/API-Methods.md#priv_findprivacygroup). +[`priv_findPrivacyGroup`](../../reference/api/index.md#priv_findprivacygroup). !!! example diff --git a/docs/how-to/Use-Privacy/Run-Tessera-With-Besu.md b/docs/how-to/Use-Privacy/Run-Tessera-With-Besu.md index 92bbdc21933..4e1d1bc5758 100644 --- a/docs/how-to/Use-Privacy/Run-Tessera-With-Besu.md +++ b/docs/how-to/Use-Privacy/Run-Tessera-With-Besu.md @@ -10,7 +10,7 @@ description: Running ConsenSys Quorum Tessera with Hyperledger Besu Read our [Orion to Tessera migration guide](https://docs.orion.consensys.net/en/latest/Tutorials/Migrating-from-Orion-to-Tessera/) and about all the [new Tessera features](https://consensys.net/blog/quorum/tessera-the-privacy-manager-of-choice-for-consensys-quorum-networks). -To enable [privacy functionality](../../Concepts/Privacy/Privacy-Overview.md) in production +To enable [privacy functionality](../../concepts/Privacy/Privacy-Overview.md) in production systems, [Tessera](https://docs.tessera.consensys.net/) must be [highly available](#high-availability) and [run in a separate instance](#separate-instances) to Hyperledger Besu. diff --git a/docs/how-to/Use-Privacy/Sign-Privacy-Marker-Transactions.md b/docs/how-to/Use-Privacy/Sign-Privacy-Marker-Transactions.md index 253ba5756a2..0654da21dcb 100644 --- a/docs/how-to/Use-Privacy/Sign-Privacy-Marker-Transactions.md +++ b/docs/how-to/Use-Privacy/Sign-Privacy-Marker-Transactions.md @@ -6,7 +6,7 @@ description: How to sign a privacy marker transaction with Hyperledger Besu You can sign privacy marker transactions with either a random key or a specified key. To sign privacy marker transactions with a specified private key, use -[`--privacy-marker-transaction-signing-key-file`](../../Reference/CLI/CLI-Syntax.md#privacy-marker-transaction-signing-key-file) +[`--privacy-marker-transaction-signing-key-file`](../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) when starting Hyperledger Besu. !!! note @@ -20,7 +20,7 @@ adequate funds. In [free gas networks](../configure/FreeGas.md), to provide further anonymity by signing each privacy marker transaction with a different random key, exclude the -[`--privacy-marker-transaction-signing-key-file`](../../Reference/CLI/CLI-Syntax.md#privacy-marker-transaction-signing-key-file) +[`--privacy-marker-transaction-signing-key-file`](../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) command line option when starting Besu. !!! caution "Using account permissioning and privacy" @@ -37,4 +37,4 @@ command line option when starting Besu. [private transaction process](../../Concepts/Privacy/Private-Transaction-Processing.md). -[Account permissioning]: ../../Concepts/Permissioning/Permissioning-Overview.md#account-permissioning +[Account permissioning]: ../../concepts/Permissioning/Permissioning-Overview.md#account-permissioning diff --git a/docs/how-to/Use-Privacy/Use-FlexiblePrivacy.md b/docs/how-to/Use-Privacy/Use-FlexiblePrivacy.md index e0280da92a0..bef42ef2581 100644 --- a/docs/how-to/Use-Privacy/Use-FlexiblePrivacy.md +++ b/docs/how-to/Use-Privacy/Use-FlexiblePrivacy.md @@ -11,7 +11,7 @@ description: Use flexible privacy groups and about all the [new Tessera features](https://consensys.net/blog/quorum/tessera-the-privacy-manager-of-choice-for-consensys-quorum-networks). Use the [`web3js-quorum` library](https://github.com/ConsenSys/web3js-quorum) to create and update -membership of [flexible privacy groups](../../Concepts/Privacy/Flexible-PrivacyGroups.md). +membership of [flexible privacy groups](../../concepts/Privacy/Flexible-PrivacyGroups.md). !!! tip @@ -32,16 +32,16 @@ membership of [flexible privacy groups](../../Concepts/Privacy/Flexible-PrivacyG ## Enabling flexible privacy groups -Use the [`--privacy-flexible-groups-enabled`](../../Reference/CLI/CLI-Syntax.md#privacy-flexible-groups-enabled) -command line option to enable [flexible privacy groups](../../Concepts/Privacy/Flexible-PrivacyGroups.md). -When flexible privacy groups are enabled, the [`priv_createPrivacyGroup`](../../Reference/API-Methods.md#priv_createprivacygroup), -[`priv_deletePrivacyGroup`](../../Reference/API-Methods.md#priv_deleteprivacygroup), -and [`priv_findPrivacyGroup`](../../Reference/API-Methods.md#priv_findprivacygroup) methods for -[offchain privacy groups](../../Concepts/Privacy/Privacy-Groups.md) are disabled. +Use the [`--privacy-flexible-groups-enabled`](../../reference/cli/options.md#privacy-flexible-groups-enabled) +command line option to enable [flexible privacy groups](../../concepts/Privacy/Flexible-PrivacyGroups.md). +When flexible privacy groups are enabled, the [`priv_createPrivacyGroup`](../../reference/api/index.md#priv_createprivacygroup), +[`priv_deletePrivacyGroup`](../../reference/api/index.md#priv_deleteprivacygroup), +and [`priv_findPrivacyGroup`](../../reference/api/index.md#priv_findprivacygroup) methods for +[offchain privacy groups](../../concepts/Privacy/Privacy-Groups.md) are disabled. ## Simple flexible privacy group example -To create and find a [flexible privacy group](../../Concepts/Privacy/Flexible-PrivacyGroups.md) using +To create and find a [flexible privacy group](../../concepts/Privacy/Flexible-PrivacyGroups.md) using the [`web3js-quorum` library](https://github.com/ConsenSys/web3js-quorum): 1. Update the `example/keys.js` file to match your network configuration. @@ -64,7 +64,7 @@ the [`web3js-quorum` library](https://github.com/ConsenSys/web3js-quorum): ## Adding and removing members -To add and remove members from a [flexible privacy group](../../Concepts/Privacy/Flexible-PrivacyGroups.md), +To add and remove members from a [flexible privacy group](../../concepts/Privacy/Flexible-PrivacyGroups.md), use the `addTo` and `removeFrom` methods in the [`web3js-quorum` library](https://github.com/ConsenSys/web3js-quorum) client library. diff --git a/docs/how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md b/docs/how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md index 47abfa1a42c..80b0b92a0c8 100644 --- a/docs/how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md +++ b/docs/how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md @@ -10,10 +10,10 @@ Besu and [GoQuorum clients] using the Tessera private transaction manager. This mode requires both networks to run an interoperable consensus algorithm such as [QBFT] to work. To run your Besu nodes in GoQuorum-compatible privacy mode, add the `isQuorum:true` flag to your -[genesis file](../configure/Genesis-File.md). +[genesis file](../../concepts/genesis-file.md). While in GoQuorum-compatible privacy mode and using Tessera, disable [`orion` mode](https://docs.tessera.consensys.net/en/stable/HowTo/Configure/Orion-Mode/) -by removing `"mode": "orion",` from the [Tessera configuration file](../../Tutorials/Privacy/Configuring-Multi-Tenancy.md#3-update-the-tessera-configuration-file). +by removing `"mode": "orion",` from the [Tessera configuration file](../../tutorials/Privacy/Configuring-Multi-Tenancy.md#3-update-the-tessera-configuration-file). ## GoQuorum-compatible private transactions diff --git a/docs/how-to/configure/Alternative-EC-Curves.md b/docs/how-to/configure/Alternative-EC-Curves.md index d0477a7c56b..48304bd1549 100644 --- a/docs/how-to/configure/Alternative-EC-Curves.md +++ b/docs/how-to/configure/Alternative-EC-Curves.md @@ -12,7 +12,7 @@ By default, Besu uses the Ethereum standard `secp256k1` elliptic curve (EC). However, when running nodes in a private network, it is possible to configure an alternative elliptic curve. The configuration for what elliptic curve Besu will use is done in the network configuration section of genesis file, -using the [`ecCurve`](../../Reference/Config-Items.md#Configuration_Items) key: +using the [`ecCurve`](../../reference/genesis-items.md#Configuration_Items) key: ```bash { diff --git a/docs/how-to/configure/Block-Proposal-Permissioning.md b/docs/how-to/configure/Block-Proposal-Permissioning.md index 38bdeafde73..dd2428d23c5 100644 --- a/docs/how-to/configure/Block-Proposal-Permissioning.md +++ b/docs/how-to/configure/Block-Proposal-Permissioning.md @@ -10,7 +10,7 @@ description: Block proposal permissioning Block proposal permissioning is an early access feature, and functionality and options may be updated between releases. -You can configure [block proposal permissioning](../../Concepts/PKI.md#block-proposal-permissioning) +You can configure [block proposal permissioning](../../concepts/PKI.md#block-proposal-permissioning) to ensure only authorized validator nodes can propose blocks in the network. Use certificates issued by a trusted authority to ensure validators are authorized to propose blocks. @@ -20,7 +20,7 @@ Use certificates issued by a trusted authority to ensure validators are authoriz **Prerequisites**: * A configured network. For example, - [see steps 1 to 5 in the QBFT tutorial](../../Tutorials/Private-Network/Create-QBFT-Network.md). + [see steps 1 to 5 in the QBFT tutorial](../../tutorials/Private-Network/Create-QBFT-Network.md). * A keystore containing the certificate and key for each network node. * A truststore containing all the trusted certificates for the network. diff --git a/docs/how-to/configure/Configure-HA/High-Availability.md b/docs/how-to/configure/Configure-HA/High-Availability.md index 84009ea1b0e..b0f33d78cf1 100644 --- a/docs/how-to/configure/Configure-HA/High-Availability.md +++ b/docs/how-to/configure/Configure-HA/High-Availability.md @@ -41,13 +41,13 @@ determine when a node is ready. ## Transaction nonces Besu obtains the nonce for the next transaction using -[`eth_getTransactionCount`](../../../Reference/API-Methods.md#eth_gettransactioncount). The nonce +[`eth_getTransactionCount`](../../../reference/api/index.md#eth_gettransactioncount). The nonce depends on the transactions in the -[transaction pool](../../../Concepts/Transactions/Transaction-Pool.md). If sending -[`eth_getTransactionCount`](../../../Reference/API-Methods.md#eth_gettransactioncount) and -[`eth_sendRawTransaction`](../../../Reference/API-Methods.md#eth_sendrawtransaction) requests for a +[transaction pool](../../../concepts/Transactions/Transaction-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-Methods.md#eth_gettransactioncount) results +[`eth_getTransactionCount`](../../../reference/api/index.md#eth_gettransactioncount) results might be incorrect. !!! note @@ -100,17 +100,17 @@ node. To recover dropped messages, create another subscription and follow the pr 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-Methods.md#eth_getblockbynumber). +[`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-Methods.md#eth_getlogs). +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-Methods.md#txpool_besutransactions). +[`txpool_besuTransactions`](../../../reference/api/index.md#txpool_besutransactions). !!! note @@ -119,7 +119,7 @@ To request all pending transactions for the new node, use ### Dropped pending transactions To request all pending transactions for the new node, use -[`txpool_besuTransactions`](../../../Reference/API-Methods.md#txpool_besutransactions). +[`txpool_besuTransactions`](../../../reference/api/index.md#txpool_besutransactions). !!! note @@ -128,4 +128,4 @@ To request all pending transactions for the new node, use ### 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-Methods.md#eth_syncing). +node, use [`eth_syncing`](../../../reference/api/index.md#eth_syncing). diff --git a/docs/how-to/configure/Consensus-Protocols/Clique.md b/docs/how-to/configure/Consensus-Protocols/Clique.md index 2bd38cb397d..2b03904c4cf 100644 --- a/docs/how-to/configure/Consensus-Protocols/Clique.md +++ b/docs/how-to/configure/Consensus-Protocols/Clique.md @@ -6,7 +6,7 @@ source: rinkeby.json # Clique -Besu implements the [Clique](https://eips.ethereum.org/EIPS/eip-225) proof of authority (PoA) [consensus protocol](../../../Concepts/Consensus-Protocols/Overview-Consensus.md). +Besu implements the [Clique](https://eips.ethereum.org/EIPS/eip-225) proof of authority (PoA) [consensus protocol](../../../concepts/Consensus-Protocols/Overview-Consensus.md). The Rinkeby and Goerli testnets uses Clique and private networks can also use Clique. !!! warning @@ -19,11 +19,11 @@ In Clique networks, approved accounts, known as signers, validate transactions a take turns to create the next block. Existing signers propose and vote to [add or remove signers](#add-and-remove-signers). -You can [create a private network using Clique](../../../Tutorials/Private-Network/Create-Private-Clique-Network.md). +You can [create a private network using Clique](../../../tutorials/Private-Network/Create-Private-Clique-Network.md). ## Genesis file -To use Clique in a private network, Besu requires a Clique [genesis file](../Genesis-File.md). When connecting to Rinkeby, +To use Clique in a private network, Besu requires a Clique [genesis file](../../../concepts/genesis-file.md). When connecting to Rinkeby, Besu uses the [`rinkeby.json`](https://github.com/hyperledger/besu/blob/master/config/src/main/resources/rinkeby.json) genesis file in the `/besu/config/src/main/resources` directory. @@ -83,7 +83,7 @@ The `extraData` property consists of: ### Post-Merge configuration -After [The Merge](../../../Concepts/Merge.md), the following block fields are modified or deprecated. +After [The Merge](../../../public-networks/concepts/the-merge.md), the following block fields are modified or deprecated. Their fields **must** contain only the constant values from the following chart. | Field | Constant value | Comment | @@ -99,34 +99,34 @@ Additionally, [`extraData`](#extra-data) is limited to 32 bytes of vanity data a ## Connect to a Clique network To connect to the Rinkeby testnet, start Besu with the -[`--network=rinkeby`](../../../Reference/CLI/CLI-Syntax.md#network) command line option. To start a +[`--network=rinkeby`](../../../reference/cli/options.md#network) command line option. To start a node on a Clique private network, use the -[`--genesis-file`](../../../Reference/CLI/CLI-Syntax.md#genesis-file) option to specify the custom +[`--genesis-file`](../../../reference/cli/options.md#genesis-file) option to specify the custom genesis file. ## Add and remove signers Existing signers propose and vote to add or remove validators using the Clique JSON-RPC API methods. -Enable the HTTP interface with [`--rpc-http-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled) or the -WebSocket interface with [`--rpc-ws-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-ws-enabled). +Enable the HTTP interface with [`--rpc-http-enabled`](../../../reference/cli/options.md#rpc-http-enabled) or the +WebSocket interface with [`--rpc-ws-enabled`](../../../reference/cli/options.md#rpc-ws-enabled). The Clique API methods are disabled by default. -To enable them, specify the [`--rpc-http-api`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-api) or -[`--rpc-ws-api`](../../../Reference/CLI/CLI-Syntax.md#rpc-ws-api) option and include `CLIQUE`. +To enable them, specify the [`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../reference/cli/options.md#rpc-ws-api) option and include `CLIQUE`. The methods to add or remove signers are: -* [`clique_propose`](../../../Reference/API-Methods.md#clique_propose). -* [`clique_getSigners`](../../../Reference/API-Methods.md#clique_getsigners). -* [`clique_discard`](../../../Reference/API-Methods.md#clique_discard). +* [`clique_propose`](../../../reference/api/index.md#clique_propose). +* [`clique_getSigners`](../../../reference/api/index.md#clique_getsigners). +* [`clique_discard`](../../../reference/api/index.md#clique_discard). To view signer metrics for a specified block range, call -[`clique_getSignerMetrics`](../../../Reference/API-Methods.md#clique_getsignermetrics). +[`clique_getSignerMetrics`](../../../reference/api/index.md#clique_getsignermetrics). ### Add a signer To propose adding a signer to a Clique network, call -[`clique_propose`](../../../Reference/API-Methods.md#clique_propose), specifying the address of the proposed signer and `true`. +[`clique_propose`](../../../reference/api/index.md#clique_propose), specifying the address of the proposed signer and `true`. A majority of signers must execute the call. !!! example "JSON-RPC `clique_propose` request example" @@ -141,7 +141,7 @@ When more than 50% of the existing signers propose adding the signer, with their signer can begin signing blocks. To return a list of signers and confirm the addition of a proposed signer, call -[`clique_getSigners`](../../../Reference/API-Methods.md#clique_getsigners). +[`clique_getSigners`](../../../reference/api/index.md#clique_getsigners). !!! example "JSON-RPC `clique_getSigners` request example" @@ -150,7 +150,7 @@ To return a list of signers and confirm the addition of a proposed signer, call ``` To discard your proposal after confirming the addition of a signer, call -[`clique_discard`](../../../Reference/API-Methods.md#clique_discard) specifying the address of the proposed signer. +[`clique_discard`](../../../reference/api/index.md#clique_discard) specifying the address of the proposed signer. !!! example "JSON-RPC `clique_discard` request example" @@ -161,7 +161,7 @@ To discard your proposal after confirming the addition of a signer, call ### Remove a signer The process for removing a signer from a Clique network is the same as [adding a signer](#add-a-signer), except you -specify `false` as the second parameter of [`clique_propose`](../../../Reference/API-Methods.md#clique_propose). +specify `false` as the second parameter of [`clique_propose`](../../../reference/api/index.md#clique_propose). ### Epoch transition diff --git a/docs/how-to/configure/Consensus-Protocols/IBFT.md b/docs/how-to/configure/Consensus-Protocols/IBFT.md index 4a659f3345f..0a6bcf57772 100644 --- a/docs/how-to/configure/Consensus-Protocols/IBFT.md +++ b/docs/how-to/configure/Consensus-Protocols/IBFT.md @@ -4,7 +4,7 @@ description: Hyperledger Besu IBFT 2.0 proof of authority (PoA) consensus protoc # IBFT 2.0 -Besu implements the IBFT 2.0 proof of authority (PoA) [consensus protocol](../../../Concepts/Consensus-Protocols/Overview-Consensus.md). +Besu implements the IBFT 2.0 proof of authority (PoA) [consensus protocol](../../../concepts/Consensus-Protocols/Overview-Consensus.md). IBFT 2.0 is supported for existing private networks, but [QBFT](QBFT.md) is the recommended enterprise-grade consensus protocol for private networks. @@ -14,7 +14,7 @@ super-majority (greater than 66%) of validators must first sign the block. Existing validators propose and vote to [add or remove validators](#add-and-remove-validators). -You can [create a private network using IBFT](../../../Tutorials/Private-Network/Create-IBFT-Network.md). +You can [create a private network using IBFT](../../../tutorials/Private-Network/Create-IBFT-Network.md). !!! important @@ -29,7 +29,7 @@ You can [create a private network using IBFT](../../../Tutorials/Private-Network ## Genesis file -To use IBFT 2.0, Besu requires an IBFT 2.0 [genesis file](../Genesis-File.md). The genesis file defines properties +To use IBFT 2.0, Besu requires an IBFT 2.0 [genesis file](../../../concepts/genesis-file.md). The genesis file defines properties specific to IBFT 2.0. !!! example "Example IBFT 2.0 genesis file" @@ -82,7 +82,7 @@ The properties with specific values in the IBFT 2.0 genesis files are: block identification. To start a node on an IBFT 2.0 private network, use the -[`--genesis-file`](../../../Reference/CLI/CLI-Syntax.md#genesis-file) option to specify the custom +[`--genesis-file`](../../../reference/cli/options.md#genesis-file) option to specify the custom genesis file. ### Extra data @@ -107,7 +107,7 @@ Formally, `extraData` in the genesis block contains #### Generate extra data To generate the `extraData` RLP string for inclusion in the genesis file, use the -[`rlp encode`](../../../Reference/CLI/CLI-Subcommands.md#rlp) Besu subcommand. +[`rlp encode`](../../../reference/cli/subcommands.md#rlp) Besu subcommand. !!! example @@ -117,7 +117,7 @@ To generate the `extraData` RLP string for inclusion in the genesis file, use th Where the `toEncode.json` file contains a list of the initial validators, in ascending order. To write the validator address and copy it to the `toEncode.json` file, use the -[`public-key export-address`](../../../Reference/CLI/CLI-Subcommands.md#export-address) Besu subcommand. +[`public-key export-address`](../../../reference/cli/subcommands.md#export-address) Besu subcommand. For example: !!! example "One initial validator in `toEncode.json` file" @@ -180,7 +180,7 @@ Use a [transition](#transitions) to update the `blockperiodseconds` in an existi ### Post-Merge configuration -After [The Merge](../../../Concepts/Merge.md), the following block fields are modified or deprecated. +After [The Merge](../../../public-networks/concepts/the-merge.md), the following block fields are modified or deprecated. Their fields **must** contain only the constant values from the following chart. | Field | Constant value | Comment | @@ -196,21 +196,21 @@ Additionally, [`extraData`](#extra-data) is limited to 32 bytes of vanity data a ## Add and remove validators Existing validators propose and vote to add or remove validators using the IBFT 2.0 JSON-RPC API methods. -Enable the HTTP interface with [`--rpc-http-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled) or the -WebSocket interface with [`--rpc-ws-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-ws-enabled). +Enable the HTTP interface with [`--rpc-http-enabled`](../../../reference/cli/options.md#rpc-http-enabled) or the +WebSocket interface with [`--rpc-ws-enabled`](../../../reference/cli/options.md#rpc-ws-enabled). The IBFT 2.0 API methods are disabled by default. -To enable them, specify the [`--rpc-http-api`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-api) or -[`--rpc-ws-api`](../../../Reference/CLI/CLI-Syntax.md#rpc-ws-api) option and include `IBFT`. +To enable them, specify the [`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../reference/cli/options.md#rpc-ws-api) option and include `IBFT`. The methods to add or remove validators are: -* [`ibft_getPendingVotes`](../../../Reference/API-Methods.md#ibft_getPendingVotes). -* [`ibft_proposeValidatorVote`](../../../Reference/API-Methods.md#ibft_proposeValidatorVote). -* [`ibft_discardValidatorVote`](../../../Reference/API-Methods.md#ibft_discardValidatorVote). +* [`ibft_getPendingVotes`](../../../reference/api/index.md#ibft_getPendingVotes). +* [`ibft_proposeValidatorVote`](../../../reference/api/index.md#ibft_proposeValidatorVote). +* [`ibft_discardValidatorVote`](../../../reference/api/index.md#ibft_discardValidatorVote). To view validator metrics for a specified block range, use -[`ibft_getSignerMetrics`](../../../Reference/API-Methods.md#ibft_getsignermetrics). +[`ibft_getSignerMetrics`](../../../reference/api/index.md#ibft_getsignermetrics). !!! note @@ -220,7 +220,7 @@ To view validator metrics for a specified block range, use ### Add a validator To propose adding a validator to an IBFT 2.0 network, call -[`ibft_proposeValidatorVote`](../../../Reference/API-Methods.md#ibft_proposevalidatorvote), specifying the address of the +[`ibft_proposeValidatorVote`](../../../reference/api/index.md#ibft_proposevalidatorvote), specifying the address of the proposed validator and `true`. A majority of validators must execute the call. @@ -231,14 +231,14 @@ A majority of validators must execute the call. ``` When the validator proposes the next block, the protocol inserts one proposal received from -[`ibft_proposeValidatorVote`](../../../Reference/API-Methods.md#ibft_proposevalidatorvote) into the block. +[`ibft_proposeValidatorVote`](../../../reference/api/index.md#ibft_proposevalidatorvote) into the block. If blocks include all proposals, subsequent blocks proposed by the validator will not contain a vote. When more than 50% of the existing validators have published a matching proposal, the protocol adds the proposed validator to the validator pool and the validator can begin validating blocks. To return a list of validators and confirm the addition of a proposed validator, use -[`ibft_getValidatorsByBlockNumber`](../../../Reference/API-Methods.md#ibft_getvalidatorsbyblocknumber). +[`ibft_getValidatorsByBlockNumber`](../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber). !!! example "JSON-RPC `ibft_getValidatorsByBlockNumber` request example" @@ -247,7 +247,7 @@ To return a list of validators and confirm the addition of a proposed validator, ``` To discard your proposal after confirming the addition of a validator, call -[`ibft_discardValidatorVote`](../../../Reference/API-Methods.md#ibft_discardvalidatorvote), +[`ibft_discardValidatorVote`](../../../reference/api/index.md#ibft_discardvalidatorvote), specifying the address of the proposed validator. !!! example "JSON-RPC `ibft_discardValidatorVote` request example" @@ -260,7 +260,7 @@ specifying the address of the proposed validator. The process for removing a validator from an IBFT 2.0 network is the same as [adding a validator](#add-a-validator) except you specify `false` as the second parameter of -[`ibft_proposeValidatorVote`](../../../Reference/API-Methods.md#ibft_proposevalidatorvote). +[`ibft_proposeValidatorVote`](../../../reference/api/index.md#ibft_proposevalidatorvote). ### Epoch transition @@ -360,7 +360,7 @@ To update an existing network with a new `blockperiodseconds`: 3. Restart all nodes in the network using the updated genesis file. 4. To verify the changes after the transition block, call - [`ibft_getValidatorsByBlockNumber`](../../../Reference/API-Methods.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. + [`ibft_getValidatorsByBlockNumber`](../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. ### Configure block rewards on an existing network deployment diff --git a/docs/how-to/configure/Consensus-Protocols/QBFT.md b/docs/how-to/configure/Consensus-Protocols/QBFT.md index b0813463825..da0fe948650 100644 --- a/docs/how-to/configure/Consensus-Protocols/QBFT.md +++ b/docs/how-to/configure/Consensus-Protocols/QBFT.md @@ -4,7 +4,7 @@ description: Hyperledger Besu QBFT proof of authority (PoA) consensus protocol i # QBFT -Hyperledger Besu implements the QBFT proof of authority (PoA) [consensus protocol](../../../Concepts/Consensus-Protocols/Overview-Consensus.md). +Hyperledger Besu implements the QBFT proof of authority (PoA) [consensus protocol](../../../concepts/Consensus-Protocols/Overview-Consensus.md). QBFT is the recommended enterprise-grade consensus protocol for private networks. In QBFT networks, approved accounts, known as validators, validate transactions and blocks. @@ -13,7 +13,7 @@ super-majority (greater than 66%) of validators must first sign the block. Existing validators propose and vote to [add or remove validators](#add-and-remove-validators). -You can [create a private network using QBFT](../../../Tutorials/Private-Network/Create-QBFT-Network.md). +You can [create a private network using QBFT](../../../tutorials/Private-Network/Create-QBFT-Network.md). !!! important @@ -28,7 +28,7 @@ You can [create a private network using QBFT](../../../Tutorials/Private-Network ## Genesis file -To use QBFT, define a [genesis file](../Genesis-File.md) that contains the QBFT properties. +To use QBFT, define a [genesis file](../../../concepts/genesis-file.md) that contains the QBFT properties. The genesis file differs depending on the [validator management method](#add-and-remove-validators) you intend to use. @@ -172,7 +172,7 @@ The properties with specific values in the QBFT genesis files are: block identification. To start a node on a QBFT private network, use the -[`--genesis-file`](../../../Reference/CLI/CLI-Syntax.md#genesis-file) option to specify the custom +[`--genesis-file`](../../../reference/cli/options.md#genesis-file) option to specify the custom genesis file. ### Extra data @@ -208,7 +208,7 @@ Formally, `extraData` in the genesis block contains: #### Generate extra data To generate the `extraData` RLP string for inclusion in the genesis file, -use the [`rlp encode`](../../../Reference/CLI/CLI-Subcommands.md#rlp) Besu subcommand. +use the [`rlp encode`](../../../reference/cli/subcommands.md#rlp) Besu subcommand. !!! example @@ -218,7 +218,7 @@ use the [`rlp encode`](../../../Reference/CLI/CLI-Subcommands.md#rlp) Besu subco Where the `toEncode.json` file contains a list of the initial validators, in ascending order. To write the validator address and copy it to the `toEncode.json` file, use the -[`public-key export-address`](../../../Reference/CLI/CLI-Subcommands.md#export-address) Besu +[`public-key export-address`](../../../reference/cli/subcommands.md#export-address) Besu subcommand. For example: !!! example "Initial validators in `toEncode.json` file" @@ -287,7 +287,7 @@ Use a [transition](#transitions) to update the `blockperiodseconds` in an existi ### Post-Merge configuration -After [The Merge](../../../Concepts/Merge.md), the following block fields are modified or deprecated. +After [The Merge](../../../public-networks/concepts/the-merge.md), the following block fields are modified or deprecated. Their fields **must** contain only the constant values from the following chart. | Field | Constant value | Comment | @@ -319,21 +319,21 @@ method are configured in the genesis file's `storage` section. ### Add and remove validators using block headers -Enable the HTTP interface with [`--rpc-http-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled) or the -WebSockets interface with [`--rpc-ws-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-ws-enabled). +Enable the HTTP interface with [`--rpc-http-enabled`](../../../reference/cli/options.md#rpc-http-enabled) or the +WebSockets interface with [`--rpc-ws-enabled`](../../../reference/cli/options.md#rpc-ws-enabled). The QBFT API methods are disabled by default. -To enable them, specify the [`--rpc-http-api`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-api) or -[`--rpc-ws-api`](../../../Reference/CLI/CLI-Syntax.md#rpc-ws-api) option and include `QBFT`. +To enable them, specify the [`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../reference/cli/options.md#rpc-ws-api) option and include `QBFT`. The methods to add or remove validators are: -* [`qbft_getPendingVotes`](../../../Reference/API-Methods.md#qbft_getpendingvotes). -* [`qbft_proposeValidatorVote`](../../../Reference/API-Methods.md#qbft_proposevalidatorvote). -* [`qbft_discardValidatorVote`](../../../Reference/API-Methods.md#qbft_discardvalidatorvote). +* [`qbft_getPendingVotes`](../../../reference/api/index.md#qbft_getpendingvotes). +* [`qbft_proposeValidatorVote`](../../../reference/api/index.md#qbft_proposevalidatorvote). +* [`qbft_discardValidatorVote`](../../../reference/api/index.md#qbft_discardvalidatorvote). To view validator metrics for a specified block range, use -[`qbft_getSignerMetrics`](../../../Reference/API-Methods.md#qbft_getsignermetrics). +[`qbft_getSignerMetrics`](../../../reference/api/index.md#qbft_getsignermetrics). !!! note @@ -343,7 +343,7 @@ To view validator metrics for a specified block range, use #### Add a validator To propose adding a validator, call -[`qbft_proposeValidatorVote`](../../../Reference/API-Methods.md#qbft_proposevalidatorvote), +[`qbft_proposeValidatorVote`](../../../reference/api/index.md#qbft_proposevalidatorvote), specifying the address of the proposed validator and `true`. A majority of validators must execute the call. @@ -354,7 +354,7 @@ the call. ``` When the validator proposes the next block, the protocol inserts one proposal received from -[`qbft_proposeValidatorVote`](../../../Reference/API-Methods.md#qbft_proposevalidatorvote) into the +[`qbft_proposeValidatorVote`](../../../reference/api/index.md#qbft_proposevalidatorvote) into the block. If blocks include all proposals, subsequent blocks proposed by the validator will not contain a vote. @@ -362,7 +362,7 @@ When more than 50% of the existing validators have published a matching proposal adds the proposed validator to the validator pool and the validator can begin validating blocks. To return a list of validators and confirm the addition of a proposed validator, use -[`qbft_getValidatorsByBlockNumber`](../../../Reference/API-Methods.md#qbft_getvalidatorsbyblocknumber). +[`qbft_getValidatorsByBlockNumber`](../../../reference/api/index.md#qbft_getvalidatorsbyblocknumber). !!! example "JSON-RPC `qbft_getValidatorsByBlockNumber` request example" @@ -371,7 +371,7 @@ To return a list of validators and confirm the addition of a proposed validator, ``` To discard your proposal after confirming the addition of a validator, call -[`qbft_discardValidatorVote`](../../../Reference/API-Methods.md#qbft_discardvalidatorvote), +[`qbft_discardValidatorVote`](../../../reference/api/index.md#qbft_discardvalidatorvote), specifying the address of the proposed validator. !!! example "JSON-RPC `qbft_discardValidatorVote` request example" @@ -384,7 +384,7 @@ specifying the address of the proposed validator. The process for removing a validator is the same as adding a validator except you specify `false` as the second parameter of -[`qbft_proposeValidatorVote`](../../../Reference/API-Methods.md#qbft_proposevalidatorvote). +[`qbft_proposeValidatorVote`](../../../reference/api/index.md#qbft_proposevalidatorvote). #### Epoch transition @@ -499,7 +499,7 @@ To update an existing network with a new `blockperiodseconds`: 3. Restart all nodes in the network using the updated genesis file. 4. To verify the changes after the transition block, call - [`qbft_getValidatorsByBlockNumber`](../../../Reference/API-Methods.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. + [`qbft_getValidatorsByBlockNumber`](../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. ### Configure block rewards on an existing network deployment diff --git a/docs/how-to/configure/Contracts-in-Genesis.md b/docs/how-to/configure/Contracts-in-Genesis.md index a8acddb9540..5f8e982b790 100644 --- a/docs/how-to/configure/Contracts-in-Genesis.md +++ b/docs/how-to/configure/Contracts-in-Genesis.md @@ -4,7 +4,7 @@ description: Pre-deploying contracts in the genesis file # Pre-deploying contracts in the genesis file -To pre-deploy contracts when starting Besu, specify the contract code in the [genesis file](Genesis-File.md). +To pre-deploy contracts when starting Besu, specify the contract code in the [genesis file](../../concepts/genesis-file.md). !!! example "Contract code in the genesis file" diff --git a/docs/how-to/configure/FreeGas.md b/docs/how-to/configure/FreeGas.md index 9e9e411c703..2846ccebd89 100644 --- a/docs/how-to/configure/FreeGas.md +++ b/docs/how-to/configure/FreeGas.md @@ -74,7 +74,7 @@ size (in bytes). ### 3. Start Besu with a minimum gas price of zero -When starting nodes, set the [minimum gas price](../../Reference/CLI/CLI-Syntax.md#min-gas-price) +When starting nodes, set the [minimum gas price](../../reference/cli/options.md#min-gas-price) to zero. === "Command Line" @@ -90,10 +90,10 @@ to zero. ``` !!! important - In a free gas network, ensure the [minimum gas price](../../Reference/CLI/CLI-Syntax.md#min-gas-price) + In a free gas network, ensure the [minimum gas price](../../reference/cli/options.md#min-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`](../../Reference/API-Methods.md#eth_gasprice). + You can query a node's gas configuration using [`eth_gasPrice`](../../reference/api/index.md#eth_gasprice). ## Configuring free gas in Truffle diff --git a/docs/how-to/configure/TLS/Configure-TLS.md b/docs/how-to/configure/TLS/Configure-TLS.md index 6c51777aa1f..6c0e9c7ed64 100644 --- a/docs/how-to/configure/TLS/Configure-TLS.md +++ b/docs/how-to/configure/TLS/Configure-TLS.md @@ -5,7 +5,7 @@ description: Configure TLS # Configure TLS Hyperledger Besu supports TLS for client and server communication. For example, you can -[configure TLS](../../../Concepts/TLS.md) for communication between +[configure TLS](../../../concepts/TLS.md) for communication between [EthSigner](https://docs.ethsigner.consensys.net/en/latest/Concepts/TLS/) and Besu, and Besu and [Tessera](https://docs.tessera.consensys.net/HowTo/Configure/TLS/). @@ -62,22 +62,22 @@ besu --rpc-http-enabled --rpc-http-tls-enabled --rpc-http-tls-client-auth-enable The command line: * Enables the HTTP JSON-RPC service using the - [`--rpc-http-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled) option. + [`--rpc-http-enabled`](../../../reference/cli/options.md#rpc-http-enabled) option. * Enables TLS for the HTTP JSON-RPC service using the - [`--rpc-http-tls-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-tls-enabled) option. + [`--rpc-http-tls-enabled`](../../../reference/cli/options.md#rpc-http-tls-enabled) option. * Enables TLS client authentication using the - [`--rpc-http-tls-client-auth-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-tls-client-auth-enabled) option. + [`--rpc-http-tls-client-auth-enabled`](../../../reference/cli/options.md#rpc-http-tls-client-auth-enabled) option. * Specifies the keystore using the - [`--rpc-http-tls-keystore-file`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-tls-keystore-file) + [`--rpc-http-tls-keystore-file`](../../../reference/cli/options.md#rpc-http-tls-keystore-file) option. * Specifies the file that contains the password to decrypt the keystore using the - [`--rpc-http-tls-keystore-password-file`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-tls-keystore-password-file) option. + [`--rpc-http-tls-keystore-password-file`](../../../reference/cli/options.md#rpc-http-tls-keystore-password-file) option. * [Specifies the clients](#create-the-known-clients-file) allowed to connect to Besu using the - [`--rpc-http-tls-known-clients-file`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-tls-known-clients-file) option. + [`--rpc-http-tls-known-clients-file`](../../../reference/cli/options.md#rpc-http-tls-known-clients-file) option. * specifies the Java cipher suites using the - [`--rpc-http-tls-cipher-suite`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-tls-cipher-suite) option. + [`--rpc-http-tls-cipher-suite`](../../../reference/cli/options.md#rpc-http-tls-cipher-suite) option. * specifies the TLS protocol version using the - [`--rpc-http-tls-protocol`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-tls-protocol) option. + [`--rpc-http-tls-protocol`](../../../reference/cli/options.md#rpc-http-tls-protocol) option. !!! note @@ -123,14 +123,14 @@ besu --privacy-tls-enabled --privacy-tls-keystore-file=/Users/me/my_node/keystor The command line: * Enables TLS with the server using the - [`--privacy-tls-enabled`](../../../Reference/CLI/CLI-Syntax.md#privacy-tls-enabled) option. + [`--privacy-tls-enabled`](../../../reference/cli/options.md#privacy-tls-enabled) option. * Specifies the keystore using the - [`--privacy-tls-keystore-file`](../../../Reference/CLI/CLI-Syntax.md#privacy-tls-keystore-file) + [`--privacy-tls-keystore-file`](../../../reference/cli/options.md#privacy-tls-keystore-file) option. * Specifies the file that contains the password to decrypt the keystore using the - [`--privacy-tls-keystore-password-file`](../../../Reference/CLI/CLI-Syntax.md#privacy-tls-keystore-password-file) option. + [`--privacy-tls-keystore-password-file`](../../../reference/cli/options.md#privacy-tls-keystore-password-file) option. * Specifies the trusted servers using the - [`--privacy-tls-known-enclave-file`](../../../Reference/CLI/CLI-Syntax.md#privacy-tls-known-enclave-file) option. + [`--privacy-tls-known-enclave-file`](../../../reference/cli/options.md#privacy-tls-known-enclave-file) option. [Configure the client for TLS]: https://docs.ethsigner.consensys.net/en/latest/HowTo/Configure-TLS/#server-tls-connection diff --git a/docs/how-to/configure/TLS/P2P-TLS.md b/docs/how-to/configure/TLS/P2P-TLS.md index 0380d2c3f32..996936c6371 100644 --- a/docs/how-to/configure/TLS/P2P-TLS.md +++ b/docs/how-to/configure/TLS/P2P-TLS.md @@ -19,7 +19,7 @@ Besu supports PKCS11, PKCS12, and JKS keystore and truststore types for P2P TLS. **Prerequisites**: * A configured network. For example, - [see steps 1 to 5 in the QBFT tutorial](../../../Tutorials/Private-Network/Create-QBFT-Network.md). + [see steps 1 to 5 in the QBFT tutorial](../../../tutorials/Private-Network/Create-QBFT-Network.md). * Each node requires a keystore that contains the node's certificate and key. * A truststore containing all the trusted certificates for the network. diff --git a/docs/how-to/configure/configuration-file.md b/docs/how-to/configure/configuration-file.md index 9f04bc6c299..01a55d21314 100644 --- a/docs/how-to/configure/configuration-file.md +++ b/docs/how-to/configure/configuration-file.md @@ -7,11 +7,11 @@ description: Using the Hyperledger Besu configuration file To specify command line options in a file, use a TOML configuration file. Save the configuration file and reuse it across node startups. To specify the configuration file, -use the [`--config-file`](../../Reference/CLI/CLI-Syntax.md#config-file) option. +use the [`--config-file`](../../reference/cli/options.md#config-file) option. To override an option specified in the configuration file, either specify the same option on the command line or as an -[environment variable](../../Reference/CLI/CLI-Syntax.md#besu-environment-variables). For options +[environment variable](../../reference/cli/options.md#besu-environment-variables). For options specified in more than one place, the order of precedence is command line, environment variable, configuration file. diff --git a/docs/how-to/configure/mining.md b/docs/how-to/configure/mining.md index 03613f3e484..00f36a5deeb 100644 --- a/docs/how-to/configure/mining.md +++ b/docs/how-to/configure/mining.md @@ -15,8 +15,8 @@ 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-Methods.md#miner_start) and -[`miner_stop`](../../Reference/API-Methods.md#miner_stop) APIs. +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 @@ -34,9 +34,9 @@ Where `` is the account you pay mining rewards to. For example, Optional command line options are: -* [`--miner-stratum-host`](../../Reference/CLI/CLI-Syntax.md#miner-stratum-host) to specify the +* [`--miner-stratum-host`](../../reference/cli/options.md#miner-stratum-host) to specify the host of the mining service. -* [`--miner-stratum-port`](../../Reference/CLI/CLI-Syntax.md#miner-stratum-port) to specify the +* [`--miner-stratum-port`](../../reference/cli/options.md#miner-stratum-port) to specify the port of the mining service. !!! note @@ -47,26 +47,26 @@ Optional command line options are: The `getwork` scheme is supported as the `http` scheme in certain mining software. -Start and stop mining using the [`miner_start`](../../Reference/API-Methods.md#miner_start) and -[`miner_stop`](../../Reference/API-Methods.md#miner_stop) APIs. +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-Methods.md#miner_start) to start mining. -* [`miner_stop`](../../Reference/API-Methods.md#miner_stop) to stop mining. -* [`eth_mining`](../../Reference/API-Methods.md#eth_mining) to determine whether the client is +* [`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-Methods.md#eth_getminerdatabyblockhash) and -[`eth_getMinerDataByBlockNumber`](../../Reference/API-Methods.md#eth_getminerdatabyblocknumber) to +* [`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-Methods.md#eth_hashrate) to get the number of hashes per +* [`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-Methods.md#eth_getwork) to get the hash of the current block, +* [`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-Methods.md#eth_submitwork) to submit the PoW solution. +* [`eth_submitWork`](../../reference/api/index.md#eth_submitwork) to submit the PoW solution. Only used when using the `getwork` scheme. ## Hyperledger Besu mined blocks diff --git a/docs/how-to/configure/Passing-JVM-Options.md b/docs/how-to/configure/pass-jvm-options.md similarity index 100% rename from docs/how-to/configure/Passing-JVM-Options.md rename to docs/how-to/configure/pass-jvm-options.md diff --git a/docs/how-to/connect/configure-ports.md b/docs/how-to/connect/configure-ports.md index 5cfe5cca210..aee143595aa 100644 --- a/docs/how-to/connect/configure-ports.md +++ b/docs/how-to/connect/configure-ports.md @@ -20,7 +20,7 @@ When running Besu from the [Docker image](../../get-started/install/run-docker-i ## 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/CLI-Syntax.md#p2p-port) option. The default is +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 @@ -28,10 +28,10 @@ because Besu attempts to open outbound TCP connections. But if no nodes on the n accepting inbound TCP connections, nodes cannot communicate. Combine the P2P port with the values for the -[`--p2p-host`](../../Reference/CLI/CLI-Syntax.md#p2p-host) and -[`--p2p-interface`](../../Reference/CLI/CLI-Syntax.md#p2p-interface) options when specifying the -[P2P host](../../Reference/CLI/CLI-Syntax.md#p2p-host) and -[P2P network interface](../../Reference/CLI/CLI-Syntax.md#p2p-interface). +[`--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 @@ -45,8 +45,8 @@ To enable access to the [JSON-RPC API](../use-besu-api/json-rpc.md), open the HT 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/CLI-Syntax.md#rpc-http-port) and -[`--rpc-ws-port`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-port) options. The defaults are `8545` +[`--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 @@ -56,6 +56,6 @@ To enable 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/CLI-Syntax.md#metrics-port) and -[`--metrics-push-port`](../../Reference/CLI/CLI-Syntax.md#metrics-push-port) options. The defaults +[`--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/docs/how-to/connect/manage-peers.md b/docs/how-to/connect/manage-peers.md index da930099668..1febdc94746 100644 --- a/docs/how-to/connect/manage-peers.md +++ b/docs/how-to/connect/manage-peers.md @@ -8,7 +8,7 @@ Hyperledger Besu peer-to-peer (P2P) discovery happens periodically based on 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/CLI-Syntax.md#random-peer-priority-enabled) +public networks and [randomly prioritize connections](../../reference/cli/options.md#random-peer-priority-enabled) in small, stable networks. !!! info @@ -23,18 +23,18 @@ We recommend [using bootnodes](../../private-networks/how-to/connect/bootnodes.m 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/CLI-Syntax.md#max-peers) option. The default is 25. +[`--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/CLI-Syntax.md#sync-mode) and -[`--fast-sync-min-peers`](../../Reference/CLI/CLI-Syntax.md#fast-sync-min-peers) on public networks by enabling the -[remote connection limits](../../Reference/CLI/CLI-Syntax.md#remote-connections-limit-enabled). +Prevent eclipse attacks when using [`--sync-mode`](../../reference/cli/options.md#sync-mode) and +[`--fast-sync-min-peers`](../../reference/cli/options.md#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/CLI-Syntax.md#max-peers). +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 @@ -46,16 +46,16 @@ The nodes in this closed group are all connected to each other and can't accept JSON-RPC API methods to monitor peer connections include: -* [`net_peerCount`](../../Reference/API-Methods.md#net_peercount). -* [`admin_peers`](../../Reference/API-Methods.md#admin_peers). -* [`debug_metrics`](../../Reference/API-Methods.md#debug_metrics). +* [`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-Methods.md#admin_peers) includes a +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-Methods.md#admin_peers) and - [`admin_removePeer`](../../Reference/API-Methods.md#admin_removepeer) to disconnect from peers that are stalled at a + 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. @@ -68,7 +68,7 @@ Each peer entry returned by [`admin_peers`](../../Reference/API-Methods.md#admin ## List node connections The default logging configuration doesn't list node connection and disconnection messages. -To enable listing them, set the [`--logging`](../../Reference/CLI/CLI-Syntax.md#logging) option to `DEBUG`. +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. @@ -83,8 +83,8 @@ If the message `Successfully accepted connection from ...` displays, connections ## Disable discovery To disable P2P discovery, set the -[`--discovery-enabled`](../../Reference/CLI/CLI-Syntax.md#discovery-enabled) option to `false`. +[`--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-Methods.md#admin_addpeer)). +peered (for example, using [`admin_addPeer`](../../reference/api/index.md#admin_addpeer)). [Static nodes](static-nodes.md) can also open connections. diff --git a/docs/how-to/connect/specify-nat.md b/docs/how-to/connect/specify-nat.md index 6911fb21153..f57db21a809 100644 --- a/docs/how-to/connect/specify-nat.md +++ b/docs/how-to/connect/specify-nat.md @@ -4,20 +4,20 @@ description: Configuring NAT with Hyperledger Besu # Configuring NAT -Use the [`--nat-method`](../../Reference/CLI/CLI-Syntax.md#nat-method) option to specify the NAT +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 [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-Methods.md#admin_nodeinfo) JSON-RPC API method returns 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/CLI-Syntax.md#nat-method) option set. + [`--nat-method`](../../reference/cli/options.md#nat-method) option set. ## Auto @@ -75,7 +75,7 @@ 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](../../Tutorials/Kubernetes/Nat-Manager-Kubernetes.md) is available. +A tutorial to [Configure the Nat Manager for Kubernetes](../../tutorials/Kubernetes/Nat-Manager-Kubernetes.md) is available. ## Docker @@ -85,19 +85,19 @@ you specify `DOCKER`, you advertise the host IP address not the container IP add 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/CLI-Syntax.md#p2p-host) and -[`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port). +[`--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/CLI-Syntax.md#p2p-host) and [`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port) +* [`--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/CLI-Syntax.md#rpc-http-host) and [`--rpc-http-port`](../../Reference/CLI/CLI-Syntax.md#rpc-http-port) +* [`--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-Methods.md#net_services) method. +The P2P and JSON-RPC HTTP hosts and ports are advertised in the [`net_services`](../../reference/api/index.md#net_services) method. !!! important diff --git a/docs/how-to/connect/static-nodes.md b/docs/how-to/connect/static-nodes.md index 24bfde8eee4..676fb496a3f 100644 --- a/docs/how-to/connect/static-nodes.md +++ b/docs/how-to/connect/static-nodes.md @@ -25,20 +25,20 @@ any unconnected static node. To configure a network of static nodes: -1. List the [enode URLs](../../Concepts/Node-Keys.md#enode-url) of the nodes in the +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/CLI-Syntax.md#data-path)) of each node. + [`--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/CLI-Syntax.md#static-nodes-file). + [`--static-nodes-file`](../../reference/cli/options.md#static-nodes-file). 1. Start Besu with discovery disabled using - [`--discovery-enabled=false`](../../Reference/CLI/CLI-Syntax.md#discovery-enabled). + [`--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-Methods.md#admin_addpeer) and -[`admin_removePeer`](../../Reference/API-Methods.md#admin_removepeer) JSON-RPC API methods. +[`admin_addPeer`](../../reference/api/index.md#admin_addpeer) and +[`admin_removePeer`](../../reference/api/index.md#admin_removepeer) JSON-RPC API methods. !!! note @@ -58,8 +58,8 @@ To update the list of static peers at run time, use the ### `static-nodes.json` file The `static-nodes.json` file must be in the data directory (specified by -[`--data-path`](../../Reference/CLI/CLI-Syntax.md#data-path)) and contain a JSON array of -[enode URLs](../../Concepts/Node-Keys.md#enode-url). +[`--data-path`](../../reference/cli/options.md#data-path)) and contain a JSON array of +[enode URLs](../../concepts/node-keys.md#enode-url). !!! example diff --git a/docs/how-to/monitor/logging.md b/docs/how-to/monitor/logging.md index df71689d86e..d949c071adb 100644 --- a/docs/how-to/monitor/logging.md +++ b/docs/how-to/monitor/logging.md @@ -16,8 +16,8 @@ Hyperledger Besu uses Log4J2 for logging and provides two methods to configure l ## Basic logging -Use the [`--logging`](../../Reference/CLI/CLI-Syntax.md#logging) command line option to specify logging verbosity. -The [`--logging`](../../Reference/CLI/CLI-Syntax.md#logging) option changes the volume of events displayed in the log. +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`. diff --git a/docs/how-to/monitor/metrics.md b/docs/how-to/monitor/metrics.md index 757370cc815..71ff7653d42 100644 --- a/docs/how-to/monitor/metrics.md +++ b/docs/how-to/monitor/metrics.md @@ -5,7 +5,7 @@ description: Monitoring and metrics # 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/CLI-Syntax.md#metrics-enabled) option. +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 Grafana dashboard](https://grafana.com/dashboards/10273). @@ -80,7 +80,7 @@ To configure Prometheus and run with Besu: Prometheus requires 3 MB of space per node per hour for metrics, with a `scrape_interval` of 15 seconds. -1. Start Besu with the [`--metrics-enabled`](../../Reference/CLI/CLI-Syntax.md#metrics-enabled) option. +1. 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: === "Syntax" @@ -95,8 +95,8 @@ To configure Prometheus and run with Besu: 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/CLI-Syntax.md#metrics-host) - and [`--metrics-port`](../../Reference/CLI/CLI-Syntax.md#metrics-port) options. + 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. !!! important @@ -121,10 +121,10 @@ To configure Prometheus and run with Besu: ## Running Prometheus with Besu in push mode -The [`--metrics-enabled`](../../Reference/CLI/CLI-Syntax.md#metrics-enabled) option enables Prometheus polling of Besu, +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 Pushgateway](https://github.com/prometheus/pushgateway), use the -[`--metrics-push-enabled`](../../Reference/CLI/CLI-Syntax.md#metrics-push-enabled) option. +[`--metrics-push-enabled`](../../reference/cli/options.md#metrics-push-enabled) option. To configure Prometheus and run with Besu pushing to a push gateway: @@ -189,17 +189,17 @@ To configure Prometheus and run with Besu pushing to a push gateway: The following table lists available metrics. Each metric starts with a metric category prefix. Metrics specific to Besu use the `besu_` prefix, followed by another metric category. -Metric categories can be enabled using the [`metrics-category`](../../Reference/CLI/CLI-Syntax.md#metrics-category) command line option. +Metric categories can be enabled using the [`metrics-category`](../../reference/cli/options.md#metrics-category) command line option. If a metric has a JSON-RPC equivalent, it is included in the definition column. | Name | Metric type | Definition | | --- | --- | --- | | `besu_blockchain_chain_head_gas_limit` | Gauge | Block gas limit of the current chain head block | | `besu_blockchain_chain_head_gas_used` | Gauge | Gas used by the current chain head block | -| `besu_blockchain_chain_head_ommer_count` | Gauge | Number of uncles in the current chain head block (JSON-RPC equivalent: [`eth_getUncleCountByBlockHash`](../../Reference/API-Methods.md#eth_getunclecountbyblockhash) or [`eth_getUncleCountByBlockNumber`](../../Reference/API-Methods.md#eth_getunclecountbyblocknumber)) | +| `besu_blockchain_chain_head_ommer_count` | Gauge | Number of uncles in the current chain head block (JSON-RPC equivalent: [`eth_getUncleCountByBlockHash`](../../reference/api/index.md#eth_getunclecountbyblockhash) or [`eth_getUncleCountByBlockNumber`](../../reference/api/index.md#eth_getunclecountbyblocknumber)) | | `besu_blockchain_chain_head_timestamp` | Gauge | Timestamp from the current chain head | -| `besu_blockchain_chain_head_transaction_count` | Gauge | Number of transactions in the current chain head block (JSON-RPC equivalent: [`eth_getBlockTransactionCountByHash`](../../Reference/API-Methods.md#eth_getblocktransactioncountbyhash) or [`eth_getBlockTransactionCountByNumber`](../../Reference/API-Methods.md#eth_getblocktransactioncountbynumber)) | -| `besu_blockchain_difficulty_total` | Gauge | Difficulty of the chain head (JSON-RPC equivalent: `difficulty` of [`admin_peers`](../../Reference/API-Methods.md#admin_peers)) | +| `besu_blockchain_chain_head_transaction_count` | Gauge | Number of transactions in the current chain head block (JSON-RPC equivalent: [`eth_getBlockTransactionCountByHash`](../../reference/api/index.md#eth_getblocktransactioncountbyhash) or [`eth_getBlockTransactionCountByNumber`](../../reference/api/index.md#eth_getblocktransactioncountbynumber)) | +| `besu_blockchain_difficulty_total` | Gauge | Difficulty of the chain head (JSON-RPC equivalent: `difficulty` of [`admin_peers`](../../reference/api/index.md#admin_peers)) | | `besu_executors_ethscheduler_computation_active_threads_current` | Gauge | Current number of threads executing computation tasks | | `besu_executors_ethscheduler_computation_completed_tasks_total` | Gauge | Total number of computation tasks executed | | `besu_executors_ethscheduler_computation_pool_size_current` | Gauge | Current number of threads in the computation thread pool | @@ -258,12 +258,12 @@ If a metric has a JSON-RPC equivalent, it is included in the definition column. | `besu_synchronizer_world_state_pipeline_processed_total` | Counter | Number of entries processed by each world state download pipeline stage | | `besu_synchronizer_world_state_retried_requests_total` | Counter | Total number of node data requests repeated as part of fast sync world state download | | `besu_transaction_pool_pending_transactions_messages_skipped_total` | Counter | Total number of pending transactions messages skipped by the processor | -| `besu_transaction_pool_transactions` | Gauge | Current size of the transaction pool (JSON-RPC equivalent: result number of [`txpool_besuTransactions`](../../Reference/API-Methods.md#txpool_besutransactions)) | +| `besu_transaction_pool_transactions` | Gauge | Current size of the transaction pool (JSON-RPC equivalent: result number of [`txpool_besuTransactions`](../../reference/api/index.md#txpool_besutransactions)) | | `besu_transaction_pool_transactions_added_total` | Counter | Count of transactions added to the transaction pool | | `besu_transaction_pool_transactions_messages_skipped_total` | Counter | Total number of transactions messages skipped by the processor. | -| `ethereum_best_known_block_number` | Gauge | Estimated highest block available (JSON-RPC equivalent: `highestBlock` of [`eth_syncing`](../../Reference/API-Methods.md#eth_syncing), or [`eth_blockNumber`](../../Reference/API-Methods.md#eth_blocknumber) if not syncing) | -| `ethereum_blockchain_height` | Gauge | Current height of the canonical chain (JSON-RPC equivalent: [`eth_blockNumber`](../../Reference/API-Methods.md#eth_blocknumber)) | -| `ethereum_peer_count` | Gauge | Current number of peers connected (JSON-RPC equivalent: [`net_peerCount`](../../Reference/API-Methods.md#net_peercount)) | +| `ethereum_best_known_block_number` | Gauge | Estimated highest block available (JSON-RPC equivalent: `highestBlock` of [`eth_syncing`](../../reference/api/index.md#eth_syncing), or [`eth_blockNumber`](../../reference/api/index.md#eth_blocknumber) if not syncing) | +| `ethereum_blockchain_height` | Gauge | Current height of the canonical chain (JSON-RPC equivalent: [`eth_blockNumber`](../../reference/api/index.md#eth_blocknumber)) | +| `ethereum_peer_count` | Gauge | Current number of peers connected (JSON-RPC equivalent: [`net_peerCount`](../../reference/api/index.md#net_peercount)) | | `ethereum_peer_limit` | Gauge | Maximum number of peers this node allows to connect | | `jvm_buffer_pool_capacity_bytes` | Gauge | Bytes capacity of a given JVM buffer pool | | `jvm_buffer_pool_used_buffers` | Gauge | Used buffers of a given JVM buffer pool | @@ -302,4 +302,4 @@ If a metric has a JSON-RPC equivalent, it is included in the definition column. maximum number of P2P connections that can be established. -[monitoring with Prometheus and Grafana configured]: ../../Tutorials/Developer-Quickstart.md#monitor-nodes-with-prometheus-and-grafana +[monitoring with Prometheus and Grafana configured]: ../../tutorials/Developer-Quickstart.md#monitor-nodes-with-prometheus-and-grafana diff --git a/docs/how-to/send-transactions.md b/docs/how-to/send-transactions.md index f3c590441bf..35848f98ba7 100644 --- a/docs/how-to/send-transactions.md +++ b/docs/how-to/send-transactions.md @@ -5,11 +5,11 @@ description: Some use cases of creating transactions on a Hyperledger Besu netwo # Creating and sending transactions You can send signed transactions using the -[`eth_sendRawTransaction`](../Reference/API-Methods.md#eth_sendrawtransaction) JSON-RPC API +[`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/CLI-Syntax.md#rpc-tx-feecap) +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 @@ -47,8 +47,8 @@ Ether and create a smart contract. ## `eth_call` vs `eth_sendRawTransaction` -You can interact with contracts using [`eth_call`](../Reference/API-Methods.md#eth_call) or -[`eth_sendRawTransaction`](../Reference/API-Methods.md#eth_sendrawtransaction). The table below +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` | diff --git a/docs/how-to/Troubleshoot/Add-Validators-Without-Voting.md b/docs/how-to/troubleshoot/Add-Validators-Without-Voting.md similarity index 98% rename from docs/how-to/Troubleshoot/Add-Validators-Without-Voting.md rename to docs/how-to/troubleshoot/Add-Validators-Without-Voting.md index 510de819163..8a032d3797c 100644 --- a/docs/how-to/Troubleshoot/Add-Validators-Without-Voting.md +++ b/docs/how-to/troubleshoot/Add-Validators-Without-Voting.md @@ -145,8 +145,8 @@ To add or remove validators without voting: 1. Restart all nodes in the network using the updated genesis file. You can make a rolling update of the nodes, as long as they're all up before the transition block is processed. 1. To verify the changes after the transition block, call - [`qbft_getValidatorsByBlockNumber`](../../Reference/API-Methods.md#qbft_getvalidatorsbyblocknumber) or - [`ibft_getValidatorsByBlockNumber`](../../Reference/API-Methods.md#ibft_getvalidatorsbyblocknumber), + [`qbft_getValidatorsByBlockNumber`](../../reference/api/index.md#qbft_getvalidatorsbyblocknumber) or + [`ibft_getValidatorsByBlockNumber`](../../reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. !!! caution diff --git a/docs/how-to/troubleshoot/Trace-Transactions.md b/docs/how-to/troubleshoot/Trace-Transactions.md new file mode 100644 index 00000000000..5530af84b09 --- /dev/null +++ b/docs/how-to/troubleshoot/Trace-Transactions.md @@ -0,0 +1,48 @@ +--- +description: How to trace transactions +--- + +# 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 different diagnostic options when tracing calls or transactions. +The options are [`trace`, `vmTrace`, or `stateDiff`](../../reference/trace-types.md). + +To use the ad-hoc tracing APIs, the requested block or transaction must be within the +number of [blocks retained](../../reference/cli/options.md#pruning-blocks-retained) with [pruning enabled](../../reference/cli/options.md#pruning-enabled) +(by default, 1024). + +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 +(that is, synchronized without pruning or fast sync) or the +requested block or transaction must be within the +number of [blocks retained](../../reference/cli/options.md#pruning-blocks-retained) with [pruning enabled](../../reference/cli/options.md#pruning-enabled) +(by default, 1024). + +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/docs/how-to/Troubleshoot/Troubleshooting.md b/docs/how-to/troubleshoot/Troubleshooting.md similarity index 91% rename from docs/how-to/Troubleshoot/Troubleshooting.md rename to docs/how-to/troubleshoot/Troubleshooting.md index a49e250bedf..ad133ab0c8a 100644 --- a/docs/how-to/Troubleshoot/Troubleshooting.md +++ b/docs/how-to/troubleshoot/Troubleshooting.md @@ -10,12 +10,12 @@ If Hyperledger Besu is not working as expected, here are some things to check or 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/CLI-Syntax.md#data-path) option to specify a different data +[`--data-path`](../../reference/cli/options.md#data-path) option to specify a different data directory. ## Invalid block header -If a `TimeStampMoreRecentThanParent | Invalid block header` error occurs, the [genesis file](../configure/Genesis-File.md) of the new node is specifying a higher +If a `TimeStampMoreRecentThanParent | Invalid block header` error occurs, the [genesis file](../../concepts/genesis-file.md) of the new node is specifying a higher [`blockperiodseconds`](../configure/Consensus-Protocols/IBFT.md#block-time) than the imported chain. The imported chain makes new blocks faster than the genesis file allows and Besu rejects them with this error. This error most often occurs when importing chains from older versions of Besu. @@ -35,7 +35,7 @@ or [existing QBFT](../configure/Consensus-Protocols/QBFT.md#configure-block-time ## Host not authorized If a `Host not authorized` error occurs when attempting to access the JSON-RPC API, ensure -[`--host-allowlist`](../../Reference/CLI/CLI-Syntax.md#host-allowlist) includes the host you are +[`--host-allowlist`](../../reference/cli/options.md#host-allowlist) includes the host you are sending the RPC from, or `*`. ## Peers fail to connect @@ -46,7 +46,7 @@ If nodes are not communicating, ensure the If your nodes are running in AWS, check you have appropriate `SecurityGroups` to allow access to the required ports. -Check that the [enode URLs](../../Concepts/Node-Keys.md#enode-url) specified for +Check that the [enode URLs](../../concepts/node-keys.md#enode-url) specified for [bootnodes](../../private-networks/how-to/connect/bootnodes.md) or [static nodes](../connect/static-nodes.md) match the enode URLs displayed when starting the remote nodes. @@ -68,7 +68,7 @@ On non-mining nodes, log messages indicate importing blocks. ``` To confirm the block number is increasing, use the -[`eth_blockNumber`](../../Reference/API-Methods.md#eth_blocknumber) JSON-RPC API method. +[`eth_blockNumber`](../../reference/api/index.md#eth_blocknumber) JSON-RPC API method. If there is no block creating in [Clique](../configure/Consensus-Protocols/Clique.md#extra-data) or [IBFT 2.0](../configure/Consensus-Protocols/IBFT.md#extra-data) networks, ensure the validator @@ -77,14 +77,14 @@ addresses in the genesis file match running nodes. ## Transactions are not mined If you add a transaction to the -[transaction pool](../../Concepts/Transactions/Transaction-Pool.md) and the transaction hash +[transaction pool](../../concepts/Transactions/Transaction-Pool.md) and the transaction hash returns, but the transaction is never mined, check the -[`--min-gas-price`](../../Reference/CLI/CLI-Syntax.md#min-gas-price) option on mining nodes. If 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](../configure/FreeGas.md), you must set -[`--min-gas-price`](../../Reference/CLI/CLI-Syntax.md#min-gas-price) to zero. +[`--min-gas-price`](../../reference/cli/options.md#min-gas-price) to zero. ## Genesis milestone @@ -101,7 +101,7 @@ hyphens. ## Logging Restart Besu with the command line option -[`--logging=TRACE`](../../Reference/CLI/CLI-Syntax.md#logging) and look at the log files. +[`--logging=TRACE`](../../reference/cli/options.md#logging) and look at the log files. ## Pending State Nodes not decreasing for a full node in Grafana @@ -172,7 +172,7 @@ sudo mount /dev/urandom /dev/random -o bind ## Quorum Developer Quickstart not working on Apple M1 chip -The [Quorum Developer Quickstart](../../Tutorials/Developer-Quickstart.md) does not currently support +The [Quorum Developer Quickstart](../../tutorials/Developer-Quickstart.md) does not currently support the Apple M1 chip. The quickstart starts up on machines that use the chip, but may show the following symptoms: diff --git a/docs/how-to/Troubleshoot/Use-EVM-Tool.md b/docs/how-to/troubleshoot/evm-tool.md similarity index 91% rename from docs/how-to/Troubleshoot/Use-EVM-Tool.md rename to docs/how-to/troubleshoot/evm-tool.md index 58e7ba18b89..4950024cf57 100644 --- a/docs/how-to/Troubleshoot/Use-EVM-Tool.md +++ b/docs/how-to/troubleshoot/evm-tool.md @@ -53,9 +53,9 @@ docker run -rm hyperledger/besu-evmtool:develop ` in `[Users.]` with the username. * Hash of the user password. Use the - [`password hash`](../../Reference/CLI/CLI-Subcommands.md#password) subcommand to generate 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](../../Concepts/Privacy/Multi-Tenancy.md). + [multi-tenancy](../../concepts/Privacy/Multi-Tenancy.md). !!! example "Password hash subcommand" @@ -80,13 +80,13 @@ Each user requiring JSON-RPC access the configuration file lists the: ### 2. Enable authentication To require authentication for the JSON-RPC API, use the -[`--rpc-http-authentication-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-http-authentication-enabled) -or [`--rpc-ws-authentication-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-authentication-enabled) +[`--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) options. To specify the [credentials file](#1-create-the-credentials-file), use the -[`--rpc-http-authentication-credentials-file`](../../Reference/CLI/CLI-Syntax.md#rpc-http-authentication-credentials-file) -and [`--rpc-ws-authentication-credentials-file`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-authentication-credentials-file) +[`--rpc-http-authentication-credentials-file`](../../reference/cli/options.md#rpc-http-authentication-credentials-file) +and [`--rpc-ws-authentication-credentials-file`](../../reference/cli/options.md#rpc-ws-authentication-credentials-file) options. ### 3. Generate an authentication token @@ -208,7 +208,7 @@ 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](../../Concepts/Privacy/Multi-Tenancy.md). + [multi-tenancy](../../concepts/Privacy/Multi-Tenancy.md). !!! example "JWT generation example" @@ -229,13 +229,13 @@ Each payload for the JWT must contain: ### 3. Enable authentication To require authentication for the JSON-RPC API, use the -[`--rpc-http-authentication-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-http-authentication-enabled) -or [`--rpc-ws-authentication-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-authentication-enabled) +[`--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) options. To specify the JWT provider's public key file to use with the externally created JWT, use the -[`--rpc-http-authentication-jwt-public-key-file`](../../Reference/CLI/CLI-Syntax.md#rpc-http-authentication-jwt-public-key-file) -or [`--rpc-ws-authentication-jwt-public-key-file`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-authentication-jwt-public-key-file) +[`--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) options. ## JSON-RPC permissions diff --git a/docs/how-to/use-besu-api/graphql.md b/docs/how-to/use-besu-api/graphql.md index 28f41f8faba..947675ad783 100644 --- a/docs/how-to/use-besu-api/graphql.md +++ b/docs/how-to/use-besu-api/graphql.md @@ -15,13 +15,13 @@ service using [command line options](index.md#enabling-api-access). GraphQL is not supported over WebSockets. Access the GraphQL endpoint at `http://:/graphql`. Configure `` and `` -using [`graphql-http-host`](../../Reference/CLI/CLI-Syntax.md#graphql-http-host) and -[`graphql-http-port`](../../Reference/CLI/CLI-Syntax.md#graphql-http-port). The default endpoint +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-Methods.md) with an equivalent +[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. !!! example diff --git a/docs/how-to/use-besu-api/index.md b/docs/how-to/use-besu-api/index.md index 1976eb23713..33ac275875c 100644 --- a/docs/how-to/use-besu-api/index.md +++ b/docs/how-to/use-besu-api/index.md @@ -4,7 +4,7 @@ description: Hyperledger Besu API # Access the Hyperledger Besu API -Access the [Hyperledger Besu API](../../Reference/API-Methods.md) using: +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) @@ -15,9 +15,9 @@ The following sections provide information about JSON-RPC, RPC Pub/Sub, and Grap ## Enable API access To enable API access, use the -[`--rpc-http-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled), -[`--ws-http-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-enabled), -[`--graphql-http-enabled`](../../Reference/CLI/CLI-Syntax.md#graphql-http-enabled), and +[`--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 @@ -27,9 +27,9 @@ To enable API access, use the ## Service hosts To specify the host the API service listens on, use the -[`--rpc-http-host`](../../Reference/CLI/CLI-Syntax.md#rpc-http-host), -[`--rpc-ws-host`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-host), and -[`--graphql-http-host`](../../Reference/CLI/CLI-Syntax.md#graphql-http-host) options. 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`. @@ -43,9 +43,9 @@ To allow remote connections, set the host to `0.0.0.0`. ## Service ports To specify the port the API service listens on, use the -[`--rpc-http-port`](../../Reference/CLI/CLI-Syntax.md#rpc-http-port), -[`--rpc-ws-port`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-port), and -[`--graphql-http-port`](../../Reference/CLI/CLI-Syntax.md#graphql-http-port) options. +[`--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: @@ -69,7 +69,7 @@ The default path is `besu.ipc` in the Besu data directory. 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/CLI-Syntax.md#host-allowlist) option matches the request host headers. +[`--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`. !!! important @@ -99,7 +99,7 @@ Specify "*" for `--host-allowlist` to effectively disable host protection. 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-Methods.md#eth_sendrawtransaction). +[`eth_sendRawTransaction`](../../reference/api/index.md#eth_sendrawtransaction). `eth_sendTransaction` is not implemented. For [account management](../Send-Transactions/Account-Management.md), use third-party wallets. diff --git a/docs/how-to/use-besu-api/json-rpc.md b/docs/how-to/use-besu-api/json-rpc.md index 1e4d938e0ce..0e5cbb7adfc 100644 --- a/docs/how-to/use-besu-api/json-rpc.md +++ b/docs/how-to/use-besu-api/json-rpc.md @@ -5,8 +5,8 @@ description: How to access the Hyperledger Besu API using JSON-RPC # JSON-RPC over HTTP, WebSockets and IPC To enable JSON-RPC over HTTP or WebSockets, use the -[`--rpc-http-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled) and -[`--rpc-ws-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-enabled) options. +[`--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. @@ -25,9 +25,9 @@ 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/CLI-Syntax.md#rpc-http-enabled) or `--Xrpc-ipc-enabled` option. + [`--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/CLI-Syntax.md#rpc-http-api) or `--Xrpc-ipc-api` option. + [`--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: !!! example @@ -44,7 +44,7 @@ To use the geth console with Besu: geth attach /path/to/besu.ipc ``` -Use the geth console to call [JSON-RPC API methods](../../Reference/API-Methods.md) that geth +Use the geth console to call [JSON-RPC API methods](../../reference/api/index.md) that geth and Besu share. !!! example @@ -190,7 +190,7 @@ Besu provides readiness and liveness endpoints to confirm the Besu node status. 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/CLI-Syntax.md#p2p-enabled), you do not need +[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 @@ -236,8 +236,8 @@ 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/CLI-Syntax.md#rpc-http-api), -[`--rpc-ws-api`](../../Reference/CLI/CLI-Syntax.md#rpc-ws-api), or +[`--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 @@ -248,7 +248,7 @@ To enable the `ADMIN`, `CLIQUE`, `DEBUG`, `EEA`, `IBFT`, `MINER`, `PERM`, `PLUGI 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-Methods.md#eth_gettransactionbyblocknumberandindex) +[`eth_getTransactionByBlockNumberAndIndex`](../../reference/api/index.md#eth_gettransactionbyblocknumberandindex) have a block parameter. The block parameter can have the following values: @@ -258,7 +258,7 @@ The block parameter can have the following values: * `earliest` : `tag` - The earliest (genesis) block. * `latest` : `tag` - The last block mined. * `pending` : `tag` - The last block mined plus pending transactions. Use only with - [`eth_getTransactionCount`](../../Reference/API-Methods.md#eth_gettransactioncount). + [`eth_getTransactionCount`](../../reference/api/index.md#eth_gettransactioncount). * `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 diff --git a/docs/how-to/use-besu-api/rpc-pubsub.md b/docs/how-to/use-besu-api/rpc-pubsub.md index 8a296d8b3b4..1326be7a7f6 100644 --- a/docs/how-to/use-besu-api/rpc-pubsub.md +++ b/docs/how-to/use-besu-api/rpc-pubsub.md @@ -15,7 +15,7 @@ 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](../../Concepts/Privacy/Privacy-Overview.md). +* `priv_subscribe` and `priv_unsubscribe` - create or cancel a subscription for [private logs](../../concepts/Privacy/Privacy-Overview.md). !!!important @@ -91,9 +91,9 @@ chain. This means the subscription can publish notifications for multiple blocks on the blockchain. The new headers notification returns -[block objects](../../Reference/API-Objects.md#block-object). The second parameter is optional. +[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 +[transaction objects](../../reference/api/objects.md#transaction-object), Otherwise, the notifications include transaction hashes. !!!example @@ -178,7 +178,7 @@ notifications include transaction hashes. ### Logs -To notify you about [logs](../../Concepts/Events-and-Logs.md) included in new blocks, use the +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. @@ -187,7 +187,7 @@ 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). + [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. @@ -196,11 +196,11 @@ logs for a private contract subscription. If you create a subscription for a pri 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) +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). +The logs subscription returns [log objects](../../reference/api/objects.md#log-object). !!!example "Public logs" diff --git a/docs/index.md b/docs/index.md index 7e08f10d05b..ab668bdcc01 100644 --- a/docs/index.md +++ b/docs/index.md @@ -11,7 +11,7 @@ description: Besu is an open-source Ethereum client developed under the Apache 2 Hyperledger Besu is an open-source Ethereum client developed under the Apache 2.0 license and written in Java. It runs on Ethereum Mainnet, private networks, and test networks such as Rinkeby, Ropsten, Goerli, and the Merge testnet. -Besu serves as an [execution client](Concepts/Merge.md) on Ethereum Mainnet and the Merge testnet. +Besu serves as an [execution client](public-networks/concepts/the-merge.md) on Ethereum Mainnet and the Merge testnet. Besu implements proof of authority (QBFT, IBFT 2.0, and Clique) and proof of work (Ethash) consensus mechanisms. @@ -22,7 +22,7 @@ Besu supports enterprise features including privacy and permissioning. ## What can you do with Besu? -Besu includes a [command line interface](Reference/CLI/CLI-Syntax.md) and +Besu includes a [command line interface](reference/cli/options.md) and [JSON-RPC API](how-to/use-besu-api/index.md) for running, maintaining, debugging, and monitoring nodes in an Ethereum network. You can use the API via RPC over HTTP or via WebSockets. Besu also supports Pub/Sub. The API supports typical Ethereum functionalities such as: @@ -33,7 +33,7 @@ supports Pub/Sub. The API supports typical Ethereum functionalities such as: ## New to Ethereum? -Get started with the [Developer Quickstart](Tutorials/Developer-Quickstart.md). Use the quickstart +Get started with the [Developer Quickstart](tutorials/Developer-Quickstart.md). Use the quickstart to rapidly generate local blockchain networks. Learn more about [use cases for Ethereum](https://consensys.net/blockchain-use-cases/case-studies/). diff --git a/docs/private-networks/get-started/system-requirements.md b/docs/private-networks/get-started/system-requirements.md index 93767591fab..8b37fd0cfcd 100644 --- a/docs/private-networks/get-started/system-requirements.md +++ b/docs/private-networks/get-started/system-requirements.md @@ -6,8 +6,8 @@ description: System requirements to sync and run Besu # System requirements for private networks A Hyperledger Besu private network is a network not connected to Ethereum Mainnet or an Ethereum testnet. -Private networks typically use a different [chain ID](../../Concepts/NetworkID-And-ChainID.md) and -[consensus protocol](../../Concepts/Consensus-Protocols/Overview-Consensus.md). +Private networks typically use a different [chain ID](../../concepts/network-and-chain-id.md) and +[consensus protocol](../../concepts/Consensus-Protocols/Overview-Consensus.md). Participation in private networks is typically restricted in some way, so the volume of traffic is much lower than Mainnet, resulting in lower system requirements. @@ -15,7 +15,7 @@ Private network system requirements depend on many factors, including: * Size of the world state for the network. * Number of transactions submitted to the network. -* [Block gas limit](../../Reference/Config-Items.md#genesis-block-parameters). +* [Block gas limit](../../reference/genesis-items.md#genesis-block-parameters). * Number and complexity of [JSON-RPC](../../how-to/use-besu-api/json-rpc.md), [PubSub](../../how-to/use-besu-api/rpc-pubsub.md), or [GraphQL](../../how-to/use-besu-api/graphql.md) queries handled by the node. diff --git a/docs/private-networks/how-to/connect/bootnodes.md b/docs/private-networks/how-to/connect/bootnodes.md index 1d30527880d..ee28fcca588 100644 --- a/docs/private-networks/how-to/connect/bootnodes.md +++ b/docs/private-networks/how-to/connect/bootnodes.md @@ -21,7 +21,7 @@ Bootnodes are regular nodes used to discover other nodes. For Mainnet and the Rinkeby, Ropsten, Sepolia, and Goerli testnets, Hyperledger Besu has an internal list of enode URLs and uses this list automatically when you specify the -[`--network`](../../../Reference/CLI/CLI-Syntax.md#network) option. +[`--network`](../../../reference/cli/options.md#network) option. ## Private networks @@ -31,8 +31,8 @@ In production networks, [configure two or more nodes as bootnodes](../../../how- ### Specify a bootnode -To start a node, specifying a bootnode [enode](../../../Concepts/Node-Keys.md) for P2P discovery, -using the [`--bootnodes`](../../../Reference/CLI/CLI-Syntax.md#bootnodes) option. +To start a node, specifying a bootnode [enode](../../../concepts/node-keys.md) for P2P discovery, +using the [`--bootnodes`](../../../reference/cli/options.md#bootnodes) option. !!! example @@ -42,9 +42,9 @@ using the [`--bootnodes`](../../../Reference/CLI/CLI-Syntax.md#bootnodes) option The default host and port advertised to other peers for P2P discovery is `127.0.0.1:30303`. To specify a different host or port, use the -[`--p2p-host`](../../../Reference/CLI/CLI-Syntax.md#p2p-host) and -[`--p2p-port`](../../../Reference/CLI/CLI-Syntax.md#p2p-port) options. +[`--p2p-host`](../../../reference/cli/options.md#p2p-host) and +[`--p2p-port`](../../../reference/cli/options.md#p2p-port) options. By default, peer discovery listens on all available network interfaces. If the device Besu is running on must bind to a specific network interface, specify the interface using the -[`--p2p-interface`](../../../Reference/CLI/CLI-Syntax.md#p2p-interface) option. +[`--p2p-interface`](../../../reference/cli/options.md#p2p-interface) option. diff --git a/docs/private-networks/how-to/monitor/elastic-stack.md b/docs/private-networks/how-to/monitor/elastic-stack.md index 27cefe2a780..5b9d04b126c 100644 --- a/docs/private-networks/how-to/monitor/elastic-stack.md +++ b/docs/private-networks/how-to/monitor/elastic-stack.md @@ -5,7 +5,7 @@ description: Using Elastick Stack (ELK) with Hyperledger Besu # Elastic Stack [Elastic Stack] (ELK) is an open-source log management platform that is available when using the -[Developer Quickstart](../../../Tutorials/Developer-Quickstart.md). +[Developer Quickstart](../../../tutorials/Developer-Quickstart.md). The [Filebeat] configuration ingests logs and the [Metricbeat] configuration collects metrics from the nodes at regular defined intervals and outputs them to Redis for storage. @@ -21,7 +21,7 @@ The [pipeline configuration] defines the JSON format used for Besu logs and auto To see the Besu Quickstart network logs in Kibana: -1. [Start the Developer Quickstart with Besu](../../../Tutorials/Developer-Quickstart.md), selecting ELK monitoring. +1. [Start the Developer Quickstart with Besu](../../../tutorials/Developer-Quickstart.md), selecting ELK monitoring. 1. Open the [`Kibana logs address`](http://localhost:5601/app/kibana#/discover) listed by the sample networks `list.sh` script. The logs display in Kibana. diff --git a/docs/private-networks/how-to/monitor/opentelemetry.md b/docs/private-networks/how-to/monitor/opentelemetry.md index 209338f3d91..d69c6c4e5ee 100644 --- a/docs/private-networks/how-to/monitor/opentelemetry.md +++ b/docs/private-networks/how-to/monitor/opentelemetry.md @@ -5,8 +5,8 @@ description: Collect Besu information with the OpenTelemetry Collector # OpenTelemetry You can use the OpenTelemetry monitoring and tracing service to gather node metrics and traces. -To enable OpenTelemetry to access Hyperledger Besu, use the [`--metrics-enabled`](../../../Reference/CLI/CLI-Syntax.md#metrics-enabled) -and [`--metrics-protocol=opentelemetry`](../../../Reference/CLI/CLI-Syntax.md#metrics-protocol) options. +To enable OpenTelemetry to access Hyperledger Besu, use the [`--metrics-enabled`](../../../reference/cli/options.md#metrics-enabled) +and [`--metrics-protocol=opentelemetry`](../../../reference/cli/options.md#metrics-protocol) options. Use [Splunk](https://splunk.com) to visualize the collected data. A [Besu Sync example](https://github.com/splunk/splunk-connect-for-ethereum/tree/master/examples/besu-sync) is available. @@ -140,8 +140,8 @@ Download and install the [OpenTelemetry Collector](https://github.com/open-telem You can also refer to this [Docker-compose example](https://github.com/splunk/splunk-connect-for-ethereum/blob/master/examples/besu-sync/full-sync/docker-compose.yaml). -1. Start Besu with the [`--metrics-enabled`](../../../Reference/CLI/CLI-Syntax.md#metrics-enabled) and - [`--metrics-protocol=opentelemetry`](../../../Reference/CLI/CLI-Syntax.md#metrics-protocol) options. +1. Start Besu with the [`--metrics-enabled`](../../../reference/cli/options.md#metrics-enabled) and + [`--metrics-protocol=opentelemetry`](../../../reference/cli/options.md#metrics-protocol) options. For example, run the following command to start a single node: === "Syntax" diff --git a/docs/private-networks/how-to/monitor/splunk.md b/docs/private-networks/how-to/monitor/splunk.md index 00aa4da27c5..7576ce0336f 100644 --- a/docs/private-networks/how-to/monitor/splunk.md +++ b/docs/private-networks/how-to/monitor/splunk.md @@ -21,7 +21,7 @@ Options for running Splunk and Besu are: To view the Quickstart network logs in Splunk: -1. [Start the Developer Quickstart with Besu](../../../Tutorials/Developer-Quickstart.md), selecting Splunk monitoring. +1. [Start the Developer Quickstart with Besu](../../../tutorials/Developer-Quickstart.md), selecting Splunk monitoring. 1. Open the [Splunk UI](http://localhost:8000). ## Splunk Connect for Ethereum Docker Compose diff --git a/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md b/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md index 11aa2b09415..71fa495a6c4 100644 --- a/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md +++ b/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md @@ -5,16 +5,16 @@ description: Creating and sending concurrent private transactions with Hyperledg # Sending concurrent private transactions Private transaction processing involves two transactions, the private transaction and the -[privacy marker transaction (PMT)](../../../Concepts/Privacy/Private-Transaction-Processing.md). -The private transaction and the PMT each have their own [nonce](../../../Concepts/Privacy/Private-Transactions.md#nonces). +[privacy marker transaction (PMT)](../../../concepts/Privacy/Private-Transaction-Processing.md). +The private transaction and the PMT each have their own [nonce](../../../concepts/Privacy/Private-Transactions.md#nonces). If your private transaction rate requires sending private transactions without waiting for the previous -private transaction to be mined, using [`eth_getTransactionCount`](../../../Reference/API-Methods.md#eth_gettransactioncount) -and [`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction) may result in -[incorrect nonces](../../../Concepts/Privacy/Private-Transactions.md#private-nonce-management). +private transaction to be mined, using [`eth_getTransactionCount`](../../../reference/api/index.md#eth_gettransactioncount) +and [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) may result in +[incorrect nonces](../../../concepts/Privacy/Private-Transactions.md#private-nonce-management). In this case, use [`priv_distributeRawTransaction`](private-transactions.md#priv_distributerawtransaction) -instead of [`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction). +instead of [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction). !!! note @@ -22,10 +22,10 @@ instead of [`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_send [`priv_getEeaTransactionCount`](../../Reference/API-Methods.md#priv_geteeatransactioncount) to get the nonce for an account for the specified privacy group or participants. -Send the corresponding PMT using [`eth_sendRawTransaction`](../../../Reference/API-Methods.md#eth_sendrawtransaction), +Send the corresponding PMT using [`eth_sendRawTransaction`](../../../reference/api/index.md#eth_sendrawtransaction), specifying the public PMT nonce. This method allows you to create and send the PMT yourself rather than -[`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction) handling the PMT. +[`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) handling the PMT. !!! important diff --git a/docs/private-networks/how-to/send-transactions/private-transactions.md b/docs/private-networks/how-to/send-transactions/private-transactions.md index 008e35b08df..5dc95197261 100644 --- a/docs/private-networks/how-to/send-transactions/private-transactions.md +++ b/docs/private-networks/how-to/send-transactions/private-transactions.md @@ -4,7 +4,7 @@ description: Creating and sending private transactions with Hyperledger Besu # Creating and sending private transactions -Create and send [private transactions](../../../Concepts/Privacy/Privacy-Overview.md) using: +Create and send [private transactions](../../../concepts/Privacy/Privacy-Overview.md) using: * [web3js-quorum client library](../../../how-to/Interact/Client-Libraries/web3js-quorum.md) or [web3j client library](https://github.com/web3j/web3j) @@ -17,7 +17,7 @@ distributed. If any participants are offline when submitting the private transac transaction is not attempted and you must resubmit the transaction. The `gas` and `gasPrice` specified when sending a private transaction are used by the -[privacy marker transaction (PMT)](../../../Concepts/Privacy/Private-Transaction-Processing.md), not the private transaction itself. +[privacy marker transaction (PMT)](../../../concepts/Privacy/Private-Transaction-Processing.md), not the private transaction itself. !!! note @@ -26,9 +26,9 @@ The `gas` and `gasPrice` specified when sending a private transaction are used b ## `eea_sendRawTransaction` -[`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction) distributes the +[`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) distributes the private transaction to the participating nodes, and signs and submits the PMT, as described in -[Private transaction processing](../../../Concepts/Privacy/Private-Transaction-Processing.md). +[Private transaction processing](../../../concepts/Privacy/Private-Transaction-Processing.md). !!! note @@ -38,28 +38,28 @@ private transaction to the participating nodes, and signs and submits the PMT, a ## `priv_distributeRawTransaction` -Use [`priv_distributeRawTransaction`](../../../Reference/API-Methods.md#priv_distributerawtransaction) instead of +Use [`priv_distributeRawTransaction`](../../../reference/api/index.md#priv_distributerawtransaction) instead of [`eea_sendRawTransaction`](#eea_sendrawtransaction) when sending [concurrent private transactions](concurrent-private-transactions.md). -[`priv_distributeRawTransaction`](../../../Reference/API-Methods.md#priv_distributerawtransaction) +[`priv_distributeRawTransaction`](../../../reference/api/index.md#priv_distributerawtransaction) distributes the private transaction to the participating nodes but does not sign and submit the PMT. -That is, it performs steps 1 to 5 of [Private Transaction Processing](../../../Concepts/Privacy/Private-Transaction-Processing.md). +That is, it performs steps 1 to 5 of [Private Transaction Processing](../../../concepts/Privacy/Private-Transaction-Processing.md). If using -[`priv_distributeRawTransaction`](../../../Reference/API-Methods.md#priv_distributerawtransaction) -instead of [`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction), use +[`priv_distributeRawTransaction`](../../../reference/api/index.md#priv_distributerawtransaction) +instead of [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction), use the value returned by -[`priv_distributeRawTransaction`](../../../Reference/API-Methods.md#priv_distributerawtransaction), +[`priv_distributeRawTransaction`](../../../reference/api/index.md#priv_distributerawtransaction), which is the enclave key to the private transaction in [Tessera](https://docs.tessera.consensys.net/), in the `data` field of a call to -[`eth_sendRawTransaction`](../../../Reference/API-Methods.md#eth_sendrawtransaction). +[`eth_sendRawTransaction`](../../../reference/api/index.md#eth_sendrawtransaction). Use the value returned by -[`priv_getPrivacyPrecompileAddress`](../../../Reference/API-Methods.md#priv_getprivacyprecompileaddress), which is the -address of the [privacy precompiled contract](../../../Concepts/Privacy/Private-Transaction-Processing.md), in the `to` +[`priv_getPrivacyPrecompileAddress`](../../../reference/api/index.md#priv_getprivacyprecompileaddress), which is the +address of the [privacy precompiled contract](../../../concepts/Privacy/Private-Transaction-Processing.md), in the `to` field of the call. By using the [public Ethereum transaction](../../../how-to/send-transactions.md), -[`eth_sendRawTransaction`](../../../Reference/API-Methods.md#eth_sendrawtransaction), you are signing +[`eth_sendRawTransaction`](../../../reference/api/index.md#eth_sendrawtransaction), you are signing and submitting the PMT yourself instead of having it signed by the Besu node, giving you greater control over the PMT. !!! warning @@ -111,15 +111,15 @@ and submitting the PMT yourself instead of having it signed by the Besu node, gi To create an [EEA-compliant private transaction], specify `privateFor` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction). To create a [Besu-extended private transaction], specify a `privacyGroupId` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction). ## Unsigned and unencoded private transactions -The [`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction) parameter is +The [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) parameter is a signed RLP-encoded private transaction. Shown below are examples of unsigned and unencoded private transactions to create a contract. @@ -163,5 +163,5 @@ private transactions to create a contract. -[EEA-compliant private transaction]: ../../../Concepts/Privacy/Privacy-Groups.md#enterprise-ethereum-alliance-privacy -[Besu-extended private transaction]: ../../../Concepts/Privacy/Privacy-Groups.md#besu-extended-privacy +[EEA-compliant private transaction]: ../../../concepts/Privacy/Privacy-Groups.md#enterprise-ethereum-alliance-privacy +[Besu-extended private transaction]: ../../../concepts/Privacy/Privacy-Groups.md#besu-extended-privacy diff --git a/docs/private-networks/how-to/send-transactions/revert-reason.md b/docs/private-networks/how-to/send-transactions/revert-reason.md index 941687d2f3c..a3747348cab 100644 --- a/docs/private-networks/how-to/send-transactions/revert-reason.md +++ b/docs/private-networks/how-to/send-transactions/revert-reason.md @@ -41,11 +41,11 @@ client an optional string message containing information about the error. ## Enabling revert reason -Use the [`--revert-reason-enabled`](../../../Reference/CLI/CLI-Syntax.md#revert-reason-enabled) +Use the [`--revert-reason-enabled`](../../../reference/cli/options.md#revert-reason-enabled) command line option to include the revert reason in the transaction receipt, -[`eth_estimateGas`](../../../Reference/API-Methods.md#eth_estimategas) error, -[`eth_call`](../../../Reference/API-Methods.md#eth_call) error, and -[`trace`](../../../Reference/Trace-Types.md#trace) response in Hyperledger Besu. +[`eth_estimateGas`](../../../reference/api/index.md#eth_estimategas) error, +[`eth_call`](../../../reference/api/index.md#eth_call) error, and +[`trace`](../../../reference/trace-types.md#trace) response in Hyperledger Besu. !!! caution @@ -55,7 +55,7 @@ command line option to include the revert reason in the transaction receipt, ## Where is the revert reason included With revert reason enabled, the transaction receipt returned by -[`eth_getTransactionReceipt`](../../../Reference/API-Methods.md#eth_gettransactionreceipt) includes +[`eth_getTransactionReceipt`](../../../reference/api/index.md#eth_gettransactionreceipt) includes the revert reason as an ABI-encoded string. !!! important @@ -90,8 +90,8 @@ the revert reason as an ABI-encoded string. } ``` -The error returned by [`eth_estimateGas`](../../../Reference/API-Methods.md#eth_estimategas) and -[`eth_call`](../../../Reference/API-Methods.md#eth_call) includes the revert reason as an ABI-encoded string in the `data` field. +The error returned by [`eth_estimateGas`](../../../reference/api/index.md#eth_estimategas) and +[`eth_call`](../../../reference/api/index.md#eth_call) includes the revert reason as an ABI-encoded string in the `data` field. !!! example "Example of `eth_estimateGas` and `eth_call` error" @@ -107,10 +107,10 @@ The error returned by [`eth_estimateGas`](../../../Reference/API-Methods.md#eth_ } ``` -The list items in the [`trace`](../../../Reference/Trace-Types.md#trace) response returned by -[`trace_replayBlockTransactions`](../../../Reference/API-Methods.md#trace_replayblocktransactions), -[`trace_block`](../../../Reference/API-Methods.md#trace_block), and -[`trace_transaction`](../../../Reference/API-Methods.md#trace_transaction) include the revert reason as an ABI-encoded string. +The list items in the [`trace`](../../../reference/trace-types.md#trace) response returned by +[`trace_replayBlockTransactions`](../../../reference/api/index.md#trace_replayblocktransactions), +[`trace_block`](../../../reference/api/index.md#trace_block), and +[`trace_transaction`](../../../reference/api/index.md#trace_transaction) include the revert reason as an ABI-encoded string. !!! example "Example of `trace` response list item" diff --git a/docs/how-to/Upgrade/Upgrade-Protocol.md b/docs/private-networks/how-to/upgrade/protocol.md similarity index 73% rename from docs/how-to/Upgrade/Upgrade-Protocol.md rename to docs/private-networks/how-to/upgrade/protocol.md index cdb0ceaf058..8647afdd1b2 100644 --- a/docs/how-to/Upgrade/Upgrade-Protocol.md +++ b/docs/private-networks/how-to/upgrade/protocol.md @@ -4,18 +4,18 @@ description: Upgrading protocol versions # Upgrading your protocol in a private network -To [upgrade the protocol](../../Concepts/Protocol-Upgrades.md) (also known as a hard fork) in a +To [upgrade the protocol](../../../concepts/Protocol-Upgrades.md) (also known as a hard fork) in a private network: 1. Review included EIPs for breaking changes. A [meta EIP](https://eips.ethereum.org/meta) for each protocol upgrade lists included EIPs. For example, [Istanbul](https://eips.ethereum.org/EIPS/eip-1679). 1. Network participants agree on the block number at which to - [upgrade](../../Concepts/Protocol-Upgrades.md). + [upgrade](../../../concepts/Protocol-Upgrades.md). 1. For each node in the network: a. Add the - [milestone block number](../../Reference/Config-Items.md#milestone-blocks) to the genesis + [milestone block number](../../../reference/genesis-items.md#milestone-blocks) to the genesis file. b. Restart the node before reaching milestone block. diff --git a/docs/Concepts/Data-Storage-Formats.md b/docs/public-networks/concepts/data-storage-formats.md similarity index 82% rename from docs/Concepts/Data-Storage-Formats.md rename to docs/public-networks/concepts/data-storage-formats.md index 34aee7d848c..5e4248530e1 100644 --- a/docs/Concepts/Data-Storage-Formats.md +++ b/docs/public-networks/concepts/data-storage-formats.md @@ -14,7 +14,7 @@ In forest mode, each node in the trie is saved in a key-value store by hash. For 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](../images/forest_of_tries.png) +![forest_of_tries](../../images/forest_of_tries.png) ## Bonsai Tries @@ -24,12 +24,12 @@ 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](Pruning.md) orphaned nodes and old branches. +and faster read performance. Bonsai inherently [prunes](../../concepts/Pruning.md) 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/CLI-Syntax.md#data-storage-format). +[`--data-storage-format=BONSAI`](../../reference/cli/options.md#data-storage-format). -![Bonsai_tries](../images/Bonsai_tries.png) +![Bonsai_tries](../../images/Bonsai_tries.png) ## Forest of Tries vs. Bonsai Tries @@ -47,7 +47,7 @@ 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-maximum-back-layers-to-load`](../Reference/CLI/CLI-Syntax.md#bonsai-maximum-back-layers-to-load) option. +[`--bonsai-maximum-back-layers-to-load`](../../reference/cli/options.md#bonsai-maximum-back-layers-to-load) option. !!! note @@ -56,8 +56,8 @@ The default limit Bonsai looks back is 512. To change the parameter, use the ### Syncing nodes -The following table shows the ways you can [sync a full node](../public-networks/how-to/connect/sync-node.md#run-a-full-node) with the different data -storage formats using [fast](../public-networks/how-to/connect/sync-node.md#fast-synchronization) and [snap](../public-networks/how-to/connect/sync-node.md#snap-synchronization) sync. +The following table shows the ways you can [sync a full node](../how-to/connect/sync-node.md#run-a-full-node) with the different data +storage formats using [fast](../how-to/connect/sync-node.md#fast-synchronization) and [snap](../how-to/connect/sync-node.md#snap-synchronization) sync. | Data storage format | Sync mode | Storage estimate | Can other nodes sync to your node? | |---------------------|-----------|------------------|------------------------------------| diff --git a/docs/Concepts/Merge.md b/docs/public-networks/concepts/the-merge.md similarity index 82% rename from docs/Concepts/Merge.md rename to docs/public-networks/concepts/the-merge.md index b6ec564acd9..6d06b1fcf28 100644 --- a/docs/Concepts/Merge.md +++ b/docs/public-networks/concepts/the-merge.md @@ -10,8 +10,8 @@ Ethereum Mainnet, turning Mainnet into a combination of an The Merge transitions Mainnet from proof of work to [proof of stake consensus](https://docs.teku.consensys.net/en/stable/Concepts/Proof-of-Stake/). -Update and configure Besu to be [ready for The Merge](../public-networks/how-to/prepare-for-the-merge.md). -You can also test Besu with a consensus client such as [Teku] on the [Kiln Merge testnet](../Tutorials/Merge-Testnet.md). +Update and configure Besu to be [ready for The Merge](../how-to/prepare-for-the-merge.md). +You can also test Besu with a consensus client such as [Teku] on the [Kiln Merge testnet](../tutorials/merge-testnet.md). ## Execution and consensus clients @@ -20,14 +20,14 @@ After The Merge, a full Ethereum Mainnet node will be a combination of an execut 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](../public-networks/how-to/use-engine-api.md). +[Engine API](../how-to/use-engine-api.md). -![Ethereum Merge node](../images/Execution-Consensus-Clients.png) +![Ethereum Merge node](../../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-Methods.md) requests and communicate with each other in a +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 @@ -42,7 +42,7 @@ communicate with each other in a peer-to-peer network. ## What happens during The Merge Before The Merge, the execution and consensus clients' configurations will be -[updated](../public-networks/how-to/prepare-for-the-merge.md#update-besu) to listen for a certain total terminal difficulty (TTD) +[updated](../how-to/prepare-for-the-merge.md#update-besu) to listen for a certain total terminal difficulty (TTD) to be reached. !!! info @@ -64,7 +64,7 @@ After The Merge, validators earn rewards for performing [fee recipients](https://docs.teku.consensys.net/en/latest/HowTo/Prepare-for-The-Merge/#configure-the-fee-recipient) will also earn rewards for the inclusion of execution layer transactions. -Update and configure Besu to be [ready for The Merge](../public-networks/how-to/prepare-for-the-merge.md). +Update and configure Besu to be [ready for The Merge](../how-to/prepare-for-the-merge.md). [Beacon Chain]: https://ethereum.org/en/upgrades/beacon-chain/ diff --git a/docs/public-networks/get-started/start-node.md b/docs/public-networks/get-started/start-node.md index e7eca0ac49e..c305be2069f 100644 --- a/docs/public-networks/get-started/start-node.md +++ b/docs/public-networks/get-started/start-node.md @@ -7,7 +7,7 @@ description: Starting Hyperledger Besu You can use Besu nodes for varying purposes, as described in the [Overview](../../index.md). Nodes can connect to the Ethereum Mainnet, public testnets such as Ropsten, or private networks. -Use the [`besu`](../../Reference/CLI/CLI-Syntax.md) command with the required command line options +Use the [`besu`](../../reference/cli/options.md) command with the required command line options to start a node. Alternatively, use the [launcher](#besu-launcher) to start Besu interactively with the most common options. @@ -18,7 +18,7 @@ with the most common options. ## 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/CLI-Syntax.md#data-path) option +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 @@ -31,38 +31,38 @@ Besu specifies the genesis configuration, and sets the network ID and bootnodes [Goerli](#run-a-node-on-goerli-testnet), [Kiln](#run-a-node-on-kiln-testnet), [Sepolia](#run-a-node-on-sepolia-testnet), and [Mainnet](#run-a-node-on-ethereum-mainnet). -When you specify [`--network=dev`](../../Reference/CLI/CLI-Syntax.md#network), Besu uses the +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/CLI-Syntax.md#network) has an empty bootnodes list by +[`--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/CLI-Syntax.md#genesis-file) option. +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](../how-to/connect/sync-node.md#fast-synchronization) in: -- Networks specified using [`--network`](../../Reference/CLI/CLI-Syntax.md#network) except for the `dev` +- Networks specified using [`--network`](../../reference/cli/options.md#network) except for the `dev` development network. - Ethereum Mainnet. We recommend using [snap sync](../how-to/connect/sync-node.md#snap-synchronization) for a faster sync, by starting Besu -with [`--sync-mode=X_SNAP`](../../Reference/CLI/CLI-Syntax.md#sync-mode). +with [`--sync-mode=X_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/CLI-Syntax.md#data-storage-format). +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). ## Confirm node is running If you started Besu with the -[`--rpc-http-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled) option, use -[cURL](https://curl.haxx.se/) to call [JSON-RPC API methods](../../Reference/API-Methods.md) to +[`--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. !!!example @@ -166,9 +166,9 @@ Where `` and `` are the path and directory to save the Go ## Run a node on Kiln testnet -You can [test Besu as an execution client](../../Tutorials/Merge-Testnet.md#start-besu) on the +You can [test Besu as an execution client](../tutorials/merge-testnet.md#start-besu) on the [Kiln Merge testnet](https://blog.ethereum.org/2022/03/14/kiln-merge-testnet/). -You must also run a [consensus client](../../Concepts/Merge.md#consensus-clients) with Besu on the Merge +You must also run a [consensus client](../concepts/the-merge.md#consensus-clients) with Besu on the Merge testnet. For example, [Teku](https://docs.teku.consensys.net/en/stable/). diff --git a/docs/public-networks/get-started/system-requirements.md b/docs/public-networks/get-started/system-requirements.md index a206026030f..d2adc7b612c 100644 --- a/docs/public-networks/get-started/system-requirements.md +++ b/docs/public-networks/get-started/system-requirements.md @@ -25,9 +25,9 @@ to the chain head. Monitor your system to determine your actual JVM memory needs ## Disk space -[Fast synchronization](../../Reference/CLI/CLI-Syntax.md#sync-mode) with -[pruning](../../Concepts/Pruning.md) enabled requires approximately 750 GB of disk space. -[Full synchronization](../../Reference/CLI/CLI-Syntax.md#sync-mode) requires approximately 3 TB. +[Fast synchronization](../../reference/cli/options.md#sync-mode) with +[pruning](../../concepts/Pruning.md) enabled requires approximately 750 GB of disk space. +[Full synchronization](../../reference/cli/options.md#sync-mode) requires approximately 3 TB. ## Disk type diff --git a/docs/public-networks/how-to/connect/sync-node.md b/docs/public-networks/how-to/connect/sync-node.md index cce30682fff..3bba7fc15c5 100644 --- a/docs/public-networks/how-to/connect/sync-node.md +++ b/docs/public-networks/how-to/connect/sync-node.md @@ -31,7 +31,7 @@ You can run a full node using [fast synchronization (fast sync)](#fast-synchroni ### Fast synchronization -Enable fast sync using [`--sync-mode=FAST`](../../../Reference/CLI/CLI-Syntax.md#sync-mode). +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. @@ -39,13 +39,13 @@ 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/CLI-Syntax.md#network) +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/CLI-Syntax.md#network) or [`--genesis-file`](../../../Reference/CLI/CLI-Syntax.md#genesis-file) +[`--network`](../../../reference/cli/options.md#network) or [`--genesis-file`](../../../reference/cli/options.md#genesis-file) options. -Using fast sync with [private transactions](../../../Concepts/Privacy/Privacy-Overview.md) isn't supported. +Using fast sync with [private transactions](../../../concepts/Privacy/Privacy-Overview.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. @@ -87,10 +87,10 @@ You can observe the `besu_synchronizer_fast_sync_*` and `besu_synchronizer_world We recommend using snap sync with the [Bonsai](Data-Storage-Formats.md#bonsai-tries) data storage format for the fastest sync and lowest storage requirements. -Enable snap sync using [`--sync-mode=X_SNAP`](../../../Reference/CLI/CLI-Syntax.md#sync-mode). +Enable snap sync using [`--sync-mode=X_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 +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. @@ -103,12 +103,12 @@ deleting the data directory, and starting over using `--sync-mode=X_SNAP`. Checkpoint sync is an experimental feature. -Enable checkpoint sync using [`--sync-mode=X_CHECKPOINT`](../../../Reference/CLI/CLI-Syntax.md#sync-mode). +Enable checkpoint sync using [`--sync-mode=X_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](../../../how-to/configure/Genesis-File.md). +file](../../../concepts/genesis-file.md). You can configure a checkpoint in the genesis file by specifying the block hash, number, and total difficulty as in the following example. @@ -137,6 +137,6 @@ sync from the genesis block. ## Run an archive node To run an archive node, enable full synchronization (full sync) using -[`--sync-mode=FULL`](../../../Reference/CLI/CLI-Syntax.md#sync-mode). +[`--sync-mode=FULL`](../../../reference/cli/options.md#sync-mode). Full sync starts from the genesis block and reprocesses all transactions. diff --git a/docs/public-networks/how-to/prepare-for-the-merge.md b/docs/public-networks/how-to/prepare-for-the-merge.md index 19d3113d230..e67d775611d 100644 --- a/docs/public-networks/how-to/prepare-for-the-merge.md +++ b/docs/public-networks/how-to/prepare-for-the-merge.md @@ -4,8 +4,8 @@ description: How to prepare for The Merge # Prepare for The Merge -If you're running one or more [beacon nodes](../../Concepts/Merge.md#consensus-clients) with Besu on Ethereum Mainnet, -prepare for [The Merge](../../Concepts/Merge.md) by +If you're running one or more [beacon nodes](../concepts/the-merge.md#consensus-clients) with Besu on Ethereum Mainnet, +prepare for [The Merge](../concepts/the-merge.md) by [configuring Besu as an execution client](#configure-besu-as-an-execution-client) and [staying up to date on Besu releases](#update-besu). @@ -13,17 +13,17 @@ If you're using Besu with [Teku] as the consensus client, [prepare Teku for the Merge](https://docs.teku.consensys.net/en/latest/HowTo/Prepare-for-The-Merge/). You can also -[test Besu with Teku on the Kiln Merge testnet](../../Tutorials/Merge-Testnet.md). +[test Besu with Teku on the Kiln Merge testnet](../tutorials/merge-testnet.md). ## Configure Besu as an execution client -Before The Merge, [validators](../../Concepts/Merge.md#consensus-clients) require an -[execution client](../../Concepts/Merge.md#execution-clients) to get deposits for block proposals. +Before The Merge, [validators](../concepts/the-merge.md#consensus-clients) require an +[execution client](../concepts/the-merge.md#execution-clients) to get deposits for block proposals. Block proposals are intermittent, and a validator can get the data from other blocks if its execution client is offline. After The Merge, execution clients will play a more crucial role in producing blocks and executing transactions. Service providers that provide execution layer access but don't produce blocks, such as Infura, won't be adequate for a -[beacon node](../../Concepts/Merge.md#consensus-clients) to continue to function on the network. +[beacon node](../concepts/the-merge.md#consensus-clients) to continue to function on the network. You must configure an execution client for each beacon node you maintain. Configure Besu as an execution client using the following steps. @@ -32,7 +32,7 @@ You can use Besu with any consensus client. ### 1. Configure the Engine API The beacon node and Besu communicate using the [Engine API](use-engine-api.md). -Configure the Engine API by setting [`engine-rpc-port`](../../Reference/CLI/CLI-Syntax.md#engine-rpc-port) in the Besu +Configure the Engine API by setting [`engine-rpc-port`](../../reference/cli/options.md#engine-rpc-port) in the Besu configuration file. Specify the Besu Engine API endpoint in the consensus client using the consensus client's configuration options. @@ -49,7 +49,7 @@ You can generate a JWT using a command line tool, for example: openssl rand -hex 32 -out ``` -Provide the JWT to Besu using the [`engine-jwt-secret`](../../Reference/CLI/CLI-Syntax.md#engine-jwt-secret) +Provide the JWT to Besu using the [`engine-jwt-secret`](../../reference/cli/options.md#engine-jwt-secret) configuration option, and to the consensus client using its configuration options. For example, provide the JWT to [Teku] using the [`ee-jwt-secret-file`](https://docs.teku.consensys.net/en/latest/Reference/CLI/CLI-Syntax/#ee-jwt-secret-file) option. diff --git a/docs/public-networks/how-to/use-engine-api.md b/docs/public-networks/how-to/use-engine-api.md index 98d67738b32..2674173c001 100644 --- a/docs/public-networks/how-to/use-engine-api.md +++ b/docs/public-networks/how-to/use-engine-api.md @@ -4,8 +4,8 @@ description: How to enable and use the Engine API # Use the Engine API -After [The Merge](../../Concepts/Merge.md), consensus and execution clients communicate with each other using the Engine API. -These [API methods](../../Reference/Engine-API-Methods.md) are a separate subsection of the [JSON-RPC API](../../how-to/use-besu-api/index.md). +After [The Merge](../concepts/the-merge.md), consensus and execution clients communicate with each other using the Engine API. +These [API methods](../reference/engine-api/index.md) are a separate subsection of the [JSON-RPC API](../../how-to/use-besu-api/index.md). ## Configure the Engine API @@ -25,7 +25,7 @@ To configure the Engine API: ### Service ports To specify the port the Engine API service listens on for HTTP and WebSocket, use the -[`--engine-rpc-port`](../../Reference/CLI/CLI-Syntax.md#engine-rpc-port) option. +[`--engine-rpc-port`](../../reference/cli/options.md#engine-rpc-port) option. The default is `8551`. ### Host allowlist @@ -33,7 +33,7 @@ The default is `8551`. 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/CLI-Syntax.md#engine-host-allowlist) option matches the request host headers. +[`--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`. !!! important @@ -52,20 +52,20 @@ Specify "*" for `--engine-host-allowlist` to effectively disable host protection ## 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/CLI-Syntax.md#engine-jwt-disabled) option to `true`. +To disable, set the [`--engine-jwt-disabled`](../../reference/cli/options.md#engine-jwt-disabled) option to `true`. !!! warning Don't disable JWT authentication in production environments. Disable only for testing purposes. -Set the [JWT secret](../../how-to/use-besu-api/authenticate.md#jwt-public-key-authentication) by using the [`--engine-jwt-secret`](../../Reference/CLI/CLI-Syntax.md#engine-jwt-secret) option. +Set the [JWT secret](../../how-to/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-Methods.md#engine_forkchoiceupdatedv1). +Prepare to send a payload using [`engine_forkchoiceUpdatedV1`](../reference/engine-api/index.md#engine_forkchoiceupdatedv1). !!! example @@ -94,7 +94,7 @@ Prepare to send a payload using [`engine_forkchoiceUpdatedV1`](../../Reference/E ### 2. Get the payload -Get the payload using [`engine_getPayloadV1`](../../Reference/Engine-API-Methods.md#engine_getpayloadv1) +Get the payload using [`engine_getPayloadV1`](../reference/engine-api/index.md#engine_getpayloadv1) !!! example @@ -131,7 +131,7 @@ Get the payload using [`engine_getPayloadV1`](../../Reference/Engine-API-Methods ### 3. Execute the payload -Execute the payload using [`engine_newPayloadV1`](../../Reference/Engine-API-Methods.md#engine_newpayloadv1) +Execute the payload using [`engine_newPayloadV1`](../reference/engine-api/index.md#engine_newpayloadv1) !!! example @@ -174,7 +174,7 @@ Execute the payload using [`engine_newPayloadV1`](../../Reference/Engine-API-Met ### 4. Update the fork choice -Update the fork choice using [`engine_forkchoiceUpdatedV1`](../../Reference/Engine-API-Methods.md#engine_forkchoiceupdatedv1) again. +Update the fork choice using [`engine_forkchoiceUpdatedV1`](../reference/engine-api/index.md#engine_forkchoiceupdatedv1) again. !!! example diff --git a/docs/Reference/Engine-API-Methods.md b/docs/public-networks/reference/engine-api/index.md similarity index 90% rename from docs/Reference/Engine-API-Methods.md rename to docs/public-networks/reference/engine-api/index.md index d7cc7e643c8..7784e0c5548 100644 --- a/docs/Reference/Engine-API-Methods.md +++ b/docs/public-networks/reference/engine-api/index.md @@ -4,8 +4,8 @@ description: Engine API methods reference # Engine API methods -After [The Merge](../Concepts/Merge.md), consensus and execution clients communicate with each other using the Engine API. -When running Besu as an execution client, [use these API calls](../public-networks/how-to/use-engine-api.md) to communicate with a consensus client. +After [The Merge](../../concepts/the-merge.md), consensus and execution 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. See the [Ethereum Engine API specification](https://github.com/ethereum/execution-apis/blob/main/src/engine/specification.md) for more information. @@ -22,11 +22,11 @@ Sends the transition configuration to the consensus client to verify the configu #### Parameters -`transitionConfiguration`: *object* - [Transition configuration object](Engine-API-Objects.md#transition-configuration-object) +`transitionConfiguration`: *object* - [Transition configuration object](objects.md#transition-configuration-object) #### Returns -`transitionConfiguration`: *object* - [Transition configuration object](Engine-API-Objects.md#transition-configuration-object) +`transitionConfiguration`: *object* - [Transition configuration object](objects.md#transition-configuration-object) !!! example @@ -64,13 +64,13 @@ Updates the fork choice with the consensus client. #### Parameters -* `forkchoiceState`: *object* - [Fork choice state object](Engine-API-Objects.md#fork-choice-state-object) +* `forkchoiceState`: *object* - [Fork choice state object](objects.md#fork-choice-state-object) -* `payloadAttributes`: *object* - [Payload attribute object](Engine-API-Objects.md#payload-attributes-object). Can be `null`. +* `payloadAttributes`: *object* - [Payload attribute object](objects.md#payload-attributes-object). Can be `null`. #### Returns -* `payloadStatus`: *object* - [Payload status object](Engine-API-Objects.md#payload-status-object) +* `payloadStatus`: *object* - [Payload status object](objects.md#payload-status-object) * `payloadId`: *data* - identifier of the payload build process or `null` @@ -115,7 +115,7 @@ Prepares the payload to send to the consensus client. #### Returns -`executionPayload`: *object* - [Execution payload object](Engine-API-Objects.md#execution-payload-object) +`executionPayload`: *object* - [Execution payload object](objects.md#execution-payload-object) !!! example @@ -162,11 +162,11 @@ Executes the payload with the consensus client. #### Parameters -`executionPayload`: *object* - [Execution payload object](Engine-API-Objects.md#execution-payload-object) +`executionPayload`: *object* - [Execution payload object](objects.md#execution-payload-object) #### Returns -* `payloadStatus`: *object* - [Payload status object](Engine-API-Objects.md#payload-status-object) +* `payloadStatus`: *object* - [Payload status object](objects.md#payload-status-object) !!! example diff --git a/docs/Reference/Engine-API-Objects.md b/docs/public-networks/reference/engine-api/objects.md similarity index 82% rename from docs/Reference/Engine-API-Objects.md rename to docs/public-networks/reference/engine-api/objects.md index 05c895795ed..5ff6eab0ec3 100644 --- a/docs/Reference/Engine-API-Objects.md +++ b/docs/public-networks/reference/engine-api/objects.md @@ -4,12 +4,12 @@ description: Engine API objects reference # Engine API objects -The following objects are parameters for or returned by the [Engine API methods](Engine-API-Methods.md). +The following objects are parameters for or returned by the [Engine API methods](index.md). ## Execution payload object -Parameter for [`engine_newPayloadV1`](Engine-API-Methods.md#engine_newpayloadv1). -Returned by [`engine_getPayloadV1`](Engine-API-Methods.md#engine_getpayloadv1). +Parameter for [`engine_newPayloadV1`](index.md#engine_newpayloadv1). +Returned by [`engine_getPayloadV1`](index.md#engine_getpayloadv1). | Key | Type | Value | |-----|:----:|-------| @@ -24,13 +24,13 @@ Returned by [`engine_getPayloadV1`](Engine-API-Methods.md#engine_getpayloadv1). | `gasUsed` | *Quantity*, 64 Bits | Total gas used by all transactions in this block. | | `timestamp` | *Quantity*, 64 Bits | Unix timestamp 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/Transaction-Types.md#eip1559-transactions). This field is empty for blocks created before [EIP-1559](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md). | +| `baseFeePerGas` | *Quantity*, 256 Bits | The block's [base fee per gas](../../../concepts/Transactions/Transaction-Types.md#eip1559-transactions). This field is empty for blocks created before [EIP-1559](https://github.com/ethereum/EIPs/blob/master/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`](Engine-API-Methods.md#engine_forkchoiceupdatedv1). +Parameter for [`engine_forkchoiceUpdatedV1`](index.md#engine_forkchoiceupdatedv1). | Key | Type | Value | |-----|:----:|-------| @@ -40,7 +40,7 @@ Parameter for [`engine_forkchoiceUpdatedV1`](Engine-API-Methods.md#engine_forkch ## Payload attributes object -Parameter for [`engine_forkchoiceUpdatedV1`](Engine-API-Methods.md#engine_forkchoiceupdatedv1). +Parameter for [`engine_forkchoiceUpdatedV1`](index.md#engine_forkchoiceupdatedv1). | Key | Type | Value | |-----|:----:|-------| @@ -50,7 +50,7 @@ Parameter for [`engine_forkchoiceUpdatedV1`](Engine-API-Methods.md#engine_forkch ## Payload status object -Returned by [`engine_newPayloadV1`](Engine-API-Methods.md#engine_newpayloadv1) and [`engine_forkchoiceUpdatedV1`](Engine-API-Methods.md#engine_forkchoiceupdatedv1). +Returned by [`engine_newPayloadV1`](index.md#engine_newpayloadv1) and [`engine_forkchoiceUpdatedV1`](index.md#engine_forkchoiceupdatedv1). | Key | Type | Value | |-----|:----:|-------| @@ -60,7 +60,7 @@ Returned by [`engine_newPayloadV1`](Engine-API-Methods.md#engine_newpayloadv1) a ## Transition configuration object -Parameter for and returned by [`engine_exchangeTransitionConfigurationV1`](Engine-API-Methods.md#engine_exchangetransitionconfigurationv1). +Parameter for and returned by [`engine_exchangeTransitionConfigurationV1`](index.md#engine_exchangetransitionconfigurationv1). | Key | Type | Value | |-----|:----:|-------| diff --git a/docs/Tutorials/Merge-Testnet.md b/docs/public-networks/tutorials/merge-testnet.md similarity index 94% rename from docs/Tutorials/Merge-Testnet.md rename to docs/public-networks/tutorials/merge-testnet.md index a9b6fcc239a..b03b8697af2 100644 --- a/docs/Tutorials/Merge-Testnet.md +++ b/docs/public-networks/tutorials/merge-testnet.md @@ -4,14 +4,14 @@ Description: How to run Besu and Teku on the Merge testnet # Run Besu and Teku on the Merge testnet -You can test Besu as an [execution client](../Concepts/Merge.md#execution-clients) and +You can test Besu as an [execution client](../concepts/the-merge.md#execution-clients) and [Teku](https://docs.teku.consensys.net/en/stable/) -as a [consensus client](../Concepts/Merge.md#consensus-clients) on the +as a [consensus client](../concepts/the-merge.md#consensus-clients) on the [Kiln Merge testnet](https://blog.ethereum.org/2022/03/14/kiln-merge-testnet/). ## 1. Install Besu and Teku -Install [Besu](../get-started/install/binary-distribution.md) and +Install [Besu](../../get-started/install/binary-distribution.md) and [Teku](https://docs.teku.consensys.net/en/stable/HowTo/Get-Started/Installation-Options/Install-Binaries/). Ensure you meet the prerequisites for the installation option you use. @@ -29,7 +29,7 @@ openssl rand -hex 32 | tr -d "\n" > jwtsecret.hex You will specify `jwtsecret.hex` when starting both Besu and Teku. This is a shared JWT secret the clients use to authenticate each other when using the -[Engine API](../public-networks/how-to/use-engine-api.md). +[Engine API](../how-to/use-engine-api.md). ## 3. Generate validator keys and stake ETH @@ -71,9 +71,9 @@ besu \ ``` Specify the path to the `jwtsecret.hex` file generated in [step 2](#2-generate-the-shared-secret) using the -[`--engine-jwt-secret`](../Reference/CLI/CLI-Syntax.md#engine-jwt-secret) option. +[`--engine-jwt-secret`](../../reference/cli/options.md#engine-jwt-secret) option. -See the [`--engine-*`](../Reference/CLI/CLI-Syntax.md#engine-host-allowlist) options for more information on running +See the [`--engine-*`](../../reference/cli/options.md#engine-host-allowlist) options for more information on running Besu as an execution client. ## 5. Start Teku diff --git a/docs/Reference/Accounts-for-Testing.md b/docs/reference/Accounts-for-Testing.md similarity index 83% rename from docs/Reference/Accounts-for-Testing.md rename to docs/reference/Accounts-for-Testing.md index 928152306aa..747f4acd18a 100644 --- a/docs/Reference/Accounts-for-Testing.md +++ b/docs/reference/Accounts-for-Testing.md @@ -9,7 +9,7 @@ network. Hyperledger Besu also provides predefined accounts for use in developme ## Development mode -When you start Besu with the [`--network=dev`](CLI/CLI-Syntax.md#network) command line option, Besu +When you start Besu with the [`--network=dev`](cli/options.md#network) command line option, Besu uses the `dev.json` genesis file by default. The `dev.json` genesis file defines the following accounts used for testing. @@ -23,4 +23,4 @@ network. For an example of how to define accounts in the genesis file, see [`dev.json`](https://github.com/hyperledger/besu/blob/master/config/src/main/resources/dev.json). To start Besu with the genesis file defining the existing accounts, use the -[`--genesis-file`](CLI/CLI-Syntax.md#genesis-file) command line option . +[`--genesis-file`](cli/options.md#genesis-file) command line option . diff --git a/docs/Reference/Plugin-API-Interfaces.md b/docs/reference/Plugin-API-Interfaces.md similarity index 98% rename from docs/Reference/Plugin-API-Interfaces.md rename to docs/reference/Plugin-API-Interfaces.md index 3bcc05f3af7..8e816b16979 100644 --- a/docs/Reference/Plugin-API-Interfaces.md +++ b/docs/reference/Plugin-API-Interfaces.md @@ -4,7 +4,7 @@ description: Plugin interfaces # Plugin API interfaces -API interfaces in Hyperledger Besu allow users to [build plugins](../Concepts/Plugins.md) to +API interfaces in Hyperledger Besu allow users to [build plugins](../concepts/Plugins.md) to extend Besu functionality, such as the [Quorum Besu plugins](https://doc.quorumplugins.consensys.net/en/latest/Concepts/Besu-Plugins/Event-Streams/). For more information about the available interfaces, see the @@ -59,4 +59,4 @@ the `https://hyperledger.jfrog.io/hyperledger/besu-maven` repository and the `pl The `start` step can be ignored and your plugin module will be instantiated when the command line interface is parsed and available. -[privacy marker transactions]: ../Concepts/Privacy/Private-Transaction-Processing.md +[privacy marker transactions]: ../concepts/Privacy/Private-Transaction-Processing.md diff --git a/docs/Reference/Resources.md b/docs/reference/Resources.md similarity index 100% rename from docs/Reference/Resources.md rename to docs/reference/Resources.md diff --git a/docs/Reference/API-Methods.md b/docs/reference/api/index.md similarity index 94% rename from docs/Reference/API-Methods.md rename to docs/reference/api/index.md index 98561d8b8e8..a34ce104ab8 100644 --- a/docs/Reference/API-Methods.md +++ b/docs/reference/api/index.md @@ -27,7 +27,7 @@ The `ADMIN` API methods provide administrative functionality to manage your node ### `admin_addPeer` -Adds a [static node](../how-to/connect/static-nodes.md). +Adds a [static node](../../how-to/connect/static-nodes.md). !!! caution @@ -36,12 +36,12 @@ Adds a [static node](../how-to/connect/static-nodes.md). #### Parameters -`enode`: *string* - [enode URL](../Concepts/Node-Keys.md#enode-url) of peer to add +`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) +[static node](../../how-to/connect/static-nodes.md) !!! example @@ -76,7 +76,7 @@ You can specify only one log level per RPC call. #### Parameters -* `level`: *string* - [log level](CLI/CLI-Syntax.md#logging) +* `level`: *string* - [log level](../cli/options.md#logging) * `log_filter`: *array* - (optional) packages or classes for which to change the log level @@ -208,11 +208,11 @@ Removes cache files for the specified range of blocks. * `fromBlock`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) * `toBlock`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) You can skip a parameter by using an empty string, `""`. If you specify: @@ -304,16 +304,16 @@ None `result`: *object* - node object with the following fields: -* `enode`: *string* - [enode URL](../Concepts/Node-Keys.md#enode-url) of the node +* `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) +* `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) + [ports](../../how-to/connect/manage-peers.md#port-configuration) * `protocols`: *object* - list of objects containing information for each Ethereum sub-protocol @@ -404,9 +404,9 @@ None * `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://@:`.) + [enode URL](../../concepts/node-keys.md#enode-url) `enode://@:`.) -* `protocols`: *object* - [current state of peer](../how-to/connect/manage-peers.md#monitoring-peer-connections) +* `protocols`: *object* - [current state of peer](../../how-to/connect/manage-peers.md#monitoring-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 @@ -463,16 +463,16 @@ including `difficulty` and `head` (`head` is the hash of the highest known block ### `admin_removePeer` -Removes a [static node](../how-to/connect/static-nodes.md). +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 +`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) +[static node](../../how-to/connect/static-nodes.md) !!! example @@ -500,7 +500,7 @@ Removes a [static node](../how-to/connect/static-nodes.md). ## `CLIQUE` methods -The `CLIQUE` API methods provide access to the [Clique](../how-to/configure/Consensus-Protocols/Clique.md) consensus engine. +The `CLIQUE` API methods provide access to the [Clique](../../how-to/configure/Consensus-Protocols/Clique.md) consensus engine. !!! note @@ -552,7 +552,7 @@ Lists [signers for the specified block]. `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -596,11 +596,11 @@ Provides the following validator metrics for the specified range: #### Parameters * `fromBlockNumber`: *string* - integer representing a block number or the string tag `earliest`, as described -in [Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +in [Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) * `toBlockNumber`: *string* - integer representing a block number or one of the string tags `latest` or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) If you specify: @@ -697,7 +697,7 @@ Lists signers for the specified block. ### `clique_proposals` Returns -[current proposals](../how-to/configure/Consensus-Protocols/Clique.md#adding-and-removing-signers). +[current proposals](../../how-to/configure/Consensus-Protocols/Clique.md#adding-and-removing-signers). #### Parameters @@ -932,7 +932,7 @@ Returns the accounts for a specified block. ### `debug_batchSendRawTransaction` -Sends a list of [signed transactions](../how-to/send-transactions.md). +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. @@ -1004,7 +1004,7 @@ None #### Returns -`result`: *array* of *objects* - list of [block objects](API-Objects.md#block-object) +`result`: *array* of *objects* - list of [block objects](objects.md#block-object) !!! example @@ -1232,7 +1232,7 @@ Returns the contract storage for the specified range. #### Returns -`result`: *object* - [range object](API-Objects.md#range-object). +`result`: *object* - [range object](objects.md#range-object). !!! example @@ -1425,7 +1425,7 @@ Reruns the transaction with the same state as when the transaction executed. #### Returns -`result`: *object* - [trace object](API-Objects.md#trace-object) +`result`: *object* - [trace object](objects.md#trace-object) !!! example @@ -1483,7 +1483,7 @@ Returns full trace of all invoked opcodes of all transactions included in the bl #### Returns -`result`: *object* - [trace object](API-Objects.md#trace-object) +`result`: *object* - [trace object](objects.md#trace-object) !!! example @@ -1541,7 +1541,7 @@ Returns full trace of all invoked opcodes of all transactions included in the bl #### Returns -`result`: *array* of *objects* - list of [trace objects](API-Objects.md#trace-object) +`result`: *array* of *objects* - list of [trace objects](objects.md#trace-object) !!! example @@ -1594,7 +1594,7 @@ Returns full trace of all invoked opcodes of all transactions included in the bl * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) * `options`: *object* - request options object with the following fields (all optional and default to `false`): @@ -1606,7 +1606,7 @@ Returns full trace of all invoked opcodes of all transactions included in the bl #### Returns -`result`: *array* of *objects* - list of [trace objects](API-Objects.md#trace-object) +`result`: *array* of *objects* - list of [trace objects](objects.md#trace-object) !!! example @@ -1653,8 +1653,8 @@ Returns full trace of all invoked opcodes of all transactions included in the bl ## `EEA` methods -The `EEA` API methods provide functionality for [private transactions](../Concepts/Privacy/Private-Transactions.md) and -[privacy groups](../Concepts/Privacy/Privacy-Groups.md). +The `EEA` API methods provide functionality for [private transactions](../../concepts/Privacy/Private-Transactions.md) and +[privacy groups](../../concepts/Privacy/Privacy-Groups.md). !!! note @@ -1665,16 +1665,16 @@ The `EEA` API methods provide functionality for [private transactions](../Concep ### `eea_sendRawTransaction` Distributes the -[private transaction](../private-networks/how-to/send-transactions/private-transactions.md), -generates the [privacy marker transaction](../Concepts/Privacy/Private-Transaction-Processing.md) +[private transaction](../../private-networks/how-to/send-transactions/private-transactions.md), +generates the [privacy marker transaction](../../concepts/Privacy/Private-Transaction-Processing.md) and submits it to the transaction pool, and returns the transaction hash of the -[privacy marker transaction](../Concepts/Privacy/Private-Transaction-Processing.md). +[privacy marker transaction](../../concepts/Privacy/Private-Transaction-Processing.md). The signed transaction passed as an input parameter includes the `privateFrom`, -[`privateFor` or `privacyGroupId`](../private-networks/how-to/send-transactions/private-transactions.md#eea-compliant-or-besu-extended-privacy), +[`privateFor` or `privacyGroupId`](../../private-networks/how-to/send-transactions/private-transactions.md#eea-compliant-or-besu-extended-privacy), and `restriction` fields. -The `gas` and `gasPrice` are used by the [privacy marker transaction](../Concepts/Privacy/Private-Transaction-Processing.md) +The `gas` and `gasPrice` are used by the [privacy marker transaction](../../concepts/Privacy/Private-Transaction-Processing.md) not the private transaction itself. To avoid exposing your private key, create signed transactions offline and send the signed @@ -1703,7 +1703,7 @@ transaction data using `eea_sendRawTransaction`. #### Returns `result`: *string* - 32-byte transaction hash of the -[Privacy Marker Transaction](../Concepts/Privacy/Private-Transaction-Processing.md) +[Privacy Marker Transaction](../../concepts/Privacy/Private-Transaction-Processing.md) !!! tip @@ -1860,16 +1860,16 @@ Invokes a contract function locally and does not change the state of the blockch You can interact with contracts using [`eth_sendRawTransaction`](#eth_sendrawtransaction) or `eth_call`. -If revert reason is enabled with [`--revert-reason-enabled`](CLI/CLI-Syntax.md#revert-reason-enabled), -the `eth_call` error response includes the [revert reason](../private-networks/how-to/send-transactions/revert-reason.md). +If revert reason is enabled with [`--revert-reason-enabled`](../cli/options.md#revert-reason-enabled), +the `eth_call` error response includes the [revert reason](../../private-networks/how-to/send-transactions/revert-reason.md). #### Parameters -`call`: *object* - [transaction call object](API-Objects.md#transaction-call-object) +`call`: *object* - [transaction call object](objects.md#transaction-call-object) `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) !!! note @@ -1962,7 +1962,7 @@ the `eth_call` error response includes the [revert reason](../private-networks/h ### `eth_chainId` -Returns the [chain ID](../Concepts/NetworkID-And-ChainID.md). +Returns the [chain ID](../../concepts/network-and-chain-id.md). #### Parameters @@ -2052,15 +2052,15 @@ and node performance. The `eth_estimateGas` call does not send a transaction. You must call [`eth_sendRawTransaction`](#eth_sendrawtransaction) to execute the transaction. -If revert reason is enabled with [`--revert-reason-enabled`](CLI/CLI-Syntax.md#revert-reason-enabled), -the `eth_estimateGas` error response includes the [revert reason](../private-networks/how-to/send-transactions/revert-reason.md). +If revert reason is enabled with [`--revert-reason-enabled`](../cli/options.md#revert-reason-enabled), +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](API-Objects.md#transaction-call-object) +`call`: *object* - [transaction call object](objects.md#transaction-call-object) #### Returns @@ -2166,11 +2166,11 @@ If blocks in the specified block range are not available, then only the fee hist * `newestBlock`: *string* - Integer representing the highest number block of the requested range or one of the string tags `latest`, `earliest`, or `pending`, as described in - [Block parameter](../how-to/use-besu-api/json-rpc.md#block-parameter). + [Block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter). #### Returns -`result`: *object* - [Fee history results object](API-Objects.md#fee-history-results-object). +`result`: *object* - [Fee history results object](objects.md#fee-history-results-object). !!! example @@ -2206,13 +2206,13 @@ Returns a percentile gas unit price for the most recent blocks, in Wei. By defau 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/CLI-Syntax.md#min-gas-price) is returned. -The value returned is restricted to values between [`--min-gas-price`](CLI/CLI-Syntax.md#min-gas-price) -and [`--api-gas-price-max`](CLI/CLI-Syntax.md#api-gas-price-max). By default, 1000 Wei and +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/CLI-Syntax.md#api-gas-price-blocks), [`--api-gas-price-percentile`](CLI/CLI-Syntax.md#api-gas-price-percentile) -, and [`--api-gas-price-max`](CLI/CLI-Syntax.md#api-gas-price-max) command line +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 @@ -2281,7 +2281,7 @@ Returns the account balance of the specified address. * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -2347,12 +2347,12 @@ Returns information about the block matching the specified block hash. * `hash`: *string* - 32-byte hash of a block -* `verbose`: *boolean* - if `true`, returns the full [transaction objects](API-Objects.md#transaction-object); +* `verbose`: *boolean* - if `true`, returns the full [transaction objects](objects.md#transaction-object); if `false`, returns the transaction hashes #### Returns -`result`: *object* - [block object](API-Objects.md#block-object), or `null` when there is no +`result`: *object* - [block object](objects.md#block-object), or `null` when there is no block !!! example @@ -2474,14 +2474,14 @@ Returns information about the block matching the specified block number. * `blockNumber`: *string* - 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) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) -* `verbose`: *boolean* - if `true`, returns the full [transaction objects](API-Objects.md#transaction-object); +* `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](API-Objects.md#block-object), or `null` when there is no +`result`: *object* - [block object](objects.md#block-object), or `null` when there is no block. !!! example @@ -2692,7 +2692,7 @@ Returns the number of transactions in a block matching the specified block numbe `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -2762,7 +2762,7 @@ Besu stores compiled smart contract code as a hexadecimal value. `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -2836,7 +2836,7 @@ Polls the specified filter and returns an array of changes that have occurred si * For filters created with `eth_newPendingTransactionFilter`, returns transaction hashes. -* For filters created with `eth_newFilter`, returns [log objects](API-Objects.md#log-object). +* For filters created with `eth_newFilter`, returns [log objects](objects.md#log-object). !!! example @@ -2916,9 +2916,9 @@ Polls the specified filter and returns an array of changes that have occurred si ### `eth_getFilterLogs` -Returns an array of [logs](../Concepts/Events-and-Logs.md) for the specified filter. +Returns an array of [logs](../../concepts/events-and-logs.md) for the specified filter. -Leave the [`--auto-log-bloom-caching-enabled`](CLI/CLI-Syntax.md#auto-log-bloom-caching-enabled) +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 @@ -2932,7 +2932,7 @@ command line option at the default value of `true` to improve log retrieval perf #### Returns -`result`: *array* of *objects* - list of [log objects](API-Objects.md#log-object) +`result`: *array* of *objects* - list of [log objects](objects.md#log-object) !!! example @@ -2980,9 +2980,9 @@ command line option at the default value of `true` to improve log retrieval perf ### `eth_getLogs` -Returns an array of [logs](../Concepts/Events-and-Logs.md) matching a specified filter object. +Returns an array of [logs](../../concepts/events-and-logs.md) matching a specified filter object. -Leave the [`--auto-log-bloom-caching-enabled`](CLI/CLI-Syntax.md#auto-log-bloom-caching-enabled) +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. !!! attention @@ -2991,11 +2991,11 @@ command line option at the default value of `true` to improve log retrieval perf #### Parameters -`filterOptions`: *object* - [filter options object](API-Objects.md#filter-options-object) +`filterOptions`: *object* - [filter options object](objects.md#filter-options-object) #### Returns -`result`: *array* of *objects* - list of [log objects](API-Objects.md#log-object) +`result`: *array* of *objects* - list of [log objects](objects.md#log-object) !!! example @@ -3116,7 +3116,7 @@ Returns miner data for the specified block. #### Returns -`result`: *object* - [miner data object](API-Objects.md#miner-data-object) +`result`: *object* - [miner data object](objects.md#miner-data-object) !!! example @@ -3165,11 +3165,11 @@ Returns miner data for the specified block. `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns -`result`: *object* - [miner data object](API-Objects.md#miner-data-object) +`result`: *object* - [miner data object](objects.md#miner-data-object) !!! example @@ -3225,7 +3225,7 @@ from untrusted sources, by using a trusted block hash. `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -3300,7 +3300,7 @@ from untrusted sources, by using a trusted block hash. ### `eth_getQuorumPayload` -When using [GoQuorum-compatible privacy](../how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md), returns the +When using [GoQuorum-compatible privacy](../../how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md), returns the [unencrypted payload from Tessera](https://docs.tessera.consensys.net/Concepts/Transaction-manager/#private-transaction-flow). #### Parameters @@ -3347,7 +3347,7 @@ Returns the value of a storage position at a specified address. `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -3419,7 +3419,7 @@ Returns transaction information for the specified block hash and transaction ind #### Returns -`result`: *object* - [transaction object](API-Objects.md#transaction-object), or `null` when there is no +`result`: *object* - [transaction object](objects.md#transaction-object), or `null` when there is no transaction !!! example @@ -3510,13 +3510,13 @@ Returns transaction information for the specified block number and transaction i `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) `index`: *string* - transaction index position #### Returns -`result`: *object* - [transaction object](API-Objects.md#transaction-object), or `null` when there is no +`result`: *object* - [transaction object](objects.md#transaction-object), or `null` when there is no transaction !!! example @@ -3613,7 +3613,7 @@ Returns transaction information for the specified transaction hash. #### Returns -`result`: *object* - [transaction object](API-Objects.md#transaction-object), or `null` when there is no +`result`: *object* - [transaction object](objects.md#transaction-object), or `null` when there is no transaction !!! example @@ -3725,7 +3725,7 @@ next account nonce not used by any pending transactions. `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -3788,7 +3788,7 @@ next account nonce not used by any pending transactions. 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 +If you enabled [revert reason](../../private-networks/how-to/send-transactions/revert-reason.md), the receipt includes available revert reasons in the response. #### Parameters @@ -3797,7 +3797,7 @@ available revert reasons in the response. #### Returns -`result`: *object* - [transaction receipt object](API-Objects.md#transaction-receipt-object), or `null` when +`result`: *object* - [transaction receipt object](objects.md#transaction-receipt-object), or `null` when there is no receipt !!! example @@ -3915,7 +3915,7 @@ Returns uncle specified by block hash and index. #### Returns -`result`: *object* - [block object](API-Objects.md#block-object) +`result`: *object* - [block object](objects.md#block-object) !!! note @@ -4029,13 +4029,13 @@ Returns uncle specified by block number and index. * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) * `uncleIndex`: *string* - index of the uncle #### Returns -`result`: *object* - [block object](API-Objects.md#block-object) +`result`: *object* - [block object](objects.md#block-object) !!! note @@ -4200,7 +4200,7 @@ Returns the number of uncles in a block matching the specified block number. `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -4422,13 +4422,13 @@ None ### `eth_newFilter` -Creates a [log filter](../Concepts/Events-and-Logs.md). +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](API-Objects.md#filter-options-object) +`filterOptions`: *object* - [filter options object](objects.md#filter-options-object) !!! note @@ -4561,9 +4561,9 @@ None ### `eth_sendRawTransaction` -Sends a [signed transaction](../how-to/send-transactions.md). +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/CLI-Syntax.md#rpc-tx-feecap) CLI option. +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). @@ -4860,7 +4860,7 @@ Filters time out when not requested by [`eth_getFilterChanges`](#eth_getfilterch ## `IBFT` 2.0 methods -The `IBFT` API methods provide access to the [IBFT 2.0](../how-to/configure/Consensus-Protocols/IBFT.md) consensus engine. +The `IBFT` API methods provide access to the [IBFT 2.0](../../how-to/configure/Consensus-Protocols/IBFT.md) consensus engine. !!! note @@ -4906,8 +4906,8 @@ Discards a proposal to [add or remove a validator] with the specified address. ### `ibft_getPendingVotes` -Returns [votes](../how-to/configure/Consensus-Protocols/IBFT.md#adding-and-removing-validators) cast in the current -[epoch](../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file). +Returns [votes](../../how-to/configure/Consensus-Protocols/IBFT.md#adding-and-removing-validators) cast in the current +[epoch](../../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file). #### Parameters @@ -4960,11 +4960,11 @@ Provides the following validator metrics for the specified range: #### Parameters * `fromBlockNumber`: *string* - integer representing a block number or the string tag `earliest` as described -in [Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +in [Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) * `toBlockNumber`: *string* - integer representing a block number or one of the string tags `latest` or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) If you specify: @@ -5070,7 +5070,7 @@ Lists the validators defined in the specified block. * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -5154,7 +5154,7 @@ The `MINER` API methods allow you to control the node’s mining operation. ### `miner_changeTargetGasLimit` -Updates the target gas limit set using the [`--target-gas-limit`](CLI/CLI-Syntax.md#target-gas-limit) +Updates the target gas limit set using the [`--target-gas-limit`](../cli/options.md#target-gas-limit) command line option. #### Parameters @@ -5233,7 +5233,7 @@ Sets the coinbase, the address for the mining rewards. ### `miner_start` Starts the mining process. To start mining, you must first specify a miner coinbase using the -[`--miner-coinbase`](CLI/CLI-Syntax.md#miner-coinbase) command line option or using [`miner_setCoinbase`](#miner_setcoinbase). +[`--miner-coinbase`](../cli/options.md#miner-coinbase) command line option or using [`miner_setCoinbase`](#miner_setcoinbase). #### Parameters @@ -5309,7 +5309,7 @@ The `NET` API methods provide network-related information. ### `net_enode` -Returns the [enode URL](../Concepts/Node-Keys.md#enode-url). +Returns the [enode URL](../../concepts/node-keys.md#enode-url). #### Parameters @@ -5317,7 +5317,7 @@ None #### Returns -`result`: *string* - [enode URL](../Concepts/Node-Keys.md#enode-url) of the node +`result`: *string* - [enode URL](../../concepts/node-keys.md#enode-url) of the node !!! example @@ -5470,7 +5470,7 @@ None ### `net_version` -Returns the [network ID](../Concepts/NetworkID-And-ChainID.md). +Returns the [network ID](../../concepts/network-and-chain-id.md). #### Parameters @@ -5536,7 +5536,7 @@ None ## `PERM` (Permissioning) methods The `PERM` API methods provide permissioning functionality. -Use these methods for [local permissioning](../how-to/Limit-Access/Local-Permissioning.md) only. +Use these methods for [local permissioning](../../how-to/Limit-Access/Local-Permissioning.md) only. !!! important @@ -5547,7 +5547,7 @@ Use these methods for [local permissioning](../how-to/Limit-Access/Local-Permiss ### `perm_addAccountsToAllowlist` Adds accounts (participants) to the -[accounts permission list](../how-to/Limit-Access/Local-Permissioning.md#account-permissioning). +[accounts permission list](../../how-to/Limit-Access/Local-Permissioning.md#account-permissioning). #### Parameters @@ -5590,9 +5590,9 @@ allowlist and including invalid account addresses.) ### `perm_addNodesToAllowlist` Adds nodes to the -[nodes allowlist](../how-to/Limit-Access/Local-Permissioning.md#node-allowlisting). +[nodes allowlist](../../how-to/Limit-Access/Local-Permissioning.md#node-allowlisting). -To use domain names in enode URLs, ensure you [enable DNS support](../Concepts/Node-Keys.md#domain-name-support) to +To use domain names in enode URLs, ensure you [enable DNS support](../../concepts/node-keys.md#domain-name-support) to avoid receiving a `request contains an invalid node` error. !!! warning @@ -5601,7 +5601,7 @@ avoid receiving a `request contains an invalid node` error. #### Parameters -`enodes`: *array* of *strings* - list of [enode URLs](../Concepts/Node-Keys.md#enode-url) +`enodes`: *array* of *strings* - list of [enode URLs](../../concepts/node-keys.md#enode-url) !!! note @@ -5640,7 +5640,7 @@ including invalid enode URLs. ### `perm_getAccountsAllowlist` Lists accounts (participants) in the -[accounts permissions list](../how-to/Limit-Access/Local-Permissioning.md#account-permissioning). +[accounts permissions list](../../how-to/Limit-Access/Local-Permissioning.md#account-permissioning). #### Parameters @@ -5680,7 +5680,7 @@ None ### `perm_getNodesAllowlist` Lists nodes in the -[nodes allowlist](../how-to/Limit-Access/Local-Permissioning.md#node-allowlisting). +[nodes allowlist](../../how-to/Limit-Access/Local-Permissioning.md#node-allowlisting). #### Parameters @@ -5688,7 +5688,7 @@ None #### Returns -`result`: *array* of *strings* - [enode URLs](../Concepts/Node-Keys.md#enode-url) of nodes in the nodes allowlist +`result`: *array* of *strings* - [enode URLs](../../concepts/node-keys.md#enode-url) of nodes in the nodes allowlist !!! example @@ -5756,7 +5756,7 @@ None ### `perm_removeAccountsFromAllowlist` Removes accounts (participants) from the -[accounts permissions list](../how-to/Limit-Access/Local-Permissioning.md#account-permissioning). +[accounts permissions list](../../how-to/Limit-Access/Local-Permissioning.md#account-permissioning). #### Parameters @@ -5799,11 +5799,11 @@ and including invalid account addresses.) ### `perm_removeNodesFromAllowlist` Removes nodes from the -[nodes allowlist](../how-to/Limit-Access/Local-Permissioning.md#node-allowlisting). +[nodes allowlist](../../how-to/Limit-Access/Local-Permissioning.md#node-allowlisting). #### Parameters -`enodes`: *array* of *strings* - list of [enode URLs](../Concepts/Node-Keys.md#enode-url) +`enodes`: *array* of *strings* - list of [enode URLs](../../concepts/node-keys.md#enode-url) !!! note @@ -5887,8 +5887,8 @@ Reloads specified plugin configuration. ## `PRIV` methods -The `PRIV` API methods provide functionality for [private transactions](../Concepts/Privacy/Private-Transactions.md) and -[privacy groups](../Concepts/Privacy/Privacy-Groups.md). +The `PRIV` API methods provide functionality for [private transactions](../../concepts/Privacy/Private-Transactions.md) and +[privacy groups](../../concepts/Privacy/Privacy-Groups.md). !!! note @@ -5904,13 +5904,13 @@ For private contracts, `priv_call` is the same as [`eth_call`](#eth_call) for pu #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../Concepts/Privacy/Privacy-Groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/Privacy/Privacy-Groups.md) -* `call`: *object* - [transaction call object](API-Objects.md#transaction-call-object) +* `call`: *object* - [transaction call object](objects.md#transaction-call-object) * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -6025,11 +6025,11 @@ Returns the state root of the specified privacy group at the specified block. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../Concepts/Privacy/Privacy-Groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/Privacy/Privacy-Groups.md) * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -6099,7 +6099,7 @@ Deletes the specified privacy group. ### `priv_distributeRawTransaction` Distributes a signed, RLP encoded -[private transaction](../private-networks/how-to/send-transactions/private-transactions.md). +[private transaction](../../private-networks/how-to/send-transactions/private-transactions.md). !!! tip @@ -6152,8 +6152,8 @@ members are A and B, a privacy group containing A, B, and C is not returned. #### Returns `result`: *array* of *objects* - privacy group objects containing only the specified members; privacy groups are -[EEA-compliant](../Concepts/Privacy/Privacy-Groups.md#enterprise-ethereum-alliance-privacy) -or [Besu-extended](../Concepts/Privacy/Privacy-Groups.md#besu-extended-privacy) with types: +[EEA-compliant](../../concepts/Privacy/Privacy-Groups.md#enterprise-ethereum-alliance-privacy) +or [Besu-extended](../../concepts/Privacy/Privacy-Groups.md#besu-extended-privacy) with types: * `LEGACY` for EEA-compliant groups. @@ -6201,12 +6201,12 @@ is stored as a hexadecimal value. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../Concepts/Privacy/Privacy-Groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/Privacy/Privacy-Groups.md) * `address`: *string* - 20-byte contract address * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, -or `pending`, as described in [Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +or `pending`, as described in [Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -6295,13 +6295,13 @@ of log objects or an empty list. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../Concepts/Privacy/Privacy-Groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/Privacy/Privacy-Groups.md) * `filterId`: *string* - filter ID #### Returns -`result`: *array* of *objects* - list of [log objects](API-Objects.md#log-object), or an empty list if nothing has +`result`: *array* of *objects* - list of [log objects](objects.md#log-object), or an empty list if nothing has changed since the last poll !!! example @@ -6345,11 +6345,11 @@ changed since the last poll ### `priv_getFilterLogs` -Returns an array of [logs](../Concepts/Events-and-Logs.md) for the specified filter for a private +Returns an array of [logs](../../concepts/events-and-logs.md) for the specified filter for a private contract. For private contracts, `priv_getFilterLogs` is the same as [`eth_getFilterLogs`](#eth_getfilterlogs) -for public contracts except there is no [automatic log bloom caching](CLI/CLI-Syntax.md#auto-log-bloom-caching-enabled) +for public contracts except there is no [automatic log bloom caching](../cli/options.md#auto-log-bloom-caching-enabled) for private contracts. !!! note @@ -6359,13 +6359,13 @@ for private contracts. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../Concepts/Privacy/Privacy-Groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/Privacy/Privacy-Groups.md) * `filterId`: *string* - filter ID #### Returns -`result`: *array* of *objects* - list of [log objects](API-Objects.md#log-object) +`result`: *array* of *objects* - list of [log objects](objects.md#log-object) !!! example @@ -6422,21 +6422,21 @@ for private contracts. ### `priv_getLogs` -Returns an array of [logs](../Concepts/Events-and-Logs.md) matching a specified filter object. +Returns an array of [logs](../../concepts/events-and-logs.md) matching a specified filter object. For private contracts, `priv_getLogs` is the same as [`eth_getLogs`](#eth_getlogs) for public contracts -except there is no [automatic log bloom caching](CLI/CLI-Syntax.md#auto-log-bloom-caching-enabled) +except there is no [automatic log bloom caching](../cli/options.md#auto-log-bloom-caching-enabled) for private contracts. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../Concepts/Privacy/Privacy-Groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/Privacy/Privacy-Groups.md) -* `filterOptions`: *object* - [filter options object](API-Objects.md#filter-options-object) +* `filterOptions`: *object* - [filter options object](objects.md#filter-options-object) #### Returns -`result`: *array* of *objects* - list of [log objects](API-Objects.md#log-object) +`result`: *array* of *objects* - list of [log objects](objects.md#log-object) !!! example @@ -6494,10 +6494,10 @@ for private contracts. ### `priv_getPrivacyPrecompileAddress` Returns the address of the -[privacy precompiled contract](../Concepts/Privacy/Private-Transaction-Processing.md). +[privacy precompiled contract](../../concepts/Privacy/Private-Transaction-Processing.md). The address is derived and based on the value of the -[`privacy-flexible-groups-enabled`](CLI/CLI-Syntax.md#privacy-flexible-groups-enabled) option. +[`privacy-flexible-groups-enabled`](../cli/options.md#privacy-flexible-groups-enabled) option. #### Parameters @@ -6542,7 +6542,7 @@ Returns the private transaction if you are a participant, otherwise, `null`. #### Returns -`result`: *object* - [private transaction object](API-Objects.md#private-transaction-object), or `null` if not +`result`: *object* - [private transaction object](objects.md#private-transaction-object), or `null` if not a participant in the private transaction !!! example @@ -6642,7 +6642,7 @@ pending transactions are not available. #### Returns -`result`: *object* - [private Transaction receipt object](API-Objects.md#private-transaction-receipt-object), +`result`: *object* - [private Transaction receipt object](objects.md#private-transaction-receipt-object), or `null` if no receipt found !!! example @@ -6690,7 +6690,7 @@ or `null` if no receipt found ### `priv_newFilter` -Creates a [log filter](../Concepts/Events-and-Logs.md) for a private contract. To poll for logs associated with the +Creates a [log filter](../../concepts/events-and-logs.md) for a private contract. To poll for logs associated with the created filter, use [`priv_getFilterChanges`](#priv_getfilterchanges). To get all logs associated with the filter, use [`priv_getFilterLogs`](#priv_getfilterlogs). @@ -6699,9 +6699,9 @@ for public contracts. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../Concepts/Privacy/Privacy-Groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/Privacy/Privacy-Groups.md) -* `filterOptions`: *object* - [filter options object](API-Objects.md#filter-options-object) +* `filterOptions`: *object* - [filter options object](objects.md#filter-options-object) !!! note @@ -6748,7 +6748,7 @@ for public contracts. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../Concepts/Privacy/Privacy-Groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/Privacy/Privacy-Groups.md) * `filterId`: *string* - filter ID @@ -6782,7 +6782,7 @@ for public contracts. ## `QBFT` methods -The `QBFT` API methods provide access to the [QBFT](../how-to/configure/Consensus-Protocols/QBFT.md) consensus engine. +The `QBFT` API methods provide access to the [QBFT](../../how-to/configure/Consensus-Protocols/QBFT.md) consensus engine. !!! note @@ -6793,7 +6793,7 @@ The `QBFT` API methods provide access to the [QBFT](../how-to/configure/Consensu ### `qbft_discardValidatorVote` Discards a proposal to -[add or remove a validator](../how-to/configure/Consensus-Protocols/QBFT.md#adding-and-removing-validators) with the specified address. +[add or remove a validator](../../how-to/configure/Consensus-Protocols/QBFT.md#adding-and-removing-validators) with the specified address. #### Parameters @@ -6829,8 +6829,8 @@ Discards a proposal to ### `qbft_getPendingVotes` -Returns [votes](../how-to/configure/Consensus-Protocols/QBFT.md#adding-and-removing-validators) cast in the current -[epoch](../how-to/configure/Consensus-Protocols/QBFT.md#genesis-file). +Returns [votes](../../how-to/configure/Consensus-Protocols/QBFT.md#adding-and-removing-validators) cast in the current +[epoch](../../how-to/configure/Consensus-Protocols/QBFT.md#genesis-file). #### Parameters @@ -6883,11 +6883,11 @@ Provides the following validator metrics for the specified range: #### Parameters * `fromBlockNumber`: *string* - integer representing a block number or the string tag `earliest` as described -in [Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +in [Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) * `toBlockNumber`: *string* - integer representing a block number or one of the string tags `latest` or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) If you specify: @@ -6993,7 +6993,7 @@ Lists the validators defined in the specified block. * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns @@ -7030,7 +7030,7 @@ Lists the validators defined in the specified block. ### `qbft_proposeValidatorVote` Proposes to -[add or remove a validator](../how-to/configure/Consensus-Protocols/QBFT.md#adding-and-removing-validators) with the specified address. +[add or remove a validator](../../how-to/configure/Consensus-Protocols/QBFT.md#adding-and-removing-validators) with the specified address. #### Parameters @@ -7078,7 +7078,7 @@ The `TRACE` API is a more concise alternative to the [`DEBUG` API](#debug-method ### `trace_block` -Provides transaction processing of [type `trace`](Trace-Types.md#trace) for the specified block. +Provides transaction processing of [type `trace`](../trace-types.md#trace) for the specified block. !!! important @@ -7090,14 +7090,14 @@ Provides transaction processing of [type `trace`](Trace-Types.md#trace) for the `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns -`result`: *array* of *objects* - list of [calls to other contracts](Trace-Types.md#trace) containing +`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/CLI-Syntax.md#revert-reason-enabled), -the returned list items include the [revert reason](../private-networks/how-to/send-transactions/revert-reason.md). +[`--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). !!! example @@ -7189,19 +7189,19 @@ Executes the given call and returns a number of possible traces for it. #### Parameters -* `call`: *object* - [transaction call object](API-Objects.md#transaction-call-object) +* `call`: *object* - [transaction call object](objects.md#transaction-call-object) * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) * `options`: *array* of *strings* - list of tracing options; tracing options are -[`trace`, `vmTrace`, and `stateDiff`](Trace-Types.md). Specify any +[`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 +`result`: *array* of *objects* - list of [calls to other contracts](../trace-types.md#trace) containing one object per call, in transaction execution order !!! example @@ -7262,16 +7262,16 @@ Performs multiple call traces on top of the same block. You can trace dependent #### Parameters * `options`: *array* of *strings* - list of tracing options; tracing options are - [`trace`, `vmTrace`, and `stateDiff`](Trace-Types.md). Specify any + [`trace`, `vmTrace`, and `stateDiff`](../trace-types.md). Specify any combination of the three options including none of them. * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in - [Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) + [Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) #### Returns -`result`: *array* of *objects* - list of [calls to other contracts](Trace-Types.md#trace) containing +`result`: *array* of *objects* - list of [calls to other contracts](../trace-types.md#trace) containing one object per call, in transaction execution order !!! example @@ -7355,11 +7355,11 @@ Returns traces matching the specified filter. #### Parameters -`traceFilterOptions`: *object* - [trace filter options object](API-Objects.md#trace-filter-options-object) +`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 +`result`: *array* of *objects* - list of [calls to other contracts](../trace-types.md#trace) containing one object per call, in transaction execution order !!! example @@ -7447,7 +7447,7 @@ Returns trace at given position. #### Returns -`result`: *array* of *objects* - list of [calls to other contracts](Trace-Types.md#trace) containing +`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 !!! example @@ -7510,12 +7510,12 @@ Traces a call to `eth_sendRawTransaction` without making the call, returning the * `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 + [`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 +`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 !!! example @@ -7570,19 +7570,19 @@ Provides transaction processing tracing per block. * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in -[Block Parameter](../how-to/use-besu-api/json-rpc.md#block-parameter) +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) * `options`: *array* of *strings* - list of tracing options; tracing options are -[`trace`, `vmTrace`, and `stateDiff`](Trace-Types.md). Specify any +[`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](API-Objects.md#transaction-trace-object) containing +`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/CLI-Syntax.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). +[`--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). !!! example @@ -7674,7 +7674,7 @@ the [`trace`](Trace-Types.md#trace) list items in the returned transaction trace ### `trace_transaction` -Provides transaction processing of [type `trace`](Trace-Types.md#trace) for the specified transaction. +Provides transaction processing of [type `trace`](../trace-types.md#trace) for the specified transaction. !!! important @@ -7688,10 +7688,10 @@ Provides transaction processing of [type `trace`](Trace-Types.md#trace) for the #### Returns -`result`: *array* of *objects* - list of [calls to other contracts](Trace-Types.md#trace) containing +`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/CLI-Syntax.md#revert-reason-enabled), -the returned list items include the [revert reason](../private-networks/how-to/send-transactions/revert-reason.md). +[`--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). !!! example @@ -7857,7 +7857,7 @@ Supported operators: #### Returns `result`: *array* of *objects* - list of objects with -[details of the pending transaction](API-Objects.md#pending-transaction-object) +[details of the pending transaction](objects.md#pending-transaction-object) !!! example @@ -7910,7 +7910,7 @@ None `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/CLI-Syntax.md#tx-pool-max-size) option to configure the maximum size. + [`--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 @@ -8072,7 +8072,7 @@ The result value is a [Keccak-256](https://keccak.team/keccak.html) hash, not th ### `rpc_modules` -Lists [enabled APIs](../how-to/use-besu-api/json-rpc.md#api-methods-enabled-by-default) +Lists [enabled APIs](../../how-to/use-besu-api/json-rpc.md#api-methods-enabled-by-default) and the version of each. #### Parameters @@ -8113,12 +8113,12 @@ None [schema]: https://github.com/hyperledger/besu/blob/master/ethereum/api/src/main/resources/schema.graphqls -[eth_sendRawTransaction or eth_call]: ../how-to/send-transactions.md#eth_call-or-eth_sendrawtransaction +[eth_sendRawTransaction or eth_call]: ../../how-to/send-transactions.md#eth_call-or-eth_sendrawtransaction [transaction]: https://ropsten.etherscan.io/tx/0xfc766a71c406950d4a4955a340a092626c35083c64c7be907060368a5e6811d6 -[add or remove a signer with the specified address]: ../how-to/configure/Consensus-Protocols/Clique.md#add-and-remove-signers -[signers for the specified block]: ../how-to/configure/Consensus-Protocols/Clique.md#adding-and-removing-signers -[add or remove a validator]: ../how-to/configure/Consensus-Protocols/IBFT.md#add-and-remove-validators -[permissions configuration file]: ../how-to/Limit-Access/Local-Permissioning.md#permissions-configuration-file -[group of sender and recipients]: ../Concepts/Privacy/Privacy-Groups.md#enterprise-ethereum-alliance-privacy +[add or remove a signer with the specified address]: ../../how-to/configure/Consensus-Protocols/Clique.md#add-and-remove-signers +[signers for the specified block]: ../../how-to/configure/Consensus-Protocols/Clique.md#adding-and-removing-signers +[add or remove a validator]: ../../how-to/configure/Consensus-Protocols/IBFT.md#add-and-remove-validators +[permissions configuration file]: ../../how-to/Limit-Access/Local-Permissioning.md#permissions-configuration-file +[group of sender and recipients]: ../../concepts/Privacy/Privacy-Groups.md#enterprise-ethereum-alliance-privacy *[EEA]: Enterprise Ethereum Alliance diff --git a/docs/Reference/API-Objects.md b/docs/reference/api/objects.md similarity index 79% rename from docs/Reference/API-Objects.md rename to docs/reference/api/objects.md index be371751ba6..e9b2bcf0d31 100644 --- a/docs/Reference/API-Objects.md +++ b/docs/reference/api/objects.md @@ -8,8 +8,8 @@ The following objects are parameters for or returned by Besu API methods. ## Block object -Returned by [`eth_getBlockByHash`](API-Methods.md#eth_getblockbyhash) and -[`eth_getBlockByNumber`](API-Methods.md#eth_getblockbynumber). +Returned by [`eth_getBlockByHash`](index.md#eth_getblockbyhash) and +[`eth_getBlockByNumber`](index.md#eth_getblockbynumber). | Key | Type | Value | |-----|:----:|-------| @@ -25,18 +25,18 @@ Returned by [`eth_getBlockByHash`](API-Methods.md#eth_getblockbyhash) and | **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. | -| **extraData** | Data | Extra data field for this block. The first 32 bytes is vanity data you can set using the [`--miner-extra-data`](../Reference/CLI/CLI-Syntax.md#miner-extra-data) command line option. Stores extra data when used with [Clique](../how-to/configure/Consensus-Protocols/Clique.md#genesis-file) and [IBFT](../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file). | +| **extraData** | Data | Extra data field for this block. The first 32 bytes is vanity data you can set using the [`--miner-extra-data`](/CLI/CLI-Syntax.md#miner-extra-data) command line option. Stores extra data when used with [Clique](../../how-to/configure/Consensus-Protocols/Clique.md#genesis-file) and [IBFT](../../how-to/configure/Consensus-Protocols/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 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/Transaction-Types.md#eip1559-transactions). This field is empty for blocks created before [EIP-1559](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md). | +| **baseFeePerGas** | Quantity | The block's [base fee per gas](../../concepts/Transactions/Transaction-Types.md#eip1559-transactions). This field is empty for blocks created before [EIP-1559](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md). | ## Fee history results object -Returned by [`eth_feeHistory`](API-Methods.md#eth_feehistory) for the requested block range. +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 | @@ -47,18 +47,18 @@ If blocks in the specified block range are not available, then only the fee hist ## Filter options object -Parameter for [`eth_newFilter`](API-Methods.md#eth_newfilter), -[`eth_getLogs`](API-Methods.md#eth_getlogs), and [`priv_getLogs`](API-Methods.md#priv_getlogs). -Used to [`filter logs`](../how-to/use-besu-api/access-logs.md). +Parameter for [`eth_newFilter`](index.md#eth_newfilter), +[`eth_getLogs`](index.md#eth_getlogs), and [`priv_getLogs`](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). | +| **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`](API-Methods.md#eth_getlogs) and [`priv_getLogs`](API-Methods.md#priv_getlogs) have an +[`eth_getLogs`](index.md#eth_getlogs) and [`priv_getLogs`](index.md#priv_getlogs) have an extra key. | Key | Type | Required/Optional | Value | @@ -67,7 +67,7 @@ extra key. ## Log object -Returned by [`eth_getFilterChanges`](API-Methods.md#eth_getfilterchanges) and [`priv_getLogs`](API-Methods.md#priv_getlogs). +Returned by [`eth_getFilterChanges`](index.md#eth_getfilterchanges) and [`priv_getLogs`](index.md#priv_getlogs). [`Transaction receipt objects`](#transaction-receipt-object) can contain an array of log objects. | Key | Type | Value | @@ -80,12 +80,12 @@ Returned by [`eth_getFilterChanges`](API-Methods.md#eth_getfilterchanges) and [` | **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). | +| **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`](API-Methods.md#eth_getminerdatabyblockhash) and -[`eth_getMinerDataByBlockNumber`](API-Methods.md#eth_getminerdatabyblocknumber). +Returned by [`eth_getMinerDataByBlockHash`](index.md#eth_getminerdatabyblockhash) and +[`eth_getMinerDataByBlockNumber`](index.md#eth_getminerdatabyblocknumber). | Key | Type | Value | |-----|:----:|-------| @@ -95,27 +95,27 @@ Returned by [`eth_getMinerDataByBlockHash`](API-Methods.md#eth_getminerdatabyblo | **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`](../Reference/CLI/CLI-Syntax.md#miner-extra-data) command line option. | +| **extraData** | Data | Extra data field for this block. The first 32 bytes is vanity data you can set using the [`--miner-extra-data`](/CLI/CLI-Syntax.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`](API-Methods.md#txpool_besupendingtransactions). +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/Transaction-Types.md#access_list-transactions) and may be used in [`EIP1559` transactions](../Concepts/Transactions/Transaction-Types.md#eip1559-transactions). | +| **accessList** | Array | (Optional) List of addresses and storage keys the transaction plans to access. Used in [`ACCESS_LIST` transactions](../../concepts/Transactions/Transaction-Types.md#access_list-transactions) and may be used in [`EIP1559` transactions](../../concepts/Transactions/Transaction-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/Transaction-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/Transaction-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/Transaction-Types.md#eip1559-transactions). | +| **gasPrice** | Quantity | (Optional) Gas price, in Wei, provided by the sender. Not used only in [`EIP1559` transactions](../../concepts/Transactions/Transaction-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/Transaction-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/Transaction-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/Transaction-Types.md). | +| **transactionType** | String | [Transaction type](../../concepts/Transactions/Transaction-Types.md). | | **value** | Quantity | Value transferred, in Wei. | | **v** | Quantity | ECDSA Recovery ID. | | **r** | Data, 32 bytes | ECDSA signature r. | @@ -123,7 +123,7 @@ Returned by [`txpool_besuPendingTransactions`](API-Methods.md#txpool_besupending ## Private transaction object -Returned by [`priv_getPrivateTransaction`](API-Methods.md#priv_getprivatetransaction). +Returned by [`priv_getPrivateTransaction`](index.md#priv_getprivatetransaction). | Key | Type | Value | |-----|:----:|-------| @@ -138,13 +138,13 @@ Returned by [`priv_getPrivateTransaction`](API-Methods.md#priv_getprivatetransac | **r** | Data, 32 bytes | ECDSA signature r. | | **s** | Data, 32 bytes | ECDSA signature s. | | **privateFrom** | Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) public key of the sender. | -| **privateFor** | Array of Data, 32 bytes each | [Tessera](https://docs.tessera.consensys.net/) public keys of recipients. Not returned if using `privacyGroupId` to [send the transaction](../Concepts/Privacy/Privacy-Groups.md#privacy-types). | -| **privacyGroupId** | Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) privacy group ID of recipients. Not returned if using `privateFor` to [send the transaction](../Concepts/Privacy/Privacy-Groups.md#privacy-types). | -| **restriction** | String | Must be [`restricted`](../Concepts/Privacy/Private-Transactions.md). | +| **privateFor** | Array of Data, 32 bytes each | [Tessera](https://docs.tessera.consensys.net/) public keys of recipients. Not returned if using `privacyGroupId` to [send the transaction](../../concepts/Privacy/Privacy-Groups.md#privacy-types). | +| **privacyGroupId** | Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) privacy group ID of recipients. Not returned if using `privateFor` to [send the transaction](../../concepts/Privacy/Privacy-Groups.md#privacy-types). | +| **restriction** | String | Must be [`restricted`](../../concepts/Privacy/Private-Transactions.md). | ## Range object -Returned by [`debug_storageRangeAt`](API-Methods.md#debug_storagerangeat). +Returned by [`debug_storageRangeAt`](index.md#debug_storagerangeat). | Key | Type | Value | |-----|:----:|-------| @@ -169,10 +169,10 @@ Log information returned as part of the [Trace object](#trace-object). ## Trace object -Returned by [`debug_traceBlock`](API-Methods.md#debug_traceblock), -[`debug_traceBlockByHash`](API-Methods.md#debug_traceblockbyhash), -[`debug_traceBlockByNumber`](API-Methods.md#debug_traceblockbynumber), and -[`debug_traceTransaction`](API-Methods.md#debug_tracetransaction). +Returned by [`debug_traceBlock`](index.md#debug_traceblock), +[`debug_traceBlockByHash`](index.md#debug_traceblockbyhash), +[`debug_traceBlockByNumber`](index.md#debug_traceblockbynumber), and +[`debug_traceTransaction`](index.md#debug_tracetransaction). | Key | Type | Value | |-----|:----:|-------| @@ -183,7 +183,7 @@ Returned by [`debug_traceBlock`](API-Methods.md#debug_traceblock), ## Trace filter options object -Parameter for [`trace_filter`](API-Methods.md#trace_filter). All parameters are optional. +Parameter for [`trace_filter`](index.md#trace_filter). All parameters are optional. | Key | Type | Value | |-----|:----:|-------| @@ -196,30 +196,30 @@ Parameter for [`trace_filter`](API-Methods.md#trace_filter). All parameters are ## Transaction object -Returned by [`eth_getTransactionByHash`](API-Methods.md#eth_gettransactionbyhash), -[`eth_getTransactionByBlockHashAndIndex`](API-Methods.md#eth_gettransactionbyblockhashandindex), +Returned by [`eth_getTransactionByHash`](index.md#eth_gettransactionbyhash), +[`eth_getTransactionByBlockHashAndIndex`](index.md#eth_gettransactionbyblockhashandindex), and -[`eth_getTransactionByBlockNumberAndIndex`](API-Methods.md#eth_gettransactionbyblocknumberandindex). +[`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/Transaction-Types.md#access_list-transactions) and may be used in [`EIP1559` transactions](../Concepts/Transactions/Transaction-Types.md#eip1559-transactions). | +| **accessList** | Array | (Optional) List of addresses and storage keys the transaction plans to access. Used in [`ACCESS_LIST` transactions](../../concepts/Transactions/Transaction-Types.md#access_list-transactions) and may be used in [`EIP1559` transactions](../../concepts/Transactions/Transaction-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/NetworkID-And-ChainID.md). | +| **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/Transaction-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/Transaction-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/Transaction-Types.md#eip1559-transactions). | +| **gasPrice** | Quantity | (Optional) Gas price, in Wei, provided by the sender. Used only in non-[`EIP1559`](../../concepts/Transactions/Transaction-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/Transaction-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/Transaction-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](../Concepts/Privacy/Privacy-Overview.md), it's a pointer to the transaction location in [Tessera](https://docs.tessera.consensys.net/). | +| **input** | Data | Data sent with the transaction to create or invoke a contract. For [private transactions](../../concepts/Privacy/Privacy-Overview.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. | | **publicKey** | Data, 64 bytes | Public key of the sender. | | **raw** | Data | This signed transaction in Recursive Length Prefix (RLP) encoded form. | | **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/Transaction-Types.md). | +| **transactionType** | String | [Transaction type](../../concepts/Transactions/Transaction-Types.md). | | **value** | Quantity | Value transferred, in Wei. | | **v** | Quantity | ECDSA Recovery ID. | | **r** | Data, 32 bytes | ECDSA signature r. | @@ -227,8 +227,8 @@ and ## Transaction call object -Parameter for [`eth_call`](API-Methods.md#eth_call) and -[`eth_estimateGas`](API-Methods.md#eth_estimategas). +Parameter for [`eth_call`](index.md#eth_call) and +[`eth_estimateGas`](index.md#eth_estimategas). All transaction call object parameters are optional. @@ -237,16 +237,16 @@ All transaction call object parameters are optional. | **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/Transaction-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/Transaction-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/Transaction-Types.md#eip1559-transactions). If used, must specify `maxPriorityFeePerGas`. | +| **gasPrice** | Quantity, Integer | Gas price, in Wei, provided by the sender. The default is `0`. Used only in non-[`EIP1559`](../../concepts/Transactions/Transaction-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/Transaction-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/Transaction-Types.md#eip1559-transactions). If used, must specify `maxPriorityFeePerGas`. | | **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). | | **strict** | Tag | If `true`, checks that the `from` account’s ether balance is sufficient to cover the transaction and gas fee. If `false`, the `gasPrice` and `baseFee` are set to zero, in order to simulate a transaction without enforcing a balance check. The default is `false`. | ## Transaction receipt object -Returned by [`eth_getTransactionReceipt`](API-Methods.md#eth_gettransactionreceipt). +Returned by [`eth_getTransactionReceipt`](index.md#eth_gettransactionreceipt). | Key | Type | Value | |-----|:----:|-------| @@ -254,7 +254,7 @@ Returned by [`eth_getTransactionReceipt`](API-Methods.md#eth_gettransactionrecei | **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/Transaction-Types.md#eip1559-transactions) from the sender's account. | +| **effectiveGasPrice** | Quantity | The [actual value per gas deducted](../../concepts/Transactions/Transaction-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. | @@ -263,8 +263,8 @@ Returned by [`eth_getTransactionReceipt`](API-Methods.md#eth_gettransactionrecei | **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/Transaction-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](../Reference/CLI/CLI-Syntax.md#revert-reason-enabled). | +| **transactionType** | String | [Transaction type](../../concepts/Transactions/Transaction-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/CLI-Syntax.md#revert-reason-enabled). | !!!note @@ -277,19 +277,19 @@ Returned by [`eth_getTransactionReceipt`](API-Methods.md#eth_gettransactionrecei ## Transaction trace object -Returned by [`trace_replayBlockTransactions`](API-Methods.md#trace_replayblocktransactions). +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). | +| **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. | ## Private transaction receipt object -Returned by [`priv_getTransactionReceipt`](API-Methods.md#priv_gettransactionreceipt). +Returned by [`priv_getTransactionReceipt`](index.md#priv_gettransactionreceipt). | Key | Type | Value | |-----|:----:|-------| @@ -300,7 +300,7 @@ Returned by [`priv_getTransactionReceipt`](API-Methods.md#priv_gettransactionrec | **logs** | Array | Array of [log objects](#log-object) generated by this private transaction. | | **to** | Data, 20 bytes | Address of the receiver, if sending ether, otherwise, null. | | **transactionIndex** | Quantity, Integer | Index position of transaction in the block. | -| **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](../Reference/CLI/CLI-Syntax.md#revert-reason-enabled). | +| **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/CLI-Syntax.md#revert-reason-enabled). | | **output** | Data | RLP-encoded return value of a contract call if a value returns, otherwise, `null`. | | **commitmentHash** | Data, 32 bytes | Hash of the privacy marker transaction. | | **status** | Quantity | Either `0x1` (success) or `0x0` (failure). | diff --git a/docs/Reference/CLI/CLI-Syntax.md b/docs/reference/cli/options.md similarity index 96% rename from docs/Reference/CLI/CLI-Syntax.md rename to docs/reference/cli/options.md index ae09f13437f..c01514bdfbc 100644 --- a/docs/Reference/CLI/CLI-Syntax.md +++ b/docs/reference/cli/options.md @@ -63,7 +63,7 @@ besu --Tab+Tab api-gas-price-blocks=50 ``` -Number of blocks back from the head block to examine for [`eth_gasPrice`](../API-Methods.md#eth_gasprice). +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` @@ -92,7 +92,7 @@ The default is `100`. api-gas-price-max=20000 ``` -Maximum gas price to return for [`eth_gasPrice`](../API-Methods.md#eth_gasprice), regardless of the +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` @@ -121,10 +121,10 @@ percentile value measured. The default is `500000000000` (500 GWei). api-gas-price-percentile=75 ``` -Percentile value to measure for [`eth_gasPrice`](../API-Methods.md#eth_gasprice). +Percentile value to measure for [`eth_gasPrice`](../api/index.md#eth_gasprice). The default is `50.0`. -For [`eth_gasPrice`](../API-Methods.md#eth_gasprice), to return the: +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`. @@ -156,8 +156,8 @@ For [`eth_gasPrice`](../API-Methods.md#eth_gasprice), to return the: ``` Enables or disables automatic log bloom caching. APIs such as -[`eth_getLogs`](../API-Methods.md#eth_getlogs) and -[`eth_getFilterLogs`](../API-Methods.md#eth_getfilterlogs) use the cache for improved performance. +[`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 @@ -226,8 +226,8 @@ You can specify the banned node IDs with or without the `0x` prefix. bonsai-maximum-back-layers-to-load=256 ``` -When using [Bonsai Tries](../../Concepts/Data-Storage-Formats.md#bonsai-tries), the -[maximum number of layers back](../../Concepts/Data-Storage-Formats.md#accessing-data) Bonsai can go to reconstruct a +When using [Bonsai Tries](../../public-networks/concepts/data-storage-formats.md#bonsai-tries), the +[maximum number of layers back](../../public-networks/concepts/data-storage-formats.md#accessing-data) Bonsai can go to reconstruct a historical state. The default is 512. @@ -257,7 +257,7 @@ The default is 512. 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 +A list of comma-separated [enode URLs](../../concepts/node-keys.md#enode-url) for [P2P discovery bootstrap](../../private-networks/how-to/connect/bootnodes.md). When connecting to Mainnet or public testnets, the default is a predefined list of enode URLs. @@ -412,7 +412,7 @@ The path to the Besu data directory. The default is the directory you installed data-storage-format="BONSAI" ``` -The [data storage format](../../Concepts/Data-Storage-Formats.md) to use. +The [data storage format](../../public-networks/concepts/data-storage-formats.md) to use. Set to `BONSAI` for Bonsai Tries or `FOREST` for Forest of Tries. The default is `FOREST`. @@ -560,11 +560,11 @@ The default is `false` (authentication is enabled by default). engine-jwt-secret="jwt.hex" ``` -Shared secret used to authenticate [consensus clients](../../Concepts/Merge.md) when using the Engine JSON-RPC API (both +Shared secret used to authenticate [consensus clients](../../public-networks/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](../../Tutorials/Merge-Testnet.md#prerequisites). +See an [example of how to generate this](../../public-networks/tutorials/merge-testnet.md#prerequisites). ### `engine-rpc-port` @@ -1063,7 +1063,7 @@ Other categories are `KVSTORE_ROCKSDB`, `KVSTORE_PRIVATE_ROCKSDB`, `KVSTORE_ROCK `KVSTORE_PRIVATE_ROCKSDB_STATS`. Categories containing `PRIVATE` track metrics when you enable -[private transactions](../../Concepts/Privacy/Privacy-Overview.md). +[private transactions](../../concepts/Privacy/Privacy-Overview.md). ### `metrics-enabled` @@ -1399,7 +1399,7 @@ to fill the remaining space. The default is 0.8. 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-Methods.md#miner_start) JSON-RPC API method. +[`miner_start`](../api/index.md#miner_start) JSON-RPC API method. !!!note @@ -1574,13 +1574,13 @@ The port of the stratum mining service. The default is `8008`. You must ``` The minimum price a transaction offers to include it in a mined block. The minimum gas price is the -lowest value [`eth_gasPrice`](../API-Methods.md#eth_gasprice) can return. The default is 1000 +lowest value [`eth_gasPrice`](../api/index.md#eth_gasprice) can return. The default is 1000 Wei. !!! important In a [free gas network](../../how-to/configure/FreeGas.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-Methods.md#eth_gasprice). + You can query a node's gas configuration using [`eth_gasPrice`](../api/index.md#eth_gasprice). ### `nat-method` @@ -1659,8 +1659,8 @@ Possible values are: | Network | Chain | Type | Default Sync Mode | Description | |:----------|:------|:------------|:-------------------|:---------------------------------------------------------------| | `mainnet` | ETH | Production | [FAST](#sync-mode) | The main network | -| `kiln` | ETH | Test | [FAST](#sync-mode) | A PoS network similar to the main Ethereum network post-[Merge](../../Concepts/Merge.md) | -| `ropsten` | ETH | Test | [FAST](#sync-mode) | A PoS network similar to the main Ethereum network post-[Merge](../../Concepts/Merge.md) | +| `kiln` | ETH | Test | [FAST](#sync-mode) | A PoS network similar to the main Ethereum network post-[Merge](../../public-networks/concepts/the-merge.md) | +| `ropsten` | ETH | Test | [FAST](#sync-mode) | A PoS network similar to the main Ethereum network post-[Merge](../../public-networks/concepts/the-merge.md) | | `rinkeby` | ETH | Test | [FAST](#sync-mode) | A PoA network using Clique | | `goerli` | ETH | Test | [FAST](#sync-mode) | A PoA network using Clique | | `sepolia` | ETH | Test | [FAST](#sync-mode) | A PoW network | @@ -1705,7 +1705,7 @@ Possible values are: network-id="8675309" ``` -The [P2P network identifier](../../Concepts/NetworkID-And-ChainID.md). +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. @@ -1964,7 +1964,7 @@ Enables or disables file-based account level permissions. The default is `false` ``` The contract address for -[onchain account permissioning](../../Concepts/Permissioning/Onchain-Permissioning.md). +[onchain account permissioning](../../concepts/Permissioning/Onchain-Permissioning.md). ### `permissions-accounts-contract-enabled` @@ -1993,7 +1993,7 @@ The contract address for ``` Enables or disables contract-based -[onchain account permissioning](../../Concepts/Permissioning/Onchain-Permissioning.md). The default +[onchain account permissioning](../../concepts/Permissioning/Onchain-Permissioning.md). The default is `false`. ### `permissions-nodes-config-file` @@ -2086,7 +2086,7 @@ Enables or disables file-based node level permissions. The default is `false`. ``` The contract address for -[onchain node permissioning](../../Concepts/Permissioning/Onchain-Permissioning.md). +[onchain node permissioning](../../concepts/Permissioning/Onchain-Permissioning.md). ### `permissions-nodes-contract-enabled` @@ -2115,7 +2115,7 @@ The contract address for ``` Enables or disables contract-based -[onchain node permissioning](../../Concepts/Permissioning/Onchain-Permissioning.md). The default is +[onchain node permissioning](../../concepts/Permissioning/Onchain-Permissioning.md). The default is `false`. ### `permissions-nodes-contract-version` @@ -2173,7 +2173,7 @@ The default is 1. privacy-enabled=false ``` -Enables or disables [private transactions](../../Concepts/Privacy/Privacy-Overview.md). The default +Enables or disables [private transactions](../../concepts/Privacy/Privacy-Overview.md). The default is `false`. !!! important @@ -2250,7 +2250,7 @@ with a different randomly generated key. privacy-multi-tenancy-enabled=false ``` -Enables or disables [multi-tenancy](../../Concepts/Privacy/Multi-Tenancy.md) for private +Enables or disables [multi-tenancy](../../concepts/Privacy/Multi-Tenancy.md) for private transactions. The default is `false`. ### `privacy-flexible-groups-enabled` @@ -2279,7 +2279,7 @@ transactions. The default is `false`. privacy-flexible-groups-enabled=true ``` -Enables or disables [flexible privacy groups](../../Concepts/Privacy/Flexible-PrivacyGroups.md). The default is `false`. +Enables or disables [flexible privacy groups](../../concepts/Privacy/Flexible-PrivacyGroups.md). The default is `false`. Deprecated syntax for this option is `--privacy-onchain-groups-enabled`. @@ -2461,7 +2461,7 @@ The path to the file containing the hostnames, ports, and SHA256 certificate fin ``` The URL on which the -[Tessera node](../../Tutorials/Privacy/Configuring-Privacy.md#3-create-tessera-configuration-files) is +[Tessera node](../../tutorials/Privacy/Configuring-Privacy.md#3-create-tessera-configuration-files) is running. ### `pruning-block-confirmations` @@ -2494,7 +2494,7 @@ The minimum number of confirmations on a block before marking of newly-stored or nodes that cannot be pruned. The default is 10. !!! important - Using pruning with [private transactions](../../Concepts/Privacy/Privacy-Overview.md) is not + Using pruning with [private transactions](../../concepts/Privacy/Privacy-Overview.md) is not supported. ### `pruning-blocks-retained` @@ -2526,7 +2526,7 @@ nodes that cannot be pruned. The default is 10. The minimum number of recent blocks to keep the entire world state for. The default is 1024. !!! important - Using pruning with [private transactions](../../Concepts/Privacy/Privacy-Overview.md) is not + Using pruning with [private transactions](../../concepts/Privacy/Privacy-Overview.md) is not supported. ### `pruning-enabled` @@ -2555,7 +2555,7 @@ The minimum number of recent blocks to keep the entire world state for. The defa pruning-enabled=true ``` -Enables [pruning](../../Concepts/Pruning.md) to reduce storage required for the world state. +Enables [pruning](../../concepts/Pruning.md) to reduce storage required for the world state. The default is `false`. !!! important @@ -2750,8 +2750,8 @@ rejects that peer. ``` Enables or disables including the [revert reason](../../private-networks/how-to/send-transactions/revert-reason.md) in the -transaction receipt, [`eth_estimateGas`](../API-Methods.md#eth_estimategas) error response, -[`eth_call`](../API-Methods.md#eth_call) error response, and [`trace`](../Trace-Types.md#trace) response. +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 @@ -3351,7 +3351,7 @@ A list of comma-separated TLS protocols to support. The default is `DEFAULT_TLS_ ``` The maximum transaction fee (in Wei) accepted for transactions submitted through the -[`eth_sendRawTransaction`](../API-Methods.md#eth_sendrawtransaction) RPC. The default is 1000000000000000000 (1 ether). +[`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. @@ -3801,9 +3801,9 @@ the block creator how to set the gas limit in its block. If the values are the s 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](../Config-Items.md#genesis-block-parameters). +specified in the [genesis file](../genesis-items.md#genesis-block-parameters). -Use the [`miner_changeTargetGasLimit`](../API-Methods.md#miner_changetargetgaslimit) API to update +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. @@ -3952,7 +3952,7 @@ Prints version information and exit. [push gateway integration]: ../../how-to/monitor/metrics.md#running-prometheus-with-besu-in-push-mode [accounts permissions configuration file]: ../../how-to/Limit-Access/Local-Permissioning.md#permissions-configuration-file [nodes permissions configuration file]: ../../how-to/Limit-Access/Local-Permissioning.md#permissions-configuration-file -[account permissioning]: ../../Concepts/Permissioning/Permissioning-Overview.md#account-permissioning -[TLS on communication with the Private Transaction Manager]: ../../Concepts/Privacy/Privacy-Overview.md#private-transaction-manager +[account permissioning]: ../../concepts/Permissioning/Permissioning-Overview.md#account-permissioning +[TLS on communication with the Private Transaction Manager]: ../../concepts/Privacy/Privacy-Overview.md#private-transaction-manager [JWT provider's public key file]: ../../how-to/use-besu-api/authenticate.md#jwt-public-key-authentication [plugin]: ../Plugin-API-Interfaces.md diff --git a/docs/Reference/CLI/CLI-Subcommands.md b/docs/reference/cli/subcommands.md similarity index 94% rename from docs/Reference/CLI/CLI-Subcommands.md rename to docs/reference/cli/subcommands.md index d3a273c48b2..76dc570a62b 100644 --- a/docs/Reference/CLI/CLI-Subcommands.md +++ b/docs/reference/cli/subcommands.md @@ -105,7 +105,7 @@ Provides node public key related actions. ``` 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`](CLI-Syntax.md#node-private-key-file) option. +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`. @@ -130,7 +130,7 @@ The default elliptic curve used for the key is `secp256k1`. Use the `--ec-curve` ``` 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`](CLI-Syntax.md#node-private-key-file) option. +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`. @@ -174,8 +174,8 @@ Provides operator actions. besu operator generate-blockchain-config --config-file=config.json --to=myNetworkFiles ``` Generates an -[IBFT 2.0](../../Tutorials/Private-Network/Create-IBFT-Network.md) or -[QBFT](../../Tutorials/Private-Network/Create-QBFT-Network.md) genesis file. +[IBFT 2.0](../../tutorials/Private-Network/Create-IBFT-Network.md) or +[QBFT](../../tutorials/Private-Network/Create-QBFT-Network.md) genesis file. The configuration file has two nested JSON nodes. The first is the `genesis` property defining the [IBFT 2.0](../../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file) or @@ -212,7 +212,7 @@ performance. indexed. To generate cached log bloom indexes while the node is running, use the -[`admin_generateLogBloomCache`](../API-Methods.md#admin_generatelogbloomcache) API. +[`admin_generateLogBloomCache`](../api/index.md#admin_generatelogbloomcache) API. ## `rlp` @@ -319,11 +319,11 @@ server. The command accepts the following command line options: -* [\--data-path](./CLI-Syntax.md#data-path) -* [\--host-allowlist](./CLI-Syntax.md#host-allowlist) -* [\--rpc-http-host](./CLI-Syntax.md#rpc-http-host) -* [\--rpc-http-port](./CLI-Syntax.md#rpc-http-port) -* [\--logging](./CLI-Syntax.md#logging) +* [\--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) ## `validate-config` diff --git a/docs/Reference/Responsible-Disclosure.md b/docs/reference/disclosure.md similarity index 94% rename from docs/Reference/Responsible-Disclosure.md rename to docs/reference/disclosure.md index ffae016a854..cc512df4dc1 100644 --- a/docs/Reference/Responsible-Disclosure.md +++ b/docs/reference/disclosure.md @@ -2,7 +2,7 @@ description: Hyperledger Besu responsible disclosure statement --- -# Responsible disclosure policy +# 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 diff --git a/docs/Reference/Evm-Tool.md b/docs/reference/evm-tool.md similarity index 99% rename from docs/Reference/Evm-Tool.md rename to docs/reference/evm-tool.md index 07cdf1e1d5f..9b360d3dda7 100644 --- a/docs/Reference/Evm-Tool.md +++ b/docs/reference/evm-tool.md @@ -186,7 +186,7 @@ For memory heavy scripts, setting this option may reduce the volume of JSON outp The Besu Genesis file to use when evaluating the EVM. Most useful are the `alloc` items that set up accounts and their stored memory states. -For a complete description of this file see [Genesis file items](Config-Items.md). +For a complete description of this file see [Genesis file items](genesis-items.md). `--prestate` is a deprecated alternative option name. diff --git a/docs/Reference/Config-Items.md b/docs/reference/genesis-items.md similarity index 93% rename from docs/Reference/Config-Items.md rename to docs/reference/genesis-items.md index d29cce38543..2745cc21c70 100644 --- a/docs/Reference/Config-Items.md +++ b/docs/reference/genesis-items.md @@ -4,7 +4,7 @@ description: Configuration items specified in the Hyperledger Besu genesis file # Genesis file items -The [Besu genesis file](../how-to/configure/Genesis-File.md) contains [network configuration items](#configuration-items) +The [Besu genesis file](../concepts/genesis-file.md) contains [network configuration items](#configuration-items) and [genesis block parameters](#genesis-block-parameters). ## Configuration items @@ -14,12 +14,12 @@ Network configuration items are specified in the genesis file in the `config` ob | Item | Description | |---------------------|-:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Milestone blocks | [Milestone blocks for the network](#milestone-blocks). | -| `chainID` | [Chain ID for the network](../Concepts/NetworkID-And-ChainID.md). | -| `ethash` | Specifies network uses [Ethash](../Concepts/Consensus-Protocols/Overview-Consensus.md) and contains [`fixeddifficulty`](#fixed-difficulty). | +| `chainID` | [Chain ID for the network](../concepts/network-and-chain-id.md). | +| `ethash` | Specifies network uses [Ethash](../concepts/Consensus-Protocols/Overview-Consensus.md) and contains [`fixeddifficulty`](#fixed-difficulty). | | `clique` | Specifies network uses [Clique](../how-to/configure/Consensus-Protocols/Clique.md) and contains [Clique configuration items](../how-to/configure/Consensus-Protocols/Clique.md#genesis-file). | | `ibft2` | Specifies network uses [IBFT 2.0](../how-to/configure/Consensus-Protocols/IBFT.md) and contains [IBFT 2.0 configuration items](../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file). | | `qbft` | Specifies network uses [QBFT](../how-to/configure/Consensus-Protocols/QBFT.md) and contains [QBFT configuration items](../how-to/configure/Consensus-Protocols/QBFT.md#genesis-file). | -| `transitions` | Specifies block at which to [change IBFT 2.0 or QBFT validators](../how-to/Troubleshoot/Add-Validators-Without-Voting.md). | +| `transitions` | Specifies block at which to [change IBFT 2.0 or QBFT validators](../how-to/troubleshoot/Add-Validators-Without-Voting.md). | | `contractSizeLimit` | Maximum contract size in bytes. Specify in [free gas networks](../how-to/configure/FreeGas.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`. | | `isQuorum` | Set to `true` to allow [interoperable private transactions] between Hyperledger Besu and [GoQuorum clients] using the Tessera private transaction manager. | @@ -122,7 +122,7 @@ the network's difficulty constant and override the `difficulty` parameter from t ## Discovery configuration items -Use the `discovery` configuration items to specify the [`bootnodes`](CLI/CLI-Syntax.md#bootnodes) and [`discovery-dns-url`](CLI/CLI-Syntax.md#discovery-dns-url) +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. diff --git a/docs/Reference/Projects-Using-Besu.md b/docs/reference/projects-using-besu.md similarity index 100% rename from docs/Reference/Projects-Using-Besu.md rename to docs/reference/projects-using-besu.md diff --git a/docs/Reference/Trace-Types.md b/docs/reference/trace-types.md similarity index 90% rename from docs/Reference/Trace-Types.md rename to docs/reference/trace-types.md index c68456b7244..8ca71edd2af 100644 --- a/docs/Reference/Trace-Types.md +++ b/docs/reference/trace-types.md @@ -4,7 +4,7 @@ description: Transaction trace types # Transaction trace types -When [tracing transactions](../how-to/Troubleshoot/Trace-Transactions.md), the trace type options are +When [tracing transactions](../how-to/troubleshoot/Trace-Transactions.md), the trace type options are [`trace`](#trace), [`vmTrace`](#vmtrace), and [`stateDiff`](#statediff). ## trace @@ -156,17 +156,17 @@ An absent value is distinct from zero when creating accounts or clearing storage ## 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): +[ad-hoc tracing API methods](../how-to/troubleshoot/Trace-Transactions.md#ad-hoc-tracing-apis): -* [`trace_call`](API-Methods.md#trace_call) -* [`trace_callMany`](API-Methods.md#trace_callmany) -* [`trace_rawTransaction`](API-Methods.md#trace_rawtransaction) -* [`trace_replayBlockTransactions`](API-Methods.md#trace_replayblocktransactions) +* [`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): +[transaction-trace filtering API methods](../how-to/troubleshoot/Trace-Transactions.md#transaction-trace-filtering-apis): -* [`trace_block`](API-Methods.md#trace_block) -* [`trace_filter`](API-Methods.md#trace_filter) -* [`trace_get`](API-Methods.md#trace_get) -* [`trace_transaction`](API-Methods.md#trace_transaction) +* [`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/docs/Reference/web3js-quorum.md b/docs/reference/web3js-quorum.md similarity index 100% rename from docs/Reference/web3js-quorum.md rename to docs/reference/web3js-quorum.md diff --git a/docs/Tutorials/Contracts/Account-Funds-Transfers.md b/docs/tutorials/Contracts/Account-Funds-Transfers.md similarity index 99% rename from docs/Tutorials/Contracts/Account-Funds-Transfers.md rename to docs/tutorials/Contracts/Account-Funds-Transfers.md index 27549b12528..9dbf34f5439 100644 --- a/docs/Tutorials/Contracts/Account-Funds-Transfers.md +++ b/docs/tutorials/Contracts/Account-Funds-Transfers.md @@ -17,7 +17,7 @@ This tutorial shows you how to transfer funds (ETH) between accounts in a transa The simplest way to transfer funds between externally-owned accounts is using [`eth_sendSignedTransaction`](https://web3js.readthedocs.io/en/v1.2.11/web3-eth.html#sendsignedtransaction). -This example uses `eth_sendSignedTransaction` and one of the [test accounts](../../Reference/Accounts-for-Testing.md) +This example uses `eth_sendSignedTransaction` and one of the [test accounts](../../reference/Accounts-for-Testing.md) to transfer funds to a newly created account. !!! critical "Do not use the test accounts on Ethereum Mainnet or any production network." diff --git a/docs/Tutorials/Contracts/Calling-Contract-Functions.md b/docs/tutorials/Contracts/Calling-Contract-Functions.md similarity index 100% rename from docs/Tutorials/Contracts/Calling-Contract-Functions.md rename to docs/tutorials/Contracts/Calling-Contract-Functions.md diff --git a/docs/Tutorials/Contracts/Deploying-Contracts.md b/docs/tutorials/Contracts/Deploying-Contracts.md similarity index 97% rename from docs/Tutorials/Contracts/Deploying-Contracts.md rename to docs/tutorials/Contracts/Deploying-Contracts.md index ce69f4976ae..4af1a9621c3 100644 --- a/docs/Tutorials/Contracts/Deploying-Contracts.md +++ b/docs/tutorials/Contracts/Deploying-Contracts.md @@ -152,7 +152,7 @@ Refer to the [EthSigner documentation](https://docs.ethsigner.consensys.net/) fo Pass the following parameters to the [`eth_sendTransaction`](https://docs.ethsigner.consensys.net/Reference/API-Methods/#eth_sendtransaction) call to EthSigner; EthSigner then converts the request to an -[`eth_sendRawTransaction`](../../Reference/API-Methods.md#eth_sendrawtransaction) call that Besu uses: +[`eth_sendRawTransaction`](../../reference/api/index.md#eth_sendrawtransaction) call that Besu uses: * `to` - address of the receiver. To deploy a contract, set to `null`. * `from` - address of the sender account. For example `0x9b790656b9ec0db1936ed84b3bea605873558198`. @@ -186,9 +186,9 @@ Make the request using `eth_sendTransaction`: ## Using `eea_sendRawTransaction` for private contracts with web3js-quorum -To deploy a private contract to another node or [privacy group](../../Concepts/Privacy/Privacy-Groups.md) member, use the +To deploy a private contract to another node or [privacy group](../../concepts/Privacy/Privacy-Groups.md) member, use the [web3js-quorum](https://www.npmjs.com/package/web3js-quorum) library and -the [`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction) API call. +the [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) API call. You must use this API call instead of [`eth_sendTransaction`](https://ethereum.github.io/execution-apis/api-documentation) because Hyperledger Besu keeps account management separate for stronger security. @@ -258,9 +258,9 @@ the contract's address. This web3js-eea library will be deprecated on December 31, 2021. Please use the [web3js-quorum](https://www.npmjs.com/package/web3js-quorum) library instead and refer to the previous section. -To deploy a private contract to another [privacy group](../../Concepts/Privacy/Privacy-Groups.md) member, use the +To deploy a private contract to another [privacy group](../../concepts/Privacy/Privacy-Groups.md) member, use the [web3js-quorum](https://consensys.github.io/web3js-quorum/latest/index.html) library and -the [`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction) API call. +the [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) API call. You must use this API call instead of [`eth_sendTransaction`](https://ethereum.github.io/execution-apis/api-documentation) because Hyperledger Besu keeps account management separate for stronger security. diff --git a/docs/Tutorials/Developer-Quickstart.md b/docs/tutorials/Developer-Quickstart.md similarity index 97% rename from docs/Tutorials/Developer-Quickstart.md rename to docs/tutorials/Developer-Quickstart.md index a82794e07b0..33e25a150a5 100644 --- a/docs/Tutorials/Developer-Quickstart.md +++ b/docs/tutorials/Developer-Quickstart.md @@ -43,7 +43,7 @@ npx quorum-dev-quickstart Follow the prompts displayed to run Hyperledger Besu and [logging with ELK](../private-networks/how-to/monitor/elastic-stack.md). Enter `n` for [Codefi Orchestrate](https://docs.orchestrate.consensys.net/en/stable/) and -[private transactions](../Concepts/Privacy/Privacy-Overview.md). +[private transactions](../concepts/Privacy/Privacy-Overview.md). !!! note @@ -199,7 +199,7 @@ or skip ahead to [Create a transaction using MetaMask](#create-a-transaction-usi Peers are the other nodes connected to the node receiving the JSON-RPC request. -Poll the peer count using [`net_peerCount`](../Reference/API-Methods.md#net_peercount): +Poll the peer count using [`net_peerCount`](../reference/api/index.md#net_peercount): ```bash curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' http://localhost:8545 @@ -217,7 +217,7 @@ The result indicates that there are four peers (the validators): ### Request the most recent block number -Call [`eth_blockNumber`](../Reference/API-Methods.md#eth_blockNumber) to retrieve the number of the most recently +Call [`eth_blockNumber`](../reference/api/index.md#eth_blockNumber) to retrieve the number of the most recently synchronized block: ```bash @@ -581,7 +581,7 @@ If the `nodekey.pub` is `4540ea...9c1d78` and the IP address is `172.16.239.41`, `"enode://4540ea...9c1d78@172.16.239.41:30303"`, which must be added to both files. Alternatively, call the -[`perm_addNodesToAllowlist`](../Reference/API-Methods.md#perm_addnodestoallowlist) API method on existing nodes to add +[`perm_addNodesToAllowlist`](../reference/api/index.md#perm_addnodestoallowlist) API method on existing nodes to add the new node without restarting. !!! note @@ -595,7 +595,7 @@ the new node without restarting. 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](../Reference/API-Methods.md#perm_addnodestoallowlist). +or via [RPC API calls](../reference/api/index.md#perm_addnodestoallowlist). diff --git a/docs/Tutorials/Kubernetes/Create-Cluster.md b/docs/tutorials/Kubernetes/Create-Cluster.md similarity index 100% rename from docs/Tutorials/Kubernetes/Create-Cluster.md rename to docs/tutorials/Kubernetes/Create-Cluster.md diff --git a/docs/Tutorials/Kubernetes/Deploy-Charts.md b/docs/tutorials/Kubernetes/Deploy-Charts.md similarity index 99% rename from docs/Tutorials/Kubernetes/Deploy-Charts.md rename to docs/tutorials/Kubernetes/Deploy-Charts.md index 5ca129e3bc7..03d2da1c925 100644 --- a/docs/Tutorials/Kubernetes/Deploy-Charts.md +++ b/docs/tutorials/Kubernetes/Deploy-Charts.md @@ -260,7 +260,7 @@ parameters in there to match your requirements. To set the number of initial val when setting the number of validators. One more thing to note is that when `cluster.cloudNativeServices: true` is set, the genesis job will -not add the [Quickstart](../../Tutorials/Developer-Quickstart.md) test accounts into the genesis file. +not add the [Quickstart](../Developer-Quickstart.md) test accounts into the genesis file. When you are ready deploy the chart with : diff --git a/docs/Tutorials/Kubernetes/Maintenance.md b/docs/tutorials/Kubernetes/Maintenance.md similarity index 100% rename from docs/Tutorials/Kubernetes/Maintenance.md rename to docs/tutorials/Kubernetes/Maintenance.md diff --git a/docs/Tutorials/Kubernetes/Nat-Manager-Kubernetes.md b/docs/tutorials/Kubernetes/Nat-Manager-Kubernetes.md similarity index 100% rename from docs/Tutorials/Kubernetes/Nat-Manager-Kubernetes.md rename to docs/tutorials/Kubernetes/Nat-Manager-Kubernetes.md diff --git a/docs/Tutorials/Kubernetes/Overview.md b/docs/tutorials/Kubernetes/Overview.md similarity index 100% rename from docs/Tutorials/Kubernetes/Overview.md rename to docs/tutorials/Kubernetes/Overview.md diff --git a/docs/Tutorials/Kubernetes/Playground.md b/docs/tutorials/Kubernetes/Playground.md similarity index 100% rename from docs/Tutorials/Kubernetes/Playground.md rename to docs/tutorials/Kubernetes/Playground.md diff --git a/docs/Tutorials/Kubernetes/Production.md b/docs/tutorials/Kubernetes/Production.md similarity index 100% rename from docs/Tutorials/Kubernetes/Production.md rename to docs/tutorials/Kubernetes/Production.md diff --git a/docs/Tutorials/Kubernetes/Quorum-Explorer.md b/docs/tutorials/Kubernetes/Quorum-Explorer.md similarity index 100% rename from docs/Tutorials/Kubernetes/Quorum-Explorer.md rename to docs/tutorials/Kubernetes/Quorum-Explorer.md diff --git a/docs/Tutorials/Permissioning/Create-Permissioned-Network.md b/docs/tutorials/Permissioning/Create-Permissioned-Network.md similarity index 88% rename from docs/Tutorials/Permissioning/Create-Permissioned-Network.md rename to docs/tutorials/Permissioning/Create-Permissioned-Network.md index 73cfdfb6085..d63812d9468 100644 --- a/docs/Tutorials/Permissioning/Create-Permissioned-Network.md +++ b/docs/tutorials/Permissioning/Create-Permissioned-Network.md @@ -180,7 +180,7 @@ Copy the following permissions configuration to a file called `permissions_confi The permissions configuration file includes the first two accounts from the genesis file. -Use the [`perm_addNodesToAllowlist`](../../Reference/API-Methods.md#perm_addnodestoallowlist) JSON-RPC API method to add permissioned nodes after starting the nodes. +Use the [`perm_addNodesToAllowlist`](../../reference/api/index.md#perm_addnodestoallowlist) JSON-RPC API method to add permissioned nodes after starting the nodes. ### 7. Start Node-1 @@ -200,17 +200,17 @@ Use the following command: The command line allows you to enable: -- Nodes and accounts permissions using [`--permissions-nodes-config-file-enabled`](../../Reference/CLI/CLI-Syntax.md#permissions-nodes-config-file-enabled) - and [`--permissions-accounts-config-file-enabled`](../../Reference/CLI/CLI-Syntax.md#permissions-accounts-config-file-enabled). -- The JSON-RPC API using [`--rpc-http-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled). +- Nodes and accounts permissions using [`--permissions-nodes-config-file-enabled`](../../reference/cli/options.md#permissions-nodes-config-file-enabled) + and [`--permissions-accounts-config-file-enabled`](../../reference/cli/options.md#permissions-accounts-config-file-enabled). +- The JSON-RPC API using [`--rpc-http-enabled`](../../reference/cli/options.md#rpc-http-enabled). - The `ADMIN`, `ETH`, `NET`, `PERM`, and `IBFT` APIs using - [`--rpc-http-api`](../../Reference/CLI/CLI-Syntax.md#rpc-http-api). + [`--rpc-http-api`](../../reference/cli/options.md#rpc-http-api). - All-host access to the HTTP JSON-RPC API using - [`--host-allowlist`](../../Reference/CLI/CLI-Syntax.md#host-allowlist). + [`--host-allowlist`](../../reference/cli/options.md#host-allowlist). - All-domain access to the node through the HTTP JSON-RPC API using - [`--rpc-http-cors-origins`](../../Reference/CLI/CLI-Syntax.md#rpc-http-cors-origins). + [`--rpc-http-cors-origins`](../../reference/cli/options.md#rpc-http-cors-origins). -When the node starts, the [enode URL](../../Concepts/Node-Keys.md#enode-url) displays. You need the +When the node starts, the [enode URL](../../concepts/node-keys.md#enode-url) displays. You need the enode URL to specify Node-1 as a peer and update the permissions configuration file in the following steps. @@ -234,12 +234,12 @@ Start another terminal, change to the `Node-2` directory, and start Node-2: The command line specifies: -- A different port to Node-1 for P2P discovery using [`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port). -- A different port to Node-1 for HTTP JSON-RPC using [`--rpc-http-port`](../../Reference/CLI/CLI-Syntax.md#rpc-http-port). -- A data directory for Node-2 using [`--data-path`](../../Reference/CLI/CLI-Syntax.md#data-path). +- A different port to Node-1 for P2P discovery using [`--p2p-port`](../../reference/cli/options.md#p2p-port). +- A different port to Node-1 for HTTP JSON-RPC using [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port). +- A data directory for Node-2 using [`--data-path`](../../reference/cli/options.md#data-path). - Other options as for [Node-1](#7-start-node-1). -When the node starts, the [enode URL](../../Concepts/Node-Keys.md#enode-url) displays. You need +When the node starts, the [enode URL](../../concepts/node-keys.md#enode-url) displays. You need the enode URL to update the permissions configuration file in the following steps. ### 9. Start Node-3 @@ -260,12 +260,12 @@ Start another terminal, change to the `Node-3` directory, and start Node-3: The command line specifies: -- A different port to Node-1 and Node-2 for P2P discovery using [`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port). -- A different port to Node-1 and Node-2 for HTTP JSON-RPC using [`--rpc-http-port`](../../Reference/CLI/CLI-Syntax.md#rpc-http-port). -- A data directory for Node-3 using [`--data-path`](../../Reference/CLI/CLI-Syntax.md#data-path). +- A different port to Node-1 and Node-2 for P2P discovery using [`--p2p-port`](../../reference/cli/options.md#p2p-port). +- A different port to Node-1 and Node-2 for HTTP JSON-RPC using [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port). +- A data directory for Node-3 using [`--data-path`](../../reference/cli/options.md#data-path). - Other options as for [Node-1](#7-start-node-1). -When the node starts, the [enode URL](../../Concepts/Node-Keys.md#enode-url) displays. You need +When the node starts, the [enode URL](../../concepts/node-keys.md#enode-url) displays. You need the enode URL to update the permissions configuration file in the following steps. ### 10. Start Node-4 @@ -286,18 +286,18 @@ Start another terminal, change to the `Node-4` directory, and start Node-4: The command line specifies: -- A different port to Node-1, Node-2, and Node-3 for P2P discovery using [`--p2p-port`](../../Reference/CLI/CLI-Syntax.md#p2p-port). -- A different port to Node-1, Node-2, and Node-3 for HTTP JSON-RPC using [`--rpc-http-port`](../../Reference/CLI/CLI-Syntax.md#rpc-http-port). -- A data directory for Node-4 using [`--data-path`](../../Reference/CLI/CLI-Syntax.md#data-path). +- A different port to Node-1, Node-2, and Node-3 for P2P discovery using [`--p2p-port`](../../reference/cli/options.md#p2p-port). +- A different port to Node-1, Node-2, and Node-3 for HTTP JSON-RPC using [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port). +- A data directory for Node-4 using [`--data-path`](../../reference/cli/options.md#data-path). - Other options as for [Node-1](#7-start-node-1). -When the node starts, the [enode URL](../../Concepts/Node-Keys.md#enode-url) displays. You need +When the node starts, the [enode URL](../../concepts/node-keys.md#enode-url) displays. You need the enode URL to update the permissions configuration file in the following steps. ### 11. Add enode URLs for nodes to permissions configuration file Start another terminal and use the -[`perm_addNodesToAllowlist`](../../Reference/API-Methods.md#perm_addnodestoallowlist) JSON-RPC API +[`perm_addNodesToAllowlist`](../../reference/api/index.md#perm_addnodestoallowlist) JSON-RPC API method to add the nodes to the permissions configuration file for each node. Replace ``, ``, ``, and `` with the enode URL displayed when @@ -333,7 +333,7 @@ starting each node. ### 12. Add nodes as peers -Use the [`admin_addPeer`](../../Reference/API-Methods.md#admin_addpeer) JSON-RPC API method to add +Use the [`admin_addPeer`](../../reference/api/index.md#admin_addpeer) JSON-RPC API method to add Node-1 as a peer for Node-2, Node-3, and Node-4. Replace `` with the enode URL displayed when starting Node-1. @@ -386,7 +386,7 @@ Replace `` with the enode URL displayed when starting Node-3. #### Check peer count -Use curl to call the JSON-RPC API [`net_peerCount`](../../Reference/API-Methods.md#net_peercount) method and confirm the +Use curl to call the JSON-RPC API [`net_peerCount`](../../reference/api/index.md#net_peercount) method and confirm the nodes are functioning as peers: ```bash @@ -450,7 +450,7 @@ Change to the `Node-5` directory and start Node-5 specifying the Node-1 enode UR ``` Start another terminal and use curl to call the JSON-RPC API -[`net_peerCount`](../../Reference/API-Methods.md#net_peercount) method: +[`net_peerCount`](../../reference/api/index.md#net_peercount) method: ```bash curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' localhost:8549 diff --git a/docs/Tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md b/docs/tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md similarity index 90% rename from docs/Tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md rename to docs/tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md index b3e73a533eb..752f1af85a4 100644 --- a/docs/Tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md +++ b/docs/tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md @@ -254,25 +254,25 @@ besu --data-path=data --genesis-file=../genesis.json --permissions-accounts-cont On the command line: * Enable onchain accounts permissioning using - [`--permissions-accounts-contract-enabled`](../../Reference/CLI/CLI-Syntax.md#permissions-accounts-contract-enabled). + [`--permissions-accounts-contract-enabled`](../../reference/cli/options.md#permissions-accounts-contract-enabled). * Set the address of the Account Ingress contract in the genesis file using - [`--permissions-accounts-contract-address`](../../Reference/CLI/CLI-Syntax.md#permissions-accounts-contract-address). + [`--permissions-accounts-contract-address`](../../reference/cli/options.md#permissions-accounts-contract-address). * Enable onchain nodes permissioning using - [`--permissions-nodes-contract-enabled`](../../Reference/CLI/CLI-Syntax.md#permissions-nodes-contract-enabled). + [`--permissions-nodes-contract-enabled`](../../reference/cli/options.md#permissions-nodes-contract-enabled). * Set the address of the Node Ingress contract in the genesis file using - [`--permissions-nodes-contract-address`](../../Reference/CLI/CLI-Syntax.md#permissions-nodes-contract-address). + [`--permissions-nodes-contract-address`](../../reference/cli/options.md#permissions-nodes-contract-address). * Set the version of the [permissioning contract interface](../../how-to/Limit-Access/Specify-Perm-Version.md) - using [`--permissions-nodes-contract-version`](../../Reference/CLI/CLI-Syntax.md#permissions-nodes-contract-version). + using [`--permissions-nodes-contract-version`](../../reference/cli/options.md#permissions-nodes-contract-version). * Enable the JSON-RPC API using - [`--rpc-http-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled). + [`--rpc-http-enabled`](../../reference/cli/options.md#rpc-http-enabled). * Enable the `ADMIN`, `ETH`, `NET`, `PERM`, and `IBFT` APIs using - [`--rpc-http-api`](../../Reference/CLI/CLI-Syntax.md#rpc-http-api). + [`--rpc-http-api`](../../reference/cli/options.md#rpc-http-api). * Allow all-host access to the HTTP JSON-RPC API using - [`--host-allowlist`](../../Reference/CLI/CLI-Syntax.md#host-allowlist). + [`--host-allowlist`](../../reference/cli/options.md#host-allowlist). * Allow all-domain access to the node through the HTTP JSON-RPC API using - [`--rpc-http-cors-origins`](../../Reference/CLI/CLI-Syntax.md#rpc-http-cors-origins). + [`--rpc-http-cors-origins`](../../reference/cli/options.md#rpc-http-cors-origins). -When the node starts, the [enode URL](../../Concepts/Node-Keys.md#enode-url) displays. Copy the +When the node starts, the [enode URL](../../concepts/node-keys.md#enode-url) displays. Copy the enode URL to use when starting Node-2, Node-3, and Node-4. ### 9. Clone the contracts and install dependencies @@ -354,9 +354,9 @@ besu --data-path=data --genesis-file=../genesis.json --bootnodes= [Tessera]: https://docs.tessera.consensys.net/ diff --git a/docs/Tutorials/Privacy/Privacy-Example.md b/docs/tutorials/Privacy/Privacy-Example.md similarity index 97% rename from docs/Tutorials/Privacy/Privacy-Example.md rename to docs/tutorials/Privacy/Privacy-Example.md index edaea8cb0a1..32a87c190c4 100644 --- a/docs/Tutorials/Privacy/Privacy-Example.md +++ b/docs/tutorials/Privacy/Privacy-Example.md @@ -85,9 +85,9 @@ For more information on the endpoints and services, refer to README.md in the in ## Deploy the private contract and interact with the nodes -To deploy a private contract to another [privacy group](../../Concepts/Privacy/Privacy-Groups.md) member, use the +To deploy a private contract to another [privacy group](../../concepts/Privacy/Privacy-Groups.md) member, use the [web3js-quorum](https://consensys.github.io/web3js-quorum/latest/index.html) library and -the [`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction) API call. +the [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) API call. You must use this API call instead of [`eth_sendTransaction`](https://ethereum.github.io/execution-apis/api-documentation) because Hyperledger Besu keeps account management separate for stronger security. diff --git a/docs/Tutorials/Privacy/web3js-quorum-Multinode-example.md b/docs/tutorials/Privacy/web3js-quorum-Multinode-example.md similarity index 98% rename from docs/Tutorials/Privacy/web3js-quorum-Multinode-example.md rename to docs/tutorials/Privacy/web3js-quorum-Multinode-example.md index dd4495df6ab..9d7a94629fe 100644 --- a/docs/Tutorials/Privacy/web3js-quorum-Multinode-example.md +++ b/docs/tutorials/Privacy/web3js-quorum-Multinode-example.md @@ -33,7 +33,7 @@ To use the examples provided in the web3js-quorum library with * chain ID * Tessera node public keys * Hyperledger Besu node RPC URLs - * [Hyperledger Besu node private keys](../../Concepts/Node-Keys.md#node-private-key). + * [Hyperledger Besu node private keys](../../concepts/node-keys.md#node-private-key). 1. In the `example/multiNodeExample` directory, deploy the contract: diff --git a/docs/Tutorials/Private-Network-Example-Azure.md b/docs/tutorials/Private-Network-Example-Azure.md similarity index 100% rename from docs/Tutorials/Private-Network-Example-Azure.md rename to docs/tutorials/Private-Network-Example-Azure.md diff --git a/docs/Tutorials/Private-Network/Adding-removing-IBFT-validators.md b/docs/tutorials/Private-Network/Adding-removing-IBFT-validators.md similarity index 82% rename from docs/Tutorials/Private-Network/Adding-removing-IBFT-validators.md rename to docs/tutorials/Private-Network/Adding-removing-IBFT-validators.md index c93ee072185..31bf4ac1ead 100644 --- a/docs/Tutorials/Private-Network/Adding-removing-IBFT-validators.md +++ b/docs/tutorials/Private-Network/Adding-removing-IBFT-validators.md @@ -33,13 +33,13 @@ besu --data-path=data --genesis-file=../genesis.json --bootnodes= Date: Tue, 12 Jul 2022 13:51:35 -0700 Subject: [PATCH 03/31] private network restructure except tutorials Signed-off-by: Alexandra Tran --- docs/concepts/Network-vs-Node.md | 2 +- docs/concepts/TLS.md | 4 +- .../concepts/Transactions/Transaction-Pool.md | 4 +- docs/concepts/genesis-file.md | 2 +- .../client-libraries.md} | 4 +- .../Truffle.md => develop/truffle.md} | 0 docs/how-to/send-transactions.md | 2 +- docs/how-to/troubleshoot/Troubleshooting.md | 16 +- docs/how-to/use-besu-api/access-logs.md | 4 +- docs/how-to/use-besu-api/authenticate.md | 6 +- docs/how-to/use-besu-api/rpc-pubsub.md | 2 +- .../concepts/permissioning/index.md} | 12 +- .../concepts/permissioning/onchain.md} | 8 +- .../concepts/permissioning/plugin.md} | 2 +- .../concepts/pki.md} | 6 +- .../concepts/poa.md} | 2 +- .../concepts/privacy/flexible-privacy.md} | 20 +-- .../concepts/privacy/index.md} | 10 +- .../concepts/privacy/multi-tenancy.md} | 4 +- .../concepts/privacy/plugin.md} | 10 +- .../concepts/privacy/privacy-groups.md} | 6 +- .../privacy/private-transactions/index.md} | 26 +-- .../private-transactions/processing.md} | 14 +- .../get-started/system-requirements.md | 2 +- .../how-to/backup.md} | 2 +- .../block-proposal-permissioning.md} | 4 +- .../add-validators-without-voting.md} | 10 +- .../how-to/configure/consensus/clique.md} | 38 ++--- .../how-to/configure/consensus/ibft.md} | 44 ++--- .../how-to/configure/consensus/index.md} | 16 +- .../how-to/configure/consensus/qbft.md} | 44 ++--- .../how-to/configure/contracts.md} | 2 +- .../how-to/configure/curves.md} | 2 +- .../how-to/configure/free-gas.md} | 6 +- .../configure/tls/client-and-server.md} | 26 +-- .../how-to/configure/tls/p2p.md} | 2 +- .../how-to/configure/validators.md} | 8 +- .../how-to/connect/bootnodes.md | 2 +- .../how-to/deploy}/Bootnodes.md | 10 +- .../how-to/deploy}/Production.md | 2 +- .../how-to/deploy/ansible.md} | 0 .../how-to/deploy/cloud.md} | 2 +- .../how-to/deploy/ethstats.md} | 6 +- .../how-to/deploy/kubernetes.md} | 2 +- .../concurrent-private-transactions.md | 6 +- .../send-transactions/private-transactions.md | 16 +- .../Specify-Perm-Version.md | 4 +- .../how-to/use-permissioning/local.md} | 58 +++---- .../how-to/use-permissioning/onchain.md} | 12 +- .../access-private-transactions.md} | 10 +- .../how-to/use-privacy/besu-extended.md} | 16 +- .../how-to/use-privacy/eea-compliant.md} | 12 +- .../how-to/use-privacy/flexible.md} | 18 +- .../use-privacy/goquorum-compatible.md} | 6 +- .../performance-best-practices.md} | 0 .../how-to/use-privacy/privacy-groups.md} | 6 +- .../how-to/use-privacy/sign-pmts.md} | 8 +- .../how-to/use-privacy/tessera.md} | 6 +- .../how-to/use-privacy}/web3js-quorum.md | 0 .../how-to/connect/sync-node.md | 2 +- docs/reference/Plugin-API-Interfaces.md | 2 +- docs/reference/Resources.md | 47 ------ docs/reference/api/index.md | 84 +++++----- docs/reference/api/objects.md | 10 +- docs/reference/cli/options.md | 40 ++--- docs/reference/cli/subcommands.md | 12 +- docs/reference/genesis-items.md | 24 +-- .../Contracts/Deploying-Contracts.md | 4 +- docs/tutorials/Developer-Quickstart.md | 10 +- docs/tutorials/Kubernetes/Deploy-Charts.md | 2 +- .../Create-Permissioned-Network.md | 6 +- .../Getting-Started-Onchain-Permissioning.md | 10 +- .../Upgrade-Permissioning-Contract.md | 4 +- .../Privacy/Configuring-Multi-Tenancy.md | 2 +- docs/tutorials/Privacy/Configuring-Privacy.md | 2 +- docs/tutorials/Privacy/Privacy-Example.md | 2 +- .../Adding-removing-IBFT-validators.md | 2 +- .../Private-Network/Create-IBFT-Network.md | 6 +- .../Create-Private-Clique-Network.md | 6 +- .../Private-Network/Create-QBFT-Network.md | 10 +- mkdocs.yml | 158 +++++++++++++++--- 81 files changed, 540 insertions(+), 479 deletions(-) rename docs/how-to/{Develop-Dapps/Client-Libraries.md => develop/client-libraries.md} (82%) rename docs/how-to/{Develop-Dapps/Truffle.md => develop/truffle.md} (100%) rename docs/{concepts/Permissioning/Permissioning-Overview.md => private-networks/concepts/permissioning/index.md} (81%) rename docs/{concepts/Permissioning/Onchain-Permissioning.md => private-networks/concepts/permissioning/onchain.md} (90%) rename docs/{concepts/Permissioning/Plugin-Permissioning.md => private-networks/concepts/permissioning/plugin.md} (92%) rename docs/{concepts/PKI.md => private-networks/concepts/pki.md} (90%) rename docs/{concepts/Consensus-Protocols/Comparing-PoA.md => private-networks/concepts/poa.md} (97%) rename docs/{concepts/Privacy/Flexible-PrivacyGroups.md => private-networks/concepts/privacy/flexible-privacy.md} (82%) rename docs/{concepts/Privacy/Privacy-Overview.md => private-networks/concepts/privacy/index.md} (89%) rename docs/{concepts/Privacy/Multi-Tenancy.md => private-networks/concepts/privacy/multi-tenancy.md} (91%) rename docs/{concepts/Privacy/Plugin-Privacy.md => private-networks/concepts/privacy/plugin.md} (92%) rename docs/{concepts/Privacy/Privacy-Groups.md => private-networks/concepts/privacy/privacy-groups.md} (95%) rename docs/{concepts/Privacy/Private-Transactions.md => private-networks/concepts/privacy/private-transactions/index.md} (84%) rename docs/{concepts/Privacy/Private-Transaction-Processing.md => private-networks/concepts/privacy/private-transactions/processing.md} (88%) rename docs/{how-to/Backup/Backup.md => private-networks/how-to/backup.md} (94%) rename docs/{how-to/configure/Block-Proposal-Permissioning.md => private-networks/how-to/configure/block-proposal-permissioning.md} (97%) rename docs/{how-to/troubleshoot/Add-Validators-Without-Voting.md => private-networks/how-to/configure/consensus/add-validators-without-voting.md} (94%) rename docs/{how-to/configure/Consensus-Protocols/Clique.md => private-networks/how-to/configure/consensus/clique.md} (80%) rename docs/{how-to/configure/Consensus-Protocols/IBFT.md => private-networks/how-to/configure/consensus/ibft.md} (89%) rename docs/{concepts/Consensus-Protocols/Overview-Consensus.md => private-networks/how-to/configure/consensus/index.md} (63%) rename docs/{how-to/configure/Consensus-Protocols/QBFT.md => private-networks/how-to/configure/consensus/qbft.md} (94%) rename docs/{how-to/configure/Contracts-in-Genesis.md => private-networks/how-to/configure/contracts.md} (95%) rename docs/{how-to/configure/Alternative-EC-Curves.md => private-networks/how-to/configure/curves.md} (91%) rename docs/{how-to/configure/FreeGas.md => private-networks/how-to/configure/free-gas.md} (95%) rename docs/{how-to/configure/TLS/Configure-TLS.md => private-networks/how-to/configure/tls/client-and-server.md} (76%) rename docs/{how-to/configure/TLS/P2P-TLS.md => private-networks/how-to/configure/tls/p2p.md} (97%) rename docs/{how-to/Deploy/Validators.md => private-networks/how-to/configure/validators.md} (79%) rename docs/{how-to/Deploy => private-networks/how-to/deploy}/Bootnodes.md (79%) rename docs/{how-to/Deploy => private-networks/how-to/deploy}/Production.md (91%) rename docs/{how-to/Deploy/Ansible.md => private-networks/how-to/deploy/ansible.md} (100%) rename docs/{how-to/Deploy/Cloud.md => private-networks/how-to/deploy/cloud.md} (92%) rename docs/{how-to/Deploy/Ethstats.md => private-networks/how-to/deploy/ethstats.md} (90%) rename docs/{how-to/Deploy/Kubernetes.md => private-networks/how-to/deploy/kubernetes.md} (86%) rename docs/{how-to/Limit-Access => private-networks/how-to/use-permissioning}/Specify-Perm-Version.md (79%) rename docs/{how-to/Limit-Access/Local-Permissioning.md => private-networks/how-to/use-permissioning/local.md} (77%) rename docs/{how-to/Limit-Access/Updating-Permission-Lists.md => private-networks/how-to/use-permissioning/onchain.md} (86%) rename docs/{how-to/Use-Privacy/Access-Private-Transactions.md => private-networks/how-to/use-privacy/access-private-transactions.md} (76%) rename docs/{how-to/Use-Privacy/Privacy.md => private-networks/how-to/use-privacy/besu-extended.md} (70%) rename docs/{how-to/Use-Privacy/EEA-Compliant.md => private-networks/how-to/use-privacy/eea-compliant.md} (77%) rename docs/{how-to/Use-Privacy/Use-FlexiblePrivacy.md => private-networks/how-to/use-privacy/flexible.md} (78%) rename docs/{how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md => private-networks/how-to/use-privacy/goquorum-compatible.md} (86%) rename docs/{how-to/Use-Privacy/Performance-Best-Practices.md => private-networks/how-to/use-privacy/performance-best-practices.md} (100%) rename docs/{how-to/Use-Privacy/Create-Manage-Privacy-Groups.md => private-networks/how-to/use-privacy/privacy-groups.md} (77%) rename docs/{how-to/Use-Privacy/Sign-Privacy-Marker-Transactions.md => private-networks/how-to/use-privacy/sign-pmts.md} (75%) rename docs/{how-to/Use-Privacy/Run-Tessera-With-Besu.md => private-networks/how-to/use-privacy/tessera.md} (89%) rename docs/{how-to/Interact/Client-Libraries => private-networks/how-to/use-privacy}/web3js-quorum.md (100%) delete mode 100644 docs/reference/Resources.md diff --git a/docs/concepts/Network-vs-Node.md b/docs/concepts/Network-vs-Node.md index 0e5464eb1df..7ea4531f418 100644 --- a/docs/concepts/Network-vs-Node.md +++ b/docs/concepts/Network-vs-Node.md @@ -8,7 +8,7 @@ You can configure Besu at the network level and the node level. Specify network-wide settings in the [genesis file](../reference/genesis-items.md). For example, include `evmStackSize` or specify the -[consensus mechanism](Consensus-Protocols/Overview-Consensus.md). +[consensus mechanism](../private-networks/how-to/configure/consensus/index.md). Specify node settings on the command line or in the [node configuration file](../how-to/configure/configuration-file.md). For example, enable diff --git a/docs/concepts/TLS.md b/docs/concepts/TLS.md index 41c7aae4079..065043636d3 100644 --- a/docs/concepts/TLS.md +++ b/docs/concepts/TLS.md @@ -17,6 +17,6 @@ The following diagram displays an example client and server TLS configuration. You must store private keys and certificates in password-protected PKCS12 keystore files. -Use the command line options to [enable and configure](../how-to/configure/TLS/Configure-TLS.md) TLS. +Use the command line options to [enable and configure](../private-networks/how-to/configure/tls/client-and-server.md) TLS. -[secure P2P communication]: ../how-to/configure/TLS/P2P-TLS.md +[secure P2P communication]: ../private-networks/how-to/configure/tls/p2p.md diff --git a/docs/concepts/Transactions/Transaction-Pool.md b/docs/concepts/Transactions/Transaction-Pool.md index 987fbbf11e5..d2670a777cb 100644 --- a/docs/concepts/Transactions/Transaction-Pool.md +++ b/docs/concepts/Transactions/Transaction-Pool.md @@ -22,8 +22,8 @@ Options and methods for configuring and monitoring the transaction pool include: RPC subscriptions to notify of transactions added to and dropped from the transaction pool. !!! important - When submitting [private transactions](../Privacy/Private-Transactions.md#nonce-validation), the - [privacy marker transaction](../Privacy/Private-Transaction-Processing.md) is submitted to the + 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. ## Dropping transactions when the transaction pool is full diff --git a/docs/concepts/genesis-file.md b/docs/concepts/genesis-file.md index cd761503573..7a143be9d45 100644 --- a/docs/concepts/genesis-file.md +++ b/docs/concepts/genesis-file.md @@ -16,7 +16,7 @@ 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](../how-to/configure/FreeGas.md), so all nodes in a network must use the same genesis +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. !!! example "Example IBFT 2.0 genesis file" diff --git a/docs/how-to/Develop-Dapps/Client-Libraries.md b/docs/how-to/develop/client-libraries.md similarity index 82% rename from docs/how-to/Develop-Dapps/Client-Libraries.md rename to docs/how-to/develop/client-libraries.md index be8390eecc8..8a6873853fd 100644 --- a/docs/how-to/Develop-Dapps/Client-Libraries.md +++ b/docs/how-to/develop/client-libraries.md @@ -9,8 +9,8 @@ Dapps use client libraries, such as [web3.js](https://github.com/ethereum/web3.j forward JSON-RPC requests to Hyperledger Besu. Any client library implementing core Ethereum RPC methods works with Besu. -Use the [web3js-quorum library](../Interact/Client-Libraries/web3js-quorum.md) with Besu for -[privacy features](../../concepts/Privacy/Privacy-Overview.md). +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](../../images/Hyperledger-Besu-Client-Libraries.png) diff --git a/docs/how-to/Develop-Dapps/Truffle.md b/docs/how-to/develop/truffle.md similarity index 100% rename from docs/how-to/Develop-Dapps/Truffle.md rename to docs/how-to/develop/truffle.md diff --git a/docs/how-to/send-transactions.md b/docs/how-to/send-transactions.md index 35848f98ba7..2914e36d4f5 100644 --- a/docs/how-to/send-transactions.md +++ b/docs/how-to/send-transactions.md @@ -15,7 +15,7 @@ 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-Dapps/Client-Libraries.md) to create and send a signed raw transaction to transfer +[Use client libraries](develop/client-libraries.md) to create and send a signed raw transaction to transfer Ether and create a smart contract. !!! warning "Private keys" diff --git a/docs/how-to/troubleshoot/Troubleshooting.md b/docs/how-to/troubleshoot/Troubleshooting.md index ad133ab0c8a..a1216c82c20 100644 --- a/docs/how-to/troubleshoot/Troubleshooting.md +++ b/docs/how-to/troubleshoot/Troubleshooting.md @@ -16,12 +16,12 @@ directory. ## Invalid block header If a `TimeStampMoreRecentThanParent | Invalid block header` error occurs, the [genesis file](../../concepts/genesis-file.md) of the new node is specifying a higher -[`blockperiodseconds`](../configure/Consensus-Protocols/IBFT.md#block-time) than the imported chain. +[`blockperiodseconds`](../../private-networks/how-to/configure/consensus/ibft.md#block-time) than the imported chain. The imported chain makes new blocks faster than the genesis file allows and Besu rejects them with this error. This error most often occurs when importing chains from older versions of Besu. -To correct this error, decrease the `blockperiodseconds` in the new [IBFT 2.0 genesis file](../configure/Consensus-Protocols/IBFT.md#genesis-file) -or [QFBT genesis file](../configure/Consensus-Protocols/QBFT.md#genesis-file) to a lower value that satisfies the block header validation. +To correct this error, decrease the `blockperiodseconds` in the new [IBFT 2.0 genesis file](../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) +or [QFBT genesis file](../../private-networks/how-to/configure/consensus/qbft.md#genesis-file) to a lower value that satisfies the block header validation. !!! example @@ -29,8 +29,8 @@ or [QFBT genesis file](../configure/Consensus-Protocols/QBFT.md#genesis-file) to decrease the `blockperiodseconds` from 4 seconds to 3 seconds to match the imported chain. After you have updated the new genesis file, if the imported chain has a `blockperiodseconds` value set lower than you prefer, you can adjust it by configuring the block time on an -[existing IBFT 2.0](../configure/Consensus-Protocols/IBFT.md#configure-block-time-on-an-existing-network-deployment) -or [existing QBFT](../configure/Consensus-Protocols/QBFT.md#configure-block-time-on-an-existing-network) network. +[existing IBFT 2.0](../../private-networks/how-to/configure/consensus/ibft.md#configure-block-time-on-an-existing-network-deployment) +or [existing QBFT](../../private-networks/how-to/configure/consensus/qbft.md#configure-block-time-on-an-existing-network) network. ## Host not authorized @@ -70,8 +70,8 @@ On non-mining nodes, log messages indicate importing blocks. To confirm the block number is increasing, use the [`eth_blockNumber`](../../reference/api/index.md#eth_blocknumber) JSON-RPC API method. -If there is no block creating in [Clique](../configure/Consensus-Protocols/Clique.md#extra-data) -or [IBFT 2.0](../configure/Consensus-Protocols/IBFT.md#extra-data) networks, ensure the validator +If there is no block creating 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. ## Transactions are not mined @@ -83,7 +83,7 @@ returns, but the transaction is never mined, check 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](../configure/FreeGas.md), you must set +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. ## Genesis milestone diff --git a/docs/how-to/use-besu-api/access-logs.md b/docs/how-to/use-besu-api/access-logs.md index 0452b9cb544..8b5a67538e7 100644 --- a/docs/how-to/use-besu-api/access-logs.md +++ b/docs/how-to/use-besu-api/access-logs.md @@ -17,7 +17,7 @@ Use [`eth_newFilter`](../../reference/api/index.md#eth_newfilter) to create the using [`eth_getFilterChanges`](../../reference/api/index.md#eth_getfilterchanges) and [`eth_getFilterLogs`](../../reference/api/index.md#eth_getfilterlogs)). -Access logs for [private contracts](../../concepts/Privacy/Privacy-Overview.md) using the equivalent +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). @@ -164,7 +164,7 @@ Filters for private contracts are created, accessed, and uninstalled using: * [`priv_newFilter`](../../reference/api/index.md#priv_newfilter) * [`priv_uninstallFilter`](../../reference/api/index.md#priv_uninstallfilter). -The [privacy group ID](../../concepts/Privacy/Privacy-Overview.md) must be specified as parameter 0 +The [privacy group ID](../../private-networks/concepts/privacy/index.md) must be specified as parameter 0 for the `priv` methods. !!! example diff --git a/docs/how-to/use-besu-api/authenticate.md b/docs/how-to/use-besu-api/authenticate.md index 6a8df471935..6db28689014 100644 --- a/docs/how-to/use-besu-api/authenticate.md +++ b/docs/how-to/use-besu-api/authenticate.md @@ -7,7 +7,7 @@ description: Hyperledger Besu authentication and authorization for 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](../../concepts/Privacy/Multi-Tenancy.md) to verify tenant data access. +[multi-tenancy](../../private-networks/concepts/privacy/multi-tenancy.md) to verify tenant data access. Besu supports two mutually exclusive authentication methods: @@ -61,7 +61,7 @@ Each user requiring JSON-RPC access the configuration file lists the: hash. * [JSON-RPC permissions](#json-rpc-permissions). * Optional. The tenant's Tessera public key using `privacyPublicKey`. Only used for - [multi-tenancy](../../concepts/Privacy/Multi-Tenancy.md). + [multi-tenancy](../../private-networks/concepts/privacy/multi-tenancy.md). !!! example "Password hash subcommand" @@ -208,7 +208,7 @@ 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](../../concepts/Privacy/Multi-Tenancy.md). + [multi-tenancy](../../private-networks/concepts/privacy/multi-tenancy.md). !!! example "JWT generation example" diff --git a/docs/how-to/use-besu-api/rpc-pubsub.md b/docs/how-to/use-besu-api/rpc-pubsub.md index 1326be7a7f6..c6a6cfc1fed 100644 --- a/docs/how-to/use-besu-api/rpc-pubsub.md +++ b/docs/how-to/use-besu-api/rpc-pubsub.md @@ -15,7 +15,7 @@ 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](../../concepts/Privacy/Privacy-Overview.md). +* `priv_subscribe` and `priv_unsubscribe` - create or cancel a subscription for [private logs](../../private-networks/concepts/privacy/index.md). !!!important diff --git a/docs/concepts/Permissioning/Permissioning-Overview.md b/docs/private-networks/concepts/permissioning/index.md similarity index 81% rename from docs/concepts/Permissioning/Permissioning-Overview.md rename to docs/private-networks/concepts/permissioning/index.md index 196d4f1254d..c5bbd94ca5b 100644 --- a/docs/concepts/Permissioning/Permissioning-Overview.md +++ b/docs/private-networks/concepts/permissioning/index.md @@ -22,7 +22,7 @@ specified nodes and accounts to access the network. Use node permissioning to restrict access to known participants only. -![Node Permissioning](../../images/node-permissioning-bad-actor.png) +![Node Permissioning](../../../images/node-permissioning-bad-actor.png) ## Account permissioning @@ -33,7 +33,7 @@ Use account permissioning to: * Exclude broken contracts using a denylist. * Restrict the actions an account can perform. -![Account Permissioning](../../images/enterprise-ethereum-account-permissioning.png) +![Account Permissioning](../../../images/enterprise-ethereum-account-permissioning.png) ## Specifying permissioning @@ -41,7 +41,7 @@ You can specify permissioning [locally](#local) or [onchain](#onchain). ### Local -[Local permissioning](../../how-to/Limit-Access/Local-Permissioning.md) works at the node level. +[Local permissioning](../../how-to/use-permissioning/local.md) works at the node level. Each node in the network has a [permissions configuration file]. Local permissioning affects your node but not the rest of the network. Use local permissioning to @@ -53,7 +53,7 @@ immediately to protect your node. Your rules are not enforced in blocks produced ### Onchain -[Onchain permissioning](Onchain-Permissioning.md) works through a smart contract on the network. +[Onchain permissioning](onchain.md) works through a smart contract on the network. Specifying permissioning onchain enables all nodes to read and update permissioning configuration from one location. @@ -66,7 +66,7 @@ by the updated rules. For example, blocked accounts can no longer add transactio The following diagram illustrates applying local and onchain permissioning rules. -![Permissioning Flow](../../images/PermissioningFlow.png) +![Permissioning Flow](../../../images/PermissioningFlow.png) -[permissions configuration file]: ../../how-to/Limit-Access/Local-Permissioning.md#permissions-configuration-file +[permissions configuration file]: ../../how-to/use-permissioning/local.md#permissions-configuration-file diff --git a/docs/concepts/Permissioning/Onchain-Permissioning.md b/docs/private-networks/concepts/permissioning/onchain.md similarity index 90% rename from docs/concepts/Permissioning/Onchain-Permissioning.md rename to docs/private-networks/concepts/permissioning/onchain.md index 0312fd75a41..3baa980247f 100644 --- a/docs/concepts/Permissioning/Onchain-Permissioning.md +++ b/docs/private-networks/concepts/permissioning/onchain.md @@ -4,7 +4,7 @@ description: Onchain permissioning # Onchain permissioning -Onchain [permissioning](Permissioning-Overview.md) uses smart contracts to store and administer the node, account, and admin +Onchain [permissioning](index.md) uses smart contracts to store and administer the node, account, and admin allowlists. Using onchain permissioning enables all nodes to read the allowlists from a single source, the blockchain. @@ -82,7 +82,7 @@ Permissioning implements three allowlists: ## Bootnodes -When a node joins the network, the node connects to the [bootnodes](../../private-networks/how-to/connect/bootnodes.md) until it +When a node joins the network, the node connects to the [bootnodes](../../how-to/connect/bootnodes.md) until it synchronizes to the chain head, regardless of node permissions. After synchronization, the Account Rules and Node Rules smart contracts apply the permissioning rules. @@ -94,5 +94,5 @@ bootnodes to rediscover peers. All bootnodes must be on the nodes allowlist. -[permissioning management dapp]: ../../tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md -[`--privacy-marker-transaction-signing-key-file`]: ../../reference/cli/options.md#privacy-marker-transaction-signing-key-file +[permissioning management dapp]: ../../../tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md +[`--privacy-marker-transaction-signing-key-file`]: ../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file diff --git a/docs/concepts/Permissioning/Plugin-Permissioning.md b/docs/private-networks/concepts/permissioning/plugin.md similarity index 92% rename from docs/concepts/Permissioning/Plugin-Permissioning.md rename to docs/private-networks/concepts/permissioning/plugin.md index cb95a171c8f..0cc211e2df4 100644 --- a/docs/concepts/Permissioning/Plugin-Permissioning.md +++ b/docs/private-networks/concepts/permissioning/plugin.md @@ -4,7 +4,7 @@ description: Plugin based permissioning # Permissioning plugin -You can define complex [permissioning](Permissioning-Overview.md) solutions by [building a plugin](../Plugins.md) that +You can define complex [permissioning](index.md) solutions by [building a plugin](../../../concepts/Plugins.md) that extends Hyperledger Besu functionality. The plugin API provides a `PermissioningService` interface that currently supports connection permissioning and diff --git a/docs/concepts/PKI.md b/docs/private-networks/concepts/pki.md similarity index 90% rename from docs/concepts/PKI.md rename to docs/private-networks/concepts/pki.md index 80980e43c35..039ed01002c 100644 --- a/docs/concepts/PKI.md +++ b/docs/private-networks/concepts/pki.md @@ -26,7 +26,7 @@ authorized nodes in the network. When receiving connection requests, the incoming connection must be from another authorized node. Similarly, when connecting to a node the initiator ensures that the remote node is authorized to participate in the network. -[Configure TLS for the P2P communication using the Besu command line options](../how-to/configure/TLS/P2P-TLS.md). +[Configure TLS for the P2P communication using the Besu command line options](../how-to/configure/tls/p2p.md). ## Block proposal permissioning @@ -39,7 +39,7 @@ network. The block hash is signed by the validator private certificate and inclu as a [CMS (Cryptographic Message Syntax)]. This is used by other validators to verify that the proposer is authorized to create a block in the network. -[Configure block proposal permissioning using the Besu command line options](../how-to/configure/Block-Proposal-Permissioning.md). +[Configure block proposal permissioning using the Besu command line options](../how-to/configure/block-proposal-permissioning.md). -[QBFT consensus protocol]: ../how-to/configure/Consensus-Protocols/QBFT.md +[QBFT consensus protocol]: ../how-to/configure/consensus/qbft.md [CMS (Cryptographic Message Syntax)]: https://en.wikipedia.org/wiki/Cryptographic_Message_Syntax diff --git a/docs/concepts/Consensus-Protocols/Comparing-PoA.md b/docs/private-networks/concepts/poa.md similarity index 97% rename from docs/concepts/Consensus-Protocols/Comparing-PoA.md rename to docs/private-networks/concepts/poa.md index 04220e1ed22..0693c0dc099 100644 --- a/docs/concepts/Consensus-Protocols/Comparing-PoA.md +++ b/docs/private-networks/concepts/poa.md @@ -4,7 +4,7 @@ description: Besu proof of authority consensus protocols comparison # Comparing proof of authority consensus protocols -Besu implements the QBFT, IBFT 2.0, and Clique proof of authority (PoA) [consensus protocols](Overview-Consensus.md). +Besu implements the QBFT, IBFT 2.0, and Clique proof of authority (PoA) [consensus protocols](../how-to/configure/consensus/index.md). PoA consensus protocols work when participants know each other and there is a level of trust between them. For example, in a permissioned consortium network. diff --git a/docs/concepts/Privacy/Flexible-PrivacyGroups.md b/docs/private-networks/concepts/privacy/flexible-privacy.md similarity index 82% rename from docs/concepts/Privacy/Flexible-PrivacyGroups.md rename to docs/private-networks/concepts/privacy/flexible-privacy.md index e80fc8a494e..e573bfa6df3 100644 --- a/docs/concepts/Privacy/Flexible-PrivacyGroups.md +++ b/docs/private-networks/concepts/privacy/flexible-privacy.md @@ -10,8 +10,8 @@ description: Flexible privacy groups Read our [Orion to Tessera migration guide](https://docs.orion.consensys.net/en/latest/Tutorials/Migrating-from-Orion-to-Tessera/) and about all the [new Tessera features](https://consensys.net/blog/quorum/tessera-the-privacy-manager-of-choice-for-consensys-quorum-networks). -Flexible [privacy groups](Privacy-Groups.md) use smart contracts to store and maintain the group membership. -You can [add and remove members to and from flexible privacy groups](../../how-to/Use-Privacy/Use-FlexiblePrivacy.md). +Flexible [privacy groups](privacy-groups.md) use smart contracts to store and maintain the group membership. +You can [add and remove members to and from flexible privacy groups](../../how-to/use-privacy/flexible.md). !!! tip @@ -51,7 +51,7 @@ the management contract, must be signed by the same key that signed the group cr When creating a flexible privacy group, generate the privacy group ID for the group outside of Besu and pass the ID as a parameter. -The [web3js-quorum library](../../how-to/Use-Privacy/Use-FlexiblePrivacy.md) generates a unique privacy +The [web3js-quorum library](../../how-to/use-privacy/flexible.md) generates a unique privacy group ID and passes the ID to Besu when creating a privacy group. !!! caution @@ -64,14 +64,14 @@ group ID and passes the ID to Besu when creating a privacy group. ## Multi-tenancy -When using [multi-tenancy](Multi-Tenancy.md) with flexible privacy groups, each user provides a JSON Web Token (JWT) +When using [multi-tenancy](multi-tenancy.md) with flexible privacy groups, each user provides a JSON Web Token (JWT) which allows Besu to check that the user has access to functionality and data associated with a privacy group. -Using multi-tenancy with flexible privacy groups is more complex than with [offchain privacy groups](Privacy-Groups.md) +Using multi-tenancy with flexible privacy groups is more complex than with [offchain privacy groups](privacy-groups.md) because users may be added and removed from flexible privacy groups. When a user is added to a privacy group, they get access to all existing data in the privacy group. After being removed from a privacy group, a user retains access to already existing data in the privacy group, up to the -block containing the [privacy marker transaction (PMT)](Private-Transaction-Processing.md) that removed them (the +block containing the [privacy marker transaction (PMT)](private-transactions/processing.md) that removed them (the removal block). A removed user doesn't have access to data in the privacy group that happens after they were removed. @@ -80,16 +80,16 @@ but later removed from, Besu allows the user access to the following functionali group: - Private transactions using `priv_getTransaction` and private transaction receipts using - [`priv_getTransactionReceipt`](../../reference/api/index.md#priv_gettransactionreceipt) from blocks up to (and + [`priv_getTransactionReceipt`](../../../reference/api/index.md#priv_gettransactionreceipt) from blocks up to (and including) the removal block. !!! note A removed group member may have access to some private transactions after the removal PMT in the same block. -- Using [`priv_call`](../../reference/api/index.md#priv_call) on blocks up to (and including) the removal block. +- Using [`priv_call`](../../../reference/api/index.md#priv_call) on blocks up to (and including) the removal block. -- Private logs using [`priv_getLogs`](../../reference/api/index.md#priv_getlogs) for blocks up to (and including) the +- Private logs using [`priv_getLogs`](../../../reference/api/index.md#priv_getlogs) for blocks up to (and including) the removal block. When the `toBlock` is greater than the removal block, `priv_getLogs` still returns logs up to the removal block. @@ -99,4 +99,4 @@ group: they've created are also removed and can't be accessed. A user can only create and access filters for a privacy group they are currently a member of. -All other [`PRIV` API methods](../../reference/api/index.md#priv-methods) fail for the removed group member. +All other [`PRIV` API methods](../../../reference/api/index.md#priv-methods) fail for the removed group member. diff --git a/docs/concepts/Privacy/Privacy-Overview.md b/docs/private-networks/concepts/privacy/index.md similarity index 89% rename from docs/concepts/Privacy/Privacy-Overview.md rename to docs/private-networks/concepts/privacy/index.md index e71ba559438..dd28b969efc 100644 --- a/docs/concepts/Privacy/Privacy-Overview.md +++ b/docs/private-networks/concepts/privacy/index.md @@ -28,17 +28,17 @@ participants. Other participants cannot access the transaction content or list o Besu uses a private transaction manager, [Tessera](https://docs.tessera.consensys.net/), to implement privacy. -Each Besu node that sends or receives [private transactions](Private-Transactions.md) requires an +Each Besu node that sends or receives [private transactions](private-transactions/index.md) requires an associated Tessera node. -![Tessera Nodes](../../images/TesseraNodes.png) +![Tessera Nodes](../../../images/TesseraNodes.png) Private transactions pass from the Besu node to the associated Tessera node. The Tessera node encrypts and directly distributes (that is, point-to-point) the private transaction to the Tessera nodes participating in the transaction. By default, each participant in a privacy-enabled network uses its own Besu and Tessera node. -[Multi-tenancy](Multi-Tenancy.md) allows more than one participant to use the same Besu and Tessera +[Multi-tenancy](multi-tenancy.md) allows more than one participant to use the same Besu and Tessera node. !!! tip @@ -47,7 +47,7 @@ node. ## Privacy-enabled networks -When enabling privacy in a [private network](../../private-networks/get-started/system-requirements.md), +When enabling privacy in a [private network](../../get-started/system-requirements.md), there's an assumed level of trust among the node operators, since all are members of the private network. @@ -79,4 +79,4 @@ Do not use private transactions in production environments using consensus mecha occur. -[highly available and run in a separate instance to Besu]: ../../how-to/Use-Privacy/Run-Tessera-With-Besu.md +[highly available and run in a separate instance to Besu]: ../../how-to/use-privacy/tessera.md diff --git a/docs/concepts/Privacy/Multi-Tenancy.md b/docs/private-networks/concepts/privacy/multi-tenancy.md similarity index 91% rename from docs/concepts/Privacy/Multi-Tenancy.md rename to docs/private-networks/concepts/privacy/multi-tenancy.md index 467676ad7e6..c39160fcb69 100644 --- a/docs/concepts/Privacy/Multi-Tenancy.md +++ b/docs/private-networks/concepts/privacy/multi-tenancy.md @@ -21,7 +21,7 @@ is a _tenant_, and the operator is the _owner_ of the Besu and Tessera node. [configuring multi-tenancy](../../Tutorials/Privacy/Configuring-Multi-Tenancy.md), and has access to all tenant data. -![Multi-tenancy](../../images/Multi-tenancy.png) +![Multi-tenancy](../../../images/Multi-tenancy.png) !!! important @@ -40,4 +40,4 @@ JSON-RPC requests, and the tenant has access to the requested privacy data. Private data is isolated and each tenant uses a JSON Web Token (JWT) for authentication. You can -[create the JWT either externally or internally](../../how-to/use-besu-api/authenticate.md). +[create the JWT either externally or internally](../../../how-to/use-besu-api/authenticate.md). diff --git a/docs/concepts/Privacy/Plugin-Privacy.md b/docs/private-networks/concepts/privacy/plugin.md similarity index 92% rename from docs/concepts/Privacy/Plugin-Privacy.md rename to docs/private-networks/concepts/privacy/plugin.md index f502e9edeb6..fff4498d81c 100644 --- a/docs/concepts/Privacy/Plugin-Privacy.md +++ b/docs/private-networks/concepts/privacy/plugin.md @@ -4,7 +4,7 @@ description: Privacy plugin # Privacy plugin -You can define your own strategy for private transactions by [building a plugin](../Plugins.md) that extends +You can define your own strategy for private transactions by [building a plugin](../../../concepts/Plugins.md) that extends Hyperledger Besu functionality. The plugin can take many forms, but it must provide Besu with a private transaction when required. @@ -29,9 +29,9 @@ for the PMT is. ### Sending transactions -When submitting a private transaction using [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction), +When submitting a private transaction using [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction), the signed transaction must be sent to `0x000000000000000000000000000000000000007a` to indicate which -[privacy precompiled contract](../Privacy/Private-Transaction-Processing.md) is being used. +[privacy precompiled contract](ansaction-Processing.md) is being used. The transaction flow is as follows: @@ -48,7 +48,7 @@ The transaction flow is as follows: The process of mining transactions happens in reverse to sending transactions. 1. The Mainnet transaction processor processes the PMT in the same way as - any other public transaction. On nodes containing the [privacy precompile contract](../../reference/api/index.md#priv_getprivacyprecompileaddress) + any other public transaction. On nodes containing the [privacy precompile contract](../../../reference/api/index.md#priv_getprivacyprecompileaddress) specified in the `to` attribute of the PMT, the Mainnet transaction processor passes the PMT to the privacy precompile contract. !!! note @@ -72,7 +72,7 @@ The extension allows you to use a more dynamic approach, for example different k Your plugin needs to register the `PrivateMarkerTransactionFactory` interface which is called before submitting a PMT to the transaction pool. The responsibility then lies with the plugin to sign and serialize the PMT. -[privacy marker transaction (PMT)]: ../../how-to/Use-Privacy/Access-Private-Transactions.md +[privacy marker transaction (PMT)]: ../../how-to/use-privacy/access-private-transactions.md ## Registering your plugin diff --git a/docs/concepts/Privacy/Privacy-Groups.md b/docs/private-networks/concepts/privacy/privacy-groups.md similarity index 95% rename from docs/concepts/Privacy/Privacy-Groups.md rename to docs/private-networks/concepts/privacy/privacy-groups.md index 6c7355e6eda..8ebfcc8df99 100644 --- a/docs/concepts/Privacy/Privacy-Groups.md +++ b/docs/private-networks/concepts/privacy/privacy-groups.md @@ -35,7 +35,7 @@ Besu implements two types of privacy: Both privacy types create privacy groups and store private transactions with their privacy group in Tessera. -![Privacy Groups](../../images/PrivacyGroups.png) +![Privacy Groups](../../../images/PrivacyGroups.png) !!! note @@ -83,7 +83,7 @@ provided by Tessera. ### Besu-extended privacy The Besu-extended privacy implementation creates a privacy group using -[`priv_createPrivacyGroup`](../../reference/api/index.md#priv_createprivacygroup) with private +[`priv_createPrivacyGroup`](../../../reference/api/index.md#priv_createprivacygroup) with private transactions sent to the privacy group ID. !!! example @@ -101,5 +101,5 @@ transactions sent to the privacy group ID. ## Multi-tenancy -When using [multi-tenancy](Multi-Tenancy.md) with privacy groups, each user provides a JSON Web Token (JWT) which +When using [multi-tenancy](multi-tenancy.md) with privacy groups, each user provides a JSON Web Token (JWT) which allows Besu to check that the user has access to functionality and data associated with a privacy group. diff --git a/docs/concepts/Privacy/Private-Transactions.md b/docs/private-networks/concepts/privacy/private-transactions/index.md similarity index 84% rename from docs/concepts/Privacy/Private-Transactions.md rename to docs/private-networks/concepts/privacy/private-transactions/index.md index 16921393fc9..10b5dedda1e 100644 --- a/docs/concepts/Privacy/Private-Transactions.md +++ b/docs/private-networks/concepts/privacy/private-transactions/index.md @@ -15,7 +15,7 @@ Private transactions have the same parameters as public Ethereum transactions, w * `privateFrom` - The Tessera public key of the transaction sender. * One of the following: * `privateFor` - The Tessera public keys of the transaction recipients. - * `privacyGroupId` - [The privacy group to receive the transaction](Privacy-Groups.md). + * `privacyGroupId` - [The privacy group to receive the transaction](../privacy-groups.md). * `restriction` - Whether the private transaction is `restricted` or `unrestricted`: * `restricted` - Only the nodes participating in the transaction receive and store the payload of the private transaction. @@ -26,7 +26,7 @@ Private transactions have the same parameters as public Ethereum transactions, w Besu implements `restricted` private transactions only. -The `gas` and `gasPrice` are used by the [privacy marker transaction (PMT)](Private-Transaction-Processing.md), +The `gas` and `gasPrice` are used by the [privacy marker transaction (PMT)](processing.md), not the private transaction itself. !!! warning @@ -35,14 +35,14 @@ not the private transaction itself. or deliberately can cause performance issues in privacy-enabled networks. Ensure your network has a mechanism to [establish trust offchain](Privacy-Overview.md#privacy-enabled-networks). -You can [create and send private transactions](../../private-networks/how-to/send-transactions/private-transactions.md). +You can [create and send private transactions](../../../how-to/send-transactions/private-transactions.md). ## Besu and Tessera keys Besu and Tessera nodes both have public/private key pairs identifying them. A Besu node sending a private transaction to a Tessera node signs the transaction with the Besu node private key. The `privateFrom` and `privateFor` parameters specified in the RLP-encoded transaction string for -[`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) are the public keys of the Tessera +[`eea_sendRawTransaction`](../../../../reference/api/index.md#eea_sendrawtransaction) are the public keys of the Tessera nodes sending and receiving the transaction. !!! important @@ -54,7 +54,7 @@ nodes sending and receiving the transaction. A nonce is the number of previous transactions made by the sender. -[Private transaction processing](Private-Transaction-Processing.md) involves two transactions: +[Private transaction processing](processing.md) involves two transactions: the private transaction distributed to involved participants, and the privacy marker transaction (PMT) included on the public blockchain. Each of these transactions has its own nonce. @@ -62,20 +62,20 @@ Since the PMT is a public transaction, the PMT nonce is the public nonce for the ### Private transaction nonce -Besu maintains separate private states for each [privacy group](../Privacy/Privacy-Groups.md). +Besu maintains separate private states for each [privacy group](oups.md). The private transaction nonce for an account is specific to the privacy group. That is, the nonce for account A for privacy group ABC is different to the nonce for account A for privacy group AB. ### Private nonce validation -Unlike public transactions, private transactions are not submitted to the [transaction pool](../Transactions/Transaction-Pool.md). +Unlike public transactions, private transactions are not submitted to the [transaction pool](../../../../concepts/Transactions/Transaction-Pool.md). The private transaction is distributed directly to the participants in the transaction, and the PMT is submitted to the transaction pool. -Unlike [public transaction nonces](../Transactions/Transaction-Validation.md), private transaction nonces aren't +Unlike [public transaction nonces](../../../../concepts/Transactions/Transaction-Validation.md), private transaction nonces aren't validated when the private transaction is submitted. If a private transaction has an incorrect nonce, the PMT is still valid and is added to a block. -However, in this scenario, the private transaction execution fails when [processing the PMT](Private-Transaction-Processing.md) +However, in this scenario, the private transaction execution fails when [processing the PMT](processing.md) for the private transaction with the incorrect nonce. The following private transaction flow illustrates when nonce validation occurs: @@ -83,7 +83,7 @@ The following private transaction flow illustrates when nonce validation occurs: 1. Submit a private transaction with a [nonce value](#private-transaction-nonce). 1. The private transaction is distributed to all participants in the privacy group. 1. The PMT is created and submitted to the transaction pool with a nonce of `0` if using one-time accounts. - If using a specific account with [`--privacy-marker-transaction-signing-key-file`](../../reference/cli/options.md#privacy-marker-transaction-signing-key-file), + If using a specific account with [`--privacy-marker-transaction-signing-key-file`](../../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file), the public nonce for that account is obtained and used for the PMT. 1. The PMT is mined and included in the block. 1. After the block containing the PMT is imported, and the PMT is processed, the private transaction is retrieved from @@ -94,8 +94,8 @@ The following private transaction flow illustrates when nonce validation occurs: ### Private nonce management -In Besu, you call [`eth_getTransactionCount`](../../reference/api/index.md#eth_gettransactioncount) to get a nonce, -then use that nonce with [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) to send a +In Besu, you call [`eth_getTransactionCount`](../../../../reference/api/index.md#eth_gettransactioncount) to get a nonce, +then use that nonce with [`eea_sendRawTransaction`](../../../../reference/api/index.md#eea_sendrawtransaction) to send a private transaction. However, when you send multiple transactions in row, if a subsequent call to `getTransactionCount` happens before a @@ -114,7 +114,7 @@ You can manage private nonces in multiple ways: You must wait until the private transaction's corresponding PMT is included in a block. * Manage the nonce yourself, by keeping track of and providing the nonce at each call. - We recommend this if you're [sending many transactions that are independent of each other](../../private-networks/how-to/send-transactions/concurrent-private-transactions.md). + We recommend this if you're [sending many transactions that are independent of each other](../../../how-to/send-transactions/concurrent-private-transactions.md). !!! note diff --git a/docs/concepts/Privacy/Private-Transaction-Processing.md b/docs/private-networks/concepts/privacy/private-transactions/processing.md similarity index 88% rename from docs/concepts/Privacy/Private-Transaction-Processing.md rename to docs/private-networks/concepts/privacy/private-transactions/processing.md index bfa9d73835b..3ecb356a4f5 100644 --- a/docs/concepts/Privacy/Private-Transaction-Processing.md +++ b/docs/private-networks/concepts/privacy/private-transactions/processing.md @@ -10,22 +10,22 @@ description: Private transaction processing Read our [Orion to Tessera migration guide](https://docs.orion.consensys.net/en/latest/Tutorials/Migrating-from-Orion-to-Tessera/) and about all the [new Tessera features](https://consensys.net/blog/quorum/tessera-the-privacy-manager-of-choice-for-consensys-quorum-networks). -Processing [private transactions](Private-Transactions.md) involves the following: +Processing [private transactions](index.md) involves the following: * **Precompiled contract**: A smart contract compiled from the source language to EVM bytecode and stored by an Ethereum node for later execution. * **Privacy marker transaction (PMT)**: A public Ethereum transaction with a payload of the enclave key. The enclave key is a pointer to the private transaction in Tessera. - The `to` attribute of the PMT is the [address of the privacy precompiled contract](../../reference/api/index.md#priv_getprivacyprecompileaddress). + The `to` attribute of the PMT is the [address of the privacy precompiled contract](../../../../reference/api/index.md#priv_getprivacyprecompileaddress). The PMT is [signed with a random key or the key specified on the command line]. Private transaction processing is illustrated and described in the following diagram. -![Processing Private Transactions](../../images/PrivateTransactionProcessing.png) +![Processing Private Transactions](../../../../images/PrivateTransactionProcessing.png) -1. Submit a private transaction using [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction). +1. Submit a private transaction using [`eea_sendRawTransaction`](../../../../reference/api/index.md#eea_sendrawtransaction). The signed transaction includes transaction parameters specific to private transactions, including: * `privateFor` or `privacyGroupId`, which specifies the list of recipients. @@ -55,7 +55,7 @@ Private transaction processing is illustrated and described in the following dia 1. Besu mines the PMT into a block and the PMT is distributed to all Ethereum nodes in the network. 1. The Mainnet Transaction Processor processes the PMT in the same way as any other public transaction. - On nodes containing the [privacy precompile contract](../../reference/api/index.md#priv_getprivacyprecompileaddress) + On nodes containing the [privacy precompile contract](../../../../reference/api/index.md#priv_getprivacyprecompileaddress) specified in the `to` attribute of the PMT, the Mainnet Transaction Processor passes the PMT to the privacy precompile contract. @@ -82,5 +82,5 @@ Private transaction processing is illustrated and described in the following dia is not supported. -[signed with a random key or the key specified on the command line]: ../../how-to/Use-Privacy/Sign-Privacy-Marker-Transactions.md -[highly available and run in a separate instance to Besu]: ../../how-to/Use-Privacy/Run-Tessera-With-Besu.md +[signed with a random key or the key specified on the command line]: ../../../how-to/use-privacy/sign-pmts.md +[highly available and run in a separate instance to Besu]: ../../../how-to/use-privacy/tessera.md diff --git a/docs/private-networks/get-started/system-requirements.md b/docs/private-networks/get-started/system-requirements.md index 8b37fd0cfcd..894ce43ef30 100644 --- a/docs/private-networks/get-started/system-requirements.md +++ b/docs/private-networks/get-started/system-requirements.md @@ -7,7 +7,7 @@ description: System requirements to sync and run Besu A Hyperledger Besu private network is a network not connected to Ethereum Mainnet or an Ethereum testnet. Private networks typically use a different [chain ID](../../concepts/network-and-chain-id.md) and -[consensus protocol](../../concepts/Consensus-Protocols/Overview-Consensus.md). +[consensus protocol](../how-to/configure/consensus/index.md). Participation in private networks is typically restricted in some way, so the volume of traffic is much lower than Mainnet, resulting in lower system requirements. diff --git a/docs/how-to/Backup/Backup.md b/docs/private-networks/how-to/backup.md similarity index 94% rename from docs/how-to/Backup/Backup.md rename to docs/private-networks/how-to/backup.md index 19f23e58d7f..03685af5363 100644 --- a/docs/how-to/Backup/Backup.md +++ b/docs/private-networks/how-to/backup.md @@ -52,4 +52,4 @@ The process for finding peers after restarting is the same as for [finding peers after upgrading and restarting]. -[finding peers after upgrading and restarting]: ../upgrade/node.md#finding-peers-on-restarting +[finding peers after upgrading and restarting]: ../../how-to/upgrade/node.md#finding-peers-on-restarting diff --git a/docs/how-to/configure/Block-Proposal-Permissioning.md b/docs/private-networks/how-to/configure/block-proposal-permissioning.md similarity index 97% rename from docs/how-to/configure/Block-Proposal-Permissioning.md rename to docs/private-networks/how-to/configure/block-proposal-permissioning.md index dd2428d23c5..50f69806990 100644 --- a/docs/how-to/configure/Block-Proposal-Permissioning.md +++ b/docs/private-networks/how-to/configure/block-proposal-permissioning.md @@ -10,7 +10,7 @@ description: Block proposal permissioning Block proposal permissioning is an early access feature, and functionality and options may be updated between releases. -You can configure [block proposal permissioning](../../concepts/PKI.md#block-proposal-permissioning) +You can configure [block proposal permissioning](../../concepts/pki.md#block-proposal-permissioning) to ensure only authorized validator nodes can propose blocks in the network. Use certificates issued by a trusted authority to ensure validators are authorized to propose blocks. @@ -20,7 +20,7 @@ Use certificates issued by a trusted authority to ensure validators are authoriz **Prerequisites**: * A configured network. For example, - [see steps 1 to 5 in the QBFT tutorial](../../tutorials/Private-Network/Create-QBFT-Network.md). + [see steps 1 to 5 in the QBFT tutorial](../../../tutorials/Private-Network/Create-QBFT-Network.md). * A keystore containing the certificate and key for each network node. * A truststore containing all the trusted certificates for the network. diff --git a/docs/how-to/troubleshoot/Add-Validators-Without-Voting.md b/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md similarity index 94% rename from docs/how-to/troubleshoot/Add-Validators-Without-Voting.md rename to docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md index 8a032d3797c..99654ab399d 100644 --- a/docs/how-to/troubleshoot/Add-Validators-Without-Voting.md +++ b/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md @@ -4,7 +4,7 @@ description: How to add or remove validators without voting # Add and remove validators without voting -[QBFT](../configure/Consensus-Protocols/QBFT.md) or [IBFT 2.0](../configure/Consensus-Protocols/IBFT.md) network +[QBFT](qbft.md) or [IBFT 2.0](ibft.md) network conditions might not allow voting to change validators. For example, if a majority of the current validators are no longer participating in the network, a vote to add or remove validators won't be successful. @@ -145,8 +145,8 @@ To add or remove validators without voting: 1. Restart all nodes in the network using the updated genesis file. You can make a rolling update of the nodes, as long as they're all up before the transition block is processed. 1. To verify the changes after the transition block, call - [`qbft_getValidatorsByBlockNumber`](../../reference/api/index.md#qbft_getvalidatorsbyblocknumber) or - [`ibft_getValidatorsByBlockNumber`](../../reference/api/index.md#ibft_getvalidatorsbyblocknumber), + [`qbft_getValidatorsByBlockNumber`](../../../../reference/api/index.md#qbft_getvalidatorsbyblocknumber) or + [`ibft_getValidatorsByBlockNumber`](../../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. !!! caution @@ -157,13 +157,13 @@ To add or remove validators without voting: ## Override smart contract validators When using -[QBFT contract validator selection](../configure/Consensus-Protocols/QBFT.md#add-and-remove-validators-using-a-smart-contract), +[QBFT contract validator selection](qbft.md#add-and-remove-validators-using-a-smart-contract), if network conditions require it, you can bypass the smart contract and specify new validators in the genesis file. For example, you lose quorum for your current list of contract validators, and you can't perform a transaction to vote more in. This requires temporarily -[switching to block header validator selection mode](../configure/Consensus-Protocols/QBFT.md#swap-validator-management-methods). +[switching to block header validator selection mode](qbft.md#swap-validator-management-methods). To bypass the smart contract and specify new validators: diff --git a/docs/how-to/configure/Consensus-Protocols/Clique.md b/docs/private-networks/how-to/configure/consensus/clique.md similarity index 80% rename from docs/how-to/configure/Consensus-Protocols/Clique.md rename to docs/private-networks/how-to/configure/consensus/clique.md index 7a876a3a06b..a7e4cedf4fa 100644 --- a/docs/how-to/configure/Consensus-Protocols/Clique.md +++ b/docs/private-networks/how-to/configure/consensus/clique.md @@ -6,7 +6,7 @@ source: rinkeby.json # Clique -Besu implements the [Clique](https://eips.ethereum.org/EIPS/eip-225) proof of authority (PoA) [consensus protocol](../../../concepts/Consensus-Protocols/Overview-Consensus.md). +Besu implements the [Clique](https://eips.ethereum.org/EIPS/eip-225) proof of authority (PoA) [consensus protocol](index.md). The Rinkeby and Goerli testnets uses Clique and private networks can also use Clique. !!! warning @@ -19,11 +19,11 @@ In Clique networks, approved accounts, known as signers, validate transactions a take turns to create the next block. Existing signers propose and vote to [add or remove signers](#add-and-remove-signers). -You can [create a private network using Clique](../../../tutorials/Private-Network/Create-Private-Clique-Network.md). +You can [create a private network using Clique](../../../../tutorials/Private-Network/Create-Private-Clique-Network.md). ## Genesis file -To use Clique in a private network, Besu requires a Clique [genesis file](../../../concepts/genesis-file.md). When connecting to Rinkeby, +To use Clique in a private network, Besu requires a Clique [genesis file](../../../../concepts/genesis-file.md). When connecting to Rinkeby, Besu uses the [`rinkeby.json`](https://github.com/hyperledger/besu/blob/master/config/src/main/resources/rinkeby.json) genesis file in the `/besu/config/src/main/resources` directory. @@ -83,7 +83,7 @@ The `extraData` property consists of: ### Post-Merge configuration -After [The Merge](../../../public-networks/concepts/the-merge.md), the following block fields are modified or deprecated. +After [The Merge](../../../../public-networks/concepts/the-merge.md), the following block fields are modified or deprecated. Their fields **must** contain only the constant values from the following chart. | Field | Constant value | Comment | @@ -99,34 +99,34 @@ Additionally, [`extraData`](#extra-data) is limited to 32 bytes of vanity data a ## Connect to a Clique network To connect to the Rinkeby testnet, start Besu with the -[`--network=rinkeby`](../../../reference/cli/options.md#network) command line option. To start a +[`--network=rinkeby`](../../../../reference/cli/options.md#network) command line option. To start a node on a Clique private network, use the -[`--genesis-file`](../../../reference/cli/options.md#genesis-file) option to specify the custom +[`--genesis-file`](../../../../reference/cli/options.md#genesis-file) option to specify the custom genesis file. ## Add and remove signers Existing signers propose and vote to add or remove validators using the Clique JSON-RPC API methods. -Enable the HTTP interface with [`--rpc-http-enabled`](../../../reference/cli/options.md#rpc-http-enabled) or the -WebSocket interface with [`--rpc-ws-enabled`](../../../reference/cli/options.md#rpc-ws-enabled). +Enable the HTTP interface with [`--rpc-http-enabled`](../../../../reference/cli/options.md#rpc-http-enabled) or the +WebSocket interface with [`--rpc-ws-enabled`](../../../../reference/cli/options.md#rpc-ws-enabled). The Clique API methods are disabled by default. -To enable them, specify the [`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../../reference/cli/options.md#rpc-ws-api) option and include `CLIQUE`. +To enable them, specify the [`--rpc-http-api`](../../../../reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../../reference/cli/options.md#rpc-ws-api) option and include `CLIQUE`. The methods to add or remove signers are: -* [`clique_propose`](../../../reference/api/index.md#clique_propose). -* [`clique_getSigners`](../../../reference/api/index.md#clique_getsigners). -* [`clique_discard`](../../../reference/api/index.md#clique_discard). +* [`clique_propose`](../../../../reference/api/index.md#clique_propose). +* [`clique_getSigners`](../../../../reference/api/index.md#clique_getsigners). +* [`clique_discard`](../../../../reference/api/index.md#clique_discard). To view signer metrics for a specified block range, call -[`clique_getSignerMetrics`](../../../reference/api/index.md#clique_getsignermetrics). +[`clique_getSignerMetrics`](../../../../reference/api/index.md#clique_getsignermetrics). ### Add a signer To propose adding a signer to a Clique network, call -[`clique_propose`](../../../reference/api/index.md#clique_propose), specifying the address of the proposed signer and `true`. +[`clique_propose`](../../../../reference/api/index.md#clique_propose), specifying the address of the proposed signer and `true`. A majority of signers must execute the call. !!! example "JSON-RPC `clique_propose` request example" @@ -141,7 +141,7 @@ When more than 50% of the existing signers propose adding the signer, with their signer can begin signing blocks. To return a list of signers and confirm the addition of a proposed signer, call -[`clique_getSigners`](../../../reference/api/index.md#clique_getsigners). +[`clique_getSigners`](../../../../reference/api/index.md#clique_getsigners). !!! example "JSON-RPC `clique_getSigners` request example" @@ -150,7 +150,7 @@ To return a list of signers and confirm the addition of a proposed signer, call ``` To discard your proposal after confirming the addition of a signer, call -[`clique_discard`](../../../reference/api/index.md#clique_discard) specifying the address of the proposed signer. +[`clique_discard`](../../../../reference/api/index.md#clique_discard) specifying the address of the proposed signer. !!! example "JSON-RPC `clique_discard` request example" @@ -161,7 +161,7 @@ To discard your proposal after confirming the addition of a signer, call ### Remove a signer The process for removing a signer from a Clique network is the same as [adding a signer](#add-a-signer), except you -specify `false` as the second parameter of [`clique_propose`](../../../reference/api/index.md#clique_propose). +specify `false` as the second parameter of [`clique_propose`](../../../../reference/api/index.md#clique_propose). ### Epoch transition @@ -187,7 +187,7 @@ This may cause large, irresolvable forks in a network. ## Migrate from Clique to another consensus protocol -To migrate a network using Clique to a consensus protocol suitable for production such as [QBFT](QBFT.md), do one of the +To migrate a network using Clique to a consensus protocol suitable for production such as [QBFT](qbft.md), do one of the following: * Stop the Clique network and start the new network with the state at the time of migration. diff --git a/docs/how-to/configure/Consensus-Protocols/IBFT.md b/docs/private-networks/how-to/configure/consensus/ibft.md similarity index 89% rename from docs/how-to/configure/Consensus-Protocols/IBFT.md rename to docs/private-networks/how-to/configure/consensus/ibft.md index 352b9069fd7..fde19f92003 100644 --- a/docs/how-to/configure/Consensus-Protocols/IBFT.md +++ b/docs/private-networks/how-to/configure/consensus/ibft.md @@ -4,8 +4,8 @@ description: Hyperledger Besu IBFT 2.0 proof of authority (PoA) consensus protoc # IBFT 2.0 -Besu implements the IBFT 2.0 proof of authority (PoA) [consensus protocol](../../../concepts/Consensus-Protocols/Overview-Consensus.md). -IBFT 2.0 is supported for existing private networks, but [QBFT](QBFT.md) is the recommended enterprise-grade +Besu implements the IBFT 2.0 proof of authority (PoA) [consensus protocol](index.md). +IBFT 2.0 is supported for existing private networks, but [QBFT](qbft.md) is the recommended enterprise-grade consensus protocol for private networks. In IBFT 2.0 networks, approved accounts, known as validators, validate transactions and blocks. @@ -14,7 +14,7 @@ super-majority (greater than or equal to 2/3) of validators must first sign the Existing validators propose and vote to [add or remove validators](#add-and-remove-validators). -You can [create a private network using IBFT](../../../tutorials/Private-Network/Create-IBFT-Network.md). +You can [create a private network using IBFT](../../../../tutorials/Private-Network/Create-IBFT-Network.md). !!! important @@ -29,7 +29,7 @@ You can [create a private network using IBFT](../../../tutorials/Private-Network ## Genesis file -To use IBFT 2.0, Besu requires an IBFT 2.0 [genesis file](../../../concepts/genesis-file.md). The genesis file defines properties +To use IBFT 2.0, Besu requires an IBFT 2.0 [genesis file](../../../../concepts/genesis-file.md). The genesis file defines properties specific to IBFT 2.0. !!! example "Example IBFT 2.0 genesis file" @@ -82,7 +82,7 @@ The properties with specific values in the IBFT 2.0 genesis files are: block identification. To start a node on an IBFT 2.0 private network, use the -[`--genesis-file`](../../../reference/cli/options.md#genesis-file) option to specify the custom +[`--genesis-file`](../../../../reference/cli/options.md#genesis-file) option to specify the custom genesis file. ### Extra data @@ -107,7 +107,7 @@ Formally, `extraData` in the genesis block contains #### Generate extra data To generate the `extraData` RLP string for inclusion in the genesis file, use the -[`rlp encode`](../../../reference/cli/subcommands.md#rlp) Besu subcommand. +[`rlp encode`](../../../../reference/cli/subcommands.md#rlp) Besu subcommand. !!! example @@ -117,7 +117,7 @@ To generate the `extraData` RLP string for inclusion in the genesis file, use th Where the `toEncode.json` file contains a list of the initial validators, in ascending order. To write the validator address and copy it to the `toEncode.json` file, use the -[`public-key export-address`](../../../reference/cli/subcommands.md#export-address) Besu subcommand. +[`public-key export-address`](../../../../reference/cli/subcommands.md#export-address) Besu subcommand. For example: !!! example "One initial validator in `toEncode.json` file" @@ -180,7 +180,7 @@ Use a [transition](#transitions) to update the `blockperiodseconds` in an existi ### Post-Merge configuration -After [The Merge](../../../public-networks/concepts/the-merge.md), the following block fields are modified or deprecated. +After [The Merge](../../../../public-networks/concepts/the-merge.md), the following block fields are modified or deprecated. Their fields **must** contain only the constant values from the following chart. | Field | Constant value | Comment | @@ -196,21 +196,21 @@ Additionally, [`extraData`](#extra-data) is limited to 32 bytes of vanity data a ## Add and remove validators Existing validators propose and vote to add or remove validators using the IBFT 2.0 JSON-RPC API methods. -Enable the HTTP interface with [`--rpc-http-enabled`](../../../reference/cli/options.md#rpc-http-enabled) or the -WebSocket interface with [`--rpc-ws-enabled`](../../../reference/cli/options.md#rpc-ws-enabled). +Enable the HTTP interface with [`--rpc-http-enabled`](../../../../reference/cli/options.md#rpc-http-enabled) or the +WebSocket interface with [`--rpc-ws-enabled`](../../../../reference/cli/options.md#rpc-ws-enabled). The IBFT 2.0 API methods are disabled by default. -To enable them, specify the [`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../../reference/cli/options.md#rpc-ws-api) option and include `IBFT`. +To enable them, specify the [`--rpc-http-api`](../../../../reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../../reference/cli/options.md#rpc-ws-api) option and include `IBFT`. The methods to add or remove validators are: -* [`ibft_getPendingVotes`](../../../reference/api/index.md#ibft_getPendingVotes). -* [`ibft_proposeValidatorVote`](../../../reference/api/index.md#ibft_proposeValidatorVote). -* [`ibft_discardValidatorVote`](../../../reference/api/index.md#ibft_discardValidatorVote). +* [`ibft_getPendingVotes`](../../../../reference/api/index.md#ibft_getPendingVotes). +* [`ibft_proposeValidatorVote`](../../../../reference/api/index.md#ibft_proposeValidatorVote). +* [`ibft_discardValidatorVote`](../../../../reference/api/index.md#ibft_discardValidatorVote). To view validator metrics for a specified block range, use -[`ibft_getSignerMetrics`](../../../reference/api/index.md#ibft_getsignermetrics). +[`ibft_getSignerMetrics`](../../../../reference/api/index.md#ibft_getsignermetrics). !!! note @@ -220,7 +220,7 @@ To view validator metrics for a specified block range, use ### Add a validator To propose adding a validator to an IBFT 2.0 network, call -[`ibft_proposeValidatorVote`](../../../reference/api/index.md#ibft_proposevalidatorvote), specifying the address of the +[`ibft_proposeValidatorVote`](../../../../reference/api/index.md#ibft_proposevalidatorvote), specifying the address of the proposed validator and `true`. A majority of validators must execute the call. @@ -231,14 +231,14 @@ A majority of validators must execute the call. ``` When the validator proposes the next block, the protocol inserts one proposal received from -[`ibft_proposeValidatorVote`](../../../reference/api/index.md#ibft_proposevalidatorvote) into the block. +[`ibft_proposeValidatorVote`](../../../../reference/api/index.md#ibft_proposevalidatorvote) into the block. If blocks include all proposals, subsequent blocks proposed by the validator will not contain a vote. When more than 50% of the existing validators have published a matching proposal, the protocol adds the proposed validator to the validator pool and the validator can begin validating blocks. To return a list of validators and confirm the addition of a proposed validator, use -[`ibft_getValidatorsByBlockNumber`](../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber). +[`ibft_getValidatorsByBlockNumber`](../../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber). !!! example "JSON-RPC `ibft_getValidatorsByBlockNumber` request example" @@ -247,7 +247,7 @@ To return a list of validators and confirm the addition of a proposed validator, ``` To discard your proposal after confirming the addition of a validator, call -[`ibft_discardValidatorVote`](../../../reference/api/index.md#ibft_discardvalidatorvote), +[`ibft_discardValidatorVote`](../../../../reference/api/index.md#ibft_discardvalidatorvote), specifying the address of the proposed validator. !!! example "JSON-RPC `ibft_discardValidatorVote` request example" @@ -260,7 +260,7 @@ specifying the address of the proposed validator. The process for removing a validator from an IBFT 2.0 network is the same as [adding a validator](#add-a-validator) except you specify `false` as the second parameter of -[`ibft_proposeValidatorVote`](../../../reference/api/index.md#ibft_proposevalidatorvote). +[`ibft_proposeValidatorVote`](../../../../reference/api/index.md#ibft_proposevalidatorvote). ### Epoch transition @@ -360,7 +360,7 @@ To update an existing network with a new `blockperiodseconds`: 3. Restart all nodes in the network using the updated genesis file. 4. To verify the changes after the transition block, call - [`ibft_getValidatorsByBlockNumber`](../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. + [`ibft_getValidatorsByBlockNumber`](../../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. ### Configure block rewards on an existing network deployment diff --git a/docs/concepts/Consensus-Protocols/Overview-Consensus.md b/docs/private-networks/how-to/configure/consensus/index.md similarity index 63% rename from docs/concepts/Consensus-Protocols/Overview-Consensus.md rename to docs/private-networks/how-to/configure/consensus/index.md index 8cd4e7c155a..a26afc998f4 100644 --- a/docs/concepts/Consensus-Protocols/Overview-Consensus.md +++ b/docs/private-networks/how-to/configure/consensus/index.md @@ -6,19 +6,19 @@ description: Besu consensus protocols Besu supports the following consensus protocols: -* [QBFT](../../how-to/configure/Consensus-Protocols/QBFT.md) (proof of authority) - The recommended +* [QBFT](qbft.md) (proof of authority) - The recommended enterprise-grade consensus protocol for private networks. -* [IBFT 2.0](../../how-to/configure/Consensus-Protocols/IBFT.md) (proof of authority) - Supported for existing private networks. -* [Clique](../../how-to/configure/Consensus-Protocols/Clique.md) (proof of authority) - Not recommended for +* [IBFT 2.0](ibft.md) (proof of authority) - Supported for existing private networks. +* [Clique](clique.md) (proof of authority) - Not recommended for production use. - You can [migrate a network using Clique to another consensus protocol](../../how-to/configure/Consensus-Protocols/Clique.md#migrate-from-clique-to-another-consensus-protocol). + You can [migrate a network using Clique to another consensus protocol](clique.md#migrate-from-clique-to-another-consensus-protocol). * [Proof of stake](https://docs.teku.consensys.net/en/latest/Concepts/Proof-of-Stake/) - Used on Ethereum Mainnet - post-[Merge](../../public-networks/concepts/the-merge.md) and can also be used on the [Merge testnet](../../public-networks/tutorials/merge-testnet.md). + post-[Merge](../../../../public-networks/concepts/the-merge.md) and can also be used on the [Merge testnet](../../../../public-networks/tutorials/merge-testnet.md). * [Ethash](https://ethereum.org/en/developers/docs/consensus-mechanisms/pow/) (proof of work) - Used on Ethereum Mainnet - pre-[Merge](../../public-networks/concepts/the-merge.md) and can also be used in - [small development networks](../../tutorials/Private-Network/Create-Private-Network.md). + pre-[Merge](../../../../public-networks/concepts/the-merge.md) and can also be used in + [small development networks](../../../../tutorials/Private-Network/Create-Private-Network.md). -See a [comparison of the proof of authority consensus protocols](Comparing-PoA.md). +See a [comparison of the proof of authority consensus protocols](../../../concepts/poa.md). The `config` property in the genesis file specifies the consensus protocol for a chain. diff --git a/docs/how-to/configure/Consensus-Protocols/QBFT.md b/docs/private-networks/how-to/configure/consensus/qbft.md similarity index 94% rename from docs/how-to/configure/Consensus-Protocols/QBFT.md rename to docs/private-networks/how-to/configure/consensus/qbft.md index b5425519db7..5dc7fee165f 100644 --- a/docs/how-to/configure/Consensus-Protocols/QBFT.md +++ b/docs/private-networks/how-to/configure/consensus/qbft.md @@ -4,7 +4,7 @@ description: Hyperledger Besu QBFT proof of authority (PoA) consensus protocol i # QBFT -Hyperledger Besu implements the QBFT proof of authority (PoA) [consensus protocol](../../../concepts/Consensus-Protocols/Overview-Consensus.md). +Hyperledger Besu implements the QBFT proof of authority (PoA) [consensus protocol](index.md). QBFT is the recommended enterprise-grade consensus protocol for private networks. In QBFT networks, approved accounts, known as validators, validate transactions and blocks. @@ -13,7 +13,7 @@ super-majority (greater than or equal to 2/3) of validators must first sign the Existing validators propose and vote to [add or remove validators](#add-and-remove-validators). -You can [create a private network using QBFT](../../../tutorials/Private-Network/Create-QBFT-Network.md). +You can [create a private network using QBFT](../../../../tutorials/Private-Network/Create-QBFT-Network.md). !!! important @@ -28,7 +28,7 @@ You can [create a private network using QBFT](../../../tutorials/Private-Network ## Genesis file -To use QBFT, define a [genesis file](../../../concepts/genesis-file.md) that contains the QBFT properties. +To use QBFT, define a [genesis file](../../../../concepts/genesis-file.md) that contains the QBFT properties. The genesis file differs depending on the [validator management method](#add-and-remove-validators) you intend to use. @@ -164,7 +164,7 @@ The properties with specific values in the QBFT genesis files are: block identification. To start a node on a QBFT private network, use the -[`--genesis-file`](../../../reference/cli/options.md#genesis-file) option to specify the custom +[`--genesis-file`](../../../../reference/cli/options.md#genesis-file) option to specify the custom genesis file. ### Extra data @@ -200,7 +200,7 @@ Formally, `extraData` in the genesis block contains: #### Generate extra data To generate the `extraData` RLP string for inclusion in the genesis file, -use the [`rlp encode`](../../../reference/cli/subcommands.md#rlp) Besu subcommand. +use the [`rlp encode`](../../../../reference/cli/subcommands.md#rlp) Besu subcommand. !!! example @@ -210,7 +210,7 @@ use the [`rlp encode`](../../../reference/cli/subcommands.md#rlp) Besu subcomman Where the `toEncode.json` file contains a list of the initial validators, in ascending order. To write the validator address and copy it to the `toEncode.json` file, use the -[`public-key export-address`](../../../reference/cli/subcommands.md#export-address) Besu +[`public-key export-address`](../../../../reference/cli/subcommands.md#export-address) Besu subcommand. For example: !!! example "Initial validators in `toEncode.json` file" @@ -279,7 +279,7 @@ Use a [transition](#transitions) to update the `blockperiodseconds` in an existi ### Post-Merge configuration -After [The Merge](../../../public-networks/concepts/the-merge.md), the following block fields are modified or deprecated. +After [The Merge](../../../../public-networks/concepts/the-merge.md), the following block fields are modified or deprecated. Their fields **must** contain only the constant values from the following chart. | Field | Constant value | Comment | @@ -311,21 +311,21 @@ method are configured in the genesis file's `storage` section. ### Add and remove validators using block headers -Enable the HTTP interface with [`--rpc-http-enabled`](../../../reference/cli/options.md#rpc-http-enabled) or the -WebSockets interface with [`--rpc-ws-enabled`](../../../reference/cli/options.md#rpc-ws-enabled). +Enable the HTTP interface with [`--rpc-http-enabled`](../../../../reference/cli/options.md#rpc-http-enabled) or the +WebSockets interface with [`--rpc-ws-enabled`](../../../../reference/cli/options.md#rpc-ws-enabled). The QBFT API methods are disabled by default. -To enable them, specify the [`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../../reference/cli/options.md#rpc-ws-api) option and include `QBFT`. +To enable them, specify the [`--rpc-http-api`](../../../../reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../../reference/cli/options.md#rpc-ws-api) option and include `QBFT`. The methods to add or remove validators are: -* [`qbft_getPendingVotes`](../../../reference/api/index.md#qbft_getpendingvotes). -* [`qbft_proposeValidatorVote`](../../../reference/api/index.md#qbft_proposevalidatorvote). -* [`qbft_discardValidatorVote`](../../../reference/api/index.md#qbft_discardvalidatorvote). +* [`qbft_getPendingVotes`](../../../../reference/api/index.md#qbft_getpendingvotes). +* [`qbft_proposeValidatorVote`](../../../../reference/api/index.md#qbft_proposevalidatorvote). +* [`qbft_discardValidatorVote`](../../../../reference/api/index.md#qbft_discardvalidatorvote). To view validator metrics for a specified block range, use -[`qbft_getSignerMetrics`](../../../reference/api/index.md#qbft_getsignermetrics). +[`qbft_getSignerMetrics`](../../../../reference/api/index.md#qbft_getsignermetrics). !!! note @@ -335,7 +335,7 @@ To view validator metrics for a specified block range, use #### Add a validator To propose adding a validator, call -[`qbft_proposeValidatorVote`](../../../reference/api/index.md#qbft_proposevalidatorvote), +[`qbft_proposeValidatorVote`](../../../../reference/api/index.md#qbft_proposevalidatorvote), specifying the address of the proposed validator and `true`. A majority of validators must execute the call. @@ -346,7 +346,7 @@ the call. ``` When the validator proposes the next block, the protocol inserts one proposal received from -[`qbft_proposeValidatorVote`](../../../reference/api/index.md#qbft_proposevalidatorvote) into the +[`qbft_proposeValidatorVote`](../../../../reference/api/index.md#qbft_proposevalidatorvote) into the block. If blocks include all proposals, subsequent blocks proposed by the validator will not contain a vote. @@ -354,7 +354,7 @@ When more than 50% of the existing validators have published a matching proposal adds the proposed validator to the validator pool and the validator can begin validating blocks. To return a list of validators and confirm the addition of a proposed validator, use -[`qbft_getValidatorsByBlockNumber`](../../../reference/api/index.md#qbft_getvalidatorsbyblocknumber). +[`qbft_getValidatorsByBlockNumber`](../../../../reference/api/index.md#qbft_getvalidatorsbyblocknumber). !!! example "JSON-RPC `qbft_getValidatorsByBlockNumber` request example" @@ -363,7 +363,7 @@ To return a list of validators and confirm the addition of a proposed validator, ``` To discard your proposal after confirming the addition of a validator, call -[`qbft_discardValidatorVote`](../../../reference/api/index.md#qbft_discardvalidatorvote), +[`qbft_discardValidatorVote`](../../../../reference/api/index.md#qbft_discardvalidatorvote), specifying the address of the proposed validator. !!! example "JSON-RPC `qbft_discardValidatorVote` request example" @@ -376,7 +376,7 @@ specifying the address of the proposed validator. The process for removing a validator is the same as adding a validator except you specify `false` as the second parameter of -[`qbft_proposeValidatorVote`](../../../reference/api/index.md#qbft_proposevalidatorvote). +[`qbft_proposeValidatorVote`](../../../../reference/api/index.md#qbft_proposevalidatorvote). #### Epoch transition @@ -394,7 +394,7 @@ View the [example smart contract](https://github.com/ConsenSys/validator-smart-c create and deploy the smart contract. You can pre-deploy the validator smart contract in a new QBFT network by specifying the contract details in the -[genesis file](QBFT.md#genesis-file). For existing QBFT networks you need to compile and deploy the contract +[genesis file](qbft.md#genesis-file). For existing QBFT networks you need to compile and deploy the contract using a transaction, then obtain the contract address from the receipt and use that in a [transition](#swap-validator-management-methods). @@ -491,7 +491,7 @@ To update an existing network with a new `blockperiodseconds`: 3. Restart all nodes in the network using the updated genesis file. 4. To verify the changes after the transition block, call - [`qbft_getValidatorsByBlockNumber`](../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. + [`qbft_getValidatorsByBlockNumber`](../../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. ### Configure block rewards on an existing network deployment diff --git a/docs/how-to/configure/Contracts-in-Genesis.md b/docs/private-networks/how-to/configure/contracts.md similarity index 95% rename from docs/how-to/configure/Contracts-in-Genesis.md rename to docs/private-networks/how-to/configure/contracts.md index 5f8e982b790..97334d36d4f 100644 --- a/docs/how-to/configure/Contracts-in-Genesis.md +++ b/docs/private-networks/how-to/configure/contracts.md @@ -4,7 +4,7 @@ description: Pre-deploying contracts in the genesis file # Pre-deploying contracts in the genesis file -To pre-deploy contracts when starting Besu, specify the contract code in the [genesis file](../../concepts/genesis-file.md). +To pre-deploy contracts when starting Besu, specify the contract code in the [genesis file](../../../concepts/genesis-file.md). !!! example "Contract code in the genesis file" diff --git a/docs/how-to/configure/Alternative-EC-Curves.md b/docs/private-networks/how-to/configure/curves.md similarity index 91% rename from docs/how-to/configure/Alternative-EC-Curves.md rename to docs/private-networks/how-to/configure/curves.md index 48304bd1549..f1b5eb4f38f 100644 --- a/docs/how-to/configure/Alternative-EC-Curves.md +++ b/docs/private-networks/how-to/configure/curves.md @@ -12,7 +12,7 @@ By default, Besu uses the Ethereum standard `secp256k1` elliptic curve (EC). However, when running nodes in a private network, it is possible to configure an alternative elliptic curve. The configuration for what elliptic curve Besu will use is done in the network configuration section of genesis file, -using the [`ecCurve`](../../reference/genesis-items.md#Configuration_Items) key: +using the [`ecCurve`](../../../reference/genesis-items.md#Configuration_Items) key: ```bash { diff --git a/docs/how-to/configure/FreeGas.md b/docs/private-networks/how-to/configure/free-gas.md similarity index 95% rename from docs/how-to/configure/FreeGas.md rename to docs/private-networks/how-to/configure/free-gas.md index 2846ccebd89..b9c2bd9255d 100644 --- a/docs/how-to/configure/FreeGas.md +++ b/docs/private-networks/how-to/configure/free-gas.md @@ -74,7 +74,7 @@ size (in bytes). ### 3. Start Besu with a minimum gas price of zero -When starting nodes, set the [minimum gas price](../../reference/cli/options.md#min-gas-price) +When starting nodes, set the [minimum gas price](../../../reference/cli/options.md#min-gas-price) to zero. === "Command Line" @@ -90,10 +90,10 @@ to zero. ``` !!! important - In a free gas network, ensure the [minimum gas price](../../reference/cli/options.md#min-gas-price) + In a free gas network, ensure the [minimum gas price](../../../reference/cli/options.md#min-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`](../../reference/api/index.md#eth_gasprice). + You can query a node's gas configuration using [`eth_gasPrice`](../../../reference/api/index.md#eth_gasprice). ## Configuring free gas in Truffle diff --git a/docs/how-to/configure/TLS/Configure-TLS.md b/docs/private-networks/how-to/configure/tls/client-and-server.md similarity index 76% rename from docs/how-to/configure/TLS/Configure-TLS.md rename to docs/private-networks/how-to/configure/tls/client-and-server.md index 6c0e9c7ed64..51d9d5ba026 100644 --- a/docs/how-to/configure/TLS/Configure-TLS.md +++ b/docs/private-networks/how-to/configure/tls/client-and-server.md @@ -5,7 +5,7 @@ description: Configure TLS # Configure TLS Hyperledger Besu supports TLS for client and server communication. For example, you can -[configure TLS](../../../concepts/TLS.md) for communication between +[configure TLS](../../../../concepts/TLS.md) for communication between [EthSigner](https://docs.ethsigner.consensys.net/en/latest/Concepts/TLS/) and Besu, and Besu and [Tessera](https://docs.tessera.consensys.net/HowTo/Configure/TLS/). @@ -62,22 +62,22 @@ besu --rpc-http-enabled --rpc-http-tls-enabled --rpc-http-tls-client-auth-enable The command line: * Enables the HTTP JSON-RPC service using the - [`--rpc-http-enabled`](../../../reference/cli/options.md#rpc-http-enabled) option. + [`--rpc-http-enabled`](../../../../reference/cli/options.md#rpc-http-enabled) option. * Enables TLS for the HTTP JSON-RPC service using the - [`--rpc-http-tls-enabled`](../../../reference/cli/options.md#rpc-http-tls-enabled) option. + [`--rpc-http-tls-enabled`](../../../../reference/cli/options.md#rpc-http-tls-enabled) option. * Enables TLS client authentication using the - [`--rpc-http-tls-client-auth-enabled`](../../../reference/cli/options.md#rpc-http-tls-client-auth-enabled) option. + [`--rpc-http-tls-client-auth-enabled`](../../../../reference/cli/options.md#rpc-http-tls-client-auth-enabled) option. * Specifies the keystore using the - [`--rpc-http-tls-keystore-file`](../../../reference/cli/options.md#rpc-http-tls-keystore-file) + [`--rpc-http-tls-keystore-file`](../../../../reference/cli/options.md#rpc-http-tls-keystore-file) option. * Specifies the file that contains the password to decrypt the keystore using the - [`--rpc-http-tls-keystore-password-file`](../../../reference/cli/options.md#rpc-http-tls-keystore-password-file) option. + [`--rpc-http-tls-keystore-password-file`](../../../../reference/cli/options.md#rpc-http-tls-keystore-password-file) option. * [Specifies the clients](#create-the-known-clients-file) allowed to connect to Besu using the - [`--rpc-http-tls-known-clients-file`](../../../reference/cli/options.md#rpc-http-tls-known-clients-file) option. + [`--rpc-http-tls-known-clients-file`](../../../../reference/cli/options.md#rpc-http-tls-known-clients-file) option. * specifies the Java cipher suites using the - [`--rpc-http-tls-cipher-suite`](../../../reference/cli/options.md#rpc-http-tls-cipher-suite) option. + [`--rpc-http-tls-cipher-suite`](../../../../reference/cli/options.md#rpc-http-tls-cipher-suite) option. * specifies the TLS protocol version using the - [`--rpc-http-tls-protocol`](../../../reference/cli/options.md#rpc-http-tls-protocol) option. + [`--rpc-http-tls-protocol`](../../../../reference/cli/options.md#rpc-http-tls-protocol) option. !!! note @@ -123,14 +123,14 @@ besu --privacy-tls-enabled --privacy-tls-keystore-file=/Users/me/my_node/keystor The command line: * Enables TLS with the server using the - [`--privacy-tls-enabled`](../../../reference/cli/options.md#privacy-tls-enabled) option. + [`--privacy-tls-enabled`](../../../../reference/cli/options.md#privacy-tls-enabled) option. * Specifies the keystore using the - [`--privacy-tls-keystore-file`](../../../reference/cli/options.md#privacy-tls-keystore-file) + [`--privacy-tls-keystore-file`](../../../../reference/cli/options.md#privacy-tls-keystore-file) option. * Specifies the file that contains the password to decrypt the keystore using the - [`--privacy-tls-keystore-password-file`](../../../reference/cli/options.md#privacy-tls-keystore-password-file) option. + [`--privacy-tls-keystore-password-file`](../../../../reference/cli/options.md#privacy-tls-keystore-password-file) option. * Specifies the trusted servers using the - [`--privacy-tls-known-enclave-file`](../../../reference/cli/options.md#privacy-tls-known-enclave-file) option. + [`--privacy-tls-known-enclave-file`](../../../../reference/cli/options.md#privacy-tls-known-enclave-file) option. [Configure the client for TLS]: https://docs.ethsigner.consensys.net/en/latest/HowTo/Configure-TLS/#server-tls-connection diff --git a/docs/how-to/configure/TLS/P2P-TLS.md b/docs/private-networks/how-to/configure/tls/p2p.md similarity index 97% rename from docs/how-to/configure/TLS/P2P-TLS.md rename to docs/private-networks/how-to/configure/tls/p2p.md index 996936c6371..508b8a42fe5 100644 --- a/docs/how-to/configure/TLS/P2P-TLS.md +++ b/docs/private-networks/how-to/configure/tls/p2p.md @@ -19,7 +19,7 @@ Besu supports PKCS11, PKCS12, and JKS keystore and truststore types for P2P TLS. **Prerequisites**: * A configured network. For example, - [see steps 1 to 5 in the QBFT tutorial](../../../tutorials/Private-Network/Create-QBFT-Network.md). + [see steps 1 to 5 in the QBFT tutorial](../../../../tutorials/Private-Network/Create-QBFT-Network.md). * Each node requires a keystore that contains the node's certificate and key. * A truststore containing all the trusted certificates for the network. diff --git a/docs/how-to/Deploy/Validators.md b/docs/private-networks/how-to/configure/validators.md similarity index 79% rename from docs/how-to/Deploy/Validators.md rename to docs/private-networks/how-to/configure/validators.md index 50c0715b329..0d41c2ddfe3 100644 --- a/docs/how-to/Deploy/Validators.md +++ b/docs/private-networks/how-to/configure/validators.md @@ -4,9 +4,9 @@ description: Configuring validators in production networks # Configuring validators in a production network -As when [configuring bootnodes](Bootnodes.md): +As when [configuring bootnodes](../deploy/Bootnodes.md): -1. Create the [node key pair](../../concepts/node-keys.md) (that is, the private and public key) +1. Create the [node key pair](../../../concepts/node-keys.md) (that is, the private and public key) before starting the validator. 1. When creating validators in the cloud (for example, AWS or Azure), attempt to assign static IP addresses to them. If your network is: @@ -31,11 +31,11 @@ You can [vote validators in or out of the validator pool]. ## Validators as bootnodes -Validators can also be bootnodes. Other than the [usual configuration for bootnodes](Bootnodes.md), +Validators can also be bootnodes. Other than the [usual configuration for bootnodes](../deploy/Bootnodes.md), you do not need to specify any extra configuration when a validator is also a bootnode. If you remove a validator that is also a bootnode, ensure there are enough remaining bootnodes on the network. -[vote validators in or out of the validator pool]: ../configure/Consensus-Protocols/IBFT.md#adding-and-removing-validators +[vote validators in or out of the validator pool]: consensus/ibft.md#adding-and-removing-validators diff --git a/docs/private-networks/how-to/connect/bootnodes.md b/docs/private-networks/how-to/connect/bootnodes.md index ee28fcca588..c650e2dcbe1 100644 --- a/docs/private-networks/how-to/connect/bootnodes.md +++ b/docs/private-networks/how-to/connect/bootnodes.md @@ -27,7 +27,7 @@ enode URLs and uses this list automatically when you specify the In private networks for development or testing purposes, specify at least one bootnode. -In production networks, [configure two or more nodes as bootnodes](../../../how-to/Deploy/Bootnodes.md). +In production networks, [configure two or more nodes as bootnodes](../deploy/Bootnodes.md). ### Specify a bootnode diff --git a/docs/how-to/Deploy/Bootnodes.md b/docs/private-networks/how-to/deploy/Bootnodes.md similarity index 79% rename from docs/how-to/Deploy/Bootnodes.md rename to docs/private-networks/how-to/deploy/Bootnodes.md index 8df55b95709..66ce0372ad1 100644 --- a/docs/how-to/Deploy/Bootnodes.md +++ b/docs/private-networks/how-to/deploy/Bootnodes.md @@ -8,14 +8,14 @@ A network must have at least one operating bootnode. To allow for continuity in failure, configure two or more bootnodes. We do not recommend putting bootnodes behind a load balancer because the -[enode](../../concepts/node-keys.md#enode-url) relates to the node public key, IP address, and +[enode](../../../concepts/node-keys.md#enode-url) relates to the node public key, IP address, and discovery ports. Any changes to a bootnode enode prevents other nodes from being able to establish a connection with the bootnode. This is why we recommend putting more bootnodes on the network itself. To ensure that a bootnode enode does not change when recovering from a complete bootnode failure: -1. Create the [node key pair](../../concepts/node-keys.md) (that is, the private and public key) +1. Create the [node key pair](../../../concepts/node-keys.md) (that is, the private and public key) before starting the bootnode. 1. When creating bootnodes in the cloud (for example, AWS and Azure), attempt to assign a static IP address to them. If your network is: @@ -48,10 +48,10 @@ To allow for failure, specify all bootnodes on the command line (even to the boo ## Adding and removing bootnodes Adding new bootnodes is a similar process to creating bootnodes. After creating the bootnodes and -adding them to the network,update the [`--bootnodes`](../../reference/cli/options.md#bootnodes) +adding them to the network,update the [`--bootnodes`](../../../reference/cli/options.md#bootnodes) command line option for each node to include the new bootnodes. When adding bootnodes, you do not need to restart running nodes. By updating the -[`--bootnodes`](../../reference/cli/options.md#bootnodes) option, the next time you restart the -nodes (for example, when [upgrading](../upgrade/node.md)), the nodes connect to the new +[`--bootnodes`](../../../reference/cli/options.md#bootnodes) option, the next time you restart the +nodes (for example, when [upgrading](../../../how-to/upgrade/node.md)), the nodes connect to the new bootnodes. diff --git a/docs/how-to/Deploy/Production.md b/docs/private-networks/how-to/deploy/Production.md similarity index 91% rename from docs/how-to/Deploy/Production.md rename to docs/private-networks/how-to/deploy/Production.md index 52873edff84..d508d821184 100644 --- a/docs/how-to/Deploy/Production.md +++ b/docs/private-networks/how-to/deploy/Production.md @@ -35,4 +35,4 @@ procedure above to deploy the permissioning management dapp to your Web server. [projects release page]: https://github.com/ConsenSys/permissioning-smart-contracts/releases/latest -[Getting started with onchain permissioning]: ../../tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md +[Getting started with onchain permissioning]: ../../../tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md diff --git a/docs/how-to/Deploy/Ansible.md b/docs/private-networks/how-to/deploy/ansible.md similarity index 100% rename from docs/how-to/Deploy/Ansible.md rename to docs/private-networks/how-to/deploy/ansible.md diff --git a/docs/how-to/Deploy/Cloud.md b/docs/private-networks/how-to/deploy/cloud.md similarity index 92% rename from docs/how-to/Deploy/Cloud.md rename to docs/private-networks/how-to/deploy/cloud.md index 5f0bedc0052..f1f2a5ff876 100644 --- a/docs/how-to/Deploy/Cloud.md +++ b/docs/private-networks/how-to/deploy/cloud.md @@ -10,4 +10,4 @@ When deploying Besu to the cloud: bootnodes and validators. * If your network is a multi-region network, consider using VPC Peering to reduce latency. * Where required, use VPNs to connect to your on premise systems, or single private chains. -* If deploying to Kubernetes, please refer to the [tutorial](../../tutorials/Kubernetes/Overview.md). +* If deploying to Kubernetes, please refer to the [tutorial](../../../tutorials/Kubernetes/Overview.md). diff --git a/docs/how-to/Deploy/Ethstats.md b/docs/private-networks/how-to/deploy/ethstats.md similarity index 90% rename from docs/how-to/Deploy/Ethstats.md rename to docs/private-networks/how-to/deploy/ethstats.md index 1acf530ea63..7dcecfd0e11 100644 --- a/docs/how-to/Deploy/Ethstats.md +++ b/docs/private-networks/how-to/deploy/ethstats.md @@ -36,8 +36,8 @@ for installing those components and connecting to a dashboard. You can use command line options to connect a node directly to a [dashboard](https://github.com/goerli/ethstats-client#available-dashboards), without using a client. -Start a node using the [`--ethstats`](../../reference/cli/options.md#ethstats) option to specify the Ethstats server URL. -You can specify a contact email to send to the server using [`--ethstats-contact`](../../reference/cli/options.md#ethstats-contact). +Start a node using the [`--ethstats`](../../../reference/cli/options.md#ethstats) option to specify the Ethstats server URL. +You can specify a contact email to send to the server using [`--ethstats-contact`](../../../reference/cli/options.md#ethstats-contact). !!! example @@ -51,4 +51,4 @@ You can specify a contact email to send to the server using [`--ethstats-contact Open the selected dashboard website. Find your node under the list of nodes to see the statistics for the node and the network. -![dashboard](../../images/dashboard.png) +![dashboard](../../../images/dashboard.png) diff --git a/docs/how-to/Deploy/Kubernetes.md b/docs/private-networks/how-to/deploy/kubernetes.md similarity index 86% rename from docs/how-to/Deploy/Kubernetes.md rename to docs/private-networks/how-to/deploy/kubernetes.md index 6b8901a987c..3f93f7c9587 100644 --- a/docs/how-to/Deploy/Kubernetes.md +++ b/docs/private-networks/how-to/deploy/kubernetes.md @@ -10,5 +10,5 @@ private networks using Kubernetes (K8s). The repository has full support for clo AWS, Azure, GCP, and IBM, and has production setups that use of identities and cloud-native secret storage services like Azure KeyVault and AWS Secrets Manager. -Refer to the [tutorial](../../tutorials/Kubernetes/Overview.md) and familiarize yourself with +Refer to the [tutorial](../../../tutorials/Kubernetes/Overview.md) and familiarize yourself with the reference implementations, and customize them to your requirements. diff --git a/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md b/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md index 71fa495a6c4..537efa4f109 100644 --- a/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md +++ b/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md @@ -5,13 +5,13 @@ description: Creating and sending concurrent private transactions with Hyperledg # Sending concurrent private transactions Private transaction processing involves two transactions, the private transaction and the -[privacy marker transaction (PMT)](../../../concepts/Privacy/Private-Transaction-Processing.md). -The private transaction and the PMT each have their own [nonce](../../../concepts/Privacy/Private-Transactions.md#nonces). +[privacy marker transaction (PMT)](../../concepts/privacy/private-transactions/processing.md). +The private transaction and the PMT each have their own [nonce](../../concepts/privacy/private-transactions/index.md#nonces). If your private transaction rate requires sending private transactions without waiting for the previous private transaction to be mined, using [`eth_getTransactionCount`](../../../reference/api/index.md#eth_gettransactioncount) and [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) may result in -[incorrect nonces](../../../concepts/Privacy/Private-Transactions.md#private-nonce-management). +[incorrect nonces](../../concepts/privacy/private-transactions/index.md#private-nonce-management). In this case, use [`priv_distributeRawTransaction`](private-transactions.md#priv_distributerawtransaction) instead of [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction). diff --git a/docs/private-networks/how-to/send-transactions/private-transactions.md b/docs/private-networks/how-to/send-transactions/private-transactions.md index 5dc95197261..48927fd9ab5 100644 --- a/docs/private-networks/how-to/send-transactions/private-transactions.md +++ b/docs/private-networks/how-to/send-transactions/private-transactions.md @@ -4,9 +4,9 @@ description: Creating and sending private transactions with Hyperledger Besu # Creating and sending private transactions -Create and send [private transactions](../../../concepts/Privacy/Privacy-Overview.md) using: +Create and send [private transactions](../../concepts/privacy/index.md) using: -* [web3js-quorum client library](../../../how-to/Interact/Client-Libraries/web3js-quorum.md) or +* [web3js-quorum client library](../use-privacy/web3js-quorum.md) or [web3j client library](https://github.com/web3j/web3j) * [`eea_sendTransaction` with EthSigner](https://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/) * [`eea_sendRawTransaction`](#eea_sendrawtransaction) @@ -17,7 +17,7 @@ distributed. If any participants are offline when submitting the private transac transaction is not attempted and you must resubmit the transaction. The `gas` and `gasPrice` specified when sending a private transaction are used by the -[privacy marker transaction (PMT)](../../../concepts/Privacy/Private-Transaction-Processing.md), not the private transaction itself. +[privacy marker transaction (PMT)](../../concepts/privacy/private-transactions/processing.md), not the private transaction itself. !!! note @@ -28,7 +28,7 @@ The `gas` and `gasPrice` specified when sending a private transaction are used b [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) distributes the private transaction to the participating nodes, and signs and submits the PMT, as described in -[Private transaction processing](../../../concepts/Privacy/Private-Transaction-Processing.md). +[Private transaction processing](../../concepts/privacy/private-transactions/processing.md). !!! note @@ -43,7 +43,7 @@ Use [`priv_distributeRawTransaction`](../../../reference/api/index.md#priv_distr [`priv_distributeRawTransaction`](../../../reference/api/index.md#priv_distributerawtransaction) distributes the private transaction to the participating nodes but does not sign and submit the PMT. -That is, it performs steps 1 to 5 of [Private Transaction Processing](../../../concepts/Privacy/Private-Transaction-Processing.md). +That is, it performs steps 1 to 5 of [Private Transaction Processing](../../concepts/privacy/private-transactions/processing.md). If using [`priv_distributeRawTransaction`](../../../reference/api/index.md#priv_distributerawtransaction) @@ -55,7 +55,7 @@ in the `data` field of a call to [`eth_sendRawTransaction`](../../../reference/api/index.md#eth_sendrawtransaction). Use the value returned by [`priv_getPrivacyPrecompileAddress`](../../../reference/api/index.md#priv_getprivacyprecompileaddress), which is the -address of the [privacy precompiled contract](../../../concepts/Privacy/Private-Transaction-Processing.md), in the `to` +address of the [privacy precompiled contract](../../concepts/privacy/private-transactions/processing.md), in the `to` field of the call. By using the [public Ethereum transaction](../../../how-to/send-transactions.md), @@ -163,5 +163,5 @@ private transactions to create a contract. -[EEA-compliant private transaction]: ../../../concepts/Privacy/Privacy-Groups.md#enterprise-ethereum-alliance-privacy -[Besu-extended private transaction]: ../../../concepts/Privacy/Privacy-Groups.md#besu-extended-privacy +[EEA-compliant private transaction]: ../../concepts/privacy/privacy-groups.md#enterprise-ethereum-alliance-privacy +[Besu-extended private transaction]: ../../concepts/privacy/privacy-groups.md#besu-extended-privacy diff --git a/docs/how-to/Limit-Access/Specify-Perm-Version.md b/docs/private-networks/how-to/use-permissioning/Specify-Perm-Version.md similarity index 79% rename from docs/how-to/Limit-Access/Specify-Perm-Version.md rename to docs/private-networks/how-to/use-permissioning/Specify-Perm-Version.md index b898050b620..d4fc3008eb2 100644 --- a/docs/how-to/Limit-Access/Specify-Perm-Version.md +++ b/docs/private-networks/how-to/use-permissioning/Specify-Perm-Version.md @@ -4,8 +4,8 @@ description: Specify the permissioning interface version # Specify the permissioning contract interface version -Use the [`--permissions-nodes-contract-version`](../../reference/cli/options.md#permissions-nodes-contract-version) -command line option to specify the version of the [permissioning contract interface](../../concepts/Permissioning/Onchain-Permissioning.md#permissioning-contracts). +Use the [`--permissions-nodes-contract-version`](../../../reference/cli/options.md#permissions-nodes-contract-version) +command line option to specify the version of the [permissioning contract interface](../../concepts/permissioning/onchain.md#permissioning-contracts). The default is 1. Specify the contract interface version that maps to the version of the [Enterprise Ethereum Alliance Client Specification](https://entethalliance.org/technical-specifications/) diff --git a/docs/how-to/Limit-Access/Local-Permissioning.md b/docs/private-networks/how-to/use-permissioning/local.md similarity index 77% rename from docs/how-to/Limit-Access/Local-Permissioning.md rename to docs/private-networks/how-to/use-permissioning/local.md index 33ca2e8b794..02a56382796 100644 --- a/docs/how-to/Limit-Access/Local-Permissioning.md +++ b/docs/private-networks/how-to/use-permissioning/local.md @@ -2,9 +2,9 @@ description: Hyperledger Besu local permissioning --- -# Local permissioning +# Use local permissioning -[Local permissioning](../../concepts/Permissioning/Permissioning-Overview.md#local) supports node and account allowlisting. +[Local permissioning](../../concepts/permissioning/index.md#local) supports node and account allowlisting. ## Node allowlisting @@ -26,7 +26,7 @@ enabled, communication is only between nodes in the allowlist. Node allowlisting is at the node level. That is, each node in the network has a [permissions configuration file](#permissions-configuration-file) file in the -[data directory](../../reference/cli/options.md#data-path) for the node. +[data directory](../../../reference/cli/options.md#data-path) for the node. Local permissioning doesn't check that the node using the permissions configuration file is listed in the allowlist, it only checks that the remote end of the connection is in the allowlist. Use [onchain permissioning] if you @@ -34,7 +34,7 @@ need to check both ends of the connection. ### Specifying bootnodes in the allowlist -The nodes permissions list must include the [bootnodes](../../private-networks/how-to/connect/bootnodes.md) or Hyperledger Besu doesn't +The nodes permissions list must include the [bootnodes](../connect/bootnodes.md) or Hyperledger Besu doesn't start with node permissions enabled. !!! example @@ -57,23 +57,23 @@ start with node permissions enabled. ### Enabling node allowlisting To enable node allowlisting, specify the -[`--permissions-nodes-config-file-enabled`](../../reference/cli/options.md#permissions-nodes-config-file-enabled) +[`--permissions-nodes-config-file-enabled`](../../../reference/cli/options.md#permissions-nodes-config-file-enabled) option when starting Besu. The `PERM` API methods are not enabled by default. To enable the `PERM` API methods, use the -[`--rpc-http-api`](../../reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../reference/cli/options.md#rpc-ws-api) options. +[`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../reference/cli/options.md#rpc-ws-api) options. ### Updating the node allowlist To update the nodes allowlist while the node is running, use the following JSON-RPC API methods: -* [perm_addNodesToAllowlist](../../reference/api/index.md#perm_addnodestoallowlist) -* [perm_removeNodesFromAllowlist](../../reference/api/index.md#perm_removenodesfromallowlist) +* [perm_addNodesToAllowlist](../../../reference/api/index.md#perm_addnodestoallowlist) +* [perm_removeNodesFromAllowlist](../../../reference/api/index.md#perm_removenodesfromallowlist) You can also update the [`permissions_config.toml`](#permissions-configuration-file) file directly and then update the allowlist using the -[`perm_reloadPermissionsFromFile`](../../reference/api/index.md#perm_reloadpermissionsfromfile) +[`perm_reloadPermissionsFromFile`](../../../reference/api/index.md#perm_reloadpermissionsfromfile) method. Updates to the permissions configuration file persist across node restarts. @@ -81,7 +81,7 @@ Updates to the permissions configuration file persist across node restarts. ### Viewing the node allowlist To view the nodes allowlist, use the -[perm_getNodesAllowlist](../../reference/api/index.md#perm_getnodesallowlist) method. +[perm_getNodesAllowlist](../../../reference/api/index.md#perm_getnodesallowlist) method. !!! note @@ -111,7 +111,7 @@ permissioning accepts transactions only from accounts in the accounts allowlist. Account allowlisting is at the node level. That is, each node in the network has a [permissions configuration file](#permissions-configuration-file) in the -[data directory](../../reference/cli/options.md#data-path) for the node. +[data directory](../../../reference/cli/options.md#data-path) for the node. !!! caution "Using account permissioning and privacy" @@ -126,7 +126,7 @@ Account allowlisting is at the node level. That is, each node in the network has Transaction validation against the accounts allowlist occurs at the following points: * Submitted by JSON-RPC API method - [`eth_sendRawTransaction`](../../reference/api/index.md#eth_sendrawtransaction) + [`eth_sendRawTransaction`](../../../reference/api/index.md#eth_sendrawtransaction) * Received via propagation from another node * Added to a block by a mining node @@ -136,7 +136,7 @@ transactions from accounts that are not on the accounts allowlist of that node. The following diagram illustrates applying local and onchain permissioning rules. -![Permissioning Flow](../../images/PermissioningFlow.png) +![Permissioning Flow](../../../images/PermissioningFlow.png) !!! example "Example of different account allowlists" @@ -165,23 +165,23 @@ The following diagram illustrates applying local and onchain permissioning rules ### Enabling account allowlisting To enable account allowlisting, specify the -[`--permissions-accounts-config-file-enabled`](../../reference/cli/options.md#permissions-accounts-config-file-enabled) +[`--permissions-accounts-config-file-enabled`](../../../reference/cli/options.md#permissions-accounts-config-file-enabled) option when starting Besu. The `PERM` API methods are not enabled by default. To enable the `PERM` API methods, use the -[`--rpc-http-api`](../../reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../reference/cli/options.md#rpc-ws-api) options. +[`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../reference/cli/options.md#rpc-ws-api) options. ### Updating the account allowlist To update the accounts allowlist when the node is running, use the JSON-RPC API methods: -* [`perm_addAccountsToAllowlist`](../../reference/api/index.md#perm_addaccountstoallowlist) -* [`perm_removeAccountsFromAllowlist`](../../reference/api/index.md#perm_removeaccountsfromallowlist). +* [`perm_addAccountsToAllowlist`](../../../reference/api/index.md#perm_addaccountstoallowlist) +* [`perm_removeAccountsFromAllowlist`](../../../reference/api/index.md#perm_removeaccountsfromallowlist). You can also update the [`permissions_config.toml`](#permissions-configuration-file) file directly and use the -[`perm_reloadPermissionsFromFile`](../../reference/api/index.md#perm_reloadpermissionsfromfile) +[`perm_reloadPermissionsFromFile`](../../../reference/api/index.md#perm_reloadpermissionsfromfile) method to update the allowlists. Updates to the permissions configuration file persist across node restarts. @@ -189,25 +189,25 @@ Updates to the permissions configuration file persist across node restarts. ### Viewing the account allowlist To view the accounts allowlist, use the -[`perm_getAccountsAllowlist`](../../reference/api/index.md#perm_getaccountsallowlist) method. +[`perm_getAccountsAllowlist`](../../../reference/api/index.md#perm_getaccountsallowlist) method. ## Permissions configuration file The permissions configuration file contains the nodes and accounts allowlists. If the -[`--permissions-accounts-config-file`](../../reference/cli/options.md#permissions-accounts-config-file) -and [`--permissions-nodes-config-file`](../../reference/cli/options.md#permissions-nodes-config-file) +[`--permissions-accounts-config-file`](../../../reference/cli/options.md#permissions-accounts-config-file) +and [`--permissions-nodes-config-file`](../../../reference/cli/options.md#permissions-nodes-config-file) options are not specified, the name of the permissions configuration file must be [`permissions_config.toml`](#permissions-configuration-file) and must be in the -[data directory](../../reference/cli/options.md#data-path) for the node. +[data directory](../../../reference/cli/options.md#data-path) for the node. You can specify the accounts and nodes allowlists in the same file or in separate files for accounts and nodes. To specify a permissions configuration file (or separate files for accounts and nodes) in any location, use the -[`--permissions-accounts-config-file`](../../reference/cli/options.md#permissions-accounts-config-file) +[`--permissions-accounts-config-file`](../../../reference/cli/options.md#permissions-accounts-config-file) and -[`--permissions-nodes-config-file`](../../reference/cli/options.md#permissions-nodes-config-file) +[`--permissions-nodes-config-file`](../../../reference/cli/options.md#permissions-nodes-config-file) options. !!!note @@ -227,6 +227,6 @@ options. ``` -[specify a permissions configuration file with Docker]: ../../get-started/install/run-docker-image.md#permissions-configuration-file -[support domain names]: ../../concepts/node-keys.md#domain-name-support -[onchain permissioning]: ../../concepts/Permissioning/Onchain-Permissioning.md +[specify a permissions configuration file with Docker]: ../../../get-started/install/run-docker-image.md#permissions-configuration-file +[support domain names]: ../../../concepts/node-keys.md#domain-name-support +[onchain permissioning]: ../../concepts/permissioning/onchain.md diff --git a/docs/how-to/Limit-Access/Updating-Permission-Lists.md b/docs/private-networks/how-to/use-permissioning/onchain.md similarity index 86% rename from docs/how-to/Limit-Access/Updating-Permission-Lists.md rename to docs/private-networks/how-to/use-permissioning/onchain.md index dca7f4788fd..1ba3fddee7c 100644 --- a/docs/how-to/Limit-Access/Updating-Permission-Lists.md +++ b/docs/private-networks/how-to/use-permissioning/onchain.md @@ -2,19 +2,19 @@ description: Updating Hyperledger Besu onchain allowlists --- -# Updating nodes and accounts allowlists +# Use onchain permissioning -When using [onchain permissioning](../../concepts/Permissioning/Onchain-Permissioning.md), you can update +When using [onchain permissioning](../../concepts/permissioning/onchain.md), you can update [nodes](#update-nodes-allowlist) and [accounts](#update-accounts-allowlist) allowlists. ## Update nodes allowlist To add a node to the Hyperledger Besu nodes allowlist: -1. On the **Nodes** tab of the [permissioning management dapp](../../tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md), +1. On the **Nodes** tab of the [permissioning management dapp](../../../tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md), select **Add Node**. The **Add Node** window displays. -2. Enter the [enode URL](../../concepts/node-keys.md#enode-url) of the node you are adding and select **Add Node**. +2. Enter the [enode URL](../../../concepts/node-keys.md#enode-url) of the node you are adding and select **Add Node**. !!! tip @@ -61,7 +61,7 @@ To remove a node from the nodes allowlist: To add an account to the accounts allowlist: -1. On the **Accounts** tab of the [permissioning management dapp](../../tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md), +1. On the **Accounts** tab of the [permissioning management dapp](../../../tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md), select **Add Account**. The **Add Account** window displays. 1. Enter the account address in the **Account Address** field and select **Add Account**. @@ -75,4 +75,4 @@ To remove an account from the accounts allowlist: You can add or remove admins in the same way as [accounts](#update-accounts-allowlist), except on the **Admins** tab. -[support domain names]: ../../concepts/node-keys.md#domain-name-support +[support domain names]: ../../../concepts/node-keys.md#domain-name-support diff --git a/docs/how-to/Use-Privacy/Access-Private-Transactions.md b/docs/private-networks/how-to/use-privacy/access-private-transactions.md similarity index 76% rename from docs/how-to/Use-Privacy/Access-Private-Transactions.md rename to docs/private-networks/how-to/use-privacy/access-private-transactions.md index 71f0005e098..7c3deaba319 100644 --- a/docs/how-to/Use-Privacy/Access-Private-Transactions.md +++ b/docs/private-networks/how-to/use-privacy/access-private-transactions.md @@ -12,7 +12,7 @@ description: Methods for accessing and managing private transactions and privacy and about all the [new Tessera features](https://consensys.net/blog/quorum/tessera-the-privacy-manager-of-choice-for-consensys-quorum-networks). A Hyperledger Besu private transaction creates a -[privacy marker transaction](../../concepts/Privacy/Private-Transaction-Processing.md) and +[privacy marker transaction](../../concepts/privacy/private-transactions/processing.md) and the private transaction itself. ## Transaction receipts @@ -21,9 +21,9 @@ With the transaction hash returned when submitting the private transaction, to g receipt for the: * Private transaction, use - [`priv_getTransactionReceipt`](../../reference/api/index.md#priv_gettransactionreceipt). + [`priv_getTransactionReceipt`](../../../reference/api/index.md#priv_gettransactionreceipt). * Privacy marker transaction, use - [`eth_getTransactionReceipt`](../../reference/api/index.md#eth_gettransactionreceipt). + [`eth_getTransactionReceipt`](../../../reference/api/index.md#eth_gettransactionreceipt). The transaction receipt includes a `status` indicating if the transaction failed (`0x0`), succeeded (`0x1`), or was invalid (`0x2`). @@ -40,6 +40,6 @@ was invalid (`0x2`). With the transaction hash returned when submitting the private transaction, to get the: * Private transaction, use - [`priv_getPrivateTransaction`](../../reference/api/index.md#priv_getprivatetransaction). + [`priv_getPrivateTransaction`](../../../reference/api/index.md#priv_getprivatetransaction). * Privacy marker transaction, use - [`eth_getTransactionByHash`](../../reference/api/index.md#eth_gettransactionbyhash). + [`eth_getTransactionByHash`](../../../reference/api/index.md#eth_gettransactionbyhash). diff --git a/docs/how-to/Use-Privacy/Privacy.md b/docs/private-networks/how-to/use-privacy/besu-extended.md similarity index 70% rename from docs/how-to/Use-Privacy/Privacy.md rename to docs/private-networks/how-to/use-privacy/besu-extended.md index e590ca22cc8..d03a6ae5f91 100644 --- a/docs/how-to/Use-Privacy/Privacy.md +++ b/docs/private-networks/how-to/use-privacy/besu-extended.md @@ -11,26 +11,26 @@ description: Hyperledger Besu-extended privacy and about all the [new Tessera features](https://consensys.net/blog/quorum/tessera-the-privacy-manager-of-choice-for-consensys-quorum-networks). Hyperledger Besu provides an extended implementation of privacy allowing you to -[create a privacy group for a set of participants](../../concepts/Privacy/Privacy-Groups.md). You +[create a privacy group for a set of participants](../../concepts/privacy/privacy-groups.md). You must specify the privacy group ID when sending private transactions. -To enable the [`PRIV` API methods](../../reference/api/index.md#priv-methods), use 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. +To enable the [`PRIV` API methods](../../../reference/api/index.md#priv-methods), use 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. To create the privacy group containing the recipients of a private transaction, use -[`priv_createPrivacyGroup`](../../reference/api/index.md#priv_createprivacygroup). +[`priv_createPrivacyGroup`](../../../reference/api/index.md#priv_createprivacygroup). To create an EEA-compliant private transaction, specify `privacyGroupId` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction). ## Privacy group type Privacy groups created using -[`priv_createPrivacyGroup`](../../reference/api/index.md#priv_createprivacygroup) +[`priv_createPrivacyGroup`](../../../reference/api/index.md#priv_createprivacygroup) have a `BESU` privacy group type when returned by -[`priv_findPrivacyGroup`](../../reference/api/index.md#priv_findprivacygroup). +[`priv_findPrivacyGroup`](../../../reference/api/index.md#priv_findprivacygroup). !!! example diff --git a/docs/how-to/Use-Privacy/EEA-Compliant.md b/docs/private-networks/how-to/use-privacy/eea-compliant.md similarity index 77% rename from docs/how-to/Use-Privacy/EEA-Compliant.md rename to docs/private-networks/how-to/use-privacy/eea-compliant.md index 7c88e2413fb..f7e8ae3d252 100644 --- a/docs/how-to/Use-Privacy/EEA-Compliant.md +++ b/docs/private-networks/how-to/use-privacy/eea-compliant.md @@ -10,23 +10,23 @@ description: Hyperledger Besu JSON-RPC methods to use for EEA-compliant privacy Read our [Orion to Tessera migration guide](https://docs.orion.consensys.net/en/latest/Tutorials/Migrating-from-Orion-to-Tessera/) and about all the [new Tessera features](https://consensys.net/blog/quorum/tessera-the-privacy-manager-of-choice-for-consensys-quorum-networks). -When using Hyperledger Besu [EEA-compliant privacy](../../concepts/Privacy/Privacy-Groups.md), the +When using Hyperledger Besu [EEA-compliant privacy](../../concepts/privacy/privacy-groups.md), the group of nodes specified by `privateFrom` and `privateFor` form a privacy group, to which Tessera assigns a unique privacy group ID. -To enable the [`EEA` API methods](../../reference/api/index.md#eea-methods), use 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. +To enable the [`EEA` API methods](../../../reference/api/index.md#eea-methods), use 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. To create an EEA-compliant private transaction, specify `privateFor` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction). ## Privacy group type Privacy groups created when specifying `privateFrom` and `privateFor` have a `LEGACY` privacy group type when returned by -[`priv_findPrivacyGroup`](../../reference/api/index.md#priv_findprivacygroup). +[`priv_findPrivacyGroup`](../../../reference/api/index.md#priv_findprivacygroup). !!! example diff --git a/docs/how-to/Use-Privacy/Use-FlexiblePrivacy.md b/docs/private-networks/how-to/use-privacy/flexible.md similarity index 78% rename from docs/how-to/Use-Privacy/Use-FlexiblePrivacy.md rename to docs/private-networks/how-to/use-privacy/flexible.md index bef42ef2581..80a9a1eccbf 100644 --- a/docs/how-to/Use-Privacy/Use-FlexiblePrivacy.md +++ b/docs/private-networks/how-to/use-privacy/flexible.md @@ -11,7 +11,7 @@ description: Use flexible privacy groups and about all the [new Tessera features](https://consensys.net/blog/quorum/tessera-the-privacy-manager-of-choice-for-consensys-quorum-networks). Use the [`web3js-quorum` library](https://github.com/ConsenSys/web3js-quorum) to create and update -membership of [flexible privacy groups](../../concepts/Privacy/Flexible-PrivacyGroups.md). +membership of [flexible privacy groups](../../concepts/privacy/flexible-privacy.md). !!! tip @@ -32,16 +32,16 @@ membership of [flexible privacy groups](../../concepts/Privacy/Flexible-PrivacyG ## Enabling flexible privacy groups -Use the [`--privacy-flexible-groups-enabled`](../../reference/cli/options.md#privacy-flexible-groups-enabled) -command line option to enable [flexible privacy groups](../../concepts/Privacy/Flexible-PrivacyGroups.md). -When flexible privacy groups are enabled, the [`priv_createPrivacyGroup`](../../reference/api/index.md#priv_createprivacygroup), -[`priv_deletePrivacyGroup`](../../reference/api/index.md#priv_deleteprivacygroup), -and [`priv_findPrivacyGroup`](../../reference/api/index.md#priv_findprivacygroup) methods for -[offchain privacy groups](../../concepts/Privacy/Privacy-Groups.md) are disabled. +Use the [`--privacy-flexible-groups-enabled`](../../../reference/cli/options.md#privacy-flexible-groups-enabled) +command line option to enable [flexible privacy groups](../../concepts/privacy/flexible-privacy.md). +When flexible privacy groups are enabled, the [`priv_createPrivacyGroup`](../../../reference/api/index.md#priv_createprivacygroup), +[`priv_deletePrivacyGroup`](../../../reference/api/index.md#priv_deleteprivacygroup), +and [`priv_findPrivacyGroup`](../../../reference/api/index.md#priv_findprivacygroup) methods for +[offchain privacy groups](../../concepts/privacy/privacy-groups.md) are disabled. ## Simple flexible privacy group example -To create and find a [flexible privacy group](../../concepts/Privacy/Flexible-PrivacyGroups.md) using +To create and find a [flexible privacy group](../../concepts/privacy/flexible-privacy.md) using the [`web3js-quorum` library](https://github.com/ConsenSys/web3js-quorum): 1. Update the `example/keys.js` file to match your network configuration. @@ -64,7 +64,7 @@ the [`web3js-quorum` library](https://github.com/ConsenSys/web3js-quorum): ## Adding and removing members -To add and remove members from a [flexible privacy group](../../concepts/Privacy/Flexible-PrivacyGroups.md), +To add and remove members from a [flexible privacy group](../../concepts/privacy/flexible-privacy.md), use the `addTo` and `removeFrom` methods in the [`web3js-quorum` library](https://github.com/ConsenSys/web3js-quorum) client library. diff --git a/docs/how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md b/docs/private-networks/how-to/use-privacy/goquorum-compatible.md similarity index 86% rename from docs/how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md rename to docs/private-networks/how-to/use-privacy/goquorum-compatible.md index 80b0b92a0c8..aaec5398990 100644 --- a/docs/how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md +++ b/docs/private-networks/how-to/use-privacy/goquorum-compatible.md @@ -10,10 +10,10 @@ Besu and [GoQuorum clients] using the Tessera private transaction manager. This mode requires both networks to run an interoperable consensus algorithm such as [QBFT] to work. To run your Besu nodes in GoQuorum-compatible privacy mode, add the `isQuorum:true` flag to your -[genesis file](../../concepts/genesis-file.md). +[genesis file](../../../concepts/genesis-file.md). While in GoQuorum-compatible privacy mode and using Tessera, disable [`orion` mode](https://docs.tessera.consensys.net/en/stable/HowTo/Configure/Orion-Mode/) -by removing `"mode": "orion",` from the [Tessera configuration file](../../tutorials/Privacy/Configuring-Multi-Tenancy.md#3-update-the-tessera-configuration-file). +by removing `"mode": "orion",` from the [Tessera configuration file](../../../tutorials/Privacy/Configuring-Multi-Tenancy.md#3-update-the-tessera-configuration-file). ## GoQuorum-compatible private transactions @@ -26,5 +26,5 @@ The following documentation explains [the transaction lifecycle] in GoQuorum-com [GoQuorum clients]: https://consensys.net/docs/goquorum/en/stable/ -[QBFT]: ../configure/Consensus-Protocols/QBFT.md +[QBFT]: ../configure/consensus/qbft.md [the transaction lifecycle]: https://consensys.net/docs/goquorum/en/stable/concepts/privacy/private-transaction-lifecycle/ diff --git a/docs/how-to/Use-Privacy/Performance-Best-Practices.md b/docs/private-networks/how-to/use-privacy/performance-best-practices.md similarity index 100% rename from docs/how-to/Use-Privacy/Performance-Best-Practices.md rename to docs/private-networks/how-to/use-privacy/performance-best-practices.md diff --git a/docs/how-to/Use-Privacy/Create-Manage-Privacy-Groups.md b/docs/private-networks/how-to/use-privacy/privacy-groups.md similarity index 77% rename from docs/how-to/Use-Privacy/Create-Manage-Privacy-Groups.md rename to docs/private-networks/how-to/use-privacy/privacy-groups.md index 2b3c1fc29d0..0ecfa10bf34 100644 --- a/docs/how-to/Use-Privacy/Create-Manage-Privacy-Groups.md +++ b/docs/private-networks/how-to/use-privacy/privacy-groups.md @@ -13,9 +13,9 @@ description: Create and manage privacy groups with Hyperledger Besu Hyperledger Besu-extended privacy provides JSON-RPC API methods for creating and managing privacy groups: -* [`priv_createPrivacyGroup`](../../reference/api/index.md#priv_createprivacygroup) -* [`priv_findPrivacyGroup`](../../reference/api/index.md#priv_findprivacygroup) -* [`priv_deletePrivacyGroup`](../../reference/api/index.md#priv_deleteprivacygroup). +* [`priv_createPrivacyGroup`](../../../reference/api/index.md#priv_createprivacygroup) +* [`priv_findPrivacyGroup`](../../../reference/api/index.md#priv_findprivacygroup) +* [`priv_deletePrivacyGroup`](../../../reference/api/index.md#priv_deleteprivacygroup). !!! tip diff --git a/docs/how-to/Use-Privacy/Sign-Privacy-Marker-Transactions.md b/docs/private-networks/how-to/use-privacy/sign-pmts.md similarity index 75% rename from docs/how-to/Use-Privacy/Sign-Privacy-Marker-Transactions.md rename to docs/private-networks/how-to/use-privacy/sign-pmts.md index 0654da21dcb..baad7761220 100644 --- a/docs/how-to/Use-Privacy/Sign-Privacy-Marker-Transactions.md +++ b/docs/private-networks/how-to/use-privacy/sign-pmts.md @@ -6,7 +6,7 @@ description: How to sign a privacy marker transaction with Hyperledger Besu You can sign privacy marker transactions with either a random key or a specified key. To sign privacy marker transactions with a specified private key, use -[`--privacy-marker-transaction-signing-key-file`](../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) +[`--privacy-marker-transaction-signing-key-file`](../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) when starting Hyperledger Besu. !!! note @@ -18,9 +18,9 @@ when starting Hyperledger Besu. In networks where you pay gas, you must specify a key and the associated account must contain adequate funds. -In [free gas networks](../configure/FreeGas.md), to provide further anonymity by signing +In [free gas networks](../configure/free-gas.md), to provide further anonymity by signing each privacy marker transaction with a different random key, exclude the -[`--privacy-marker-transaction-signing-key-file`](../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) +[`--privacy-marker-transaction-signing-key-file`](../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) command line option when starting Besu. !!! caution "Using account permissioning and privacy" @@ -37,4 +37,4 @@ command line option when starting Besu. [private transaction process](../../Concepts/Privacy/Private-Transaction-Processing.md). -[Account permissioning]: ../../concepts/Permissioning/Permissioning-Overview.md#account-permissioning +[Account permissioning]: ../../concepts/permissioning/index.md#account-permissioning diff --git a/docs/how-to/Use-Privacy/Run-Tessera-With-Besu.md b/docs/private-networks/how-to/use-privacy/tessera.md similarity index 89% rename from docs/how-to/Use-Privacy/Run-Tessera-With-Besu.md rename to docs/private-networks/how-to/use-privacy/tessera.md index 4e1d1bc5758..5a7c38175b6 100644 --- a/docs/how-to/Use-Privacy/Run-Tessera-With-Besu.md +++ b/docs/private-networks/how-to/use-privacy/tessera.md @@ -10,11 +10,11 @@ description: Running ConsenSys Quorum Tessera with Hyperledger Besu Read our [Orion to Tessera migration guide](https://docs.orion.consensys.net/en/latest/Tutorials/Migrating-from-Orion-to-Tessera/) and about all the [new Tessera features](https://consensys.net/blog/quorum/tessera-the-privacy-manager-of-choice-for-consensys-quorum-networks). -To enable [privacy functionality](../../concepts/Privacy/Privacy-Overview.md) in production +To enable [privacy functionality](../../concepts/privacy/index.md) in production systems, [Tessera](https://docs.tessera.consensys.net/) must be [highly available](#high-availability) and [run in a separate instance](#separate-instances) to Hyperledger Besu. -![Besu-Tessera-High-Availability](../../images/Besu-Tessera-High-Availability.png) +![Besu-Tessera-High-Availability](../../../images/Besu-Tessera-High-Availability.png) !!! note @@ -25,7 +25,7 @@ and [run in a separate instance](#separate-instances) to Hyperledger Besu. Privacy requires you to [configure Tessera for high availability]. Tessera also requires [`orion` mode](https://docs.tessera.consensys.net/en/stable/HowTo/Configure/Orion-Mode/) -to be enabled if **not** running Besu in [GoQuorum compatible privacy mode](../Use-Privacy/Use-GoQuorum-compatible-privacy.md). +to be enabled if **not** running Besu in [GoQuorum compatible privacy mode](ompatible-privacy.md). To successfully distribute a private transaction, all private transaction participants must be online. If any participants are offline when submitting the private transaction, the transaction is diff --git a/docs/how-to/Interact/Client-Libraries/web3js-quorum.md b/docs/private-networks/how-to/use-privacy/web3js-quorum.md similarity index 100% rename from docs/how-to/Interact/Client-Libraries/web3js-quorum.md rename to docs/private-networks/how-to/use-privacy/web3js-quorum.md diff --git a/docs/public-networks/how-to/connect/sync-node.md b/docs/public-networks/how-to/connect/sync-node.md index 3bba7fc15c5..f4c59f0a088 100644 --- a/docs/public-networks/how-to/connect/sync-node.md +++ b/docs/public-networks/how-to/connect/sync-node.md @@ -45,7 +45,7 @@ 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](../../../concepts/Privacy/Privacy-Overview.md) isn't supported. +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. diff --git a/docs/reference/Plugin-API-Interfaces.md b/docs/reference/Plugin-API-Interfaces.md index 8e816b16979..91d8f02177a 100644 --- a/docs/reference/Plugin-API-Interfaces.md +++ b/docs/reference/Plugin-API-Interfaces.md @@ -59,4 +59,4 @@ the `https://hyperledger.jfrog.io/hyperledger/besu-maven` repository and the `pl The `start` step can be ignored and your plugin module will be instantiated when the command line interface is parsed and available. -[privacy marker transactions]: ../concepts/Privacy/Private-Transaction-Processing.md +[privacy marker transactions]: ../private-networks/concepts/privacy/private-transactions/processing.md diff --git a/docs/reference/Resources.md b/docs/reference/Resources.md deleted file mode 100644 index ea260d4ce8a..00000000000 --- a/docs/reference/Resources.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -description: Hyperledger Besu resources including blog posts, webinars, and meetup recordings. ---- - -# Hyperledger Besu resources - -## Blog posts - -[ConsenSys Quorum Blog] - -[Understanding Proof of Authority via Clique and IBFT 2.0 Private Networks] - -[Security Challenges for Enterprise Blockchain Solutions] - -[Why We Rebuilt Ethereum from Scratch] - -[Why Java for Blockchain] - -[Case Study: How Poste Italiane brings value to loyalty with Hyperledger Besu] - -## Webinars - -[Besu Plugin API: Learn How to Leverage Plugin APIs on Hyperledger Besu] - -[Permissioning in Blockchain: A Technical Look at Benefits and Best Practices] - -[Privacy in Besu: How PegaSys Redefined Blockchain for Enterprises] - -[The Final Word: IBFT 2.0 and Enterprise Consensus] - -[De-Mystifying Besu: Understanding an Ethereum Codebase] - -[Getting Started with Besu] - - -[Consensys Quorum Blog]: https://consensys.net/quorum/blog/ -[Understanding Proof of Authority via Clique and IBFT 2.0 Private Networks]: https://consensys.net/blog/quorum/hyperledger-besu-understanding-proof-of-authority-via-clique-and-ibft-2-0-private-networks-part-1/ -[Security Challenges for Enterprise Blockchain Solutions]: https://consensys.net/blog/enterprise-blockchain/how-pegasys-orchestrate-solves-4-key-security-challenges-for-enterprise-blockchain-solutions/ -[Why We Rebuilt Ethereum from Scratch]: https://media.consensys.net/why-we-rebuilt-ethereum-from-scratch-9e38b6ebd4a2 -[Why Java for Blockchain]: https://media.consensys.net/why-java-for-blockchain-73f1b444c2d -[Besu Plugin API: Learn How to Leverage Plugin APIs on Hyperledger Besu]: https://youtu.be/78sa2WuA1rg -[Permissioning in Blockchain: A Technical Look at Benefits and Best Practices]: https://www.youtube.com/watch?v=CD0pHtNDqZs -[Privacy in Besu: How PegaSys Redefined Blockchain for Enterprises]: https://www.youtube.com/watch?v=8l7SSZLyFL8 -[The Final Word: IBFT 2.0 and Enterprise Consensus]: https://www.youtube.com/watch?v=YmTUP_dWfME -[De-Mystifying Besu: Understanding an Ethereum Codebase]: https://www.youtube.com/watch?v=OJfib9kTK7U&feature=youtu.be -[Getting Started with Besu]: https://www.youtube.com/watch?v=OKWBr94J9rY&t=1s -[Case Study: How Poste Italiane brings value to loyalty with Hyperledger Besu]: https://www.hyperledger.org/learn/publications/posteitaliane-case-study diff --git a/docs/reference/api/index.md b/docs/reference/api/index.md index a34ce104ab8..6c12eff6644 100644 --- a/docs/reference/api/index.md +++ b/docs/reference/api/index.md @@ -500,7 +500,7 @@ Removes a [static node](../../how-to/connect/static-nodes.md). ## `CLIQUE` methods -The `CLIQUE` API methods provide access to the [Clique](../../how-to/configure/Consensus-Protocols/Clique.md) consensus engine. +The `CLIQUE` API methods provide access to the [Clique](../../private-networks/how-to/configure/consensus/clique.md) consensus engine. !!! note @@ -697,7 +697,7 @@ Lists signers for the specified block. ### `clique_proposals` Returns -[current proposals](../../how-to/configure/Consensus-Protocols/Clique.md#adding-and-removing-signers). +[current proposals](../../private-networks/how-to/configure/consensus/clique.md#adding-and-removing-signers). #### Parameters @@ -1653,8 +1653,8 @@ Returns full trace of all invoked opcodes of all transactions included in the bl ## `EEA` methods -The `EEA` API methods provide functionality for [private transactions](../../concepts/Privacy/Private-Transactions.md) and -[privacy groups](../../concepts/Privacy/Privacy-Groups.md). +The `EEA` API methods provide functionality for [private transactions](../../private-networks/concepts/privacy/private-transactions/index.md) and +[privacy groups](../../private-networks/concepts/privacy/privacy-groups.md). !!! note @@ -1666,15 +1666,15 @@ The `EEA` API methods provide functionality for [private transactions](../../con Distributes the [private transaction](../../private-networks/how-to/send-transactions/private-transactions.md), -generates the [privacy marker transaction](../../concepts/Privacy/Private-Transaction-Processing.md) +generates the [privacy marker transaction](../../private-networks/concepts/privacy/private-transactions/processing.md) and submits it to the transaction pool, and returns the transaction hash of the -[privacy marker transaction](../../concepts/Privacy/Private-Transaction-Processing.md). +[privacy marker transaction](../../private-networks/concepts/privacy/private-transactions/processing.md). The signed transaction passed as an input parameter includes the `privateFrom`, [`privateFor` or `privacyGroupId`](../../private-networks/how-to/send-transactions/private-transactions.md#eea-compliant-or-besu-extended-privacy), and `restriction` fields. -The `gas` and `gasPrice` are used by the [privacy marker transaction](../../concepts/Privacy/Private-Transaction-Processing.md) +The `gas` and `gasPrice` are used by the [privacy marker transaction](../../private-networks/concepts/privacy/private-transactions/processing.md) not the private transaction itself. To avoid exposing your private key, create signed transactions offline and send the signed @@ -1703,7 +1703,7 @@ transaction data using `eea_sendRawTransaction`. #### Returns `result`: *string* - 32-byte transaction hash of the -[Privacy Marker Transaction](../../concepts/Privacy/Private-Transaction-Processing.md) +[Privacy Marker Transaction](../../private-networks/concepts/privacy/private-transactions/processing.md) !!! tip @@ -3300,7 +3300,7 @@ from untrusted sources, by using a trusted block hash. ### `eth_getQuorumPayload` -When using [GoQuorum-compatible privacy](../../how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md), returns the +When using [GoQuorum-compatible privacy](../../private-networks/how-to/use-privacy/goquorum-compatible.md), returns the [unencrypted payload from Tessera](https://docs.tessera.consensys.net/Concepts/Transaction-manager/#private-transaction-flow). #### Parameters @@ -4860,7 +4860,7 @@ Filters time out when not requested by [`eth_getFilterChanges`](#eth_getfilterch ## `IBFT` 2.0 methods -The `IBFT` API methods provide access to the [IBFT 2.0](../../how-to/configure/Consensus-Protocols/IBFT.md) consensus engine. +The `IBFT` API methods provide access to the [IBFT 2.0](../../private-networks/how-to/configure/consensus/ibft.md) consensus engine. !!! note @@ -4906,8 +4906,8 @@ Discards a proposal to [add or remove a validator] with the specified address. ### `ibft_getPendingVotes` -Returns [votes](../../how-to/configure/Consensus-Protocols/IBFT.md#adding-and-removing-validators) cast in the current -[epoch](../../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file). +Returns [votes](../../private-networks/how-to/configure/consensus/ibft.md#adding-and-removing-validators) cast in the current +[epoch](../../private-networks/how-to/configure/consensus/ibft.md#genesis-file). #### Parameters @@ -5536,7 +5536,7 @@ None ## `PERM` (Permissioning) methods The `PERM` API methods provide permissioning functionality. -Use these methods for [local permissioning](../../how-to/Limit-Access/Local-Permissioning.md) only. +Use these methods for [local permissioning](../../private-networks/how-to/use-permissioning/local.md) only. !!! important @@ -5547,7 +5547,7 @@ Use these methods for [local permissioning](../../how-to/Limit-Access/Local-Perm ### `perm_addAccountsToAllowlist` Adds accounts (participants) to the -[accounts permission list](../../how-to/Limit-Access/Local-Permissioning.md#account-permissioning). +[accounts permission list](../../private-networks/how-to/use-permissioning/local.md#account-permissioning). #### Parameters @@ -5590,7 +5590,7 @@ allowlist and including invalid account addresses.) ### `perm_addNodesToAllowlist` Adds nodes to the -[nodes allowlist](../../how-to/Limit-Access/Local-Permissioning.md#node-allowlisting). +[nodes allowlist](../../private-networks/how-to/use-permissioning/local.md#node-allowlisting). To use domain names in enode URLs, ensure you [enable DNS support](../../concepts/node-keys.md#domain-name-support) to avoid receiving a `request contains an invalid node` error. @@ -5640,7 +5640,7 @@ including invalid enode URLs. ### `perm_getAccountsAllowlist` Lists accounts (participants) in the -[accounts permissions list](../../how-to/Limit-Access/Local-Permissioning.md#account-permissioning). +[accounts permissions list](../../private-networks/how-to/use-permissioning/local.md#account-permissioning). #### Parameters @@ -5680,7 +5680,7 @@ None ### `perm_getNodesAllowlist` Lists nodes in the -[nodes allowlist](../../how-to/Limit-Access/Local-Permissioning.md#node-allowlisting). +[nodes allowlist](../../private-networks/how-to/use-permissioning/local.md#node-allowlisting). #### Parameters @@ -5756,7 +5756,7 @@ None ### `perm_removeAccountsFromAllowlist` Removes accounts (participants) from the -[accounts permissions list](../../how-to/Limit-Access/Local-Permissioning.md#account-permissioning). +[accounts permissions list](../../private-networks/how-to/use-permissioning/local.md#account-permissioning). #### Parameters @@ -5799,7 +5799,7 @@ and including invalid account addresses.) ### `perm_removeNodesFromAllowlist` Removes nodes from the -[nodes allowlist](../../how-to/Limit-Access/Local-Permissioning.md#node-allowlisting). +[nodes allowlist](../../private-networks/how-to/use-permissioning/local.md#node-allowlisting). #### Parameters @@ -5887,8 +5887,8 @@ Reloads specified plugin configuration. ## `PRIV` methods -The `PRIV` API methods provide functionality for [private transactions](../../concepts/Privacy/Private-Transactions.md) and -[privacy groups](../../concepts/Privacy/Privacy-Groups.md). +The `PRIV` API methods provide functionality for [private transactions](../../private-networks/concepts/privacy/private-transactions/index.md) and +[privacy groups](../../private-networks/concepts/privacy/privacy-groups.md). !!! note @@ -5904,7 +5904,7 @@ For private contracts, `priv_call` is the same as [`eth_call`](#eth_call) for pu #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/Privacy/Privacy-Groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../private-networks/concepts/privacy/privacy-groups.md) * `call`: *object* - [transaction call object](objects.md#transaction-call-object) @@ -6025,7 +6025,7 @@ Returns the state root of the specified privacy group at the specified block. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/Privacy/Privacy-Groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../private-networks/concepts/privacy/privacy-groups.md) * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in @@ -6152,8 +6152,8 @@ members are A and B, a privacy group containing A, B, and C is not returned. #### Returns `result`: *array* of *objects* - privacy group objects containing only the specified members; privacy groups are -[EEA-compliant](../../concepts/Privacy/Privacy-Groups.md#enterprise-ethereum-alliance-privacy) -or [Besu-extended](../../concepts/Privacy/Privacy-Groups.md#besu-extended-privacy) with types: +[EEA-compliant](../../private-networks/concepts/privacy/privacy-groups.md#enterprise-ethereum-alliance-privacy) +or [Besu-extended](../../private-networks/concepts/privacy/privacy-groups.md#besu-extended-privacy) with types: * `LEGACY` for EEA-compliant groups. @@ -6201,7 +6201,7 @@ is stored as a hexadecimal value. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/Privacy/Privacy-Groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../private-networks/concepts/privacy/privacy-groups.md) * `address`: *string* - 20-byte contract address @@ -6295,7 +6295,7 @@ of log objects or an empty list. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/Privacy/Privacy-Groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../private-networks/concepts/privacy/privacy-groups.md) * `filterId`: *string* - filter ID @@ -6359,7 +6359,7 @@ for private contracts. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/Privacy/Privacy-Groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../private-networks/concepts/privacy/privacy-groups.md) * `filterId`: *string* - filter ID @@ -6430,7 +6430,7 @@ for private contracts. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/Privacy/Privacy-Groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../private-networks/concepts/privacy/privacy-groups.md) * `filterOptions`: *object* - [filter options object](objects.md#filter-options-object) @@ -6494,7 +6494,7 @@ for private contracts. ### `priv_getPrivacyPrecompileAddress` Returns the address of the -[privacy precompiled contract](../../concepts/Privacy/Private-Transaction-Processing.md). +[privacy precompiled contract](../../private-networks/concepts/privacy/private-transactions/processing.md). The address is derived and based on the value of the [`privacy-flexible-groups-enabled`](../cli/options.md#privacy-flexible-groups-enabled) option. @@ -6699,7 +6699,7 @@ for public contracts. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/Privacy/Privacy-Groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../private-networks/concepts/privacy/privacy-groups.md) * `filterOptions`: *object* - [filter options object](objects.md#filter-options-object) @@ -6748,7 +6748,7 @@ for public contracts. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/Privacy/Privacy-Groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../private-networks/concepts/privacy/privacy-groups.md) * `filterId`: *string* - filter ID @@ -6782,7 +6782,7 @@ for public contracts. ## `QBFT` methods -The `QBFT` API methods provide access to the [QBFT](../../how-to/configure/Consensus-Protocols/QBFT.md) consensus engine. +The `QBFT` API methods provide access to the [QBFT](../../private-networks/how-to/configure/consensus/qbft.md) consensus engine. !!! note @@ -6793,7 +6793,7 @@ The `QBFT` API methods provide access to the [QBFT](../../how-to/configure/Conse ### `qbft_discardValidatorVote` Discards a proposal to -[add or remove a validator](../../how-to/configure/Consensus-Protocols/QBFT.md#adding-and-removing-validators) with the specified address. +[add or remove a validator](../../private-networks/how-to/configure/consensus/qbft.md#adding-and-removing-validators) with the specified address. #### Parameters @@ -6829,8 +6829,8 @@ Discards a proposal to ### `qbft_getPendingVotes` -Returns [votes](../../how-to/configure/Consensus-Protocols/QBFT.md#adding-and-removing-validators) cast in the current -[epoch](../../how-to/configure/Consensus-Protocols/QBFT.md#genesis-file). +Returns [votes](../../private-networks/how-to/configure/consensus/qbft.md#adding-and-removing-validators) cast in the current +[epoch](../../private-networks/how-to/configure/consensus/qbft.md#genesis-file). #### Parameters @@ -7030,7 +7030,7 @@ Lists the validators defined in the specified block. ### `qbft_proposeValidatorVote` Proposes to -[add or remove a validator](../../how-to/configure/Consensus-Protocols/QBFT.md#adding-and-removing-validators) with the specified address. +[add or remove a validator](../../private-networks/how-to/configure/consensus/qbft.md#adding-and-removing-validators) with the specified address. #### Parameters @@ -8115,10 +8115,10 @@ None [schema]: https://github.com/hyperledger/besu/blob/master/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 -[add or remove a signer with the specified address]: ../../how-to/configure/Consensus-Protocols/Clique.md#add-and-remove-signers -[signers for the specified block]: ../../how-to/configure/Consensus-Protocols/Clique.md#adding-and-removing-signers -[add or remove a validator]: ../../how-to/configure/Consensus-Protocols/IBFT.md#add-and-remove-validators -[permissions configuration file]: ../../how-to/Limit-Access/Local-Permissioning.md#permissions-configuration-file -[group of sender and recipients]: ../../concepts/Privacy/Privacy-Groups.md#enterprise-ethereum-alliance-privacy +[add or remove a signer with the specified address]: ../../private-networks/how-to/configure/consensus/clique.md#add-and-remove-signers +[signers for the specified block]: ../../private-networks/how-to/configure/consensus/clique.md#adding-and-removing-signers +[add or remove a validator]: ../../private-networks/how-to/configure/consensus/ibft.md#add-and-remove-validators +[permissions configuration file]: ../../private-networks/how-to/use-permissioning/local.md#permissions-configuration-file +[group of sender and recipients]: ../../private-networks/concepts/privacy/privacy-groups.md#enterprise-ethereum-alliance-privacy *[EEA]: Enterprise Ethereum Alliance diff --git a/docs/reference/api/objects.md b/docs/reference/api/objects.md index e9b2bcf0d31..58ca5cae7b9 100644 --- a/docs/reference/api/objects.md +++ b/docs/reference/api/objects.md @@ -25,7 +25,7 @@ Returned by [`eth_getBlockByHash`](index.md#eth_getblockbyhash) and | **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. | -| **extraData** | Data | Extra data field for this block. The first 32 bytes is vanity data you can set using the [`--miner-extra-data`](/CLI/CLI-Syntax.md#miner-extra-data) command line option. Stores extra data when used with [Clique](../../how-to/configure/Consensus-Protocols/Clique.md#genesis-file) and [IBFT](../../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file). | +| **extraData** | Data | Extra data field for this block. The first 32 bytes is vanity data you can set using the [`--miner-extra-data`](/CLI/CLI-Syntax.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. | @@ -138,9 +138,9 @@ Returned by [`priv_getPrivateTransaction`](index.md#priv_getprivatetransaction). | **r** | Data, 32 bytes | ECDSA signature r. | | **s** | Data, 32 bytes | ECDSA signature s. | | **privateFrom** | Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) public key of the sender. | -| **privateFor** | Array of Data, 32 bytes each | [Tessera](https://docs.tessera.consensys.net/) public keys of recipients. Not returned if using `privacyGroupId` to [send the transaction](../../concepts/Privacy/Privacy-Groups.md#privacy-types). | -| **privacyGroupId** | Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) privacy group ID of recipients. Not returned if using `privateFor` to [send the transaction](../../concepts/Privacy/Privacy-Groups.md#privacy-types). | -| **restriction** | String | Must be [`restricted`](../../concepts/Privacy/Private-Transactions.md). | +| **privateFor** | Array of Data, 32 bytes each | [Tessera](https://docs.tessera.consensys.net/) public keys of recipients. Not returned if using `privacyGroupId` to [send the transaction](../../private-networks/concepts/privacy/privacy-groups.md#privacy-types). | +| **privacyGroupId** | Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) privacy group ID of recipients. Not returned if using `privateFor` to [send the transaction](../../private-networks/concepts/privacy/privacy-groups.md#privacy-types). | +| **restriction** | String | Must be [`restricted`](../../private-networks/concepts/privacy/private-transactions/index.md). | ## Range object @@ -213,7 +213,7 @@ and | **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/Transaction-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/Transaction-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](../../concepts/Privacy/Privacy-Overview.md), it's a pointer to the transaction location in [Tessera](https://docs.tessera.consensys.net/). | +| **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. | | **publicKey** | Data, 64 bytes | Public key of the sender. | | **raw** | Data | This signed transaction in Recursive Length Prefix (RLP) encoded form. | diff --git a/docs/reference/cli/options.md b/docs/reference/cli/options.md index c01514bdfbc..ef2d529f295 100644 --- a/docs/reference/cli/options.md +++ b/docs/reference/cli/options.md @@ -621,7 +621,7 @@ The default is `8551`. ethstats="Dev-Node-1:secret@127.0.0.1:3001" ``` -Reporting URL of an [Ethstats](../../how-to/Deploy/Ethstats.md) server. +Reporting URL of an [Ethstats](../../private-networks/how-to/deploy/ethstats.md) server. ### `ethstats-contact` @@ -1063,7 +1063,7 @@ Other categories are `KVSTORE_ROCKSDB`, `KVSTORE_PRIVATE_ROCKSDB`, `KVSTORE_ROCK `KVSTORE_PRIVATE_ROCKSDB_STATS`. Categories containing `PRIVATE` track metrics when you enable -[private transactions](../../concepts/Privacy/Privacy-Overview.md). +[private transactions](../../private-networks/concepts/privacy/index.md). ### `metrics-enabled` @@ -1578,7 +1578,7 @@ lowest value [`eth_gasPrice`](../api/index.md#eth_gasprice) can return. The defa Wei. !!! important - In a [free gas network](../../how-to/configure/FreeGas.md), ensure the minimum gas price is set to zero for every node. + 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). @@ -1964,7 +1964,7 @@ Enables or disables file-based account level permissions. The default is `false` ``` The contract address for -[onchain account permissioning](../../concepts/Permissioning/Onchain-Permissioning.md). +[onchain account permissioning](../../private-networks/concepts/permissioning/onchain.md). ### `permissions-accounts-contract-enabled` @@ -1993,7 +1993,7 @@ The contract address for ``` Enables or disables contract-based -[onchain account permissioning](../../concepts/Permissioning/Onchain-Permissioning.md). The default +[onchain account permissioning](../../private-networks/concepts/permissioning/onchain.md). The default is `false`. ### `permissions-nodes-config-file` @@ -2086,7 +2086,7 @@ Enables or disables file-based node level permissions. The default is `false`. ``` The contract address for -[onchain node permissioning](../../concepts/Permissioning/Onchain-Permissioning.md). +[onchain node permissioning](../../private-networks/concepts/permissioning/onchain.md). ### `permissions-nodes-contract-enabled` @@ -2115,7 +2115,7 @@ The contract address for ``` Enables or disables contract-based -[onchain node permissioning](../../concepts/Permissioning/Onchain-Permissioning.md). The default is +[onchain node permissioning](../../private-networks/concepts/permissioning/onchain.md). The default is `false`. ### `permissions-nodes-contract-version` @@ -2144,7 +2144,7 @@ Enables or disables contract-based permissions-nodes-contract-version=2 ``` -Version of the EEA [node permissioning interface](../../how-to/Limit-Access/Specify-Perm-Version.md). +Version of the EEA [node permissioning interface](../../private-networks/how-to/use-permissioning/Specify-Perm-Version.md). The default is 1. ### `privacy-enabled` @@ -2173,7 +2173,7 @@ The default is 1. privacy-enabled=false ``` -Enables or disables [private transactions](../../concepts/Privacy/Privacy-Overview.md). The default +Enables or disables [private transactions](../../private-networks/concepts/privacy/index.md). The default is `false`. !!! important @@ -2208,7 +2208,7 @@ is `false`. ``` `` is the name of the private key file used to -[sign Privacy Marker Transactions](../../how-to/Use-Privacy/Sign-Privacy-Marker-Transactions.md). +[sign Privacy Marker Transactions](../../private-networks/how-to/use-privacy/sign-pmts.md). !!! note @@ -2250,7 +2250,7 @@ with a different randomly generated key. privacy-multi-tenancy-enabled=false ``` -Enables or disables [multi-tenancy](../../concepts/Privacy/Multi-Tenancy.md) for private +Enables or disables [multi-tenancy](../../private-networks/concepts/privacy/multi-tenancy.md) for private transactions. The default is `false`. ### `privacy-flexible-groups-enabled` @@ -2279,7 +2279,7 @@ transactions. The default is `false`. privacy-flexible-groups-enabled=true ``` -Enables or disables [flexible privacy groups](../../concepts/Privacy/Flexible-PrivacyGroups.md). The default is `false`. +Enables or disables [flexible privacy groups](../../private-networks/concepts/privacy/flexible-privacy.md). The default is `false`. Deprecated syntax for this option is `--privacy-onchain-groups-enabled`. @@ -2432,7 +2432,7 @@ The path to the file containing the password to decrypt the keystore. ``` The path to the file containing the hostnames, ports, and SHA256 certificate fingerprints of the -[authorized privacy enclave](../../how-to/configure/TLS/Configure-TLS.md#create-the-known-servers-file). +[authorized privacy enclave](../../private-networks/how-to/configure/tls/client-and-server.md#create-the-known-servers-file). ### `privacy-url` @@ -2494,7 +2494,7 @@ The minimum number of confirmations on a block before marking of newly-stored or nodes that cannot be pruned. The default is 10. !!! important - Using pruning with [private transactions](../../concepts/Privacy/Privacy-Overview.md) is not + Using pruning with [private transactions](../../private-networks/concepts/privacy/index.md) is not supported. ### `pruning-blocks-retained` @@ -2526,7 +2526,7 @@ nodes that cannot be pruned. The default is 10. The minimum number of recent blocks to keep the entire world state for. The default is 1024. !!! important - Using pruning with [private transactions](../../concepts/Privacy/Privacy-Overview.md) is not + Using pruning with [private transactions](../../private-networks/concepts/privacy/index.md) is not supported. ### `pruning-enabled` @@ -3280,7 +3280,7 @@ The path to the file containing the password to decrypt the keystore. ``` The path to the file used to -[authenticate clients](../../how-to/configure/TLS/Configure-TLS.md#create-the-known-clients-file) using +[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 @@ -3950,9 +3950,9 @@ Prints version information and exit. [push gateway integration]: ../../how-to/monitor/metrics.md#running-prometheus-with-besu-in-push-mode -[accounts permissions configuration file]: ../../how-to/Limit-Access/Local-Permissioning.md#permissions-configuration-file -[nodes permissions configuration file]: ../../how-to/Limit-Access/Local-Permissioning.md#permissions-configuration-file -[account permissioning]: ../../concepts/Permissioning/Permissioning-Overview.md#account-permissioning -[TLS on communication with the Private Transaction Manager]: ../../concepts/Privacy/Privacy-Overview.md#private-transaction-manager +[accounts permissions configuration file]: ../../private-networks/how-to/use-permissioning/local.md#permissions-configuration-file +[nodes permissions configuration file]: ../../private-networks/how-to/use-permissioning/local.md#permissions-configuration-file +[account permissioning]: ../../private-networks/concepts/permissioning/index.md#account-permissioning +[TLS on communication with the Private Transaction Manager]: ../../private-networks/concepts/privacy/index.md#private-transaction-manager [JWT provider's public key file]: ../../how-to/use-besu-api/authenticate.md#jwt-public-key-authentication [plugin]: ../Plugin-API-Interfaces.md diff --git a/docs/reference/cli/subcommands.md b/docs/reference/cli/subcommands.md index 76dc570a62b..ff54aa90955 100644 --- a/docs/reference/cli/subcommands.md +++ b/docs/reference/cli/subcommands.md @@ -178,8 +178,8 @@ Generates an [QBFT](../../tutorials/Private-Network/Create-QBFT-Network.md) genesis file. The configuration file has two nested JSON nodes. The first is the `genesis` property defining the -[IBFT 2.0](../../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file) or -[QBFT](../../how-to/configure/Consensus-Protocols/QBFT.md#genesis-file) genesis file, except for +[IBFT 2.0](../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) or +[QBFT](../../private-networks/how-to/configure/consensus/qbft.md#genesis-file) genesis file, except for the `extraData` string. The second is the `blockchain` property defining the number of key pairs to generate. @@ -243,11 +243,11 @@ Encodes the RLP hexadecimal string for use in a IBFT 2.0 or QBFT genesis file. T Supported types are: -* `IBFT_EXTRA_DATA` - The [IBFT 2.0 genesis file](../../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file) includes -the `IBFT_EXTRA_DATA` type in the [`extraData`](../../how-to/configure/Consensus-Protocols/IBFT.md#extra-data) property. +* `IBFT_EXTRA_DATA` - The [IBFT 2.0 genesis file](../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) includes +the `IBFT_EXTRA_DATA` type in the [`extraData`](../../private-networks/how-to/configure/consensus/ibft.md#extra-data) property. -* `QBFT_EXTRA_DATA` - The [QBFT genesis file](../../how-to/configure/Consensus-Protocols/QBFT.md#genesis-file) includes - the `QBFT_EXTRA_DATA` type in the [`extraData`](../../how-to/configure/Consensus-Protocols/QBFT.md#extra-data) property. +* `QBFT_EXTRA_DATA` - The [QBFT genesis file](../../private-networks/how-to/configure/consensus/qbft.md#genesis-file) includes + the `QBFT_EXTRA_DATA` type in the [`extraData`](../../private-networks/how-to/configure/consensus/qbft.md#extra-data) property. ???+ summary "IBFT 2.0 extra data" diff --git a/docs/reference/genesis-items.md b/docs/reference/genesis-items.md index 7eea8038418..276c8914aae 100644 --- a/docs/reference/genesis-items.md +++ b/docs/reference/genesis-items.md @@ -15,23 +15,23 @@ Network configuration items are specified in the genesis file in the `config` ob |---------------------|-:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 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](../concepts/Consensus-Protocols/Overview-Consensus.md) and contains [`fixeddifficulty`](#fixed-difficulty). | -| `clique` | Specifies network uses [Clique](../how-to/configure/Consensus-Protocols/Clique.md) and contains [Clique configuration items](../how-to/configure/Consensus-Protocols/Clique.md#genesis-file). | -| `ibft2` | Specifies network uses [IBFT 2.0](../how-to/configure/Consensus-Protocols/IBFT.md) and contains [IBFT 2.0 configuration items](../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file). | -| `qbft` | Specifies network uses [QBFT](../how-to/configure/Consensus-Protocols/QBFT.md) and contains [QBFT configuration items](../how-to/configure/Consensus-Protocols/QBFT.md#genesis-file). | -| `transitions` | Specifies block at which to [change IBFT 2.0 or QBFT validators](../how-to/troubleshoot/Add-Validators-Without-Voting.md). | -| `contractSizeLimit` | Maximum contract size in bytes. Specify in [free gas networks](../how-to/configure/FreeGas.md). The default is `24576` and the maximum size is `2147483647`. | +| `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`. | | `isQuorum` | Set to `true` to allow [interoperable private transactions] between Hyperledger Besu and [GoQuorum clients] using the Tessera private transaction manager. | -| `ecCurve` | Specifies [the elliptic curve to use](../how-to/configure/Alternative-EC-Curves.md). Default is `secp256k1`. | +| `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. | ## Genesis block parameters The purpose of some genesis block parameters varies depending on the consensus protocol (Ethash, -[Clique](../how-to/configure/Consensus-Protocols/Clique.md), -[IBFT 2.0](../how-to/configure/Consensus-Protocols/IBFT.md), or -[QBFT](../how-to/configure/Consensus-Protocols/QBFT.md)). These parameters include: +[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`. @@ -46,7 +46,7 @@ consensus protocols. | `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](Accounts-for-Testing.md) or [contracts](../how-to/configure/Contracts-in-Genesis.md). | +| `alloc` | Defines [accounts with balances](Accounts-for-Testing.md) or [contracts](../private-networks/how-to/configure/contracts.md). | ## Milestone blocks @@ -150,4 +150,4 @@ Anything listed in the configuration file also takes precedence. [GoQuorum clients]: https://consensys.net/docs/goquorum/en/stable/ -[interoperable private transactions]: ../how-to/Use-Privacy/Use-GoQuorum-compatible-privacy.md +[interoperable private transactions]: ../private-networks/how-to/use-privacy/goquorum-compatible.md diff --git a/docs/tutorials/Contracts/Deploying-Contracts.md b/docs/tutorials/Contracts/Deploying-Contracts.md index 4af1a9621c3..cbea77350a0 100644 --- a/docs/tutorials/Contracts/Deploying-Contracts.md +++ b/docs/tutorials/Contracts/Deploying-Contracts.md @@ -186,7 +186,7 @@ Make the request using `eth_sendTransaction`: ## Using `eea_sendRawTransaction` for private contracts with web3js-quorum -To deploy a private contract to another node or [privacy group](../../concepts/Privacy/Privacy-Groups.md) member, use the +To deploy a private contract to another node or [privacy group](../../private-networks/concepts/privacy/privacy-groups.md) member, use the [web3js-quorum](https://www.npmjs.com/package/web3js-quorum) library and the [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) API call. You must use this API call instead of [`eth_sendTransaction`](https://ethereum.github.io/execution-apis/api-documentation) because Hyperledger Besu @@ -258,7 +258,7 @@ the contract's address. This web3js-eea library will be deprecated on December 31, 2021. Please use the [web3js-quorum](https://www.npmjs.com/package/web3js-quorum) library instead and refer to the previous section. -To deploy a private contract to another [privacy group](../../concepts/Privacy/Privacy-Groups.md) member, use the +To deploy a private contract to another [privacy group](../../private-networks/concepts/privacy/privacy-groups.md) member, use the [web3js-quorum](https://consensys.github.io/web3js-quorum/latest/index.html) library and the [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) API call. You must use this API call instead of [`eth_sendTransaction`](https://ethereum.github.io/execution-apis/api-documentation) because Hyperledger Besu diff --git a/docs/tutorials/Developer-Quickstart.md b/docs/tutorials/Developer-Quickstart.md index 33e25a150a5..354d836b551 100644 --- a/docs/tutorials/Developer-Quickstart.md +++ b/docs/tutorials/Developer-Quickstart.md @@ -6,7 +6,7 @@ description: Rapidly generate local blockchain networks. # Developer Quickstart The Quorum Developer Quickstart uses the Hyperledger Besu Docker image to run a private -[IBFT 2.0](../how-to/configure/Consensus-Protocols/IBFT.md) network of Besu nodes managed by Docker Compose. +[IBFT 2.0](../private-networks/how-to/configure/consensus/ibft.md) network of Besu nodes managed by Docker Compose. !!! warning @@ -43,7 +43,7 @@ npx quorum-dev-quickstart Follow the prompts displayed to run Hyperledger Besu and [logging with ELK](../private-networks/how-to/monitor/elastic-stack.md). Enter `n` for [Codefi Orchestrate](https://docs.orchestrate.consensys.net/en/stable/) and -[private transactions](../concepts/Privacy/Privacy-Overview.md). +[private transactions](../private-networks/concepts/privacy/index.md). !!! note @@ -599,9 +599,9 @@ or via [RPC API calls](../reference/api/index.md#perm_addnodestoallowlist). -[bootnodes]: ../how-to/Deploy/Bootnodes.md -[permissions file]: ../how-to/Limit-Access/Local-Permissioning.md +[bootnodes]: ../private-networks/how-to/deploy/Bootnodes.md +[permissions file]: ../private-networks/how-to/use-permissioning/local.md [static nodes]: ../how-to/connect/static-nodes.md -[allow list]: ../how-to/Limit-Access/Local-Permissioning.md#node-allowlisting +[allow list]: ../private-networks/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/docs/tutorials/Kubernetes/Deploy-Charts.md b/docs/tutorials/Kubernetes/Deploy-Charts.md index 03d2da1c925..449770da0ea 100644 --- a/docs/tutorials/Kubernetes/Deploy-Charts.md +++ b/docs/tutorials/Kubernetes/Deploy-Charts.md @@ -400,7 +400,7 @@ first validator was spun up, before the logs display blocks being created. ### 7. Add/Remove additional validators to the validator pool To add (or remove) more validators to the initial validator pool, you need to deploy a node such as an RPC node (step 8) -and then [vote](../../how-to/configure/Consensus-Protocols/IBFT.md#add-and-remove-validators) that node in. The vote API +and then [vote](../../private-networks/how-to/configure/consensus/ibft.md#add-and-remove-validators) that node in. The vote API call must be made on a majority of the existing pool and the new node will then become a validator. Please refer to the [Ingress Section](#8-connecting-to-the-node-from-your-local-machine-via-an-ingress) for details on diff --git a/docs/tutorials/Permissioning/Create-Permissioned-Network.md b/docs/tutorials/Permissioning/Create-Permissioned-Network.md index dbc552f5e5c..c9cd1cada22 100644 --- a/docs/tutorials/Permissioning/Create-Permissioned-Network.md +++ b/docs/tutorials/Permissioning/Create-Permissioned-Network.md @@ -41,7 +41,7 @@ Permissioned-Network/ ### 2. Create the configuration file The configuration file defines the -[IBFT 2.0 genesis file](../../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file) and the +[IBFT 2.0 genesis file](../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) and the number of node key pairs to generate. The configuration file has two nested JSON nodes. The first is the `genesis` property defining @@ -168,7 +168,7 @@ Permissioned-Network/ ### 6. Create the permissions configuration file -The [permissions configuration file](../../how-to/Limit-Access/Local-Permissioning.md#permissions-configuration-file) +The [permissions configuration file](../../private-networks/how-to/use-permissioning/local.md#permissions-configuration-file) defines the nodes and accounts allowlists. Copy the following permissions configuration to a file called `permissions_config.toml` and save a copy in the @@ -480,5 +480,5 @@ window. To restart the permissioned network in the future, start from [step 5](#5-start-node-1). -[IBFT 2.0 proof of authority consensus protocol]: ../../how-to/configure/Consensus-Protocols/IBFT.md +[IBFT 2.0 proof of authority consensus protocol]: ../../private-networks/how-to/configure/consensus/ibft.md [Private network example tutorial]: ../Developer-Quickstart.md#create-a-transaction-using-metamask diff --git a/docs/tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md b/docs/tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md index fb6ddce5296..4ecfed96d11 100644 --- a/docs/tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md +++ b/docs/tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md @@ -45,7 +45,7 @@ Permissioned-Network/ ### 2. Create the configuration file The configuration file defines the -[IBFT 2.0 genesis file](../../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file) and the +[IBFT 2.0 genesis file](../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) and the number of node key pairs to generate. The configuration file has two nested JSON nodes. The first is the `genesis` property defining @@ -265,7 +265,7 @@ On the command line: [`--permissions-nodes-contract-enabled`](../../reference/cli/options.md#permissions-nodes-contract-enabled). * Set the address of the Node Ingress contract in the genesis file using [`--permissions-nodes-contract-address`](../../reference/cli/options.md#permissions-nodes-contract-address). -* Set the version of the [permissioning contract interface](../../how-to/Limit-Access/Specify-Perm-Version.md) +* Set the version of the [permissioning contract interface](../../private-networks/how-to/use-permissioning/Specify-Perm-Version.md) using [`--permissions-nodes-contract-version`](../../reference/cli/options.md#permissions-nodes-contract-version). * Enable the JSON-RPC API using [`--rpc-http-enabled`](../../reference/cli/options.md#rpc-http-enabled). @@ -399,6 +399,6 @@ In the [permissioning management dapp started in step 12](#12-start-the-permissi add [Node-1, Node-2, Node-3, and Node-4 to the allowlist]. -[Node-1, Node-2, Node-3, and Node-4 to the allowlist]: ../../how-to/Limit-Access/Updating-Permission-Lists.md#update-nodes-allowlist -[admin account]: ../../how-to/Limit-Access/Updating-Permission-Lists.md#update-nodes-allowlist -[IBFT 2.0 proof of authority (PoA)]: ../../how-to/configure/Consensus-Protocols/IBFT.md +[Node-1, Node-2, Node-3, and Node-4 to the allowlist]: ../../private-networks/how-to/use-permissioning/onchain.md#update-nodes-allowlist +[admin account]: ../../private-networks/how-to/use-permissioning/onchain.md#update-nodes-allowlist +[IBFT 2.0 proof of authority (PoA)]: ../../private-networks/how-to/configure/consensus/ibft.md diff --git a/docs/tutorials/Permissioning/Upgrade-Permissioning-Contract.md b/docs/tutorials/Permissioning/Upgrade-Permissioning-Contract.md index f3471644102..0d754b6f0e6 100644 --- a/docs/tutorials/Permissioning/Upgrade-Permissioning-Contract.md +++ b/docs/tutorials/Permissioning/Upgrade-Permissioning-Contract.md @@ -157,7 +157,7 @@ The dapp displays at [`http://localhost:3000`](http://localhost:3000). ### 7. Restart Besu nodes Restart the Besu nodes with the updated [`NodeIngress`](#5-deploy-the-contracts) -contract address and [permissioning contract interface](../../how-to/Limit-Access/Specify-Perm-Version.md) +contract address and [permissioning contract interface](../../private-networks/how-to/use-permissioning/Specify-Perm-Version.md) version 2. !!! example @@ -166,4 +166,4 @@ version 2. ``` -[nodes to the allowlist]: ../../how-to/Limit-Access/Updating-Permission-Lists.md#update-nodes-allowlist +[nodes to the allowlist]: ../../private-networks/how-to/use-permissioning/onchain.md#update-nodes-allowlist diff --git a/docs/tutorials/Privacy/Configuring-Multi-Tenancy.md b/docs/tutorials/Privacy/Configuring-Multi-Tenancy.md index 59c57c60776..0e05ec68e89 100644 --- a/docs/tutorials/Privacy/Configuring-Multi-Tenancy.md +++ b/docs/tutorials/Privacy/Configuring-Multi-Tenancy.md @@ -11,7 +11,7 @@ description: Configure multi-tenancy and about all the [new Tessera features](https://consensys.net/blog/quorum/tessera-the-privacy-manager-of-choice-for-consensys-quorum-networks). You can configure Besu and associated Tessera node in a privacy-enabled network to host -[multiple tenants](../../concepts/Privacy/Multi-Tenancy.md). +[multiple tenants](../../private-networks/concepts/privacy/multi-tenancy.md). In this tutorial we'll add tenants to the `Node-1` Besu and Tessera node in a [privacy-enabled network](Configuring-Privacy.md). diff --git a/docs/tutorials/Privacy/Configuring-Privacy.md b/docs/tutorials/Privacy/Configuring-Privacy.md index 92e60d3f4ee..219545a22de 100644 --- a/docs/tutorials/Privacy/Configuring-Privacy.md +++ b/docs/tutorials/Privacy/Configuring-Privacy.md @@ -353,7 +353,7 @@ The command line specifies privacy options: * [`--rpc-http-api`](../../reference/cli/options.md#rpc-http-api) includes `EEA` and `PRIV` in the list of JSON-RPC APIs to enable privacy JSON-RPC API methods. * [`--min-gas-price`](../../reference/cli/options.md#min-gas-price) is 0 for a - [free gas network](../../how-to/configure/FreeGas.md). + [free gas network](../../private-networks/how-to/configure/free-gas.md). !!! note diff --git a/docs/tutorials/Privacy/Privacy-Example.md b/docs/tutorials/Privacy/Privacy-Example.md index 32a87c190c4..7118a8dff71 100644 --- a/docs/tutorials/Privacy/Privacy-Example.md +++ b/docs/tutorials/Privacy/Privacy-Example.md @@ -85,7 +85,7 @@ For more information on the endpoints and services, refer to README.md in the in ## Deploy the private contract and interact with the nodes -To deploy a private contract to another [privacy group](../../concepts/Privacy/Privacy-Groups.md) member, use the +To deploy a private contract to another [privacy group](../../private-networks/concepts/privacy/privacy-groups.md) member, use the [web3js-quorum](https://consensys.github.io/web3js-quorum/latest/index.html) library and the [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) API call. You must use this API call instead of [`eth_sendTransaction`](https://ethereum.github.io/execution-apis/api-documentation) because Hyperledger Besu diff --git a/docs/tutorials/Private-Network/Adding-removing-IBFT-validators.md b/docs/tutorials/Private-Network/Adding-removing-IBFT-validators.md index 31bf4ac1ead..6de795c0ec2 100644 --- a/docs/tutorials/Private-Network/Adding-removing-IBFT-validators.md +++ b/docs/tutorials/Private-Network/Adding-removing-IBFT-validators.md @@ -5,7 +5,7 @@ description: Adding and removing IBFT 2.0 validators # Add and remove IBFT 2.0 validators This example walks through -[adding and removing an IBFT 2.0 validator](../../how-to/configure/Consensus-Protocols/IBFT.md#add-and-remove-validators). +[adding and removing an IBFT 2.0 validator](../../private-networks/how-to/configure/consensus/ibft.md#add-and-remove-validators). ## Prerequisites diff --git a/docs/tutorials/Private-Network/Create-IBFT-Network.md b/docs/tutorials/Private-Network/Create-IBFT-Network.md index 59cae19076f..bad99d003d6 100644 --- a/docs/tutorials/Private-Network/Create-IBFT-Network.md +++ b/docs/tutorials/Private-Network/Create-IBFT-Network.md @@ -5,7 +5,7 @@ description: Hyperledger Besu private network using the IBFT 2.0 (Proof of Autho # Create a private network using the IBFT 2.0 (proof of authority) consensus protocol A private network provides a configurable network for testing. This private network uses the -[IBFT 2.0 (proof of authority) consensus protocol](../../how-to/configure/Consensus-Protocols/IBFT.md). +[IBFT 2.0 (proof of authority) consensus protocol](../../private-networks/how-to/configure/consensus/ibft.md). !!!important @@ -47,7 +47,7 @@ IBFT-Network/ ### 2. Create a configuration file The configuration file defines the -[IBFT 2.0 genesis file](../../how-to/configure/Consensus-Protocols/IBFT.md#genesis-file) and the +[IBFT 2.0 genesis file](../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) and the number of node key pairs to generate. The configuration file has two nested JSON nodes. The first is the `genesis` property defining @@ -377,7 +377,7 @@ When finished using the private network, stop all nodes using ++ctrl+c++ in each [6. Start First Node as Bootnode](#6-start-the-first-node-as-the-bootnode). -[IBFT 2.0 (proof of authority)consensus protocol]: ../../how-to/configure/Consensus-Protocols/IBFT.md +[IBFT 2.0 (proof of authority)consensus protocol]: ../../private-networks/how-to/configure/consensus/ibft.md *[Byzantine fault tolerant]: Ability to function correctly and reach consensus despite nodes failing or propagating incorrect information to peers. diff --git a/docs/tutorials/Private-Network/Create-Private-Clique-Network.md b/docs/tutorials/Private-Network/Create-Private-Clique-Network.md index 89106a16ae9..f9904b8f49b 100644 --- a/docs/tutorials/Private-Network/Create-Private-Clique-Network.md +++ b/docs/tutorials/Private-Network/Create-Private-Clique-Network.md @@ -65,7 +65,7 @@ write the node address to the specified file (`node1Address` in this example). The genesis file defines the genesis block of the blockchain (that is, the start of the blockchain). The -[Clique genesis file](../../how-to/configure/Consensus-Protocols/Clique.md#genesis-file) includes +[Clique genesis file](../../private-networks/how-to/configure/consensus/clique.md#genesis-file) includes the address of Node-1 as the initial signer in the `extraData` field. All nodes in a network must use the same genesis file. @@ -273,5 +273,5 @@ When finished using the private network, stop all nodes using ++ctrl+c++ in each [4. Start First Node as Bootnode](#4-start-first-node-as-bootnode). -[Clique (proof of authority) consensus protocol]: ../../how-to/configure/Consensus-Protocols/Clique.md -[Clique API to add]: ../../how-to/configure/Consensus-Protocols/Clique.md#adding-and-removing-signers +[Clique (proof of authority) consensus protocol]: ../../private-networks/how-to/configure/consensus/clique.md +[Clique API to add]: ../../private-networks/how-to/configure/consensus/clique.md#adding-and-removing-signers diff --git a/docs/tutorials/Private-Network/Create-QBFT-Network.md b/docs/tutorials/Private-Network/Create-QBFT-Network.md index ad521b70512..d36cdcc0468 100644 --- a/docs/tutorials/Private-Network/Create-QBFT-Network.md +++ b/docs/tutorials/Private-Network/Create-QBFT-Network.md @@ -5,7 +5,7 @@ description: Hyperledger Besu private network using the QBFT (proof of authority # Create a private network using the QBFT (proof of authority) consensus protocol A private network provides a configurable network for testing. This private network uses the -[QBFT (proof of authority) consensus protocol](../../how-to/configure/Consensus-Protocols/QBFT.md). +[QBFT (proof of authority) consensus protocol](../../private-networks/how-to/configure/consensus/qbft.md). The QBFT network in this tutorial implements the [block header validator selection method] to manage validators. For a tutorial on how to implement the [contract validator selection method], follow the @@ -51,7 +51,7 @@ QBFT-Network/ ### 2. Create a configuration file The configuration file defines the -[QBFT genesis file](../../how-to/configure/Consensus-Protocols/QBFT.md#genesis-file) and the +[QBFT genesis file](../../private-networks/how-to/configure/consensus/qbft.md#genesis-file) and the number of node key pairs to generate. The configuration file has two nested JSON nodes. The first is the `genesis` property defining @@ -378,9 +378,9 @@ When finished using the private network, stop all nodes using ++ctrl+c++ in each [6. Start First Node as Bootnode](#6-start-the-first-node-as-the-bootnode). -[block header validator selection method]: ../../how-to/configure/Consensus-Protocols/QBFT.md#add-and-remove-validators-using-block-headers -[contract validator selection method]: ../../how-to/configure/Consensus-Protocols/QBFT.md#add-and-remove-validators-using-a-smart-contract +[block header validator selection method]: ../../private-networks/how-to/configure/consensus/qbft.md#add-and-remove-validators-using-block-headers +[contract validator selection method]: ../../private-networks/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-Protocols/QBFT.md#transitions +[configuring a transition]: ../../private-networks/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/mkdocs.yml b/mkdocs.yml index 001db41a659..c7141bf15f0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -89,6 +89,9 @@ nav: - Configure logging: how-to/monitor/logging.md - Use a configuration file: how-to/configure/configuration-file.md - Pass JVM options: how-to/configure/pass-jvm-options.md + - Develop dapps: + - Use Truffle: how-to/develop/truffle.md + - Use client libraries: how-to/develop/client-libraries.md - Use proof of work: - Configure mining: how-to/configure/mining.md - Upgrade Besu: how-to/upgrade/node.md @@ -130,9 +133,23 @@ nav: - Start Besu: private-networks/get-started/start-node.md - How to: - Configure: - - Mining: how-to/configure/mining.md + - Consensus: + - Index: private-networks/how-to/configure/consensus/index.md + - QBFT: private-networks/how-to/configure/consensus/qbft.md + - IBFT: private-networks/how-to/configure/consensus/ibft.md + - Clique: private-networks/how-to/configure/consensus/clique.md + - Add and remove validators without voting: private-networks/how-to/configure/consensus/add-and-remove-validators-without-voting.md + - Free gas network: private-networks/how-to/configure/free-gas.md + - Validators: private-networks/how-to/configure/validators.md + - Pre-deploy a contract: private-networks/how-to/configure/contracts.md + - TLS: + - Client and server TLS: private-networks/how-to/configure/tls/client-and-server.md + - Peer-to-peer TLS: private-networks/how-to/configure/tls/p2p.md + - Block proposal permissioning: private-networks/how-to/configure/block-proposal-permissioning.md + - Alternative elliptic curves: private-networks/how-to/configure/curves.md - Use a configuration file: how-to/configure/configuration-file.md - Pass JVM options: how-to/configure/pass-jvm-options.md + - Mining: how-to/configure/mining.md - Use the Besu API: - Index: how-to/use-besu-api/index.md - Use JSON-RPC over HTTP, WS, and IPC: how-to/use-besu-api/json-rpc.md @@ -142,8 +159,8 @@ nav: - Access logs using JSON-RPC: how-to/use-besu-api/access-logs.md - Create and send transactions: - Index: how-to/send-transactions.md - - Create and send private transactions: private-networks/how-to/send-transactions/private-transactions.md - - Send concurrent private transactions: private-networks/how-to/send-transactions/concurent-private-transactions.md + - Create and send private transactions: private-networks/how-to/send-transactions/index.md + - Send concurrent private transactions: private-networks/how-to/send-transactions/concurent-index.md - Include revert reason: private-networks/how-to/send-transactions/revert-reason.md - Find and connect to peers: - Configure bootnodes: private-networks/how-to/connect/bootnodes.md @@ -158,6 +175,29 @@ nav: - Use Splunk: private-networks/how-to/monitor/splunk.md - Use OpenTelemtry: private-networks/how-to/monitor/opentelemetry.md - Configure logging: how-to/monitor/logging.md + - Use privacy: + - Use EEA-compliant privacy: private-networks/how-to/use-privacy/eea-compliant.md + - Use Besu-extended privacy: private-networks/how-to/use-privacy/besu-extended.md + - Use GoQuorum-compatible privacy: private-networks/how-to/use-privacy/goquorum-compatible.md + - Run Tessera with Besu: private-networks/how-to/use-privacy/tessera.md + - Create and manage privacy groups: private-networks/how-to/use-privacy/privacy-groups.md + - Use flexible privacy groups: private-networks/how-to/use-privacy/flexible.md + - Access private and privacy marker transactions: private-networks/how-to/use-privacy/access-index.md + - Sign privacy marker transactions: private-networks/how-to/use-privacy/sign-pmts.md + - Use the web3js-quorum library: private-networks/how-to/use-privacy/web3js-quorum.md + - Performance best practices: private-networks/how-to/use-privacy/performance-best-practices.md + - Use permissioning: + - Use local permissioning: private-networks/how-to/use-permissioning/local.md + - Use onchain permissioning: private-networks/how-to/use-permissioning/onchain.md + - Deploy for production: + - Deploy to the cloud: private-networks/how-to/deploy/cloud.md + - Use Ansible: private-networks/how-to/deploy/ansible.md + - Use Kubernetes: private-networks/how-to/deploy/kubernetes.md + - Use Ethstats network monitor: private-networks/how-to/deploy/ethstats.md + - Develop dapps: + - Use Truffle: how-to/develop/truffle.md + - Use client libraries: how-to/develop/client-libraries.md + - Backup and restore: private-networks/how-to/backup.md - Upgrade: - Upgrade node: how-to/upgrade/node.md - Upgrade protocol: private-networks/upgrade/protocol.md @@ -166,9 +206,24 @@ nav: - Use Java Flight Recorder: how-to/troubleshoot/java-flight-recorder.md - Trace transactions: how-to/troubleshoot/trace-transactions.md - Concepts: + - Proof of authority consensus: private-networks/concepts/poa.md + - Genesis file: concepts/genesis-file.md + - Privacy: + - Index: private-networks/concepts/privacy/index.md + - Private transactions: + - Index: private-networks/concepts/privacy/private-transactions/index.md + - Processing private transactions: private-networks/concepts/privacy/private-transactions/processing.md + - Privacy groups: private-networks/concepts/privacy/privacy-groups.md + - Flexible privacy groups: private-networks/concepts/privacy/flexible-privacy.md + - Multi-tenancy: private-networks/concepts/privacy/multi-tenancy.md + - Privacy plugin: private-networks/concepts/privacy/plugin.md + - Permissioning: + - Index: private-networks/concepts/permissioning/index.md + - Onchain permissioning: private-networks/concepts/permissioning/onchain.md + - Permissioning plugin: private-networks/concepts/permissioning/plugin.md + - Public key infrastructure: private-networks/concepts/pki.md - Network ID and chain ID: concepts/network-and-chain-id.md - Events and logs: concepts/events-and-logs.md - - Genesis file: concepts/genesis-file.md - Node keys: concepts/node-keys.md - Tutorials: - Reference: @@ -243,29 +298,29 @@ plugins: HowTo/Deploy/Monitoring-Performance.md: how-to/monitor/metrics.md HowTo/Upgrade/Upgrade-Network.md: how-to/upgrade/node.md HowTo/Find-and-Connect/Using-UPnP.md: how-to/connect/specify-nat.md - HowTo/Use-Privacy/Run-Orion-With-Besu.md: how-to/Use-Privacy/Run-Tessera-With-Besu.md + HowTo/Use-Privacy/Run-Orion-With-Besu.md: private-networks/how-to/use-privacy/tessera.md Concepts/Transactions/Trace-Types.md: reference/trace-types.md - HowTo/Develop-Dapps/Use-web3js.md: how-to/Develop-Dapps/Client-Libraries.md - Concepts/Client-Libraries.md: how-to/Develop-Dapps/Client-Libraries.md - Concepts/Privacy/Onchain-PrivacyGroups.md: concepts/Privacy/Flexible-PrivacyGroups.md - HowTo/Use-Privacy/Use-OnChainPrivacy.md: how-to/Use-Privacy/Use-FlexiblePrivacy.md - Tutorials/Quickstarts/Azure-Private-Network-Quickstart.md: tutorials/Private-Network-Example-Azure.md - HowTo/Interact/Client-Libraries/eeajs.md: how-to/Interact/Client-Libraries/web3js-quorum.md - HowTo/Interact/Client-Libraries/web3js-eea.md: how-to/Interact/Client-Libraries/web3js-quorum.md - Privacy/Explanation/Privacy-Groups.md: concepts/Privacy/Privacy-Groups.md - Tutorials/Privacy/eeajs-Multinode-example.md: tutorials/Privacy/web3js-quorum-Multinode-example.md - Tutorials/Privacy/web3js-eea-Multinode-example.md: tutorials/Privacy/web3js-quorum-Multinode-example.md - HowTo/Configure/Configure-TLS.md: how-to/configure/TLS/Configure-TLS.md + HowTo/Develop-Dapps/Use-web3js.md: how-to/develop/client-libraries.md + Concepts/Client-Libraries.md: how-to/develop/client-libraries.md + Concepts/Privacy/Onchain-PrivacyGroups.md: private-networks/concepts/privacy/flexible-privacy.md + HowTo/Use-Privacy/Use-OnChainPrivacy.md: private-networks/how-to/use-privacy/flexible.md + Tutorials/Quickstarts/Azure-Private-Network-Quickstart.md: private-networks/tutorials/Private-Network-Example-Azure.md + HowTo/Interact/Client-Libraries/eeajs.md: private-networks/how-to/use-privacy/web3js-quorum.md + HowTo/Interact/Client-Libraries/web3js-eea.md: private-networks/how-to/use-privacy/web3js-quorum.md + Privacy/Explanation/Privacy-Groups.md: private-networks/concepts/privacy/privacy-groups.md + Tutorials/Privacy/eeajs-Multinode-example.md: private-networks/tutorials/Privacy/web3js-quorum-Multinode-example.md + Tutorials/Privacy/web3js-eea-Multinode-example.md: private-networks/tutorials/Privacy/web3js-quorum-Multinode-example.md + HowTo/Configure/Configure-TLS.md: private-networks/how-to/configure/tls/client-and-server.md HowTo/Deploy/Lite-Block-Explorer.md: https://github.com/Alethio/ethereum-lite-explorer HowTo/Deploy/Lite-Network-Monitor.md: https://github.com/Alethio/ethstats-network-dashboard - HowTo/Configure/Consensus-Protocols/QuorumIBFT.md: how-to/configure/Consensus-Protocols/QBFT.md + HowTo/Configure/Consensus-Protocols/QuorumIBFT.md: private-networks/how-to/configure/consensus/qbft.md HowTo/Configure/Configure-Data-Storage.md: public-networks/concepts/data-storage-formats.md Concepts/Consensus-Protocols/Proof-of-Stake.md: public-networks/concepts/the-merge.md - Tutorials/Examples/Private-Network-Example.md: tutorials/Developer-Quickstart.md - Tutorials/Examples/Privacy-Example.md: tutorials/Privacy/Privacy-Example.md - Tutorials/Examples/Nat-Manager-Kubernetes.md: tutorials/Kubernetes/Nat-Manager-Kubernetes.md - Tutorials/Examples/Private-Network-Example-Azure.md: tutorials/Private-Network-Example-Azure.md - HowTo/Configure/Consensus-Protocols/Add-Validators.md: how-to/configure/Consensus-Protocols/QBFT.md + Tutorials/Examples/Private-Network-Example.md: private-networks/tutorials/Developer-Quickstart.md + Tutorials/Examples/Privacy-Example.md: private-networks/tutorials/Privacy/Privacy-Example.md + Tutorials/Examples/Nat-Manager-Kubernetes.md: private-networks/tutorials/Kubernetes/Nat-Manager-kubernetes.md + Tutorials/Examples/Private-Network-Example-Azure.md: private-networks/tutorials/Private-Network-Example-Azure.md + HowTo/Configure/Consensus-Protocols/Add-Validators.md: private-networks/how-to/configure/consensus/qbft.md # restructure redirects: HowTo/Get-Started/System-Requirements/System-Requirements-Private.md: private-networks/get-started/system-requirements.md HowTo/Get-Started/System-Requirements/System-Requirements-Public.md: public-networks/get-started/system-requirements.md @@ -279,12 +334,12 @@ plugins: HowTo/Interact/APIs/RPC-PubSub.md: how-to/use-besu-api/rpc-pubsub.md HowTo/Interact/APIs/GraphQL.md: how-to/use-besu-api/graphql.md HowTo/Interact/APIs/Authentication.md: how-to/use-besu-api/authenticate.md - HowTo/Interact/APIs/Engine-API.md: how-to/use-engine-api.md + HowTo/Interact/APIs/Engine-API.md: public-networks/how-to/use-engine-api.md HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.md: how-to/use-besu-api/access-logs.md HowTo/Send-Transactions/Transactions.md: how-to/send-transactions.md HowTo/Send-Transactions/Account-Management.md: how-to/send-transactions.md - HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md: private-networks/how-to/send-transactions/private-transactions.md - HowTo/Send-Transactions/Concurrent-Private-Transactions.md: private-networks/how-to/send-transactions/concurrent-private-transactions.md + HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md: private-networks/how-to/send-transactions/index.md + HowTo/Send-Transactions/Concurrent-Private-Transactions.md: private-networks/how-to/send-transactions/concurrent-index.md HowTo/Send-Transactions/Revert-Reason.md: private-networks/how-to/send-transactions/revert-reason.md HowTo/Find-and-Connect/Bootnodes.md: private-networks/how-to/connect/bootnodes.md HowTo/Find-and-Connect/Static-Nodes.md: how-to/connect/static-nodes.md @@ -324,3 +379,56 @@ plugins: Reference/Trace-Types.md: reference/trace-types.md Reference/Projects-Using-Besu.md: reference/projects-using-besu.md Reference/Responsible-Disclosure.md: reference/disclosure.md + HowTo/Configure/Consensus-Protocols/Clique.md: private-networks/how-to/configure/consensus/clique.md + HowTo/Configure/Consensus-Protocols/IBFT.md: private-networks/how-to/configure/consensus/ibft.md + HowTo/Configure/Consensus-Protocols/QBFT.md: private-networks/how-to/configure/consensus/qbft.md + HowTo/Troubleshoot/Add-Validators-Without-Voting.md: private-networks/how-to/configure/consensus/add-validators-without-voting.md + HowTo/Configure/FreeGas.md: private-networks/how-to/configure/free-gas.md + HowTo/Deploy/Validators.md: private-networks/how-to/configure/validators.md + HowTo/Configure/Contracts-in-Genesis.md: private-networks/how-to/configure/contracts.md + HowTo/Configure/Alternative-EC-Curves.md: private-networks/how-to/configure/curves.md + HowTo/Configure/Block-Proposal-Permissioning.md: private-networks/how-to/configure/block-proposal-permissioning.md + HowTo/Deploy/Bootnodes.md: private-networks/how-to/connect/bootnodes.md + Concepts/ArchitectureOverview.md: index.md + Concepts/Mining.md: how-to/configure/mining.md + HowTo/Troubleshoot/Troubleshooting.md: how-to/troubleshoot/evm-tool.md + Concepts/Protocol-Upgrades.md: private-networks/how-to/ugprade/protocol.md + Reference/Resources.md: index.md + HowTo/Use-Privacy/EEA-compliant.md: private-networks/how-to/use-privacy/eea-compliant.md + HowTo/Use-Privacy/Privacy.md: private-networks/how-to/use-privacy/besu-extended.md + HowTo/Use-Privacy/Use-GoQuorum-compatible-privacy.md: private-networks/how-to/use-privacy/goquorum-compatible.md + HowTo/Use-Privacy/Run-Tessera-With-Besu.md: private-networks/how-to/use-privacy/tessera.md + HowTo/Use-Privacy/Create-Manage-Privacy-Groups.md: private-networks/how-to/use-privacy/privacy-groups.md + HowTo/Use-Privacy/Use-FlexiblePrivacy.md: private-networks/how-to/use-privacy/flexible.md + HowTo/Use-Privacy/Access-Private-Transactions.md: private-networks/how-to/use-privacy/access-index.md + HowTo/Use-Privacy/Sign-Privacy-Marker-Transactions.md: private-networks/how-to/use-privacy/sign-pmts.md + HowTo/Interact/Client-Libraries/web3js-quorum.md: private-networks/how-to/use-privacy/web3js-quorum.md + HowTo/Use-Privacy/Performance-Best-Practices.md: private-networks/how-to/use-privacy/performance-best-practices.md + HowTo/Configure/TLS/Configure-TLS.md: private-networks/how-to/configure/tls/client-and-server.md + HowTo/Configure/TLS/P2P-TLS.md: private-networks/how-to/configure/tls/p2p.md + HowTo/Limit-Access/Local-Permissioning.md: private-networks/how-to/use-permissioning/local.md + HowTo/Limit-Access/Updating-Permission-Lists.md: private-networks/how-to/use-permissioning/onchain.md + HowTo/Limit-Access/Specify-Perm-Version.md: private-networks/how-to/use-permissioning/onchain.md + HowTo/Deploy/Cloud.md: private-networks/how-to/deploy/cloud.md + HowTo/Deploy/Ansible.md: private-networks/how-to/deploy/ansible.md + HowTo/Deploy/Kubernetes.md: private-networks/how-to/deploy/kubernetes.md + HowTo/Deploy/Ethstats.md: private-networks/how-to/deploy/ethstats.md + Reference/web3js-quorum.md: private-networks/how-to/use-privacy/web3js-quorum.md + HowTo/Deploy/Production.md: private-networks/how-to/use-permissioning/onchain.md + Concepts/Network-vs-Node.md: concepts/genesis-file.md + HowTo/Develop-Dapps/Truffle.md: how-to/develop/truffle.md + HowTo/Develop-Dapps/Client-Libraries.md: how-to/develop/client-libraries.md + HowTo/Backup/Backup.md: private-networks/how-to/backup.md + Concepts/Consensus-Protocols/Overview-Consensus.md: private-networks/how-to/configure/consensus/index.md + Concepts/Consensus-Protocols/Comparing-PoA.md: private-networks/concepts/poa.md + Concepts/Privacy/Private-Transactions.md: private-networks/concepts/privacy/private-transactions/index.md + Concepts/Privacy/Private-Transactions-Processing.md: private-networks/concepts/privacy/private-transactions/processing.md + Concepts/Privacy/Privacy-Groups.md: private-networks/concepts/privacy/privacy-groups.md + Concepts/Privacy/Flexible-PrivacyGroups.md: private-networks/concepts/privacy/flexible-privacy.md + Concepts/Privacy/Multi-Tenancy.md: private-networks/concepts/privacy/multi-tenancy.md + Concepts/Privacy/Plugin-Privacy.md: private-networks/concepts/privacy/plugin.md + Concepts/Privacy/Privacy-Overview.md: private-networks/concepts/privacy/index.md + Concepts/Permissioning/Permissioning-Overview.md: private-networks/concepts/permissioning/index.md + Concepts/Permissioning/Onchain-Permissioning.md: private-networks/concepts/permissioning/onchain.md + Concepts/Permissioning/Plugin-Permissioning.md: private-networks/concepts/permissioning/plugin.md + Concepts/PKI.md: private-networks/concepts/pki.md From dd368cee1f35307d81d8f7115dbd1d1c21e3af84 Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Wed, 13 Jul 2022 12:54:05 -0700 Subject: [PATCH 04/31] finish private networks restructure Signed-off-by: Alexandra Tran --- docs/concepts/network-and-chain-id.md | 2 +- docs/get-started/install/index.md | 2 +- docs/how-to/connect/specify-nat.md | 2 +- docs/how-to/monitor/metrics.md | 2 +- docs/how-to/troubleshoot/Troubleshooting.md | 2 +- docs/index.md | 2 +- .../concepts/permissioning/onchain.md | 2 +- .../configure/block-proposal-permissioning.md | 2 +- .../how-to/configure/consensus/clique.md | 2 +- .../how-to/configure/consensus/ibft.md | 2 +- .../how-to/configure/consensus/index.md | 2 +- .../how-to/configure/consensus/qbft.md | 2 +- .../how-to/configure/tls/p2p.md | 2 +- .../how-to/deploy/Production.md | 2 +- docs/private-networks/how-to/deploy/cloud.md | 2 +- .../how-to/deploy/kubernetes.md | 2 +- .../how-to/monitor/elastic-stack.md | 4 +- .../private-networks/how-to/monitor/splunk.md | 2 +- .../how-to/use-permissioning/onchain.md | 4 +- .../how-to/use-privacy/goquorum-compatible.md | 2 +- .../reference/accounts-for-testing.md} | 4 +- .../tutorials/azure.md} | 12 ++-- .../tutorials/clique.md} | 8 +-- .../tutorials/contracts/index.md} | 14 ++-- .../tutorials/contracts/interact.md} | 8 +-- .../tutorials/contracts/transfer-funds.md} | 8 +-- .../tutorials/ethash.md} | 2 +- .../tutorials/ibft/index.md} | 48 ++++++------- .../tutorials/ibft/validators.md} | 24 +++---- .../tutorials/kubernetes/charts.md} | 30 ++++---- .../tutorials/kubernetes/cluster.md} | 4 +- .../tutorials/kubernetes/index.md} | 6 +- .../tutorials/kubernetes/maintenance.md} | 2 +- .../tutorials/kubernetes/nat-manager.md} | 14 ++-- .../tutorials/kubernetes/playground.md} | 0 .../tutorials/kubernetes/production.md} | 12 ++-- .../tutorials/kubernetes/quorum-explorer.md} | 18 ++--- .../tutorials/permissioning/index.md} | 60 ++++++++-------- .../tutorials/permissioning/onchain.md} | 48 ++++++------- .../permissioning/upgrade-contracts.md} | 4 +- .../tutorials/privacy/index.md} | 26 +++---- .../tutorials/privacy/multi-tenancy.md} | 34 ++++----- .../tutorials/privacy/quickstart.md} | 18 ++--- .../tutorials/privacy/web3js-quorum.md} | 4 +- .../tutorials/qbft.md} | 12 ++-- .../tutorials/quickstart.md} | 42 +++++------ docs/reference/cli/options.md | 2 +- docs/reference/cli/subcommands.md | 4 +- docs/reference/evm-tool.md | 2 +- docs/reference/genesis-items.md | 2 +- mkdocs.yml | 71 +++++++++++++++++-- 51 files changed, 322 insertions(+), 265 deletions(-) rename docs/{reference/Accounts-for-Testing.md => private-networks/reference/accounts-for-testing.md} (80%) rename docs/{tutorials/Private-Network-Example-Azure.md => private-networks/tutorials/azure.md} (90%) rename docs/{tutorials/Private-Network/Create-Private-Clique-Network.md => private-networks/tutorials/clique.md} (96%) rename docs/{tutorials/Contracts/Deploying-Contracts.md => private-networks/tutorials/contracts/index.md} (95%) rename docs/{tutorials/Contracts/Calling-Contract-Functions.md => private-networks/tutorials/contracts/interact.md} (96%) rename docs/{tutorials/Contracts/Account-Funds-Transfers.md => private-networks/tutorials/contracts/transfer-funds.md} (94%) rename docs/{tutorials/Private-Network/Create-Private-Network.md => private-networks/tutorials/ethash.md} (98%) rename docs/{tutorials/Private-Network/Create-IBFT-Network.md => private-networks/tutorials/ibft/index.md} (87%) rename docs/{tutorials/Private-Network/Adding-removing-IBFT-validators.md => private-networks/tutorials/ibft/validators.md} (72%) rename docs/{tutorials/Kubernetes/Deploy-Charts.md => private-networks/tutorials/kubernetes/charts.md} (95%) rename docs/{tutorials/Kubernetes/Create-Cluster.md => private-networks/tutorials/kubernetes/cluster.md} (99%) rename docs/{tutorials/Kubernetes/Overview.md => private-networks/tutorials/kubernetes/index.md} (98%) rename docs/{tutorials/Kubernetes/Maintenance.md => private-networks/tutorials/kubernetes/maintenance.md} (96%) rename docs/{tutorials/Kubernetes/Nat-Manager-Kubernetes.md => private-networks/tutorials/kubernetes/nat-manager.md} (93%) rename docs/{tutorials/Kubernetes/Playground.md => private-networks/tutorials/kubernetes/playground.md} (100%) rename docs/{tutorials/Kubernetes/Production.md => private-networks/tutorials/kubernetes/production.md} (90%) rename docs/{tutorials/Kubernetes/Quorum-Explorer.md => private-networks/tutorials/kubernetes/quorum-explorer.md} (84%) rename docs/{tutorials/Permissioning/Create-Permissioned-Network.md => private-networks/tutorials/permissioning/index.md} (84%) rename docs/{tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md => private-networks/tutorials/permissioning/onchain.md} (87%) rename docs/{tutorials/Permissioning/Upgrade-Permissioning-Contract.md => private-networks/tutorials/permissioning/upgrade-contracts.md} (95%) rename docs/{tutorials/Privacy/Configuring-Privacy.md => private-networks/tutorials/privacy/index.md} (91%) rename docs/{tutorials/Privacy/Configuring-Multi-Tenancy.md => private-networks/tutorials/privacy/multi-tenancy.md} (76%) rename docs/{tutorials/Privacy/Privacy-Example.md => private-networks/tutorials/privacy/quickstart.md} (87%) rename docs/{tutorials/Privacy/web3js-quorum-Multinode-example.md => private-networks/tutorials/privacy/web3js-quorum.md} (97%) rename docs/{tutorials/Private-Network/Create-QBFT-Network.md => private-networks/tutorials/qbft.md} (95%) rename docs/{tutorials/Developer-Quickstart.md => private-networks/tutorials/quickstart.md} (93%) diff --git a/docs/concepts/network-and-chain-id.md b/docs/concepts/network-and-chain-id.md index 79d8bcdc3bd..b033d3855d6 100644 --- a/docs/concepts/network-and-chain-id.md +++ b/docs/concepts/network-and-chain-id.md @@ -69,7 +69,7 @@ To change a chain ID and start a new chain: 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](../tutorials/Private-Network/Create-IBFT-Network.md#6-start-the-first-node-as-the-bootnode). +5. [Restart the nodes](../private-networks/tutorials/ibft/index.md#6-start-the-first-node-as-the-bootnode). !!! important diff --git a/docs/get-started/install/index.md b/docs/get-started/install/index.md index 1b2d7a47040..13be0d685a7 100644 --- a/docs/get-started/install/index.md +++ b/docs/get-started/install/index.md @@ -7,7 +7,7 @@ description: Options for getting started with Hyperledger Besu ## New to Hyperledger Besu? -Get started with the [Developer Quickstart](../../tutorials/Developer-Quickstart.md). +Get started with the [Developer Quickstart](../../private-networks/tutorials/quickstart.md). Use the quickstart to rapidly generate local blockchain networks. ## Installation options diff --git a/docs/how-to/connect/specify-nat.md b/docs/how-to/connect/specify-nat.md index f57db21a809..ea93fabb5d5 100644 --- a/docs/how-to/connect/specify-nat.md +++ b/docs/how-to/connect/specify-nat.md @@ -75,7 +75,7 @@ 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](../../tutorials/Kubernetes/Nat-Manager-Kubernetes.md) is available. +A tutorial to [Configure the Nat Manager for Kubernetes](../../private-networks/tutorials/kubernetes/nat-manager.md) is available. ## Docker diff --git a/docs/how-to/monitor/metrics.md b/docs/how-to/monitor/metrics.md index 71ff7653d42..002634815ad 100644 --- a/docs/how-to/monitor/metrics.md +++ b/docs/how-to/monitor/metrics.md @@ -302,4 +302,4 @@ If a metric has a JSON-RPC equivalent, it is included in the definition column. maximum number of P2P connections that can be established. -[monitoring with Prometheus and Grafana configured]: ../../tutorials/Developer-Quickstart.md#monitor-nodes-with-prometheus-and-grafana +[monitoring with Prometheus and Grafana configured]: ../../private-networks/tutorials/quickstart.md#monitor-nodes-with-prometheus-and-grafana diff --git a/docs/how-to/troubleshoot/Troubleshooting.md b/docs/how-to/troubleshoot/Troubleshooting.md index a1216c82c20..e645d9a1b23 100644 --- a/docs/how-to/troubleshoot/Troubleshooting.md +++ b/docs/how-to/troubleshoot/Troubleshooting.md @@ -172,7 +172,7 @@ sudo mount /dev/urandom /dev/random -o bind ## Quorum Developer Quickstart not working on Apple M1 chip -The [Quorum Developer Quickstart](../../tutorials/Developer-Quickstart.md) does not currently support +The [Quorum Developer Quickstart](../../private-networks/tutorials/quickstart.md) does not currently support the Apple M1 chip. The quickstart starts up on machines that use the chip, but may show the following symptoms: diff --git a/docs/index.md b/docs/index.md index ab668bdcc01..81c5627d648 100644 --- a/docs/index.md +++ b/docs/index.md @@ -33,7 +33,7 @@ supports Pub/Sub. The API supports typical Ethereum functionalities such as: ## New to Ethereum? -Get started with the [Developer Quickstart](tutorials/Developer-Quickstart.md). Use the quickstart +Get started with the [Developer Quickstart](private-networks/tutorials/quickstart.md). Use the quickstart to rapidly generate local blockchain networks. Learn more about [use cases for Ethereum](https://consensys.net/blockchain-use-cases/case-studies/). diff --git a/docs/private-networks/concepts/permissioning/onchain.md b/docs/private-networks/concepts/permissioning/onchain.md index 3baa980247f..e7da1cab71a 100644 --- a/docs/private-networks/concepts/permissioning/onchain.md +++ b/docs/private-networks/concepts/permissioning/onchain.md @@ -94,5 +94,5 @@ bootnodes to rediscover peers. All bootnodes must be on the nodes allowlist. -[permissioning management dapp]: ../../../tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md +[permissioning management dapp]: ../../tutorials/permissioning/onchain.md [`--privacy-marker-transaction-signing-key-file`]: ../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file diff --git a/docs/private-networks/how-to/configure/block-proposal-permissioning.md b/docs/private-networks/how-to/configure/block-proposal-permissioning.md index 50f69806990..ed0a62e9fd7 100644 --- a/docs/private-networks/how-to/configure/block-proposal-permissioning.md +++ b/docs/private-networks/how-to/configure/block-proposal-permissioning.md @@ -20,7 +20,7 @@ Use certificates issued by a trusted authority to ensure validators are authoriz **Prerequisites**: * A configured network. For example, - [see steps 1 to 5 in the QBFT tutorial](../../../tutorials/Private-Network/Create-QBFT-Network.md). + [see steps 1 to 5 in the QBFT tutorial](../../tutorials/qbft.md). * A keystore containing the certificate and key for each network node. * A truststore containing all the trusted certificates for the network. diff --git a/docs/private-networks/how-to/configure/consensus/clique.md b/docs/private-networks/how-to/configure/consensus/clique.md index a7e4cedf4fa..becaebcd402 100644 --- a/docs/private-networks/how-to/configure/consensus/clique.md +++ b/docs/private-networks/how-to/configure/consensus/clique.md @@ -19,7 +19,7 @@ In Clique networks, approved accounts, known as signers, validate transactions a take turns to create the next block. Existing signers propose and vote to [add or remove signers](#add-and-remove-signers). -You can [create a private network using Clique](../../../../tutorials/Private-Network/Create-Private-Clique-Network.md). +You can [create a private network using Clique](../../../tutorials/clique.md). ## Genesis file diff --git a/docs/private-networks/how-to/configure/consensus/ibft.md b/docs/private-networks/how-to/configure/consensus/ibft.md index fde19f92003..9b389c45988 100644 --- a/docs/private-networks/how-to/configure/consensus/ibft.md +++ b/docs/private-networks/how-to/configure/consensus/ibft.md @@ -14,7 +14,7 @@ super-majority (greater than or equal to 2/3) of validators must first sign the Existing validators propose and vote to [add or remove validators](#add-and-remove-validators). -You can [create a private network using IBFT](../../../../tutorials/Private-Network/Create-IBFT-Network.md). +You can [create a private network using IBFT](../../../tutorials/ibft/index.md). !!! important diff --git a/docs/private-networks/how-to/configure/consensus/index.md b/docs/private-networks/how-to/configure/consensus/index.md index a26afc998f4..824af837e1b 100644 --- a/docs/private-networks/how-to/configure/consensus/index.md +++ b/docs/private-networks/how-to/configure/consensus/index.md @@ -16,7 +16,7 @@ Besu supports the following consensus protocols: post-[Merge](../../../../public-networks/concepts/the-merge.md) and can also be used on the [Merge testnet](../../../../public-networks/tutorials/merge-testnet.md). * [Ethash](https://ethereum.org/en/developers/docs/consensus-mechanisms/pow/) (proof of work) - Used on Ethereum Mainnet pre-[Merge](../../../../public-networks/concepts/the-merge.md) and can also be used in - [small development networks](../../../../tutorials/Private-Network/Create-Private-Network.md). + [small development networks](../../../tutorials/ethash.md). See a [comparison of the proof of authority consensus protocols](../../../concepts/poa.md). diff --git a/docs/private-networks/how-to/configure/consensus/qbft.md b/docs/private-networks/how-to/configure/consensus/qbft.md index 5dc7fee165f..bf305af9e60 100644 --- a/docs/private-networks/how-to/configure/consensus/qbft.md +++ b/docs/private-networks/how-to/configure/consensus/qbft.md @@ -13,7 +13,7 @@ super-majority (greater than or equal to 2/3) of validators must first sign the Existing validators propose and vote to [add or remove validators](#add-and-remove-validators). -You can [create a private network using QBFT](../../../../tutorials/Private-Network/Create-QBFT-Network.md). +You can [create a private network using QBFT](../../../tutorials/qbft.md). !!! important diff --git a/docs/private-networks/how-to/configure/tls/p2p.md b/docs/private-networks/how-to/configure/tls/p2p.md index 508b8a42fe5..58ae4fb2545 100644 --- a/docs/private-networks/how-to/configure/tls/p2p.md +++ b/docs/private-networks/how-to/configure/tls/p2p.md @@ -19,7 +19,7 @@ Besu supports PKCS11, PKCS12, and JKS keystore and truststore types for P2P TLS. **Prerequisites**: * A configured network. For example, - [see steps 1 to 5 in the QBFT tutorial](../../../../tutorials/Private-Network/Create-QBFT-Network.md). + [see steps 1 to 5 in the QBFT tutorial](../../../tutorials/qbft.md). * Each node requires a keystore that contains the node's certificate and key. * A truststore containing all the trusted certificates for the network. diff --git a/docs/private-networks/how-to/deploy/Production.md b/docs/private-networks/how-to/deploy/Production.md index d508d821184..d546a794dc8 100644 --- a/docs/private-networks/how-to/deploy/Production.md +++ b/docs/private-networks/how-to/deploy/Production.md @@ -35,4 +35,4 @@ procedure above to deploy the permissioning management dapp to your Web server. [projects release page]: https://github.com/ConsenSys/permissioning-smart-contracts/releases/latest -[Getting started with onchain permissioning]: ../../../tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md +[Getting started with onchain permissioning]: ../../tutorials/permissioning/onchain.md diff --git a/docs/private-networks/how-to/deploy/cloud.md b/docs/private-networks/how-to/deploy/cloud.md index f1f2a5ff876..ba5ce00d1d2 100644 --- a/docs/private-networks/how-to/deploy/cloud.md +++ b/docs/private-networks/how-to/deploy/cloud.md @@ -10,4 +10,4 @@ When deploying Besu to the cloud: bootnodes and validators. * If your network is a multi-region network, consider using VPC Peering to reduce latency. * Where required, use VPNs to connect to your on premise systems, or single private chains. -* If deploying to Kubernetes, please refer to the [tutorial](../../../tutorials/Kubernetes/Overview.md). +* If deploying to Kubernetes, please refer to the [tutorial](../../tutorials/kubernetes/index.md). diff --git a/docs/private-networks/how-to/deploy/kubernetes.md b/docs/private-networks/how-to/deploy/kubernetes.md index 3f93f7c9587..c4f835a38a1 100644 --- a/docs/private-networks/how-to/deploy/kubernetes.md +++ b/docs/private-networks/how-to/deploy/kubernetes.md @@ -10,5 +10,5 @@ private networks using Kubernetes (K8s). The repository has full support for clo AWS, Azure, GCP, and IBM, and has production setups that use of identities and cloud-native secret storage services like Azure KeyVault and AWS Secrets Manager. -Refer to the [tutorial](../../../tutorials/Kubernetes/Overview.md) and familiarize yourself with +Refer to the [tutorial](../../tutorials/kubernetes/index.md) and familiarize yourself with the reference implementations, and customize them to your requirements. diff --git a/docs/private-networks/how-to/monitor/elastic-stack.md b/docs/private-networks/how-to/monitor/elastic-stack.md index 5b9d04b126c..6d32f2dff26 100644 --- a/docs/private-networks/how-to/monitor/elastic-stack.md +++ b/docs/private-networks/how-to/monitor/elastic-stack.md @@ -5,7 +5,7 @@ description: Using Elastick Stack (ELK) with Hyperledger Besu # Elastic Stack [Elastic Stack] (ELK) is an open-source log management platform that is available when using the -[Developer Quickstart](../../../tutorials/Developer-Quickstart.md). +[Developer Quickstart](../../tutorials/quickstart.md). The [Filebeat] configuration ingests logs and the [Metricbeat] configuration collects metrics from the nodes at regular defined intervals and outputs them to Redis for storage. @@ -21,7 +21,7 @@ The [pipeline configuration] defines the JSON format used for Besu logs and auto To see the Besu Quickstart network logs in Kibana: -1. [Start the Developer Quickstart with Besu](../../../tutorials/Developer-Quickstart.md), selecting ELK monitoring. +1. [Start the Developer Quickstart with Besu](../../tutorials/quickstart.md), selecting ELK monitoring. 1. Open the [`Kibana logs address`](http://localhost:5601/app/kibana#/discover) listed by the sample networks `list.sh` script. The logs display in Kibana. diff --git a/docs/private-networks/how-to/monitor/splunk.md b/docs/private-networks/how-to/monitor/splunk.md index 7576ce0336f..22e245bdb7b 100644 --- a/docs/private-networks/how-to/monitor/splunk.md +++ b/docs/private-networks/how-to/monitor/splunk.md @@ -21,7 +21,7 @@ Options for running Splunk and Besu are: To view the Quickstart network logs in Splunk: -1. [Start the Developer Quickstart with Besu](../../../tutorials/Developer-Quickstart.md), selecting Splunk monitoring. +1. [Start the Developer Quickstart with Besu](../../tutorials/quickstart.md), selecting Splunk monitoring. 1. Open the [Splunk UI](http://localhost:8000). ## Splunk Connect for Ethereum Docker Compose diff --git a/docs/private-networks/how-to/use-permissioning/onchain.md b/docs/private-networks/how-to/use-permissioning/onchain.md index 1ba3fddee7c..8fc8b79e6bc 100644 --- a/docs/private-networks/how-to/use-permissioning/onchain.md +++ b/docs/private-networks/how-to/use-permissioning/onchain.md @@ -11,7 +11,7 @@ When using [onchain permissioning](../../concepts/permissioning/onchain.md), you To add a node to the Hyperledger Besu nodes allowlist: -1. On the **Nodes** tab of the [permissioning management dapp](../../../tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md), +1. On the **Nodes** tab of the [permissioning management dapp](../../tutorials/permissioning/onchain.md), select **Add Node**. The **Add Node** window displays. 2. Enter the [enode URL](../../../concepts/node-keys.md#enode-url) of the node you are adding and select **Add Node**. @@ -61,7 +61,7 @@ To remove a node from the nodes allowlist: To add an account to the accounts allowlist: -1. On the **Accounts** tab of the [permissioning management dapp](../../../tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md), +1. On the **Accounts** tab of the [permissioning management dapp](../../tutorials/permissioning/onchain.md), select **Add Account**. The **Add Account** window displays. 1. Enter the account address in the **Account Address** field and select **Add Account**. diff --git a/docs/private-networks/how-to/use-privacy/goquorum-compatible.md b/docs/private-networks/how-to/use-privacy/goquorum-compatible.md index aaec5398990..4ee4b74a494 100644 --- a/docs/private-networks/how-to/use-privacy/goquorum-compatible.md +++ b/docs/private-networks/how-to/use-privacy/goquorum-compatible.md @@ -13,7 +13,7 @@ To run your Besu nodes in GoQuorum-compatible privacy mode, add the `isQuorum:tr [genesis file](../../../concepts/genesis-file.md). While in GoQuorum-compatible privacy mode and using Tessera, disable [`orion` mode](https://docs.tessera.consensys.net/en/stable/HowTo/Configure/Orion-Mode/) -by removing `"mode": "orion",` from the [Tessera configuration file](../../../tutorials/Privacy/Configuring-Multi-Tenancy.md#3-update-the-tessera-configuration-file). +by removing `"mode": "orion",` from the [Tessera configuration file](../../tutorials/privacy/multi-tenancy.md#3-update-the-tessera-configuration-file). ## GoQuorum-compatible private transactions diff --git a/docs/reference/Accounts-for-Testing.md b/docs/private-networks/reference/accounts-for-testing.md similarity index 80% rename from docs/reference/Accounts-for-Testing.md rename to docs/private-networks/reference/accounts-for-testing.md index 747f4acd18a..254a3723792 100644 --- a/docs/reference/Accounts-for-Testing.md +++ b/docs/private-networks/reference/accounts-for-testing.md @@ -9,7 +9,7 @@ network. Hyperledger Besu also provides predefined accounts for use in developme ## Development mode -When you start Besu with the [`--network=dev`](cli/options.md#network) command line option, Besu +When you start Besu with the [`--network=dev`](../../reference/cli/options.md#network) command line option, Besu uses the `dev.json` genesis file by default. The `dev.json` genesis file defines the following accounts used for testing. @@ -23,4 +23,4 @@ network. For an example of how to define accounts in the genesis file, see [`dev.json`](https://github.com/hyperledger/besu/blob/master/config/src/main/resources/dev.json). To start Besu with the genesis file defining the existing accounts, use the -[`--genesis-file`](cli/options.md#genesis-file) command line option . +[`--genesis-file`](../../reference/cli/options.md#genesis-file) command line option . diff --git a/docs/tutorials/Private-Network-Example-Azure.md b/docs/private-networks/tutorials/azure.md similarity index 90% rename from docs/tutorials/Private-Network-Example-Azure.md rename to docs/private-networks/tutorials/azure.md index 598ddd66e46..ee742a7faea 100644 --- a/docs/tutorials/Private-Network-Example-Azure.md +++ b/docs/private-networks/tutorials/azure.md @@ -21,7 +21,7 @@ endpoint `http:///jsonrpc`. The following is a high-level overview of the deployed network. -![Image landing](../images/sampleNetworks-poa.png) +![Image landing](../../images/sampleNetworks-poa.png) ## Deploying @@ -34,12 +34,12 @@ To deploy the private network example on Azure: 1. Click **Get It Now** and **Continue**. The Quickstart landing page is displayed. - ![Image landing](../images/mp_0_landing.png) + ![Image landing](../../images/mp_0_landing.png) 1. Click **Create**. The **Basics** page is displayed. - ![Image basics](../images/mp_1_basics.png) + ![Image basics](../../images/mp_1_basics.png) 1. Enter: @@ -68,7 +68,7 @@ To deploy the private network example on Azure: To display the block explorer, open a new tab and enter either the IP of the VM or the DNS name. -![Image be](../images/mp_8_block_explorer.png) +![Image be](../../images/mp_8_block_explorer.png) ## Metrics @@ -80,7 +80,7 @@ To display the dashboard: 1. Click on home and select the Besu dashboard. - ![Grafana screenshot](../images/mp_9_grafana.png) + ![Grafana screenshot](../../images/mp_9_grafana.png) The dashboard provides a visual way to monitor your network and nodes as the chain progresses. Alerting can also be configured. @@ -102,6 +102,6 @@ ssh username@ To list all containers running, run `docker ps`. Find the complete setup in `/home//besu-quickstart`. -![Image ssh](../images/mp_10_ssh.png) +![Image ssh](../../images/mp_10_ssh.png) [Quorum Dev Quickstart on Azure Marketplace]: https://azuremarketplace.microsoft.com/en-us/marketplace/apps/consensys.quorum-dev-quickstart diff --git a/docs/tutorials/Private-Network/Create-Private-Clique-Network.md b/docs/private-networks/tutorials/clique.md similarity index 96% rename from docs/tutorials/Private-Network/Create-Private-Clique-Network.md rename to docs/private-networks/tutorials/clique.md index f9904b8f49b..f3aee64035a 100644 --- a/docs/tutorials/Private-Network/Create-Private-Clique-Network.md +++ b/docs/private-networks/tutorials/clique.md @@ -65,7 +65,7 @@ write the node address to the specified file (`node1Address` in this example). The genesis file defines the genesis block of the blockchain (that is, the start of the blockchain). The -[Clique genesis file](../../private-networks/how-to/configure/consensus/clique.md#genesis-file) includes +[Clique genesis file](../how-to/configure/consensus/clique.md#genesis-file) includes the address of Node-1 as the initial signer in the `extraData` field. All nodes in a network must use the same genesis file. @@ -256,7 +256,7 @@ Use the [Clique API to add] Node-2 or Node-3 as a signer. [node address as when specifying Node-1](#2-get-address-for-node-1) as the initial signer. Import accounts to MetaMask and send transactions, as described in the -[Quickstart tutorial](../Developer-Quickstart.md#create-a-transaction-using-metamask). +[Quickstart tutorial](quickstart.md#create-a-transaction-using-metamask). !!! info @@ -273,5 +273,5 @@ When finished using the private network, stop all nodes using ++ctrl+c++ in each [4. Start First Node as Bootnode](#4-start-first-node-as-bootnode). -[Clique (proof of authority) consensus protocol]: ../../private-networks/how-to/configure/consensus/clique.md -[Clique API to add]: ../../private-networks/how-to/configure/consensus/clique.md#adding-and-removing-signers +[Clique (proof of authority) consensus protocol]: ../how-to/configure/consensus/clique.md +[Clique API to add]: ../how-to/configure/consensus/clique.md#adding-and-removing-signers diff --git a/docs/tutorials/Contracts/Deploying-Contracts.md b/docs/private-networks/tutorials/contracts/index.md similarity index 95% rename from docs/tutorials/Contracts/Deploying-Contracts.md rename to docs/private-networks/tutorials/contracts/index.md index cbea77350a0..fd885a05ba4 100644 --- a/docs/tutorials/Contracts/Deploying-Contracts.md +++ b/docs/private-networks/tutorials/contracts/index.md @@ -9,7 +9,7 @@ This tutorial shows you how to deploy smart contracts as transactions to a netwo ## Prerequisites This tutorial requires a local blockchain network. -You can use the [Developer Quickstart](../Developer-Quickstart.md) to rapidly generate one. +You can use the [Developer Quickstart](../quickstart.md) to rapidly generate one. If deploying a private contract, enable privacy on the network (public contracts can also be deployed on privacy-enabled networks). @@ -146,13 +146,13 @@ stronger security. Configure [EthSigner](https://docs.ethsigner.consensys.net/en/stable/) with your Besu node to make the `eth_sendTransaction` API call. -An example can be found in the [Developer Quickstart](../Developer-Quickstart.md) where the RPC node is paired with EthSigner. +An example can be found in the [Developer Quickstart](../quickstart.md) where the RPC node is paired with EthSigner. Refer to the [EthSigner documentation](https://docs.ethsigner.consensys.net/) for configuration details. Pass the following parameters to the [`eth_sendTransaction`](https://docs.ethsigner.consensys.net/Reference/API-Methods/#eth_sendtransaction) call to EthSigner; EthSigner then converts the request to an -[`eth_sendRawTransaction`](../../reference/api/index.md#eth_sendrawtransaction) call that Besu uses: +[`eth_sendRawTransaction`](../../../reference/api/index.md#eth_sendrawtransaction) call that Besu uses: * `to` - address of the receiver. To deploy a contract, set to `null`. * `from` - address of the sender account. For example `0x9b790656b9ec0db1936ed84b3bea605873558198`. @@ -186,9 +186,9 @@ Make the request using `eth_sendTransaction`: ## Using `eea_sendRawTransaction` for private contracts with web3js-quorum -To deploy a private contract to another node or [privacy group](../../private-networks/concepts/privacy/privacy-groups.md) member, use the +To deploy a private contract to another node or [privacy group](../../concepts/privacy/privacy-groups.md) member, use the [web3js-quorum](https://www.npmjs.com/package/web3js-quorum) library and -the [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) API call. +the [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) API call. You must use this API call instead of [`eth_sendTransaction`](https://ethereum.github.io/execution-apis/api-documentation) because Hyperledger Besu keeps account management separate for stronger security. @@ -258,9 +258,9 @@ the contract's address. This web3js-eea library will be deprecated on December 31, 2021. Please use the [web3js-quorum](https://www.npmjs.com/package/web3js-quorum) library instead and refer to the previous section. -To deploy a private contract to another [privacy group](../../private-networks/concepts/privacy/privacy-groups.md) member, use the +To deploy a private contract to another [privacy group](../../concepts/privacy/privacy-groups.md) member, use the [web3js-quorum](https://consensys.github.io/web3js-quorum/latest/index.html) library and -the [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) API call. +the [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) API call. You must use this API call instead of [`eth_sendTransaction`](https://ethereum.github.io/execution-apis/api-documentation) because Hyperledger Besu keeps account management separate for stronger security. diff --git a/docs/tutorials/Contracts/Calling-Contract-Functions.md b/docs/private-networks/tutorials/contracts/interact.md similarity index 96% rename from docs/tutorials/Contracts/Calling-Contract-Functions.md rename to docs/private-networks/tutorials/contracts/interact.md index 49a9c036ec4..b4e372ee8df 100644 --- a/docs/tutorials/Contracts/Calling-Contract-Functions.md +++ b/docs/private-networks/tutorials/contracts/interact.md @@ -4,14 +4,14 @@ description: calling smart contracts functions # Interacting with deployed smart contracts -You can get started with the [Developer Quickstart](../Developer-Quickstart.md) to rapidly generate +You can get started with the [Developer Quickstart](../quickstart.md) to rapidly generate local blockchain networks. This tutorial shows you how to interact with smart contracts that have been deployed to a network. ## Prerequisites -* A network with a deployed smart contract as in the [deploying smart contracts tutorial](Deploying-Contracts.md) +* A network with a deployed smart contract as in the [deploying smart contracts tutorial](index.md) ## Interact with public contracts @@ -49,7 +49,7 @@ of these calls can be found in the [Developer Quickstart]. To perform a read operation, you need the address that the contract was deployed to and the contract's ABI. The contract's ABI can be obtained from compiling the contract; see the -[deploying smart contracts tutorial](Deploying-Contracts.md) for an example. +[deploying smart contracts tutorial](index.md) for an example. Use the [`web3.eth.Contract`](https://web3js.readthedocs.io/en/v1.3.4/web3-eth-contract.html) object to create a new instance of the smart contract, then make the `get` function call from the contract's list of methods, which will return the value stored: @@ -172,4 +172,4 @@ async function setValueAtAddress(clientUrl, address, value, contractAbi, fromPri To verify that a value has been updated, perform a `get` call after a `set` update call. -[Developer Quickstart]: ../Developer-Quickstart.md +[Developer Quickstart]: ../quickstart.md diff --git a/docs/tutorials/Contracts/Account-Funds-Transfers.md b/docs/private-networks/tutorials/contracts/transfer-funds.md similarity index 94% rename from docs/tutorials/Contracts/Account-Funds-Transfers.md rename to docs/private-networks/tutorials/contracts/transfer-funds.md index 9dbf34f5439..7e5bb4b5fb1 100644 --- a/docs/tutorials/Contracts/Account-Funds-Transfers.md +++ b/docs/private-networks/tutorials/contracts/transfer-funds.md @@ -4,20 +4,20 @@ description: funds transfer transactions # Transferring funds between accounts in a transaction -You can get started with the [Developer Quickstart](../Developer-Quickstart.md) to rapidly generate +You can get started with the [Developer Quickstart](../quickstart.md) to rapidly generate local blockchain networks. This tutorial shows you how to transfer funds (ETH) between accounts in a transaction. ## Prerequisites -* A [private network](../Developer-Quickstart.md) +* A [private network](../quickstart.md) ## Using `eth_sendSignedTransaction` The simplest way to transfer funds between externally-owned accounts is using [`eth_sendSignedTransaction`](https://web3js.readthedocs.io/en/v1.2.11/web3-eth.html#sendsignedtransaction). -This example uses `eth_sendSignedTransaction` and one of the [test accounts](../../reference/Accounts-for-Testing.md) +This example uses `eth_sendSignedTransaction` and one of the [test accounts](../../reference/accounts-for-testing.md) to transfer funds to a newly created account. !!! critical "Do not use the test accounts on Ethereum Mainnet or any production network." @@ -88,7 +88,7 @@ However, Hyperledger Besu does not support the `eth_sendTransaction` API call an management separate for stronger security. Instead, Besu uses [EthSigner](https://docs.ethsigner.consensys.net/en/stable/) to make the `eth_sendTransaction` API call. -An example can be found in the [Developer Quickstart](../Developer-Quickstart.md) where the RPC +An example can be found in the [Developer Quickstart](../quickstart.md) where the RPC node is paired with EthSigner. Refer to the [EthSigner documentation](https://docs.ethsigner.consensys.net/en/stable/) configuration details. diff --git a/docs/tutorials/Private-Network/Create-Private-Network.md b/docs/private-networks/tutorials/ethash.md similarity index 98% rename from docs/tutorials/Private-Network/Create-Private-Network.md rename to docs/private-networks/tutorials/ethash.md index d3388a9a14c..6db99e3e661 100644 --- a/docs/tutorials/Private-Network/Create-Private-Network.md +++ b/docs/private-networks/tutorials/ethash.md @@ -204,7 +204,7 @@ Node-3): ## Next steps Import accounts to MetaMask and send transactions as described in the -[Quickstart tutorial](../Developer-Quickstart.md#create-a-transaction-using-metamask). +[Quickstart tutorial](quickstart.md#create-a-transaction-using-metamask). !!! info diff --git a/docs/tutorials/Private-Network/Create-IBFT-Network.md b/docs/private-networks/tutorials/ibft/index.md similarity index 87% rename from docs/tutorials/Private-Network/Create-IBFT-Network.md rename to docs/private-networks/tutorials/ibft/index.md index bad99d003d6..7951032ccbf 100644 --- a/docs/tutorials/Private-Network/Create-IBFT-Network.md +++ b/docs/private-networks/tutorials/ibft/index.md @@ -5,7 +5,7 @@ description: Hyperledger Besu private network using the IBFT 2.0 (Proof of Autho # Create a private network using the IBFT 2.0 (proof of authority) consensus protocol A private network provides a configurable network for testing. This private network uses the -[IBFT 2.0 (proof of authority) consensus protocol](../../private-networks/how-to/configure/consensus/ibft.md). +[IBFT 2.0 (proof of authority) consensus protocol](../../how-to/configure/consensus/ibft.md). !!!important @@ -17,7 +17,7 @@ A private network provides a configurable network for testing. This private netw ## Prerequisites -* [Hyperledger Besu](../../get-started/install/binary-distribution.md) +* [Hyperledger Besu](../../../get-started/install/binary-distribution.md) * [Curl (or similar webservice client)](https://curl.haxx.se/download.html). ## Steps @@ -47,7 +47,7 @@ IBFT-Network/ ### 2. Create a configuration file The configuration file defines the -[IBFT 2.0 genesis file](../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) and the +[IBFT 2.0 genesis file](../../how-to/configure/consensus/ibft.md#genesis-file) and the number of node key pairs to generate. The configuration file has two nested JSON nodes. The first is the `genesis` property defining @@ -196,20 +196,20 @@ In the `Node-1` directory, start Node-1: The command line: * Specifies the data directory for Node-1 using the - [`--data-path`](../../reference/cli/options.md#data-path) option. + [`--data-path`](../../../reference/cli/options.md#data-path) option. * Enables the JSON-RPC API using the - [`--rpc-http-enabled`](../../reference/cli/options.md#rpc-http-enabled) option. + [`--rpc-http-enabled`](../../../reference/cli/options.md#rpc-http-enabled) option. * Enables the ETH, NET, and IBFT APIs using the - [`--rpc-http-api`](../../reference/cli/options.md#rpc-http-api) option. + [`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api) option. * Enables all-host access to the HTTP JSON-RPC API using the - [`--host-allowlist`](../../reference/cli/options.md#host-allowlist) option. + [`--host-allowlist`](../../../reference/cli/options.md#host-allowlist) option. * Enables all-domain access to the node through the HTTP JSON-RPC API using the - [`--rpc-http-cors-origins`](../../reference/cli/options.md#rpc-http-cors-origins) option. + [`--rpc-http-cors-origins`](../../../reference/cli/options.md#rpc-http-cors-origins) option. -When the node starts, the [enode URL](../../concepts/node-keys.md#enode-url) displays. Copy the +When the node starts, the [enode URL](../../../concepts/node-keys.md#enode-url) displays. Copy the enode URL to specify Node-1 as the bootnode in the following steps. -![Node 1 Enode URL](../../images/EnodeStartup.png) +![Node 1 Enode URL](../../../images/EnodeStartup.png) ### 7. Start Node-2 @@ -231,13 +231,13 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * The data directory for Node-2 using the - [`--data-path`](../../reference/cli/options.md#data-path) option. + [`--data-path`](../../../reference/cli/options.md#data-path) option. * A different port to Node-1 for P2P discovery using the - [`--p2p-port`](../../reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../../reference/cli/options.md#p2p-port) option. * A different port to Node-1 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../../reference/cli/options.md#rpc-http-port) option. * The enode URL of Node-1 using the - [`--bootnodes`](../../reference/cli/options.md#bootnodes) option. + [`--bootnodes`](../../../reference/cli/options.md#bootnodes) option. * Other options as for [Node-1](#6-start-the-first-node-as-the-bootnode). ### 8. Start Node-3 @@ -260,11 +260,11 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * The data directory for Node-3 using the - [`--data-path`](../../reference/cli/options.md#data-path) option. + [`--data-path`](../../../reference/cli/options.md#data-path) option. * A different port to Node-1 and Node-2 for P2P discovery using the - [`--p2p-port`](../../reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../../reference/cli/options.md#p2p-port) option. * A different port to Node-1 and Node-2 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../../reference/cli/options.md#rpc-http-port) option. * The bootnode as for [Node-2](#7-start-node-2). * Other options as for [Node-1](#6-start-the-first-node-as-the-bootnode). @@ -288,18 +288,18 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * The data directory for Node-4 using the - [`--data-path`](../../reference/cli/options.md#data-path) option. + [`--data-path`](../../../reference/cli/options.md#data-path) option. * A different port to Node-1, Node-2, and Node-3 for P2P discovery using the - [`--p2p-port`](../../reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../../reference/cli/options.md#p2p-port) option. * A different port to Node-1, Node-2, and Node-3 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../../reference/cli/options.md#rpc-http-port) option. * The bootnode as for [Node-2](#7-start-node-2). * Other options as for [Node-1](#6-start-the-first-node-as-the-bootnode). ### 10. Confirm the private network is working Start another terminal, use curl to call the JSON-RPC API -[`ibft_getvalidatorsbyblocknumber`](../../reference/api/index.md#ibft_getvalidatorsbyblocknumber) +[`ibft_getvalidatorsbyblocknumber`](../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber) method and confirm the network has four validators: ```bash @@ -348,7 +348,7 @@ Look at the logs to confirm Besu is producing blocks: ## Next steps -Use the [IBFT API](../../reference/api/index.md#ibft-20-methods) to remove or add validators. +Use the [IBFT API](../../../reference/api/index.md#ibft-20-methods) to remove or add validators. !!! note @@ -360,7 +360,7 @@ Use the [IBFT API](../../reference/api/index.md#ibft-20-methods) to remove or ad 2.0 requires four validators to be Byzantine fault tolerant. Import accounts to MetaMask and send transactions as described in the -[Quickstart tutorial](../Developer-Quickstart.md#create-a-transaction-using-metamask). +[Quickstart tutorial](../quickstart.md#create-a-transaction-using-metamask). !!! info @@ -377,7 +377,7 @@ When finished using the private network, stop all nodes using ++ctrl+c++ in each [6. Start First Node as Bootnode](#6-start-the-first-node-as-the-bootnode). -[IBFT 2.0 (proof of authority)consensus protocol]: ../../private-networks/how-to/configure/consensus/ibft.md +[IBFT 2.0 (proof of authority)consensus protocol]: ../../how-to/configure/consensus/ibft.md *[Byzantine fault tolerant]: Ability to function correctly and reach consensus despite nodes failing or propagating incorrect information to peers. diff --git a/docs/tutorials/Private-Network/Adding-removing-IBFT-validators.md b/docs/private-networks/tutorials/ibft/validators.md similarity index 72% rename from docs/tutorials/Private-Network/Adding-removing-IBFT-validators.md rename to docs/private-networks/tutorials/ibft/validators.md index 6de795c0ec2..d3ab5102988 100644 --- a/docs/tutorials/Private-Network/Adding-removing-IBFT-validators.md +++ b/docs/private-networks/tutorials/ibft/validators.md @@ -5,11 +5,11 @@ description: Adding and removing IBFT 2.0 validators # Add and remove IBFT 2.0 validators This example walks through -[adding and removing an IBFT 2.0 validator](../../private-networks/how-to/configure/consensus/ibft.md#add-and-remove-validators). +[adding and removing an IBFT 2.0 validator](../../how-to/configure/consensus/ibft.md#add-and-remove-validators). ## Prerequisites -* [IBFT 2.0 network as configured in the IBFT 2.0 tutorial](Create-IBFT-Network.md) +* [IBFT 2.0 network as configured in the IBFT 2.0 tutorial](index.md) ## Add a validator @@ -24,7 +24,7 @@ mkdir -p Node-5/data ### 2. Start the node Change into the working directory for the new Node-5 and start the node, specifying the -[Node-1 enode URL](Create-IBFT-Network.md#6-start-the-first-node-as-the-bootnode) as the bootnode: +[Node-1 enode URL](index.md#6-start-the-first-node-as-the-bootnode) as the bootnode: ```bash besu --data-path=data --genesis-file=../genesis.json --bootnodes= --p2p-port=30307 --rpc-http-enabled --rpc-http-api=ETH,NET,IBFT --host-allowlist="*" --rpc-http-cors-origins="all" --rpc-http-port=8549 @@ -33,14 +33,14 @@ besu --data-path=data --genesis-file=../genesis.json --bootnodes=/explorer` -![`k8s-explorer`](../../images/kubernetes-explorer.png) +![`k8s-explorer`](../../../images/kubernetes-explorer.png) diff --git a/docs/tutorials/Kubernetes/Create-Cluster.md b/docs/private-networks/tutorials/kubernetes/cluster.md similarity index 99% rename from docs/tutorials/Kubernetes/Create-Cluster.md rename to docs/private-networks/tutorials/kubernetes/cluster.md index 63b47619326..b54881d763a 100644 --- a/docs/tutorials/Kubernetes/Create-Cluster.md +++ b/docs/private-networks/tutorials/kubernetes/cluster.md @@ -174,7 +174,7 @@ that are specific to your deployment. 1. Optionally, deploy the [kubernetes dashboard](https://github.com/ConsenSys/quorum-kubernetes/tree/master/aws/templates/k8s-dashboard). -1. You can now use your cluster and you can deploy [Helm charts](./Deploy-Charts.md) to it. +1. You can now use your cluster and you can deploy [Helm charts](charts.md) to it. ### Azure Kubernetes Service @@ -262,4 +262,4 @@ To provision the cluster: ./scripts/bootstrap.sh "AKS_RESOURCE_GROUP" "AKS_CLUSTER_NAME" "AKS_MANAGED_IDENTITY" "AKS_NAMESPACE" ``` -1. You can now use your cluster and you can deploy [Helm charts](./Deploy-Charts.md) to it. +1. You can now use your cluster and you can deploy [Helm charts](charts.md) to it. diff --git a/docs/tutorials/Kubernetes/Overview.md b/docs/private-networks/tutorials/kubernetes/index.md similarity index 98% rename from docs/tutorials/Kubernetes/Overview.md rename to docs/private-networks/tutorials/kubernetes/index.md index 6f0c3997503..4cd265dc8f4 100644 --- a/docs/tutorials/Kubernetes/Overview.md +++ b/docs/private-networks/tutorials/kubernetes/index.md @@ -67,12 +67,12 @@ Each node in turn uses NAT to configure the pods so that they reach other pods o This limits where they can reach but also more specifically what can reach them. For example, an external VM which must have custom routes does not scale well. -![without-CNI](../../images/kubernetes-1.jpeg) +![without-CNI](../../../images/kubernetes-1.jpeg) CNI, on the other hand, allows every pod to get a unique IP directly from the virtual subnet which removes this restriction. Therefore, it has a limit on the maximum number of pods that can be spun up, so you must plan ahead to avoid IP exhaustion. -![with-CNI](../../images/kubernetes-2.jpeg) +![with-CNI](../../../images/kubernetes-2.jpeg) ## Multi-cluster @@ -84,7 +84,7 @@ From that point on you can use static nodes and pods to communicate across the c The same setup also works to connect external nodes and business applications from other infrastructure, either in the cloud or on premise. -![multi-cluster](../../images/kubernetes-3.png) +![multi-cluster](../../../images/kubernetes-3.png) ## Concepts diff --git a/docs/tutorials/Kubernetes/Maintenance.md b/docs/private-networks/tutorials/kubernetes/maintenance.md similarity index 96% rename from docs/tutorials/Kubernetes/Maintenance.md rename to docs/private-networks/tutorials/kubernetes/maintenance.md index 06881152614..f7c257f32c8 100644 --- a/docs/tutorials/Kubernetes/Maintenance.md +++ b/docs/private-networks/tutorials/kubernetes/maintenance.md @@ -6,7 +6,7 @@ description: Maintenance for Besu on a Kubernetes cluster ## Prerequisites * Clone the [Quorum-Kubernetes](https://github.com/ConsenSys/quorum-kubernetes) repository -* A [running Kubernetes cluster](./Create-Cluster.md) with a [network](./Deploy-Charts.md) +* A [running Kubernetes cluster](cluster.md) with a [network](charts.md) * Install [Kubectl](https://kubernetes.io/docs/tasks/tools/) * Install [Helm3](https://helm.sh/docs/intro/install/) diff --git a/docs/tutorials/Kubernetes/Nat-Manager-Kubernetes.md b/docs/private-networks/tutorials/kubernetes/nat-manager.md similarity index 93% rename from docs/tutorials/Kubernetes/Nat-Manager-Kubernetes.md rename to docs/private-networks/tutorials/kubernetes/nat-manager.md index ab8af514f1b..ae7500ce0af 100644 --- a/docs/tutorials/Kubernetes/Nat-Manager-Kubernetes.md +++ b/docs/private-networks/tutorials/kubernetes/nat-manager.md @@ -4,19 +4,19 @@ description: Tutorial to configure Kubernetes mode for Hyperledger Besu Nat Mana # Configure Kubernetes mode in NAT Manager -Use [`--nat-method=AUTO`](../../how-to/connect/specify-nat.md#auto) or -[`--nat-method=KUBERNETES`](../../how-to/connect/specify-nat.md#kubernetes) +Use [`--nat-method=AUTO`](../../../how-to/connect/specify-nat.md#auto) or +[`--nat-method=KUBERNETES`](../../../how-to/connect/specify-nat.md#kubernetes) CLI options to let the Besu node automatically configure its IP address and ports. -Use mode [`--nat-method=NONE`](../../how-to/connect/specify-nat.md#none) to be able to +Use mode [`--nat-method=NONE`](../../../how-to/connect/specify-nat.md#none) to be able to set your Besu ports and IP address manually. -Default mode is [`AUTO`](../../how-to/connect/specify-nat.md#auto) but Besu will -fallback to [`NONE`](../../how-to/connect/specify-nat.md#none) +Default mode is [`AUTO`](../../../how-to/connect/specify-nat.md#auto) but Besu will +fallback to [`NONE`](../../../how-to/connect/specify-nat.md#none) mode if automatic configuration fails. !!!example - The following log shows fallback to [`NONE`](../../how-to/connect/specify-nat.md#none) + The following log shows fallback to [`NONE`](../../../how-to/connect/specify-nat.md#none) mode after an automatic detection failure. ``` @@ -184,7 +184,7 @@ Possible errors messages for Kubernetes automatic detection failure: to retrieve IP address and ports from the load balancer. - **Fix:** Give it the required permissions using [Role-based access control](https://kubernetes.io/docs/reference/access-authn-authz/rbac/). - If you can't manage permissions, define the IP address and ports manually with [`NONE`](../../how-to/connect/specify-nat.md#none) mode + If you can't manage permissions, define the IP address and ports manually with [`NONE`](../../../how-to/connect/specify-nat.md#none) mode !!!example "Example error log" diff --git a/docs/tutorials/Kubernetes/Playground.md b/docs/private-networks/tutorials/kubernetes/playground.md similarity index 100% rename from docs/tutorials/Kubernetes/Playground.md rename to docs/private-networks/tutorials/kubernetes/playground.md diff --git a/docs/tutorials/Kubernetes/Production.md b/docs/private-networks/tutorials/kubernetes/production.md similarity index 90% rename from docs/tutorials/Kubernetes/Production.md rename to docs/private-networks/tutorials/kubernetes/production.md index f62e76fc1f6..108e0f47efb 100644 --- a/docs/tutorials/Kubernetes/Production.md +++ b/docs/private-networks/tutorials/kubernetes/production.md @@ -6,7 +6,7 @@ description: Deploying Besu Helm Charts for production on a Kubernetes cluster ## Prerequisites * Clone the [Quorum-Kubernetes](https://github.com/ConsenSys/quorum-kubernetes) repository -* A [running Kubernetes cluster](./Create-Cluster.md) +* A [running Kubernetes cluster](cluster.md) * [Kubectl](https://kubernetes.io/docs/tasks/tools/) * [Helm3](https://helm.sh/docs/intro/install/) @@ -29,7 +29,7 @@ the values in the `cluster` map as in the [Deploy](#deploy-the-network) section. ### Check that you can connect to the cluster with `kubectl` -Once you have a [cluster running](./Create-Cluster.md), verify `kubectl` is connected to cluster with: +Once you have a [cluster running](cluster.md), verify `kubectl` is connected to cluster with: ```bash kubectl version @@ -59,7 +59,7 @@ cluster: reclaimPolicy: Retain # set to either Retain or Delete; note that PVCs and PVs will still exist after a 'helm delete'. Setting to Retain will keep volumes even if PVCs/PVs are deleted in kubernetes. Setting to Delete will remove volumes from EC2 EBS when PVC is deleted ``` -Follow the steps outlined in the [deploy charts](./Deploy-Charts.md) tutorial to deploy the network. +Follow the steps outlined in the [deploy charts](charts.md) tutorial to deploy the network. ## Best practices @@ -74,7 +74,7 @@ Where possible, we recommend you use multiple bootnodes and static nodes to spee You can connect to APIs and services outside the cluster normally, but connecting into your network (such as adding an on-premise node to the network) might require more configuration. -Please check the [limitations](./Overview.md#limitations) and use CNI where possible. +Please check the [limitations](index.md#limitations) and use CNI where possible. To connect an external node to your cluster, the easiest way is to use a VPN as seen in the following [multi-cluster](#multi-cluster-support) setup. @@ -90,9 +90,9 @@ Ideally, you want to create two separate VPCs (or VNets) and make sure they have don't conflict. Once done, peer the VPCs together and update the subnet route table, so they are effectively a giant single network. -![multi-cluster](../../images/kubernetes-3.png) +![multi-cluster](../../../images/kubernetes-3.png) -When you [spin up clusters](./Create-Cluster.md), use [CNI](./Overview.md#limitations) and CIDR blocks to match the +When you [spin up clusters](cluster.md), use [CNI](index.md#limitations) and CIDR blocks to match the subnet's CIDR settings. Then deploy the genesis chart on one cluster and copy across the genesis file and static nodes config maps. Depending on your DNS settings, they might be fine as is or they might need to be actual IPs. diff --git a/docs/tutorials/Kubernetes/Quorum-Explorer.md b/docs/private-networks/tutorials/kubernetes/quorum-explorer.md similarity index 84% rename from docs/tutorials/Kubernetes/Quorum-Explorer.md rename to docs/private-networks/tutorials/kubernetes/quorum-explorer.md index 92efbfb0253..b5125c7e489 100644 --- a/docs/tutorials/Kubernetes/Quorum-Explorer.md +++ b/docs/private-networks/tutorials/kubernetes/quorum-explorer.md @@ -6,10 +6,10 @@ description: Using the Quorum Explorer on a Kubernetes cluster ## Prerequisites * Clone the [Quorum-Kubernetes](https://github.com/ConsenSys/quorum-kubernetes) repository -* A [running Kubernetes cluster](./Create-Cluster.md) +* A [running Kubernetes cluster](cluster.md) * [Kubectl](https://kubernetes.io/docs/tasks/tools/) * [Helm3](https://helm.sh/docs/intro/install/) -* [Existing network](./Deploy-Charts.md) +* [Existing network](charts.md) ## Deploying the Quorum Explorer helm chart @@ -22,7 +22,7 @@ validators from the network, and demonstrates using the `SimpleStorage` smart co transactions between wallets in one interface. To use the explorer, update the [Quorum-Explorer values file](https://github.com/ConsenSys/quorum-kubernetes/blob/master/helm/values/explorer-besu.yaml) -with your node details and endpoints, and then [deploy](./Deploy-Charts.md). +with your node details and endpoints, and then [deploy](charts.md). ## Nodes @@ -30,7 +30,7 @@ The **Nodes** page provides an overview of the nodes on the network. Select the with from the drop-down on the top right, and you'll get details of the node, block height, peers, queued transactions etc. -![`k8s-explorer`](../../images/kubernetes-explorer.png) +![`k8s-explorer`](../../../images/kubernetes-explorer.png) ## Validators @@ -44,7 +44,7 @@ Each node can call a discard on the voting process during or after the validator The vote calls made from non-validator nodes have no effect on overall consensus. -![`k8s-explorer-validators`](../../images/kubernetes-explorer-validators.png) +![`k8s-explorer-validators`](../../../images/kubernetes-explorer-validators.png) ## Explorer @@ -52,7 +52,7 @@ The **Explorer** page gives you the latest blocks from the chain and the latest occur on the network. In addition, you can search by block number or transaction hash using the respective search bar. -![`k8s-explorer-explorer`](../../images/kubernetes-explorer-explorer.png) +![`k8s-explorer-explorer`](../../../images/kubernetes-explorer-explorer.png) ## Contracts @@ -63,13 +63,13 @@ to add more contracts to that view. In this example, we deploy from `member-1` and select `member-1` and `member-3` in the **Private For** multi-select. Then click on `Compile` and `Deploy` -![`k8s-explorer-contracts-1`](../../images/kubernetes-explorer-contracts-1.png) +![`k8s-explorer-contracts-1`](../../../images/kubernetes-explorer-contracts-1.png) Once deployed, you can interact with the contract. As this is a new transaction, select `member-1` and `member-3` in **Interact** multi-select, and then click on the appropriate method call to `get` or `set` the value at the deployed contract address. -![`k8s-explorer-contracts-set`](../../images/kubernetes-explorer-contracts-set.png) +![`k8s-explorer-contracts-set`](../../../images/kubernetes-explorer-contracts-set.png) To test the private transaction functionality, select `member-2` from the drop-down on the top right, you'll notice that you are unable to interact with the contract because `member-2` was not part @@ -80,4 +80,4 @@ of the transaction. Only `members-1` and `member-3` responds correctly. The **Wallet** page gives you the functionality to send simple ETH transactions between accounts by providing the account's private key, the recipient's address, and transfer amount in Wei. -![`k8s-explorer-wallet`](../../images/kubernetes-explorer-wallet.png) +![`k8s-explorer-wallet`](../../../images/kubernetes-explorer-wallet.png) diff --git a/docs/tutorials/Permissioning/Create-Permissioned-Network.md b/docs/private-networks/tutorials/permissioning/index.md similarity index 84% rename from docs/tutorials/Permissioning/Create-Permissioned-Network.md rename to docs/private-networks/tutorials/permissioning/index.md index c9cd1cada22..da9cc2e2771 100644 --- a/docs/tutorials/Permissioning/Create-Permissioned-Network.md +++ b/docs/private-networks/tutorials/permissioning/index.md @@ -14,7 +14,7 @@ uses the [IBFT 2.0 proof of authority consensus protocol]. ## Prerequisites -- [Hyperledger Besu](../../get-started/install/binary-distribution.md) +- [Hyperledger Besu](../../../get-started/install/binary-distribution.md) - [curl (or similar Web service client)](https://curl.haxx.se/download.html) ## Steps @@ -41,7 +41,7 @@ Permissioned-Network/ ### 2. Create the configuration file The configuration file defines the -[IBFT 2.0 genesis file](../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) and the +[IBFT 2.0 genesis file](../../how-to/configure/consensus/ibft.md#genesis-file) and the number of node key pairs to generate. The configuration file has two nested JSON nodes. The first is the `genesis` property defining @@ -168,7 +168,7 @@ Permissioned-Network/ ### 6. Create the permissions configuration file -The [permissions configuration file](../../private-networks/how-to/use-permissioning/local.md#permissions-configuration-file) +The [permissions configuration file](../../how-to/use-permissioning/local.md#permissions-configuration-file) defines the nodes and accounts allowlists. Copy the following permissions configuration to a file called `permissions_config.toml` and save a copy in the @@ -184,7 +184,7 @@ Copy the following permissions configuration to a file called `permissions_confi The permissions configuration file includes the first two accounts from the genesis file. -Use the [`perm_addNodesToAllowlist`](../../reference/api/index.md#perm_addnodestoallowlist) JSON-RPC API method to add permissioned nodes after starting the nodes. +Use the [`perm_addNodesToAllowlist`](../../../reference/api/index.md#perm_addnodestoallowlist) JSON-RPC API method to add permissioned nodes after starting the nodes. ### 7. Start Node-1 @@ -204,21 +204,21 @@ Use the following command: The command line allows you to enable: -- Nodes and accounts permissions using [`--permissions-nodes-config-file-enabled`](../../reference/cli/options.md#permissions-nodes-config-file-enabled) - and [`--permissions-accounts-config-file-enabled`](../../reference/cli/options.md#permissions-accounts-config-file-enabled). -- The JSON-RPC API using [`--rpc-http-enabled`](../../reference/cli/options.md#rpc-http-enabled). +- Nodes and accounts permissions using [`--permissions-nodes-config-file-enabled`](../../../reference/cli/options.md#permissions-nodes-config-file-enabled) + and [`--permissions-accounts-config-file-enabled`](../../../reference/cli/options.md#permissions-accounts-config-file-enabled). +- The JSON-RPC API using [`--rpc-http-enabled`](../../../reference/cli/options.md#rpc-http-enabled). - The `ADMIN`, `ETH`, `NET`, `PERM`, and `IBFT` APIs using - [`--rpc-http-api`](../../reference/cli/options.md#rpc-http-api). + [`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api). - All-host access to the HTTP JSON-RPC API using - [`--host-allowlist`](../../reference/cli/options.md#host-allowlist). + [`--host-allowlist`](../../../reference/cli/options.md#host-allowlist). - All-domain access to the node through the HTTP JSON-RPC API using - [`--rpc-http-cors-origins`](../../reference/cli/options.md#rpc-http-cors-origins). + [`--rpc-http-cors-origins`](../../../reference/cli/options.md#rpc-http-cors-origins). -When the node starts, the [enode URL](../../concepts/node-keys.md#enode-url) displays. You need the +When the node starts, the [enode URL](../../../concepts/node-keys.md#enode-url) displays. You need the enode URL to specify Node-1 as a peer and update the permissions configuration file in the following steps. -![Node 1 Enode URL](../../images/EnodeStartup.png) +![Node 1 Enode URL](../../../images/EnodeStartup.png) ### 8. Start Node-2 @@ -238,12 +238,12 @@ Start another terminal, change to the `Node-2` directory, and start Node-2: The command line specifies: -- A different port to Node-1 for P2P discovery using [`--p2p-port`](../../reference/cli/options.md#p2p-port). -- A different port to Node-1 for HTTP JSON-RPC using [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port). -- A data directory for Node-2 using [`--data-path`](../../reference/cli/options.md#data-path). +- A different port to Node-1 for P2P discovery using [`--p2p-port`](../../../reference/cli/options.md#p2p-port). +- A different port to Node-1 for HTTP JSON-RPC using [`--rpc-http-port`](../../../reference/cli/options.md#rpc-http-port). +- A data directory for Node-2 using [`--data-path`](../../../reference/cli/options.md#data-path). - Other options as for [Node-1](#7-start-node-1). -When the node starts, the [enode URL](../../concepts/node-keys.md#enode-url) displays. You need +When the node starts, the [enode URL](../../../concepts/node-keys.md#enode-url) displays. You need the enode URL to update the permissions configuration file in the following steps. ### 9. Start Node-3 @@ -264,12 +264,12 @@ Start another terminal, change to the `Node-3` directory, and start Node-3: The command line specifies: -- A different port to Node-1 and Node-2 for P2P discovery using [`--p2p-port`](../../reference/cli/options.md#p2p-port). -- A different port to Node-1 and Node-2 for HTTP JSON-RPC using [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port). -- A data directory for Node-3 using [`--data-path`](../../reference/cli/options.md#data-path). +- A different port to Node-1 and Node-2 for P2P discovery using [`--p2p-port`](../../../reference/cli/options.md#p2p-port). +- A different port to Node-1 and Node-2 for HTTP JSON-RPC using [`--rpc-http-port`](../../../reference/cli/options.md#rpc-http-port). +- A data directory for Node-3 using [`--data-path`](../../../reference/cli/options.md#data-path). - Other options as for [Node-1](#7-start-node-1). -When the node starts, the [enode URL](../../concepts/node-keys.md#enode-url) displays. You need +When the node starts, the [enode URL](../../../concepts/node-keys.md#enode-url) displays. You need the enode URL to update the permissions configuration file in the following steps. ### 10. Start Node-4 @@ -290,18 +290,18 @@ Start another terminal, change to the `Node-4` directory, and start Node-4: The command line specifies: -- A different port to Node-1, Node-2, and Node-3 for P2P discovery using [`--p2p-port`](../../reference/cli/options.md#p2p-port). -- A different port to Node-1, Node-2, and Node-3 for HTTP JSON-RPC using [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port). -- A data directory for Node-4 using [`--data-path`](../../reference/cli/options.md#data-path). +- A different port to Node-1, Node-2, and Node-3 for P2P discovery using [`--p2p-port`](../../../reference/cli/options.md#p2p-port). +- A different port to Node-1, Node-2, and Node-3 for HTTP JSON-RPC using [`--rpc-http-port`](../../../reference/cli/options.md#rpc-http-port). +- A data directory for Node-4 using [`--data-path`](../../../reference/cli/options.md#data-path). - Other options as for [Node-1](#7-start-node-1). -When the node starts, the [enode URL](../../concepts/node-keys.md#enode-url) displays. You need +When the node starts, the [enode URL](../../../concepts/node-keys.md#enode-url) displays. You need the enode URL to update the permissions configuration file in the following steps. ### 11. Add enode URLs for nodes to permissions configuration file Start another terminal and use the -[`perm_addNodesToAllowlist`](../../reference/api/index.md#perm_addnodestoallowlist) JSON-RPC API +[`perm_addNodesToAllowlist`](../../../reference/api/index.md#perm_addnodestoallowlist) JSON-RPC API method to add the nodes to the permissions configuration file for each node. Replace ``, ``, ``, and `` with the enode URL displayed when @@ -337,7 +337,7 @@ starting each node. ### 12. Add nodes as peers -Use the [`admin_addPeer`](../../reference/api/index.md#admin_addpeer) JSON-RPC API method to add +Use the [`admin_addPeer`](../../../reference/api/index.md#admin_addpeer) JSON-RPC API method to add Node-1 as a peer for Node-2, Node-3, and Node-4. Replace `` with the enode URL displayed when starting Node-1. @@ -390,7 +390,7 @@ Replace `` with the enode URL displayed when starting Node-3. #### Check peer count -Use curl to call the JSON-RPC API [`net_peerCount`](../../reference/api/index.md#net_peercount) method and confirm the +Use curl to call the JSON-RPC API [`net_peerCount`](../../../reference/api/index.md#net_peercount) method and confirm the nodes are functioning as peers: ```bash @@ -454,7 +454,7 @@ Change to the `Node-5` directory and start Node-5 specifying the Node-1 enode UR ``` Start another terminal and use curl to call the JSON-RPC API -[`net_peerCount`](../../reference/api/index.md#net_peercount) method: +[`net_peerCount`](../../../reference/api/index.md#net_peercount) method: ```bash curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' localhost:8549 @@ -480,5 +480,5 @@ window. To restart the permissioned network in the future, start from [step 5](#5-start-node-1). -[IBFT 2.0 proof of authority consensus protocol]: ../../private-networks/how-to/configure/consensus/ibft.md -[Private network example tutorial]: ../Developer-Quickstart.md#create-a-transaction-using-metamask +[IBFT 2.0 proof of authority consensus protocol]: ../../how-to/configure/consensus/ibft.md +[Private network example tutorial]: ../quickstart.md#create-a-transaction-using-metamask diff --git a/docs/tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md b/docs/private-networks/tutorials/permissioning/onchain.md similarity index 87% rename from docs/tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md rename to docs/private-networks/tutorials/permissioning/onchain.md index 4ecfed96d11..f3145242836 100644 --- a/docs/tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md +++ b/docs/private-networks/tutorials/permissioning/onchain.md @@ -45,7 +45,7 @@ Permissioned-Network/ ### 2. Create the configuration file The configuration file defines the -[IBFT 2.0 genesis file](../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) and the +[IBFT 2.0 genesis file](../../how-to/configure/consensus/ibft.md#genesis-file) and the number of node key pairs to generate. The configuration file has two nested JSON nodes. The first is the `genesis` property defining @@ -258,25 +258,25 @@ besu --data-path=data --genesis-file=../genesis.json --permissions-accounts-cont On the command line: * Enable onchain accounts permissioning using - [`--permissions-accounts-contract-enabled`](../../reference/cli/options.md#permissions-accounts-contract-enabled). + [`--permissions-accounts-contract-enabled`](../../../reference/cli/options.md#permissions-accounts-contract-enabled). * Set the address of the Account Ingress contract in the genesis file using - [`--permissions-accounts-contract-address`](../../reference/cli/options.md#permissions-accounts-contract-address). + [`--permissions-accounts-contract-address`](../../../reference/cli/options.md#permissions-accounts-contract-address). * Enable onchain nodes permissioning using - [`--permissions-nodes-contract-enabled`](../../reference/cli/options.md#permissions-nodes-contract-enabled). + [`--permissions-nodes-contract-enabled`](../../../reference/cli/options.md#permissions-nodes-contract-enabled). * Set the address of the Node Ingress contract in the genesis file using - [`--permissions-nodes-contract-address`](../../reference/cli/options.md#permissions-nodes-contract-address). -* Set the version of the [permissioning contract interface](../../private-networks/how-to/use-permissioning/Specify-Perm-Version.md) - using [`--permissions-nodes-contract-version`](../../reference/cli/options.md#permissions-nodes-contract-version). + [`--permissions-nodes-contract-address`](../../../reference/cli/options.md#permissions-nodes-contract-address). +* Set the version of the [permissioning contract interface](../../how-to/use-permissioning/Specify-Perm-Version.md) + using [`--permissions-nodes-contract-version`](../../../reference/cli/options.md#permissions-nodes-contract-version). * Enable the JSON-RPC API using - [`--rpc-http-enabled`](../../reference/cli/options.md#rpc-http-enabled). + [`--rpc-http-enabled`](../../../reference/cli/options.md#rpc-http-enabled). * Enable the `ADMIN`, `ETH`, `NET`, `PERM`, and `IBFT` APIs using - [`--rpc-http-api`](../../reference/cli/options.md#rpc-http-api). + [`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api). * Allow all-host access to the HTTP JSON-RPC API using - [`--host-allowlist`](../../reference/cli/options.md#host-allowlist). + [`--host-allowlist`](../../../reference/cli/options.md#host-allowlist). * Allow all-domain access to the node through the HTTP JSON-RPC API using - [`--rpc-http-cors-origins`](../../reference/cli/options.md#rpc-http-cors-origins). + [`--rpc-http-cors-origins`](../../../reference/cli/options.md#rpc-http-cors-origins). -When the node starts, the [enode URL](../../concepts/node-keys.md#enode-url) displays. Copy the +When the node starts, the [enode URL](../../../concepts/node-keys.md#enode-url) displays. Copy the enode URL to use when starting Node-2, Node-3, and Node-4. ### 9. Clone the contracts and install dependencies @@ -358,9 +358,9 @@ besu --data-path=data --genesis-file=../genesis.json --bootnodes= -[Node-1, Node-2, Node-3, and Node-4 to the allowlist]: ../../private-networks/how-to/use-permissioning/onchain.md#update-nodes-allowlist -[admin account]: ../../private-networks/how-to/use-permissioning/onchain.md#update-nodes-allowlist -[IBFT 2.0 proof of authority (PoA)]: ../../private-networks/how-to/configure/consensus/ibft.md +[Node-1, Node-2, Node-3, and Node-4 to the allowlist]: ../../how-to/use-permissioning/onchain.md#update-nodes-allowlist +[admin account]: ../../how-to/use-permissioning/onchain.md#update-nodes-allowlist +[IBFT 2.0 proof of authority (PoA)]: ../../how-to/configure/consensus/ibft.md diff --git a/docs/tutorials/Permissioning/Upgrade-Permissioning-Contract.md b/docs/private-networks/tutorials/permissioning/upgrade-contracts.md similarity index 95% rename from docs/tutorials/Permissioning/Upgrade-Permissioning-Contract.md rename to docs/private-networks/tutorials/permissioning/upgrade-contracts.md index 0d754b6f0e6..47b3e310f05 100644 --- a/docs/tutorials/Permissioning/Upgrade-Permissioning-Contract.md +++ b/docs/private-networks/tutorials/permissioning/upgrade-contracts.md @@ -157,7 +157,7 @@ The dapp displays at [`http://localhost:3000`](http://localhost:3000). ### 7. Restart Besu nodes Restart the Besu nodes with the updated [`NodeIngress`](#5-deploy-the-contracts) -contract address and [permissioning contract interface](../../private-networks/how-to/use-permissioning/Specify-Perm-Version.md) +contract address and [permissioning contract interface](../../how-to/use-permissioning/Specify-Perm-Version.md) version 2. !!! example @@ -166,4 +166,4 @@ version 2. ``` -[nodes to the allowlist]: ../../private-networks/how-to/use-permissioning/onchain.md#update-nodes-allowlist +[nodes to the allowlist]: ../../how-to/use-permissioning/onchain.md#update-nodes-allowlist diff --git a/docs/tutorials/Privacy/Configuring-Privacy.md b/docs/private-networks/tutorials/privacy/index.md similarity index 91% rename from docs/tutorials/Privacy/Configuring-Privacy.md rename to docs/private-networks/tutorials/privacy/index.md index 219545a22de..b1ca9c9ca62 100644 --- a/docs/tutorials/Privacy/Configuring-Privacy.md +++ b/docs/private-networks/tutorials/privacy/index.md @@ -14,9 +14,9 @@ Configuring a network that supports private transactions requires starting a [Te Hyperledger Besu node. Besu command line options associate the Besu node with the Tessera node. This tutorial assumes you have completed setting up an IBFT 2.0 network to the point where you have -[created the genesis file and copied the private keys](../Private-Network/Create-IBFT-Network.md#5-copy-the-node-private-keys-to-the-node-directories). +[created the genesis file and copied the private keys](../ibft/index.md#5-copy-the-node-private-keys-to-the-node-directories). If not, complete steps 1 to 5 of the -[Create an IBFT 2.0](../Private-Network/Create-IBFT-Network.md) tutorial before continuing. +[Create an IBFT 2.0](../ibft/index.md) tutorial before continuing. !!! important @@ -344,16 +344,16 @@ In the `Node-1` directory, start Besu Node-1: The command line specifies privacy options: -* [`--privacy-enabled`](../../reference/cli/options.md#privacy-enabled) enables privacy -* [`--privacy-url`](../../reference/cli/options.md#privacy-url) specifies the Q2T server address +* [`--privacy-enabled`](../../../reference/cli/options.md#privacy-enabled) enables privacy +* [`--privacy-url`](../../../reference/cli/options.md#privacy-url) specifies the Q2T server address of the Tessera node (`Q2T` in `tessera.conf`) -* [`--privacy-public-key-file`](../../reference/cli/options.md#privacy-public-key-file) +* [`--privacy-public-key-file`](../../../reference/cli/options.md#privacy-public-key-file) specifies the file containing Tessera node public key (created in [3. Generate Tessera Keys](#2-generate-tessera-keys)) -* [`--rpc-http-api`](../../reference/cli/options.md#rpc-http-api) includes `EEA` and `PRIV` in +* [`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api) includes `EEA` and `PRIV` in the list of JSON-RPC APIs to enable privacy JSON-RPC API methods. -* [`--min-gas-price`](../../reference/cli/options.md#min-gas-price) is 0 for a - [free gas network](../../private-networks/how-to/configure/free-gas.md). +* [`--min-gas-price`](../../../reference/cli/options.md#min-gas-price) is 0 for a + [free gas network](../../how-to/configure/free-gas.md). !!! note @@ -363,10 +363,10 @@ The command line specifies privacy options: [privacy marker transactions](../../Concepts/Privacy/Private-Transaction-Processing.md) using a supplied key. The command line option is mandatory in privacy-enabled paid gas networks. -When the node starts, the [enode URL](../../concepts/node-keys.md#enode-url) displays. Copy the +When the node starts, the [enode URL](../../../concepts/node-keys.md#enode-url) displays. Copy the enode URL to specify Node-1 as the bootnode in the following steps. -![Node 1 Enode URL](../../images/EnodeStartup.png) +![Node 1 Enode URL](../../../images/EnodeStartup.png) ## 6. Start Besu Node-2 @@ -386,7 +386,7 @@ Node-1 as the bootnode: ``` The command line specifies the same options as for Node-1 with different ports and Tessera node URL. -The [`--bootnodes`](../../reference/cli/options.md#bootnodes) option specifies the enode URL of Node-1. +The [`--bootnodes`](../../../reference/cli/options.md#bootnodes) option specifies the enode URL of Node-1. !!!note @@ -411,7 +411,7 @@ Node-1 as the bootnode: ``` The command line specifies the same options as for Node-1 with different ports and Tessera node URL. -The [`--bootnodes`](../../reference/cli/options.md#bootnodes) option specifies the enode URL of Node-1. +The [`--bootnodes`](../../../reference/cli/options.md#bootnodes) option specifies the enode URL of Node-1. ## 8. Start Besu Node-4 @@ -431,7 +431,7 @@ Node-1 as the bootnode: ``` The command line specifies the same options as for Node-1 with different ports and Tessera node URL. -The [`--bootnodes`](../../reference/cli/options.md#bootnodes) option specifies the enode URL of Node-1. +The [`--bootnodes`](../../../reference/cli/options.md#bootnodes) option specifies the enode URL of Node-1. [Tessera]: https://docs.tessera.consensys.net/ diff --git a/docs/tutorials/Privacy/Configuring-Multi-Tenancy.md b/docs/private-networks/tutorials/privacy/multi-tenancy.md similarity index 76% rename from docs/tutorials/Privacy/Configuring-Multi-Tenancy.md rename to docs/private-networks/tutorials/privacy/multi-tenancy.md index 0e05ec68e89..234aa485a3c 100644 --- a/docs/tutorials/Privacy/Configuring-Multi-Tenancy.md +++ b/docs/private-networks/tutorials/privacy/multi-tenancy.md @@ -11,10 +11,10 @@ description: Configure multi-tenancy and about all the [new Tessera features](https://consensys.net/blog/quorum/tessera-the-privacy-manager-of-choice-for-consensys-quorum-networks). You can configure Besu and associated Tessera node in a privacy-enabled network to host -[multiple tenants](../../private-networks/concepts/privacy/multi-tenancy.md). +[multiple tenants](../../concepts/privacy/multi-tenancy.md). In this tutorial we'll add tenants to the `Node-1` Besu and Tessera node in a -[privacy-enabled network](Configuring-Privacy.md). +[privacy-enabled network](index.md). ```bash IBFT-Network/ @@ -39,7 +39,7 @@ IBFT-Network/ ## Prerequisites -* A [Privacy-enabled network](Configuring-Privacy.md). +* A [Privacy-enabled network](index.md). ## 1. Generate a private and public key pair @@ -55,7 +55,7 @@ in `.pem` format, belongs to the operator who uses the key pair to authenticate ## 2. Generate Tessera keys In the `Node-1/Tessera` directory, -[generate a public/private key pair for each tenant](Configuring-Privacy.md#2-generate-tessera-keys). +[generate a public/private key pair for each tenant](index.md#2-generate-tessera-keys). !!! note @@ -138,7 +138,7 @@ In the `Node-1/Tessera` directory, update the `tessera.conf` file by adding the ## 4. Start Tessera -[Start the Tessera nodes](Configuring-Privacy.md#4-start-the-tessera-nodes) and specify +[Start the Tessera nodes](index.md#4-start-the-tessera-nodes) and specify the configuration file. ## 5. Start Besu Node-1 @@ -153,15 +153,15 @@ In the `Node-1` directory, start Besu Node-1: The command line specifies privacy options: -* [`--rpc-http-authentication-enabled`](../../reference/cli/options.md#rpc-http-authentication-enabled) +* [`--rpc-http-authentication-enabled`](../../../reference/cli/options.md#rpc-http-authentication-enabled) enables authentication for JSON-RPC APIs. -* [`--rpc-http-authentication-jwt-public-key-file`](../../reference/cli/options.md#rpc-http-authentication-jwt-public-key-file) +* [`--rpc-http-authentication-jwt-public-key-file`](../../../reference/cli/options.md#rpc-http-authentication-jwt-public-key-file) specifies the Operator's [public key file](#1-generate-a-private-and-public-key-pair). Used to authenticate the [tenant JWTs](#7-generate-the-tenant-jwts). -* [`--privacy-enabled`](../../reference/cli/options.md#privacy-enabled) enables privacy. -* [`--privacy-url`](../../reference/cli/options.md#privacy-url) specifies the +* [`--privacy-enabled`](../../../reference/cli/options.md#privacy-enabled) enables privacy. +* [`--privacy-url`](../../../reference/cli/options.md#privacy-url) specifies the [Quorum to Tessera (Q2T)] server address of the Tessera node (`Q2T` in `tessera.conf`). -* [`--privacy-multi-tenancy-enabled`](../../reference/cli/options.md#privacy-multi-tenancy-enabled) +* [`--privacy-multi-tenancy-enabled`](../../../reference/cli/options.md#privacy-multi-tenancy-enabled) enables multi-tenancy. !!! note @@ -172,16 +172,16 @@ The command line specifies privacy options: [`--rpc-http-authentication-credentials-file`](../../Reference/CLI/CLI-Syntax.md#rpc-http-authentication-credentials-file) instead. -[Start the remaining Besu nodes](Configuring-Privacy.md#7-start-besu-node-2). +[Start the remaining Besu nodes](index.md#7-start-besu-node-2). ## 6. Generate the tenant JWTs -[Generate the JWT](../../how-to/use-besu-api/authenticate.md#2-create-the-jwt) for each tenant +[Generate the JWT](../../../how-to/use-besu-api/authenticate.md#2-create-the-jwt) for each tenant and specify the [tenant's Tessera public key](#2-generate-tessera-keys) in the `privacyPublicKey` field. Ensure you apply the appropriate -[JSON-RPC API permissions](../../how-to/use-besu-api/authenticate.md#json-rpc-permissions) to the +[JSON-RPC API permissions](../../../how-to/use-besu-api/authenticate.md#json-rpc-permissions) to the token. For example, ensure you enable the `PRIV` and `EEA` APIs for privacy. !!! note @@ -192,10 +192,10 @@ token. For example, ensure you enable the `PRIV` and `EEA` APIs for privacy. [Use the authentication token to make requests]. -[JWT public key authentication]: ../../how-to/use-besu-api/authenticate.md#jwt-public-key-authentication -[username and password authentication]: ../../how-to/use-besu-api/authenticate.md#username-and-password-authentication -[generate the private and public key pair]: ../../how-to/use-besu-api/authenticate.md#1-generate-a-private-and-public-key-pair -[Use the authentication token to make requests]: ../../how-to/use-besu-api/authenticate.md#using-an-authentication-token-to-make-requests +[JWT public key authentication]: ../../../how-to/use-besu-api/authenticate.md#jwt-public-key-authentication +[username and password authentication]: ../../../how-to/use-besu-api/authenticate.md#username-and-password-authentication +[generate the private and public key pair]: ../../../how-to/use-besu-api/authenticate.md#1-generate-a-private-and-public-key-pair +[Use the authentication token to make requests]: ../../../how-to/use-besu-api/authenticate.md#using-an-authentication-token-to-make-requests [Quorum to Tessera (Q2T)]: https://docs.tessera.consensys.net/Concepts/TesseraAPI/#quorum-to-tessera-api *[JWT]: JSON Web Token diff --git a/docs/tutorials/Privacy/Privacy-Example.md b/docs/private-networks/tutorials/privacy/quickstart.md similarity index 87% rename from docs/tutorials/Privacy/Privacy-Example.md rename to docs/private-networks/tutorials/privacy/quickstart.md index 7118a8dff71..434ee4a47af 100644 --- a/docs/tutorials/Privacy/Privacy-Example.md +++ b/docs/private-networks/tutorials/privacy/quickstart.md @@ -5,13 +5,13 @@ description: Hyperledger Besu privacy-enabled private network tutorial # Create a privacy-enabled network using the Quorum Developer Quickstart You can create a privacy-enabled network using the -[Quorum Developer Quickstart](../Developer-Quickstart.md). +[Quorum Developer Quickstart](../quickstart.md). It runs a private Hyperledger Besu network that uses [Tessera](https://docs.tessera.consensys.net/en/stable/) as its private transaction manager. -You can use the [Block Explorer](../Developer-Quickstart.md#block-explorer), make -[JSON-RPC requests](../Developer-Quickstart.md#run-json-rpc-requests), and -[create transactions using MetaMask](../Developer-Quickstart.md#create-a-transaction-using-metamask). +You can use the [Block Explorer](../quickstart.md#block-explorer), make +[JSON-RPC requests](../quickstart.md#run-json-rpc-requests), and +[create transactions using MetaMask](../quickstart.md#create-a-transaction-using-metamask). This tutorial describes how to make private transactions between nodes, and perform read and write operations on private contracts. @@ -46,7 +46,7 @@ To create the docker-compose file and artifacts, run: npx quorum-dev-quickstart ``` -Follow the prompts displayed to run Hyperledger Besu, private transactions, and [logging with ELK](../../private-networks/how-to/monitor/elastic-stack.md). +Follow the prompts displayed to run Hyperledger Besu, private transactions, and [logging with ELK](../../how-to/monitor/elastic-stack.md). Enter `n` for [Codefi Orchestrate](https://docs.orchestrate.consensys.net/en/stable/). ## Start the network @@ -85,9 +85,9 @@ For more information on the endpoints and services, refer to README.md in the in ## Deploy the private contract and interact with the nodes -To deploy a private contract to another [privacy group](../../private-networks/concepts/privacy/privacy-groups.md) member, use the +To deploy a private contract to another [privacy group](../../concepts/privacy/privacy-groups.md) member, use the [web3js-quorum](https://consensys.github.io/web3js-quorum/latest/index.html) library and -the [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) API call. +the [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) API call. You must use this API call instead of [`eth_sendTransaction`](https://ethereum.github.io/execution-apis/api-documentation) because Hyperledger Besu keeps account management separate for stronger security. @@ -147,11 +147,11 @@ The general contract deployment flow is: 1. Obtain the privacy transaction receipt from the transaction hash. 1. Use the contract address in the privacy transaction receipt to - [interact with the contract](../Contracts/Calling-Contract-Functions.md) from that point on. + [interact with the contract](../contracts/interact.md) from that point on. ## Further examples -View the [web3js-quorum client library example](web3js-quorum-Multinode-example.md) and view the +View the [web3js-quorum client library example](web3js-quorum.md) and view the [sample code examples](https://github.com/ConsenSys/web3js-quorum/tree/master/example). You can also test the erc20 token example by executing `erc20.js` which deploys diff --git a/docs/tutorials/Privacy/web3js-quorum-Multinode-example.md b/docs/private-networks/tutorials/privacy/web3js-quorum.md similarity index 97% rename from docs/tutorials/Privacy/web3js-quorum-Multinode-example.md rename to docs/private-networks/tutorials/privacy/web3js-quorum.md index 9d7a94629fe..2ccb3f5e0ab 100644 --- a/docs/tutorials/Privacy/web3js-quorum-Multinode-example.md +++ b/docs/private-networks/tutorials/privacy/web3js-quorum.md @@ -11,7 +11,7 @@ description: web3js-quorum client library multi-node example and about all the [new Tessera features](https://consensys.net/blog/quorum/tessera-the-privacy-manager-of-choice-for-consensys-quorum-networks). To use the examples provided in the web3js-quorum library with -[your privacy network](Configuring-Privacy.md): +[your privacy network](index.md): !!! note @@ -33,7 +33,7 @@ To use the examples provided in the web3js-quorum library with * chain ID * Tessera node public keys * Hyperledger Besu node RPC URLs - * [Hyperledger Besu node private keys](../../concepts/node-keys.md#node-private-key). + * [Hyperledger Besu node private keys](../../../concepts/node-keys.md#node-private-key). 1. In the `example/multiNodeExample` directory, deploy the contract: diff --git a/docs/tutorials/Private-Network/Create-QBFT-Network.md b/docs/private-networks/tutorials/qbft.md similarity index 95% rename from docs/tutorials/Private-Network/Create-QBFT-Network.md rename to docs/private-networks/tutorials/qbft.md index d36cdcc0468..beaa2830c65 100644 --- a/docs/tutorials/Private-Network/Create-QBFT-Network.md +++ b/docs/private-networks/tutorials/qbft.md @@ -5,7 +5,7 @@ description: Hyperledger Besu private network using the QBFT (proof of authority # Create a private network using the QBFT (proof of authority) consensus protocol A private network provides a configurable network for testing. This private network uses the -[QBFT (proof of authority) consensus protocol](../../private-networks/how-to/configure/consensus/qbft.md). +[QBFT (proof of authority) consensus protocol](../how-to/configure/consensus/qbft.md). The QBFT network in this tutorial implements the [block header validator selection method] to manage validators. For a tutorial on how to implement the [contract validator selection method], follow the @@ -51,7 +51,7 @@ QBFT-Network/ ### 2. Create a configuration file The configuration file defines the -[QBFT genesis file](../../private-networks/how-to/configure/consensus/qbft.md#genesis-file) and the +[QBFT genesis file](../how-to/configure/consensus/qbft.md#genesis-file) and the number of node key pairs to generate. The configuration file has two nested JSON nodes. The first is the `genesis` property defining @@ -354,7 +354,7 @@ Look at the logs to confirm Besu is producing blocks: 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](../Developer-Quickstart.md#create-a-transaction-using-metamask). +[Quickstart tutorial](quickstart.md#create-a-transaction-using-metamask). !!! note @@ -378,9 +378,9 @@ When finished using the private network, stop all nodes using ++ctrl+c++ in each [6. Start First Node as Bootnode](#6-start-the-first-node-as-the-bootnode). -[block header validator selection method]: ../../private-networks/how-to/configure/consensus/qbft.md#add-and-remove-validators-using-block-headers -[contract validator selection method]: ../../private-networks/how-to/configure/consensus/qbft.md#add-and-remove-validators-using-a-smart-contract +[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]: ../../private-networks/how-to/configure/consensus/qbft.md#transitions +[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/docs/tutorials/Developer-Quickstart.md b/docs/private-networks/tutorials/quickstart.md similarity index 93% rename from docs/tutorials/Developer-Quickstart.md rename to docs/private-networks/tutorials/quickstart.md index 354d836b551..6c958397e4a 100644 --- a/docs/tutorials/Developer-Quickstart.md +++ b/docs/private-networks/tutorials/quickstart.md @@ -6,7 +6,7 @@ description: Rapidly generate local blockchain networks. # Developer Quickstart The Quorum Developer Quickstart uses the Hyperledger Besu Docker image to run a private -[IBFT 2.0](../private-networks/how-to/configure/consensus/ibft.md) network of Besu nodes managed by Docker Compose. +[IBFT 2.0](../how-to/configure/consensus/ibft.md) network of Besu nodes managed by Docker Compose. !!! warning @@ -41,9 +41,9 @@ To create the tutorial `docker-compose` files and artifacts, run: npx quorum-dev-quickstart ``` -Follow the prompts displayed to run Hyperledger Besu and [logging with ELK](../private-networks/how-to/monitor/elastic-stack.md). +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](../private-networks/concepts/privacy/index.md). +[private transactions](../concepts/privacy/index.md). !!! note @@ -92,13 +92,13 @@ When execution is successfully finished, the process lists the available service - 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](../how-to/monitor/metrics.md). + [Read more about metrics](../../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](../how-to/monitor/metrics.md). + [Read more about metrics](../../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](../private-networks/how-to/monitor/elastic-stack.md). + [Read more about log management](../how-to/monitor/elastic-stack.md). To display the list of endpoints again, run: @@ -117,14 +117,14 @@ The block explorer displays a summary of the private network, indicating four pe Select the block number to the right of **Best Block** to display the block details: -![Block Details](../images/ExplorerBlockDetails.png) +![Block Details](../../images/ExplorerBlockDetails.png) You can explore blocks by selecting the blocks under **`Bk`** on the left-hand side. You can search for a specific block, transaction hash, or address by selecting the :mag: in the top left-hand corner. -![Explorer Search](../images/ExplorerSearch.png) +![Explorer Search](../../images/ExplorerSearch.png) ## Monitor nodes with Prometheus and Grafana @@ -135,11 +135,11 @@ You can directly access these tools from your browser at the addresses displayed - [Grafana dashboard](http://localhost:3000/d/XE4V0WGZz/besu-overview?orgId=1&refresh=10s&from=now-30m&to=now&var-system=All) For more details on how to configure and use these tools for your own nodes, see the -[performances monitoring documentation](../how-to/monitor/metrics.md), +[performances monitoring documentation](../../how-to/monitor/metrics.md), [Prometheus documentation](https://prometheus.io/docs/introduction/overview/) and [Grafana documentation](https://grafana.com/docs/). -![Grafana](../images/grafana.png) +![Grafana](../../images/grafana.png) ## Run JSON-RPC requests @@ -199,7 +199,7 @@ or skip ahead to [Create a transaction using MetaMask](#create-a-transaction-usi Peers are the other nodes connected to the node receiving the JSON-RPC request. -Poll the peer count using [`net_peerCount`](../reference/api/index.md#net_peercount): +Poll the peer count using [`net_peerCount`](../../reference/api/index.md#net_peercount): ```bash curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' http://localhost:8545 @@ -217,7 +217,7 @@ The result indicates that there are four peers (the validators): ### Request the most recent block number -Call [`eth_blockNumber`](../reference/api/index.md#eth_blockNumber) to retrieve the number of the most recently +Call [`eth_blockNumber`](../../reference/api/index.md#eth_blockNumber) to retrieve the number of the most recently synchronized block: ```bash @@ -415,15 +415,15 @@ When you select **Adopt**, a MetaMask window pops up and requests your permissio After the transaction is complete and successful, the status of the pet you adopted shows **Success**. -![Dapp UI](../images/dapp-ui.png) +![Dapp UI](../../images/dapp-ui.png) You can also search for the transaction and view its details in the [Block Explorer](http://localhost:25000/). -![Dapp UI](../images/dapp-explorer-tx.png) +![Dapp UI](../../images/dapp-explorer-tx.png) The MetMask UI also keeps a record of the transaction. -![Dapp UI](../images/dapp-metamask-tx.png) +![Dapp UI](../../images/dapp-metamask-tx.png) ### Deploy your own dapp @@ -581,7 +581,7 @@ If the `nodekey.pub` is `4540ea...9c1d78` and the IP address is `172.16.239.41`, `"enode://4540ea...9c1d78@172.16.239.41:30303"`, which must be added to both files. Alternatively, call the -[`perm_addNodesToAllowlist`](../reference/api/index.md#perm_addnodestoallowlist) API method on existing nodes to add +[`perm_addNodesToAllowlist`](../../reference/api/index.md#perm_addnodestoallowlist) API method on existing nodes to add the new node without restarting. !!! note @@ -595,13 +595,13 @@ the new node without restarting. 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](../reference/api/index.md#perm_addnodestoallowlist). +or via [RPC API calls](../../reference/api/index.md#perm_addnodestoallowlist). -[bootnodes]: ../private-networks/how-to/deploy/Bootnodes.md -[permissions file]: ../private-networks/how-to/use-permissioning/local.md -[static nodes]: ../how-to/connect/static-nodes.md -[allow list]: ../private-networks/how-to/use-permissioning/local.md#node-allowlisting +[bootnodes]: ../how-to/deploy/Bootnodes.md +[permissions file]: ../how-to/use-permissioning/local.md +[static nodes]: ../../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/docs/reference/cli/options.md b/docs/reference/cli/options.md index ef2d529f295..7429b102e76 100644 --- a/docs/reference/cli/options.md +++ b/docs/reference/cli/options.md @@ -2461,7 +2461,7 @@ The path to the file containing the hostnames, ports, and SHA256 certificate fin ``` The URL on which the -[Tessera node](../../tutorials/Privacy/Configuring-Privacy.md#3-create-tessera-configuration-files) is +[Tessera node](../../private-networks/tutorials/privacy/index.md#3-create-tessera-configuration-files) is running. ### `pruning-block-confirmations` diff --git a/docs/reference/cli/subcommands.md b/docs/reference/cli/subcommands.md index ff54aa90955..91c152005fd 100644 --- a/docs/reference/cli/subcommands.md +++ b/docs/reference/cli/subcommands.md @@ -174,8 +174,8 @@ Provides operator actions. besu operator generate-blockchain-config --config-file=config.json --to=myNetworkFiles ``` Generates an -[IBFT 2.0](../../tutorials/Private-Network/Create-IBFT-Network.md) or -[QBFT](../../tutorials/Private-Network/Create-QBFT-Network.md) genesis file. +[IBFT 2.0](../../private-networks/tutorials/ibft/index.md) or +[QBFT](../../private-networks/tutorials/qbft.md) genesis file. The configuration file has two nested JSON nodes. The first is the `genesis` property defining the [IBFT 2.0](../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) or diff --git a/docs/reference/evm-tool.md b/docs/reference/evm-tool.md index 9b360d3dda7..bbc0a4573ff 100644 --- a/docs/reference/evm-tool.md +++ b/docs/reference/evm-tool.md @@ -83,7 +83,7 @@ If set to a non-zero value, the sender account must have enough value to cover t The account the invocation is sent from. The specified account must exist in the world state, which unless specified by `--genesis` -or `--prestate` is the set of [accounts used for testing](Accounts-for-Testing.md). +or `--prestate` is the set of [accounts used for testing](../private-networks/reference/accounts-for-testing.md). ### `receiver` diff --git a/docs/reference/genesis-items.md b/docs/reference/genesis-items.md index 276c8914aae..8dbf0d11989 100644 --- a/docs/reference/genesis-items.md +++ b/docs/reference/genesis-items.md @@ -46,7 +46,7 @@ consensus protocols. | `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](Accounts-for-Testing.md) or [contracts](../private-networks/how-to/configure/contracts.md). | +| `alloc` | Defines [accounts with balances](../private-networks/reference/accounts-for-testing.md) or [contracts](../private-networks/how-to/configure/contracts.md). | ## Milestone blocks diff --git a/mkdocs.yml b/mkdocs.yml index c7141bf15f0..1bf10bad4b1 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -226,6 +226,36 @@ nav: - Events and logs: concepts/events-and-logs.md - Node keys: concepts/node-keys.md - Tutorials: + - Quorum Developer Quickstart: private-networks/tutorials/quickstart.md + - Create a QBFT network: private-networks/tutorials/qbft.md + - Create an IBFT 2.0 network: + - Index: private-networks/tutorials/ibft/index.md + - Add and remove IBFT 2.0 validators: private-networks/tutorials/ibft/validators.md + - Create a Clique network: private-networks/tutorials/clique.md + - Create an Ethash network: private-networks/tutorials/ethash.md + - Create a privacy-enabled network: + - Index: private-networks/tutorials/privacy/index.md + - Create a privacy-enabled network using the Quickstart: private-networks/tutorials/privacy/quickstart.md + - Configure a multi-tenant network: private-networks/tutorials/privacy/multi-tenancy.md + - Use the web3js-quorum multi-node example: private-networks/tutorials/privacy/web3js-quorum.md + - Create a permissioned network: + - Index: private-networks/tutorials/permissioning/index.md + - Get started with onchain permissioning: private-networks/tutorials/permissioning/onchain.md + - Upgrade permissioning contracts: private-networks/tutorials/permissioning/upgrade-contracts.md + - Deploy a smart contract: + - Index: private-networks/tutorials/contracts/index.md + - Transfer account funds: private-networks/tutorials/contracts/transfer-funds.md + - Interact with a deployed contract: private-networks/tutorials/contracts/interact.md + - Deploy using Kubernetes: + - Index: private-networks/tutorials/kubernetes/index.md + - Local playground: private-networks/tutorials/kubernetes/playground.md + - Create a cluster: private-networks/tutorials/kubernetes/cluster.md + - Deploy charts: private-networks/tutorials/kubernetes/charts.md + - Use the Quorum Explorer: private-networks/tutorials/kubernetes/quorum-explorer.md + - Maintenance: private-networks/tutorials/kubernetes/maintenance.md + - Production: private-networks/tutorials/kubernetes/production.md + - Configure Kubernetes mode in NAT manager: private-networks/tutorials/kubernetes/nat-manager.md + - Deploy using Microsoft Azure: private-networks/tutorials/azure.md - Reference: - Besu command line: - Options: reference/cli/options.md @@ -234,6 +264,7 @@ nav: - Index: reference/api/index.md - Objects: reference/api/objects.md - Genesis file items: reference/genesis-items.md + - Accounts for testing: private-networks/reference/accounts-for-testing.md - EVM tool options: reference/evm-tool.md - Transaction trace types: reference/trace-types.md - Projects using Besu: reference/projects-using-besu.md @@ -304,22 +335,22 @@ plugins: Concepts/Client-Libraries.md: how-to/develop/client-libraries.md Concepts/Privacy/Onchain-PrivacyGroups.md: private-networks/concepts/privacy/flexible-privacy.md HowTo/Use-Privacy/Use-OnChainPrivacy.md: private-networks/how-to/use-privacy/flexible.md - Tutorials/Quickstarts/Azure-Private-Network-Quickstart.md: private-networks/tutorials/Private-Network-Example-Azure.md + Tutorials/Quickstarts/Azure-Private-Network-Quickstart.md: private-networks/tutorials/azure.md HowTo/Interact/Client-Libraries/eeajs.md: private-networks/how-to/use-privacy/web3js-quorum.md HowTo/Interact/Client-Libraries/web3js-eea.md: private-networks/how-to/use-privacy/web3js-quorum.md Privacy/Explanation/Privacy-Groups.md: private-networks/concepts/privacy/privacy-groups.md - Tutorials/Privacy/eeajs-Multinode-example.md: private-networks/tutorials/Privacy/web3js-quorum-Multinode-example.md - Tutorials/Privacy/web3js-eea-Multinode-example.md: private-networks/tutorials/Privacy/web3js-quorum-Multinode-example.md + Tutorials/Privacy/eeajs-Multinode-example.md: private-networks/tutorials/privacy/web3js-quorum.md + Tutorials/Privacy/web3js-eea-Multinode-example.md: private-networks/tutorials/privacy/web3js-quorum.md HowTo/Configure/Configure-TLS.md: private-networks/how-to/configure/tls/client-and-server.md HowTo/Deploy/Lite-Block-Explorer.md: https://github.com/Alethio/ethereum-lite-explorer HowTo/Deploy/Lite-Network-Monitor.md: https://github.com/Alethio/ethstats-network-dashboard HowTo/Configure/Consensus-Protocols/QuorumIBFT.md: private-networks/how-to/configure/consensus/qbft.md HowTo/Configure/Configure-Data-Storage.md: public-networks/concepts/data-storage-formats.md Concepts/Consensus-Protocols/Proof-of-Stake.md: public-networks/concepts/the-merge.md - Tutorials/Examples/Private-Network-Example.md: private-networks/tutorials/Developer-Quickstart.md - Tutorials/Examples/Privacy-Example.md: private-networks/tutorials/Privacy/Privacy-Example.md - Tutorials/Examples/Nat-Manager-Kubernetes.md: private-networks/tutorials/Kubernetes/Nat-Manager-kubernetes.md - Tutorials/Examples/Private-Network-Example-Azure.md: private-networks/tutorials/Private-Network-Example-Azure.md + Tutorials/Examples/Private-Network-Example.md: private-networks/tutorials/quickstart.md + Tutorials/Examples/Privacy-Example.md: private-networks/tutorials/privacy/quickstart.md + Tutorials/Examples/Nat-Manager-Kubernetes.md: private-networks/tutorials/kubernetes/nat-manager.md + Tutorials/Examples/Private-Network-Example-Azure.md: private-networks/tutorials/azure.md HowTo/Configure/Consensus-Protocols/Add-Validators.md: private-networks/how-to/configure/consensus/qbft.md # restructure redirects: HowTo/Get-Started/System-Requirements/System-Requirements-Private.md: private-networks/get-started/system-requirements.md @@ -432,3 +463,29 @@ plugins: Concepts/Permissioning/Onchain-Permissioning.md: private-networks/concepts/permissioning/onchain.md Concepts/Permissioning/Plugin-Permissioning.md: private-networks/concepts/permissioning/plugin.md Concepts/PKI.md: private-networks/concepts/pki.md + Tutorials/Developer-Quickstart.md: private-networks/tutorials/quickstart.md + Tutorials/Private-Network/Create-QBFT-Network.md: private-networks/tutorials/qbft.md + Tutorials/Private-Network/Create-IBFT-Network.md: private-networks/tutorials/ibft/index.md + Tutorials/Private-Network/Adding-removing-IBFT-validators.md: private-networks/tutorials/ibft/validators.md + Tutorials/Private-Network/Create-Private-Clique-Network.md: private-networks/tutorials/clique.md + Tutorials/Private-Network/Create-Private-Network.md: private-networks/tutorials/ethash.md + Tutorials/Privacy/Configuring-Privacy.md: private-networks/tutorials/privacy/index.md + Tutorials/Privacy/Privacy-Example.md: private-networks/tutorials/privacy/quickstart.md + Tutorials/Privacy/Configuring-Multi-Tenancy.md: private-networks/tutorials/privacy/multi-tenancy.md + Tutorials/Privacy/web3js-quorum-Multinode-example.md: private-networks/tutorials/privacy/web3js-quorum.md + Tutorials/Permissioning/Create-Permissioned-Network.md: private-networks/tutorials/permissioning/index.md + Tutorials/Permissioning/Getting-Started-Onchain-Permissioning: private-networks/tutorials/permissioning/onchain.md + Tutorials/Permissioning/Upgrade-Permissioning-Contract.md: private-networks/tutorials/permissioning/upgrade-contracts.md + Tutorials/Contracts/Deploying-Contracts.md: private-networks/tutorials/contracts/index.md + Tutorials/Contracts/Account-Funds-Transfers.md: private-networks/tutorials/contracts/transfer-funds.md + Tutorials/Contracts/Calling-Contract-Functions.md: private-networks/tutorials/contracts/interact.md + Tutorials/Kubernetes/Overview.md: private-networks/tutorials/kubernetes/index.md + Tutorials/Kubernetes/Playground.md: private-networks/tutorials/kubernetes/playground.md + Tutorials/Kubernetes/Create-Cluster.md: private-networks/tutorials/kubernetes/cluster.md + Tutorials/Kubernetes/Deploy-Charts.md: private-networks/tutorials/kubernetes/charts.md + Tutorials/Kubernetes/Quorum-Explorer.md: private-networks/tutorials/kubernetes/quorum-explorer.md + Tutorials/Kubernetes/Maintenance.md: private-networks/tutorials/kubernetes/maintenance.md + Tutorials/Kubernetes/Production.md: private-networks/tutorials/kubernetes/production.md + Tutorials/Kubernetes/Nat-Manager-Kubernetes.md: private-networks/tutorials/kubernetes/nat-manager.md + Tutorials/Private-Network-Example-Azure.md: private-networks/tutorials/azure.md + Reference/Accounts-for-Testing.md: private-networks/reference/accounts-for-testing.md From ae63192c3b2729ebbb1dd9d83026e5c5d3016fe5 Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Wed, 13 Jul 2022 15:44:24 -0700 Subject: [PATCH 05/31] add monitoring index page Signed-off-by: Alexandra Tran --- docs/{concepts/Monitoring.md => how-to/monitor/index.md} | 4 ++-- mkdocs.yml | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) rename docs/{concepts/Monitoring.md => how-to/monitor/index.md} (76%) diff --git a/docs/concepts/Monitoring.md b/docs/how-to/monitor/index.md similarity index 76% rename from docs/concepts/Monitoring.md rename to docs/how-to/monitor/index.md index 61191c0f497..1e35e1750d5 100644 --- a/docs/concepts/Monitoring.md +++ b/docs/how-to/monitor/index.md @@ -7,8 +7,8 @@ description: Monitoring using metrics and logging Monitoring enables identification of node and network issues. Specifically, configuring metrics and logging enables: -* [Visual representation of declining node or network performance](../how-to/monitor/metrics.md) -* [Collection of log files to enable issue diagnosis](../how-to/monitor/logging.md). +* [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/mkdocs.yml b/mkdocs.yml index 1bf10bad4b1..558e2b0551b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -169,6 +169,7 @@ nav: - Manage peers: how-to/connect/manage-peers.md - Specify NAT method: how-to/connect/specify-nat-method.md - Monitor nodes: + - Index: how-to/monitor/index.md - Use metrics: how-to/monitor/metrics.md - Use Elastic Stack: private-networks/how-to/monitor/elastic-stack.md - Use Quorum Hibernate: private-networks/how-to/monitor/quorum-hibernate.md @@ -489,3 +490,4 @@ plugins: Tutorials/Kubernetes/Nat-Manager-Kubernetes.md: private-networks/tutorials/kubernetes/nat-manager.md Tutorials/Private-Network-Example-Azure.md: private-networks/tutorials/azure.md Reference/Accounts-for-Testing.md: private-networks/reference/accounts-for-testing.md + Concepts/Monitoring.md: how-to/monitor/index.md From 64b6f575619a2a87a79764afbfac518929eda23f Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Thu, 14 Jul 2022 13:05:09 -0700 Subject: [PATCH 06/31] fix link errors Signed-off-by: Alexandra Tran --- docs/concepts/Pruning.md | 4 +- docs/concepts/node-keys.md | 8 +- docs/get-started/install/run-docker-image.md | 12 +- .../Configure-HA/High-Availability.md | 18 +- docs/how-to/configure/configuration-file.md | 4 +- docs/how-to/configure/mining.md | 4 +- docs/how-to/connect/configure-ports.md | 4 +- docs/how-to/connect/manage-peers.md | 4 +- docs/how-to/connect/specify-nat.md | 4 +- docs/how-to/connect/static-nodes.md | 10 +- docs/how-to/monitor/logging.md | 8 +- docs/how-to/monitor/metrics.md | 6 +- docs/how-to/send-transactions.md | 2 +- ...-Transactions.md => trace-transactions.md} | 0 docs/how-to/use-besu-api/access-logs.md | 27 +- docs/how-to/use-besu-api/graphql.md | 6 +- docs/how-to/use-besu-api/index.md | 2 +- docs/how-to/use-besu-api/json-rpc.md | 18 +- docs/how-to/use-besu-api/rpc-pubsub.md | 4 +- .../concepts/permissioning/index.md | 2 +- .../concepts/permissioning/onchain.md | 13 +- .../concepts/privacy/flexible-privacy.md | 2 +- .../concepts/privacy/index.md | 7 +- .../concepts/privacy/multi-tenancy.md | 6 +- .../concepts/privacy/plugin.md | 2 +- .../concepts/privacy/privacy-groups.md | 2 +- .../privacy/private-transactions/index.md | 10 +- .../private-transactions/processing.md | 11 +- .../get-started/start-node.md | 233 ++++++++++++++++++ .../add-validators-without-voting.md | 4 +- .../how-to/configure/consensus/clique.md | 6 +- .../how-to/configure/consensus/ibft.md | 10 +- .../how-to/configure/consensus/qbft.md | 8 +- .../how-to/configure/free-gas.md | 2 +- .../how-to/configure/tls/client-and-server.md | 6 +- .../how-to/connect/bootnodes.md | 4 +- .../private-networks/how-to/monitor/splunk.md | 4 +- .../concurrent-private-transactions.md | 8 +- .../send-transactions/private-transactions.md | 8 +- .../how-to/send-transactions/revert-reason.md | 2 +- .../how-to/use-permissioning/local.md | 12 +- .../how-to/use-permissioning/onchain.md | 6 +- .../access-private-transactions.md | 2 +- .../how-to/use-privacy/flexible.md | 4 +- .../how-to/use-privacy/privacy-groups.md | 6 +- .../how-to/use-privacy/sign-pmts.md | 8 +- .../how-to/use-privacy/tessera.md | 6 +- docs/private-networks/tutorials/clique.md | 6 +- docs/private-networks/tutorials/ethash.md | 6 +- docs/private-networks/tutorials/ibft/index.md | 6 +- .../tutorials/kubernetes/charts.md | 8 +- .../tutorials/kubernetes/nat-manager.md | 4 +- .../tutorials/permissioning/index.md | 3 +- .../tutorials/permissioning/onchain.md | 8 +- .../tutorials/privacy/index.md | 10 +- .../tutorials/privacy/multi-tenancy.md | 6 +- .../tutorials/privacy/web3js-quorum.md | 4 +- docs/private-networks/tutorials/qbft.md | 6 +- docs/private-networks/tutorials/quickstart.md | 7 +- .../public-networks/get-started/start-node.md | 8 +- .../how-to/connect/sync-node.md | 8 +- docs/reference/api/index.md | 130 +++++----- docs/reference/cli/options.md | 25 +- docs/reference/cli/subcommands.md | 8 +- docs/reference/trace-types.md | 6 +- mkdocs.yml | 24 +- 66 files changed, 532 insertions(+), 290 deletions(-) rename docs/how-to/troubleshoot/{Trace-Transactions.md => trace-transactions.md} (100%) create mode 100644 docs/private-networks/get-started/start-node.md diff --git a/docs/concepts/Pruning.md b/docs/concepts/Pruning.md index 086103b60ca..0a222ef4511 100644 --- a/docs/concepts/Pruning.md +++ b/docs/concepts/Pruning.md @@ -12,11 +12,11 @@ Pruning is disabled by default, and can be enabled with the !!! Important - Using pruning with [private transactions](Privacy/Privacy-Overview.md) is not supported. +Using pruning with [private transactions] is not supported. Pruning might increase block import times, but it does not affect the ability of nodes to stay in sync. !!! Important - Pruning is being deprecated for [Bonsai Tries](Data-Storage-Formats.md#bonsai-tries) and is currently not being updated. +Pruning is being deprecated for [Bonsai Tries] and is currently not being updated. diff --git a/docs/concepts/node-keys.md b/docs/concepts/node-keys.md index 474cb914029..7546f182710 100644 --- a/docs/concepts/node-keys.md +++ b/docs/concepts/node-keys.md @@ -83,8 +83,8 @@ The enode URL format is `enode://@[?discport=]` where: enode URL is `enode://c35c3ec90a8a51fd5703594c6303382f3ae6b2ecb9589bab2c04b3794f2bc3fc2631dabb0c08af795787a6c004d8f532230ae6e9925cbbefb0b28b79295d615f@10.3.58.6:30303?discport=30301` - If the [`--p2p-host`](../Reference/CLI/CLI-Syntax.md#p2p-host) or - [`--p2p-port`](../Reference/CLI/CLI-Syntax.md#p2p-port) options are not specified and the node + 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` @@ -101,7 +101,7 @@ defined by [`--nat-method`](../how-to/connect/specify-nat.md). !!! warning Enode URL domain name support is an experimental feature that you can use in private - [permissioned networks](Permissioning/Permissioning-Overview.md) only. + [permissioned networks](../private-networks/concepts/permissioning/index.md) only. To use domain names in enode URLs: @@ -120,7 +120,7 @@ To use domain names in enode URLs: `--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/CLI-Syntax.md#xhelp) command line option to view experimental options and their + Use the [`--Xhelp`](../reference/cli/options.md#xhelp) command line option to view experimental options and their descriptions. If nodes are not connecting as expected, set the [log level to TRACE](../reference/api/index.md#admin_changeloglevel) to diff --git a/docs/get-started/install/run-docker-image.md b/docs/get-started/install/run-docker-image.md index 9fcb7ac9e70..02833bf336d 100644 --- a/docs/get-started/install/run-docker-image.md +++ b/docs/get-started/install/run-docker-image.md @@ -34,7 +34,7 @@ docker run hyperledger/besu:latest To ensure your image is up to date, pull the `latest` version again using `docker pull hyperledger/besu:latest`. -## Exposing ports +## 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 @@ -70,7 +70,7 @@ docker run -p :8545 -p :8546 -p :3 docker run -p 8545:8545 -p 13001:30303 hyperledger/besu:latest --rpc-http-enabled ``` -## Starting Besu +## Start Besu !!! important @@ -78,12 +78,12 @@ docker run -p :8545 -p :8546 -p :3 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/CLI-Syntax.md#data-path) must be set to a location other + [`--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`](../../Find-and-Connect/Specifying-NAT.md) + 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`](../../Find-and-Connect/Specifying-NAT.md) to `NONE` or `UPNP`. + [`--nat-method`](../../how-to/connect/specify-nat.md) to `NONE` or `UPNP`. You can specify [Besu environment variables](../../reference/cli/options.md#besu-environment-variables) with the @@ -119,7 +119,7 @@ To run a node on Ethereum Mainnet with the HTTP JSON-RPC service enabled: 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 ``` -## Stopping Besu and cleaning up resources +## 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 diff --git a/docs/how-to/configure/Configure-HA/High-Availability.md b/docs/how-to/configure/Configure-HA/High-Availability.md index b0f33d78cf1..7ed3a8a0685 100644 --- a/docs/how-to/configure/Configure-HA/High-Availability.md +++ b/docs/how-to/configure/Configure-HA/High-Availability.md @@ -14,7 +14,7 @@ Use a load balancer to distribute requests across nodes in the cluster that are !!! important - We do not recommend putting [bootnodes](../../Deploy/Bootnodes.md) behind a load balancer. + We do not recommend putting [bootnodes] behind a load balancer. !!! important @@ -22,10 +22,10 @@ Use a load balancer to distribute requests across nodes in the cluster that are 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-Methods.md#admin-methods), - [`net_enode`](../../../Reference/API-Methods.md#net_enode), - [`net_peerCount`](../../../Reference/API-Methods.md#net_peercount), and - [`eth_syncing`](../../../Reference/API-Methods.md#eth_syncing)). + not provide expected results (for example, [`admin` methods], + [`net_enode`], + [`net_peerCount`], and + [`eth_syncing`]). ## Determining when a node is ready @@ -52,12 +52,12 @@ might be incorrect. !!! note - If using [private transactions](../../../Concepts/Privacy/Privacy-Overview.md), retrieve the + If using [private transactions], retrieve the nonce using - [`priv_getTransactionCount`](../../../Reference/API-Methods.md#priv_gettransactioncount) or - [`priv_getEeaTransactionCount`](../../../Reference/API-Methods.md#priv_geteeatransactioncount) + [`priv_getTransactionCount`] or + [`priv_getEeaTransactionCount`] and send the private transactions using - [`eea_sendRawTransaction`](../../../Reference/API-Methods.md#eea_sendrawtransaction). + [`eea_sendRawTransaction`]. To get correct nonces when distributing requests across a cluster, either: diff --git a/docs/how-to/configure/configuration-file.md b/docs/how-to/configure/configuration-file.md index 01a55d21314..35deff24008 100644 --- a/docs/how-to/configure/configuration-file.md +++ b/docs/how-to/configure/configuration-file.md @@ -11,7 +11,7 @@ use the [`--config-file`](../../reference/cli/options.md#config-file) option. To override an option specified in the configuration file, either specify the same option on the command line or as an -[environment variable](../../reference/cli/options.md#besu-environment-variables). For options +[environment variable](../../reference/cli/options.md#specifying-options). For options specified in more than one place, the order of precedence is command line, environment variable, configuration file. @@ -28,7 +28,7 @@ differences between the command line and the TOML file format are: !!!tip - The [command line reference](../../Reference/CLI/CLI-Syntax.md) includes configuration file + The [command line reference](../../reference/cli/options.md) includes configuration file examples for each option. !!!example "Sample TOML configuration file" diff --git a/docs/how-to/configure/mining.md b/docs/how-to/configure/mining.md index 00f36a5deeb..5f4d765e9f1 100644 --- a/docs/how-to/configure/mining.md +++ b/docs/how-to/configure/mining.md @@ -42,8 +42,8 @@ Optional command line options are: !!! note Besu also supports the `getwork` scheme. Use the - [`--miner-stratum-enabled`](../../Reference/CLI/CLI-Syntax.md#miner-stratum-enabled) option and - [enable the `ETH` RPCs](../../Reference/CLI/CLI-Syntax.md#rpc-http-api). + [`--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. diff --git a/docs/how-to/connect/configure-ports.md b/docs/how-to/connect/configure-ports.md index aee143595aa..6972664bad2 100644 --- a/docs/how-to/connect/configure-ports.md +++ b/docs/how-to/connect/configure-ports.md @@ -14,7 +14,7 @@ When running Besu from the [Docker image](../../get-started/install/run-docker-i !!! tip - Besu supports [UPnP](Specifying-NAT.md) for home or small office environments where a wireless + Besu supports [UPnP](specify-nat.md) for home or small office environments where a wireless router or modem provides NAT isolation. ## P2P networking @@ -37,7 +37,7 @@ Combine the P2P port with the values for the 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/CLI-Syntax.md#p2p-interface) option. + [`--p2p-interface`](../../reference/cli/options.md#p2p-interface) option. ## JSON-RPC API diff --git a/docs/how-to/connect/manage-peers.md b/docs/how-to/connect/manage-peers.md index 1febdc94746..eb4cb287583 100644 --- a/docs/how-to/connect/manage-peers.md +++ b/docs/how-to/connect/manage-peers.md @@ -13,7 +13,7 @@ in small, stable networks. !!! info - You can use [`admin_addPeer`](../../Reference/API-Methods.md#admin_addpeer) to attempt a specific connection, but + You can use [`admin_addPeer`](../../reference/cli/options.md#admin_addpeer) to attempt a specific connection, but this isn't P2P discovery. We recommend [using bootnodes](../../private-networks/how-to/connect/bootnodes.md) to initially discover peers. @@ -39,7 +39,7 @@ The nodes in this closed group are all connected to each other and can't accept !!! tip - You can use [`--random-peer-priority-enabled`](../../Reference/CLI/CLI-Syntax.md#random-peer-priority-enabled) to + 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 diff --git a/docs/how-to/connect/specify-nat.md b/docs/how-to/connect/specify-nat.md index ea93fabb5d5..3552e2c951e 100644 --- a/docs/how-to/connect/specify-nat.md +++ b/docs/how-to/connect/specify-nat.md @@ -64,7 +64,7 @@ Use `UPNPP2PONLY` if you wish to enable UPnP only for p2p traffic. !!! important When the NAT method is set to `UPNP`, the advertised port is the same as the - [listening port](../../Reference/CLI/CLI-Syntax.md#p2p-port). + [listening port](../../reference/cli/options.md#p2p-port). ## Kubernetes @@ -102,4 +102,4 @@ The P2P and JSON-RPC HTTP hosts and ports are advertised in the [`net_services`] !!! important When the NAT method is set to `NONE`, the advertised port is the same as the - [listening port](../../Reference/CLI/CLI-Syntax.md#p2p-port). + [listening port](../../reference/cli/options.md#p2p-port). diff --git a/docs/how-to/connect/static-nodes.md b/docs/how-to/connect/static-nodes.md index 676fb496a3f..3ca1b160050 100644 --- a/docs/how-to/connect/static-nodes.md +++ b/docs/how-to/connect/static-nodes.md @@ -18,8 +18,8 @@ any unconnected static node. example, you run multiple nodes on Mainnet (discovery using bootnodes), but want to ensure your nodes are always connected (using static nodes). - To find peers, configure one or more [bootnodes](Bootnodes.md). To configure a specific set of - peer connections, use static nodes, as described below. + To find peers, configure one or more [bootnodes](../../private-networks/how-to/connect/bootnodes.md). + To configure a specific set of peer connections, use static nodes. ## Configure static nodes @@ -46,13 +46,13 @@ To update the list of static peers at run time, use the 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](../../Concepts/Permissioning/Permissioning-Overview.md). + 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-Methods.md#admin_peers)), check the the supplied - [enode URL](../../Concepts/Node-Keys.md#enode-url) is correct, the node is running, and the + [`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 diff --git a/docs/how-to/monitor/logging.md b/docs/how-to/monitor/logging.md index 978b02c412b..4097bc08b8d 100644 --- a/docs/how-to/monitor/logging.md +++ b/docs/how-to/monitor/logging.md @@ -8,8 +8,8 @@ source: log4j2.xml Hyperledger Besu uses Log4J2 for logging and provides two methods to configure logging behavior: -* [Basic](#basic-log-level-setting) - changes the log level. -* [Advanced](#advanced-custom-logging) - configures the output and format of the logs. +* [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. @@ -25,8 +25,8 @@ For most use cases, the basic method provides enough configurability. !!! tip - Use the [`admin_changeLogLevel`](../../Reference/API-Methods.md#admin_changeloglevel) API method to change the log - level while Besu is running. + Use the [`admin_changeLogLevel`](../../reference/api/index.md#admin_changeloglevel) API method + to change the log level while Besu is running. ## Advanced logging diff --git a/docs/how-to/monitor/metrics.md b/docs/how-to/monitor/metrics.md index 002634815ad..12d0ebe99c7 100644 --- a/docs/how-to/monitor/metrics.md +++ b/docs/how-to/monitor/metrics.md @@ -102,7 +102,7 @@ To configure Prometheus and run with Besu: !!! important 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/CLI-Syntax.md#host-allowlist). + `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` has to be in `--host-allowlist`. @@ -295,10 +295,10 @@ If a metric has a JSON-RPC equivalent, it is included in the definition column. !!! important * The `ethereum_best_known_block_number` metric always has a value. When the - [`eth_syncing` JSON-RPC method](../../Reference/API-Methods.md#eth_syncing) returns + [`eth_syncing` JSON-RPC method](../../reference/api/index.md#eth_syncing) returns false, the current chain height displays. * Although the `ethereum_peer_limit` metric does not have a JSON-RPC equivalent, the - [`max peers` command line option](../../Reference/CLI/CLI-Syntax.md#max-peers) sets the + [`max peers` command line option](../../reference/cli/options.md#max-peers) sets the maximum number of P2P connections that can be established. diff --git a/docs/how-to/send-transactions.md b/docs/how-to/send-transactions.md index 2914e36d4f5..40fac2da1f4 100644 --- a/docs/how-to/send-transactions.md +++ b/docs/how-to/send-transactions.md @@ -34,7 +34,7 @@ Ether and create a smart contract. !!! caution - Setting the [listening host](../Interact/APIs/API.md#service-hosts) to `0.0.0.0` exposes the API service + 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. diff --git a/docs/how-to/troubleshoot/Trace-Transactions.md b/docs/how-to/troubleshoot/trace-transactions.md similarity index 100% rename from docs/how-to/troubleshoot/Trace-Transactions.md rename to docs/how-to/troubleshoot/trace-transactions.md diff --git a/docs/how-to/use-besu-api/access-logs.md b/docs/how-to/use-besu-api/access-logs.md index 8b5a67538e7..ffc42893a49 100644 --- a/docs/how-to/use-besu-api/access-logs.md +++ b/docs/how-to/use-besu-api/access-logs.md @@ -2,7 +2,7 @@ description: Accessing logs using the Hyperledger Besu API --- -# Accessing logs using the Hyperledger Besu API +# 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. @@ -23,16 +23,15 @@ Access logs for [private contracts](../../private-networks/concepts/privacy/inde !!! note - The sample contract included in [Events and Logs](../../../Concepts/Events-and-Logs.md) created - the following examples. + The following examples use the sample contract included in [events and logs](../../concepts/events-and-logs.md). -## Creating a filter +## Create a filter Create a filter using [`eth_newFilter`](../../reference/api/index.md#eth_newfilter). !!! example - If the [example contract](../../../Concepts/Events-and-Logs.md#example) was deployed to + 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: @@ -58,7 +57,7 @@ Create a filter using [`eth_newFilter`](../../reference/api/index.md#eth_newfilt [`eth_newFilter`](../../reference/api/index.md#eth_newfilter) returns a filter ID hash (for example, `0x1ddf0c00989044e9b41cc0ae40272df3`). -### Polling a filter for changes +### 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 @@ -67,8 +66,8 @@ hash returned by [`eth_newFilter`](../../reference/api/index.md#eth_newfilter). !!! example If the contract had been executed twice since the last poll, with `valueIndexed` set to 1 and - 5, [`eth_getFilterChanges`](../../../Reference/API-Methods.md#eth_getfilterchanges) returns - only the log where the [topic](../../../Concepts/Events-and-Logs.md#event-parameters) for + 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 @@ -94,7 +93,7 @@ hash returned by [`eth_newFilter`](../../reference/api/index.md#eth_newfilter). } ``` -### Getting all logs for a filter +### Get all logs for a filter To get all logs for a filter, use [`eth_getFilterLogs`](../../reference/api/index.md#eth_getfilterlogs). @@ -143,12 +142,12 @@ To get all logs for a filter, use !!! tip - You can use [`eth_getLogs`](#getting-logs-using-a-filter-options-object) with a filter options + 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-Methods.md#eth_newfilter) followed by - [`eth_getFilterLogs`](../../../Reference/API-Methods.md#eth_getfilterlogs). + [`eth_newFilter`](../../reference/api/index.md#eth_newfilter) followed by + [`eth_getFilterLogs`](../../reference/api/index.md#eth_getfilterlogs). -## Uninstalling a filter +## Uninstall a filter When a filter is no longer required, use [`eth_uninstallFilter`](../../reference/api/index.md#eth_uninstallfilter) to remove the @@ -186,7 +185,7 @@ for the `priv` methods. } ``` -## Getting logs using a filter options object +## 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) diff --git a/docs/how-to/use-besu-api/graphql.md b/docs/how-to/use-besu-api/graphql.md index f14d05370fa..6a4e0cc604d 100644 --- a/docs/how-to/use-besu-api/graphql.md +++ b/docs/how-to/use-besu-api/graphql.md @@ -8,11 +8,11 @@ GraphQL can reduce the overhead needed for common queries. For example, instead 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#enabling-api-access). +service using [command line options](index.md#enable-api-access). !!! note - GraphQL is not supported over WebSockets. + 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 @@ -26,7 +26,7 @@ is `http://127.0.0.1:8547/graphql`. !!! example - The following [`syncing`](../../../Reference/API-Methods.md#eth_syncing) request returns data + The following [`syncing`](../../reference/api/index.md#eth_syncing) request returns data about the synchronization status. ```bash diff --git a/docs/how-to/use-besu-api/index.md b/docs/how-to/use-besu-api/index.md index 33ac275875c..5b9c1e40ff3 100644 --- a/docs/how-to/use-besu-api/index.md +++ b/docs/how-to/use-besu-api/index.md @@ -75,7 +75,7 @@ By default, Besu accepts requests and connections from `localhost` and `127.0.0. !!! important This isn't a permissioning feature. - If you want to restrict access to the API, we recommend using the [Besu authentication mechanism](Authentication.md) + If you want 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. diff --git a/docs/how-to/use-besu-api/json-rpc.md b/docs/how-to/use-besu-api/json-rpc.md index 0e5cbb7adfc..c7fe5c42394 100644 --- a/docs/how-to/use-besu-api/json-rpc.md +++ b/docs/how-to/use-besu-api/json-rpc.md @@ -2,9 +2,9 @@ description: How to access the Hyperledger Besu API using JSON-RPC --- -# JSON-RPC over HTTP, WebSockets and IPC +# JSON-RPC over HTTP, WebSocket, and IPC -To enable JSON-RPC over HTTP or WebSockets, use the +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. @@ -112,12 +112,12 @@ Send the requests as an array, and receive an array of responses. }] ``` -### WebSockets +### WebSocket -To make RPC requests over WebSockets, you can use [`wscat`](https://github.com/websockets/wscat), a +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 WebSockets server using `wscat` (you only need to connect once per session): +First connect to the WebSocket server using `wscat` (you only need to connect once per session): ```bash wscat -c ws:// @@ -150,7 +150,7 @@ Send individual requests as a JSON data package at each prompt. } ``` -You can use `wscat` to make multiple RPC requests over WebSockets at the same time. +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. !!! example @@ -177,8 +177,8 @@ Send the requests as an array, and receive an array of responses. !!! note - `wscat` does not support headers. [Authentication](Authentication.md) requires you to pass an - authentication token in the request header. To use authentication with WebSockets, you require + `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 @@ -266,6 +266,6 @@ The block parameter can have the following values: !!! note - If [synchronizing in FAST mode](../../../Reference/CLI/CLI-Syntax.md#sync-mode), most + If [synchronizing in FAST mode](../../reference/cli/options.md#sync-mode), most historical world state data is unavailable. Any methods attempting to access unavailable world state data return `null`. diff --git a/docs/how-to/use-besu-api/rpc-pubsub.md b/docs/how-to/use-besu-api/rpc-pubsub.md index c6a6cfc1fed..4a6eb1122ec 100644 --- a/docs/how-to/use-besu-api/rpc-pubsub.md +++ b/docs/how-to/use-besu-api/rpc-pubsub.md @@ -19,9 +19,9 @@ Methods specific to RPC Pub/Sub are: !!!important - Unlike other [Hyperledger Besu API methods](../../../Reference/API-Methods.md), you cannot call + 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/CLI-Syntax.md#rpc-ws-enabled) option to enable the + [`--rpc-ws-enabled`](../../reference/cli/options.md#rpc-ws-enabled) option to enable the WebSockets JSON-RPC service. ### Using RPC Pub/Sub diff --git a/docs/private-networks/concepts/permissioning/index.md b/docs/private-networks/concepts/permissioning/index.md index c5bbd94ca5b..0e21d7c397b 100644 --- a/docs/private-networks/concepts/permissioning/index.md +++ b/docs/private-networks/concepts/permissioning/index.md @@ -16,7 +16,7 @@ specified nodes and accounts to access the network. action to prevent the bad actor adding to the chain but they cannot prevent the bad actor from allowing access to the chain. - Besu also implements [privacy](../Privacy/Privacy-Overview.md). + Besu also implements [privacy](../privacy/index.md). ## Node permissioning diff --git a/docs/private-networks/concepts/permissioning/onchain.md b/docs/private-networks/concepts/permissioning/onchain.md index e7da1cab71a..6e70b0a1bc4 100644 --- a/docs/private-networks/concepts/permissioning/onchain.md +++ b/docs/private-networks/concepts/permissioning/onchain.md @@ -43,8 +43,7 @@ The permissioning smart contracts provided in the The permissioning contract has multiple interfaces, and each interface maps to a specific version of the [Enterprise Ethereum Alliance Client Specification](https://entethalliance.org/technical-specifications/). - Ensure that you specify the [permissioning contract interface](../../HowTo/Limit-Access/Specify-Perm-Version.md) - being used when starting Besu. + Ensure that you specify the permissioning contract interface being used when starting Besu. ## Permissioning management dapp @@ -61,20 +60,20 @@ Permissioning implements three allowlists: !!! caution "Using account permissioning and privacy" Account permissioning is incompatible with - [random key signing](../../HowTo/Use-Privacy/Sign-Privacy-Marker-Transactions.md) for - [privacy marker transactions](../Privacy/Private-Transaction-Processing.md). + [random key signing](../../how-to/use-privacy/sign-pmts.md) for + [privacy marker transactions](../privacy/private-transactions/processing.md). If using account permissioning and privacy, a signing key must be specified using the - [`--privacy-marker-transaction-signing-key-file`](../../Reference/CLI/CLI-Syntax.md#privacy-marker-transaction-signing-key-file) + [`--privacy-marker-transaction-signing-key-file`](../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) command line option and the corresponding public key included in the accounts allowlist. !!! tip - If nodes are not connecting as expected, set the [log level to `TRACE`](../../Reference/CLI/CLI-Syntax.md#logging) + If nodes are not connecting as expected, set the [log level to `TRACE`](../../../reference/cli/options.md#logging) and search for messages containing `Node permissioning` to identify the issue. - Ensure the [`--p2p-host`](../../Reference/CLI/CLI-Syntax.md#p2p-host) command line option has been + Ensure the [`--p2p-host`](../../../reference/cli/options.md#p2p-host) command line option has been correctly configured for all nodes with the externally accessible address. diff --git a/docs/private-networks/concepts/privacy/flexible-privacy.md b/docs/private-networks/concepts/privacy/flexible-privacy.md index e573bfa6df3..1630bd10370 100644 --- a/docs/private-networks/concepts/privacy/flexible-privacy.md +++ b/docs/private-networks/concepts/privacy/flexible-privacy.md @@ -27,7 +27,7 @@ You can [add and remove members to and from flexible privacy groups](../../how-t group functionality in future versions. We don't recommended creating flexible privacy groups in a chain with existing - [offchain privacy groups](Privacy-Groups.md). + [offchain privacy groups](privacy-groups.md). ## Group management contracts diff --git a/docs/private-networks/concepts/privacy/index.md b/docs/private-networks/concepts/privacy/index.md index dd28b969efc..108a024de7e 100644 --- a/docs/private-networks/concepts/privacy/index.md +++ b/docs/private-networks/concepts/privacy/index.md @@ -18,11 +18,11 @@ participants. Other participants cannot access the transaction content or list o For production environments requiring private transactions: * We recommend using a network with a consensus mechanism supporting transaction finality. For - example, [IBFT 2.0](../../HowTo/Configure/Consensus-Protocols/IBFT.md). + example, [IBFT 2.0](../../how-to/configure/consensus/ibft.md). * Tessera must be [highly available and run in a separate instance to Besu]. - Using private transactions with [pruning](../Pruning.md) or - [fast sync](../../Reference/CLI/CLI-Syntax.md#sync-mode) is not supported. + Using private transactions with [pruning] or + [fast sync](../../../reference/cli/options.md#sync-mode) is not supported. ## Private transaction manager @@ -80,3 +80,4 @@ occur. [highly available and run in a separate instance to Besu]: ../../how-to/use-privacy/tessera.md +[pruning]: ../../../concepts/Pruning.md diff --git a/docs/private-networks/concepts/privacy/multi-tenancy.md b/docs/private-networks/concepts/privacy/multi-tenancy.md index c39160fcb69..304a77b58cd 100644 --- a/docs/private-networks/concepts/privacy/multi-tenancy.md +++ b/docs/private-networks/concepts/privacy/multi-tenancy.md @@ -18,7 +18,7 @@ is a _tenant_, and the operator is the _owner_ of the Besu and Tessera node. !!! important The operator is responsible for - [configuring multi-tenancy](../../Tutorials/Privacy/Configuring-Multi-Tenancy.md), and has + [configuring multi-tenancy](../../tutorials/privacy/multi-tenancy.md), and has access to all tenant data. ![Multi-tenancy](../../../images/Multi-tenancy.png) @@ -31,8 +31,8 @@ is a _tenant_, and the operator is the _owner_ of the Besu and Tessera node. If not configured to allow access only by the multi-tenant Besu node, other Tessera clients, including other Besu nodes, might be able to access tenant data. - To secure access, you can [configure TLS between Besu and Tessera](../TLS.md) with the - [`WHITELIST`](https://docs.tessera.consensys.net/en/stable/HowTo/Configure/TLS/#whitelist) + To secure access, you can [configure TLS between Besu and Tessera](../../how-to/configure/tls/client-and-server.md) + with the [`WHITELIST`](https://docs.tessera.consensys.net/en/stable/HowTo/Configure/TLS/#whitelist) trust mode. Multi-tenancy validates that tenants have permission to use the specified HTTP or WebSocket diff --git a/docs/private-networks/concepts/privacy/plugin.md b/docs/private-networks/concepts/privacy/plugin.md index fff4498d81c..b54c865d857 100644 --- a/docs/private-networks/concepts/privacy/plugin.md +++ b/docs/private-networks/concepts/privacy/plugin.md @@ -31,7 +31,7 @@ for the PMT is. When submitting a private transaction using [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction), the signed transaction must be sent to `0x000000000000000000000000000000000000007a` to indicate which -[privacy precompiled contract](ansaction-Processing.md) is being used. +[privacy precompiled contract](private-transactions/processing.md) is being used. The transaction flow is as follows: diff --git a/docs/private-networks/concepts/privacy/privacy-groups.md b/docs/private-networks/concepts/privacy/privacy-groups.md index 8ebfcc8df99..70737ca2e65 100644 --- a/docs/private-networks/concepts/privacy/privacy-groups.md +++ b/docs/private-networks/concepts/privacy/privacy-groups.md @@ -22,7 +22,7 @@ state. The privacy group implementations described below are offchain privacy groups and cannot have their group membership updated. - [Flexible privacy groups are an early access feature](Flexible-PrivacyGroups.md). + [Flexible privacy groups are an early access feature](flexible-privacy.md). ## Privacy types diff --git a/docs/private-networks/concepts/privacy/private-transactions/index.md b/docs/private-networks/concepts/privacy/private-transactions/index.md index 236209ea699..355700706ed 100644 --- a/docs/private-networks/concepts/privacy/private-transactions/index.md +++ b/docs/private-networks/concepts/privacy/private-transactions/index.md @@ -33,7 +33,7 @@ not the private transaction itself. Because gas isn't required in private transactions, inefficient contracts deployed accidentally or deliberately can cause performance issues in privacy-enabled networks. - Ensure your network has a mechanism to [establish trust offchain](Privacy-Overview.md#privacy-enabled-networks). + Ensure your network has a mechanism to [establish trust offchain](../index.md#privacy-enabled-networks). You can [create and send private transactions](../../../how-to/send-transactions/private-transactions.md). @@ -62,7 +62,7 @@ Since the PMT is a public transaction, the PMT nonce is the public nonce for the ### Private transaction nonce -Besu maintains separate private states for each [privacy group](oups.md). +Besu maintains separate private states for each [privacy group](../privacy-groups.md). The private transaction nonce for an account is specific to the privacy group. That is, the nonce for account A for privacy group ABC is different to the nonce for account A for privacy group AB. @@ -118,8 +118,8 @@ You can manage private nonces in multiple ways: !!! note - You can use [`priv_getTransactionCount`](../../Reference/API-Methods.md#priv_gettransactioncount) or - [`priv_getEeaTransactionCount`](../../Reference/API-Methods.md#priv_geteeatransactioncount) to get the nonce for + You can use [`priv_getTransactionCount`](../../../../reference/api/index.md#priv_gettransactioncount) or + [`priv_getEeaTransactionCount`](../../../../reference/api/index.md#priv_geteeatransactioncount) to get the nonce for an account for the specified privacy group or participants. * Use [Orchestrate](https://docs.orchestrate.consensys.net/en/stable/) for nonce management. @@ -128,5 +128,5 @@ You can manage private nonces in multiple ways: !!! tip The [web3js-quorum library includes an example](https://github.com/ConsenSys/web3js-quorum/blob/9a0f9eb1b91a4a0d93801f77782b509ae2e7314c/example/concurrentPrivateTransactions/concurrentPrivateTransactions.js) - of nonce management when [sending concurrent private transactions](../../HowTo/Send-Transactions/Concurrent-Private-Transactions.md). + of nonce management when [sending concurrent private transactions](../../../how-to/send-transactions/concurrent-private-transactions.md). The example calculates the correct nonces for the private transactions and PMTs outside of Besu. diff --git a/docs/private-networks/concepts/privacy/private-transactions/processing.md b/docs/private-networks/concepts/privacy/private-transactions/processing.md index 3ecb356a4f5..901c28eea03 100644 --- a/docs/private-networks/concepts/privacy/private-transactions/processing.md +++ b/docs/private-networks/concepts/privacy/private-transactions/processing.md @@ -49,8 +49,8 @@ Private transaction processing is illustrated and described in the following dia !!! tip If you want to sign the PMT outside of Besu, use - [`priv_distributeRawTransaction`](../../HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md#priv_distributerawtransaction) - instead of [`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction). + [`priv_distributeRawTransaction`](../../../how-to/send-transactions/private-transactions.md#priv_distributerawtransaction) + instead of [`eea_sendRawTransaction`](../../../../reference/api/index.md#eea_sendrawtransaction). 1. Besu mines the PMT into a block and the PMT is distributed to all Ethereum nodes in the network. @@ -75,12 +75,13 @@ Private transaction processing is illustrated and described in the following dia !!! important * We recommend using a network with a consensus mechanism supporting transaction finality. For example, - [IBFT 2.0](../../HowTo/Configure/Consensus-Protocols/IBFT.md). - * Tessera must be [highly available and run in a separate instance to Besu](../../HowTo/Use-Privacy/Run-Tessera-With-Besu.md). + [IBFT 2.0](../../../how-to/configure/consensus/ibft.md). + * Tessera must be [highly available and run in a separate instance to Besu](../../../how-to/use-privacy/tessera.md). - Using private transactions with [pruning](../Pruning.md) or [fast sync](../../Reference/CLI/CLI-Syntax.md#sync-mode) + Using private transactions with [pruning] or [fast sync](../../../../reference/cli/options.md#sync-mode) is not supported. [signed with a random key or the key specified on the command line]: ../../../how-to/use-privacy/sign-pmts.md [highly available and run in a separate instance to Besu]: ../../../how-to/use-privacy/tessera.md +[pruning]: ../../../../concepts/Pruning.md diff --git a/docs/private-networks/get-started/start-node.md b/docs/private-networks/get-started/start-node.md new file mode 100644 index 00000000000..c305be2069f --- /dev/null +++ b/docs/private-networks/get-started/start-node.md @@ -0,0 +1,233 @@ +--- +description: Starting Hyperledger Besu +--- + +# Starting Hyperledger Besu + +You can use Besu nodes for varying purposes, as described in the [Overview](../../index.md). Nodes +can connect to the Ethereum Mainnet, public testnets such as Ropsten, or private networks. + +Use the [`besu`](../../reference/cli/options.md) command with the required command line options +to start a node. Alternatively, use the [launcher](#besu-launcher) to start Besu interactively +with the most common options. + +## Prerequisites + +[Besu Installed](../../get-started/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 +[Ropsten](#run-a-node-on-ropsten-testnet), [Rinkeby](#run-a-node-on-rinkeby-testnet), +[Goerli](#run-a-node-on-goerli-testnet), [Kiln](#run-a-node-on-kiln-testnet), +[Sepolia](#run-a-node-on-sepolia-testnet), and [Mainnet](#run-a-node-on-ethereum-mainnet). + +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](../how-to/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](../how-to/connect/sync-node.md#snap-synchronization) for a faster sync, by starting Besu +with [`--sync-mode=X_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). + +## 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. + +!!!example + + * `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" + } + } + ``` + +## 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/configure/configuration-file.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" +``` + +!!! caution + + The following settings are a security risk in production environments: + + * Enabling the HTTP JSON-RPC service + ([`--rpc-http-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled)) and setting + [`--rpc-http-host`](../../Reference/CLI/CLI-Syntax.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/CLI-Syntax.md#host-allowlist) to `"*"` + allows JSON-RPC API access from any host. + * Setting + [`--rpc-http-cors-origins`](../../Reference/CLI/CLI-Syntax.md#rpc-http-cors-origins) to + `"all"` or `"*"` allows cross-origin resource sharing (CORS) access from any domain. + +## Run a node on Ropsten testnet + +To run a node on Ropsten: + +```bash +besu --network=ropsten +``` + +To run a node on Ropsten with the HTTP JSON-RPC service enabled and allow Remix to access the node: + +```bash +besu --network=ropsten --rpc-http-enabled --rpc-http-cors-origins "http://remix.ethereum.org" +``` + +## Run a node on Rinkeby testnet + +To run a node on Rinkeby specifying a data directory: + +```bash +besu --network=rinkeby --data-path=/ +``` + +Where `` and `` are the path and directory to save the Rinkeby chain data +to. + +## 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. + +## Run a node on Kiln testnet + +You can [test Besu as an execution client](../tutorials/merge-testnet.md#start-besu) on the +[Kiln Merge testnet](https://blog.ethereum.org/2022/03/14/kiln-merge-testnet/). +You must also run a [consensus client](../concepts/the-merge.md#consensus-clients) with Besu on the Merge +testnet. +For example, [Teku](https://docs.teku.consensys.net/en/stable/). + +## 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. + +## 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 +``` + +## Besu launcher + +Use the Besu launcher to interactively configure and start a node with the most common options. The +launcher asks a series of questions and generates a [configuration file](../../how-to/configure/configuration-file.md). + +To run the Besu launcher: + +```bash +besu --Xlauncher +``` + +Answer each question, or press ++Enter++ to accept the default value. + +```bash +? Which Ethereum network would you like to use ? rinkeby +? Which synchronization mode? fast +? Do you want to enable pruning? no +? What is the data directory ? /Users/me/besu +? Do you want to enable the JSON-RPC HTTP service ? yes +? Do you want to configure the JSON-RPC options now ? yes +? What is the JSON RPC HTTP host address ? 127.0.0.1 +? What is the JSON RPC HTTP port ? 8545 +? Select the list of APIs to enable on JSON-RPC HTTP service [eth, net, web3] +? Do you want to enable the JSON-RPC Websocket service ? no +? Do you want to enable GraphQL functionality ? no +? Do you want to use Ethstats ? no +? Do you want to enable NAT ? no +? Do you want to enable mining ? no +``` + +If a configuration file is already present in the directory where the command is executed, +Besu will start and use the values in the configuration file. To force the launcher to interact +during a restart, use the `--Xlauncher-force` option, or delete the configuration +file. diff --git a/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md b/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md index 99654ab399d..f5c097da346 100644 --- a/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md +++ b/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md @@ -13,8 +13,8 @@ You can bypass voting and specify new validators using a transition in the genes !!! warning - In most cases, add or remove validators - [by voting or smart contract for QBFT](../Configure/Consensus-Protocols/QBFT.md#add-and-remove-validators); - or [by voting for IBFT 2.0](../Configure/Consensus-Protocols/IBFT.md#add-and-remove-validators). + [by voting or smart contract for QBFT](qbft.md#add-and-remove-validators); + or [by voting for IBFT 2.0](ibft.md#add-and-remove-validators). Use transitions only when voting isn't possible. Using transitions requires coordinating a rolling update of all the nodes in order to pick up the configuration at the correct block height. diff --git a/docs/private-networks/how-to/configure/consensus/clique.md b/docs/private-networks/how-to/configure/consensus/clique.md index 11c66f3530a..39d8641a948 100644 --- a/docs/private-networks/how-to/configure/consensus/clique.md +++ b/docs/private-networks/how-to/configure/consensus/clique.md @@ -75,11 +75,11 @@ The `extraData` property consists of: !!! example "One initial signer" - ![One Initial Signer](../../../images/CliqueOneIntialSigner.png) + ![One Initial Signer](../../../../images/CliqueOneIntialSigner.png) !!! example "Two initial signers" - ![Two Initial Signers](../../../images/CliqueTwoIntialSigners.png) + ![Two Initial Signers](../../../../images/CliqueTwoIntialSigners.png) ### Post-Merge configuration @@ -183,7 +183,7 @@ This may cause large, irresolvable forks in a network. !!! important - We recommend using a more updated consensus protocol such as [IBFT 2.0](IBFT.md) or [QBFT](QBFT.md). + We recommend using a more updated consensus protocol such as [IBFT 2.0](ibft.md) or [QBFT](qbft.md). ## Migrate from Clique to another consensus protocol diff --git a/docs/private-networks/how-to/configure/consensus/ibft.md b/docs/private-networks/how-to/configure/consensus/ibft.md index 9b389c45988..89292ae7599 100644 --- a/docs/private-networks/how-to/configure/consensus/ibft.md +++ b/docs/private-networks/how-to/configure/consensus/ibft.md @@ -25,7 +25,7 @@ You can [create a private network using IBFT](../../../tutorials/ibft/index.md). !!! tip You can use a plugin to securely store a validator's key using the - [`--security-module`](../../../Reference/CLI/CLI-Syntax.md#security-module) option. + [`--security-module`](../../../../reference/cli/options.md#security-module) option. ## Genesis file @@ -205,9 +205,9 @@ To enable them, specify the [`--rpc-http-api`](../../../../reference/cli/options The methods to add or remove validators are: -* [`ibft_getPendingVotes`](../../../../reference/api/index.md#ibft_getPendingVotes). -* [`ibft_proposeValidatorVote`](../../../../reference/api/index.md#ibft_proposeValidatorVote). -* [`ibft_discardValidatorVote`](../../../../reference/api/index.md#ibft_discardValidatorVote). +* [`ibft_getPendingVotes`](../../../../reference/api/index.md#ibft_getpendingvotes). +* [`ibft_proposeValidatorVote`](../../../../reference/api/index.md#ibft_proposevalidatorvote). +* [`ibft_discardValidatorVote`](../../../../reference/api/index.md#ibft_discardvalidatorvote). To view validator metrics for a specified block range, use [`ibft_getSignerMetrics`](../../../../reference/api/index.md#ibft_getsignermetrics). @@ -215,7 +215,7 @@ To view validator metrics for a specified block range, use !!! note If network conditions render it impossible to add and remove validators by voting, you can - [add and remove validators without voting](../../Troubleshoot/Add-Validators-Without-Voting.md). + [add and remove validators without voting](add-validators-without-voting.md). ### Add a validator diff --git a/docs/private-networks/how-to/configure/consensus/qbft.md b/docs/private-networks/how-to/configure/consensus/qbft.md index bf305af9e60..96369d2952c 100644 --- a/docs/private-networks/how-to/configure/consensus/qbft.md +++ b/docs/private-networks/how-to/configure/consensus/qbft.md @@ -24,7 +24,7 @@ You can [create a private network using QBFT](../../../tutorials/qbft.md). !!! tip You can use a plugin to securely store a validator's key using the - [`--security-module`](../../../Reference/CLI/CLI-Syntax.md#security-module) option. + [`--security-module`](../../../../reference/cli/options.md#security-module) option. ## Genesis file @@ -270,7 +270,7 @@ To tune the block timeout for your network deployment: !!! tip - View [`TRACE` logs](../../../Reference/API-Methods.md#admin_changeloglevel) to see round change + View [`TRACE` logs](../../../../reference/api/index.md#admin_changeloglevel) to see round change log messages. Use a [transition](#transitions) to update the `blockperiodseconds` in an existing network. @@ -330,7 +330,7 @@ To view validator metrics for a specified block range, use !!! note If network conditions render it impossible to add and remove validators by voting, you can - [add and remove validators without voting](../../Troubleshoot/Add-Validators-Without-Voting.md). + [add and remove validators without voting](add-validators-without-voting.md). #### Add a validator @@ -406,7 +406,7 @@ using a transaction, then obtain the contract address from the receipt and use t !!! note If network conditions render it impossible to add and remove validators using a smart contract, you can - [override smart contract validators](../../Troubleshoot/Add-Validators-Without-Voting.md#override-smart-contract-validators). + [override smart contract validators](add-validators-without-voting.md#override-smart-contract-validators). ### Minimum number of validators diff --git a/docs/private-networks/how-to/configure/free-gas.md b/docs/private-networks/how-to/configure/free-gas.md index b9c2bd9255d..56a7b6c599f 100644 --- a/docs/private-networks/how-to/configure/free-gas.md +++ b/docs/private-networks/how-to/configure/free-gas.md @@ -106,7 +106,7 @@ gas limit in Truffle to the maximum possible. !!! important Besu does not support private key management. To use Besu with Truffle, you must configure - a [Truffle wallet](../Develop-Dapps/Truffle.md). + a [Truffle wallet](../../../how-to/develop/truffle.md). ### Update `truffle-config.js` diff --git a/docs/private-networks/how-to/configure/tls/client-and-server.md b/docs/private-networks/how-to/configure/tls/client-and-server.md index 51d9d5ba026..fe4295ab068 100644 --- a/docs/private-networks/how-to/configure/tls/client-and-server.md +++ b/docs/private-networks/how-to/configure/tls/client-and-server.md @@ -81,17 +81,17 @@ The command line: !!! note - Set [`--rpc-http-tls-ca-clients-enabled`](../../../Reference/CLI/CLI-Syntax.md#rpc-http-tls-ca-clients-enabled) + Set [`--rpc-http-tls-ca-clients-enabled`](../../../../reference/cli/options.md#rpc-http-tls-ca-clients-enabled) to `true` to allow access to clients with signed and trusted root CAs. ## Configure server TLS Allow Besu to securely communicate with the server (Tessera). -**Server Prerequisites**: +**Server prerequisites**: * [Configure the server to allow TLS communication] -* Server's certificate information. +* Server's certificate information ### Create the known servers file diff --git a/docs/private-networks/how-to/connect/bootnodes.md b/docs/private-networks/how-to/connect/bootnodes.md index c650e2dcbe1..0bae4958571 100644 --- a/docs/private-networks/how-to/connect/bootnodes.md +++ b/docs/private-networks/how-to/connect/bootnodes.md @@ -14,8 +14,8 @@ Bootnodes are regular nodes used to discover other nodes. example, you run multiple nodes on Mainnet (discovery using bootnodes), but want to ensure your nodes are always connected (using static nodes). - To find peers, configure one or more bootnodes as described below. To configure a specific set - of peer connections, use [static nodes](Static-Nodes.md). + To find peers, configure one or more bootnodes. To configure a specific set + of peer connections, use [static nodes](../../../how-to/connect/static-nodes.md). ## Mainnet and public testnets diff --git a/docs/private-networks/how-to/monitor/splunk.md b/docs/private-networks/how-to/monitor/splunk.md index bb45b57e896..9ec8dd40c84 100644 --- a/docs/private-networks/how-to/monitor/splunk.md +++ b/docs/private-networks/how-to/monitor/splunk.md @@ -77,9 +77,9 @@ Docker Compose environment provided by Splunk. !!! note - If running [Besu as a Docker container](../Get-Started/Installation-Options/Run-Docker-Image.md), consider using + If running [Besu as a Docker container](../../../get-started/install/run-docker-image.md), consider using [Splunk Connect for Ethereum Docker Compose](#splunk-connect-for-ethereum-docker-compose) or - [Kubernetes](../Deploy/Kubernetes.md) instead of the Splunk Enterprise trial container. + [Kubernetes](../deploy/kubernetes.md) instead of the Splunk Enterprise trial container. ### Steps diff --git a/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md b/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md index 537efa4f109..7326ced6967 100644 --- a/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md +++ b/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md @@ -18,8 +18,8 @@ instead of [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendra !!! note - You can use [`priv_getTransactionCount`](../../Reference/API-Methods.md#priv_gettransactioncount) or - [`priv_getEeaTransactionCount`](../../Reference/API-Methods.md#priv_geteeatransactioncount) to get the nonce for + You can use [`priv_getTransactionCount`](../../../reference/api/index.md#priv_gettransactioncount) or + [`priv_getEeaTransactionCount`](../../../reference/api/index.md#priv_geteeatransactioncount) to get the nonce for an account for the specified privacy group or participants. Send the corresponding PMT using [`eth_sendRawTransaction`](../../../reference/api/index.md#eth_sendrawtransaction), @@ -37,6 +37,6 @@ This method allows you to create and send the PMT yourself rather than The [web3js-quorum library](https://github.com/ConsenSys/web3js-quorum/tree/master/example/concurrentPrivateTransactions) includes an example of how to send concurrent private transactions. - The example uses [offchain privacy groups](../../Concepts/Privacy/Privacy-Groups.md). - Use [`priv_getPrivacyPrecompileAddress`](../../Reference/API-Methods.md#priv_getprivacyprecompileaddress) to get the + The example uses [offchain privacy groups](../../concepts/privacy/privacy-groups.md). + Use [`priv_getPrivacyPrecompileAddress`](../../../reference/api/index.md#priv_getprivacyprecompileaddress) to get the precompile address to specify in the `to` field when creating the PMT. diff --git a/docs/private-networks/how-to/send-transactions/private-transactions.md b/docs/private-networks/how-to/send-transactions/private-transactions.md index 48927fd9ab5..ca9ec5237de 100644 --- a/docs/private-networks/how-to/send-transactions/private-transactions.md +++ b/docs/private-networks/how-to/send-transactions/private-transactions.md @@ -32,9 +32,9 @@ private transaction to the participating nodes, and signs and submits the PMT, a !!! note - If [sending concurrent transactions](Concurrent-Private-Transactions.md), you must use + If [sending concurrent transactions](concurrent-private-transactions.md), you must use [`priv_distributeRawTransaction`](#priv_distributerawtransaction) instead of - [`eea_sendRawTransaction`](../../Reference/API-Methods.md#eea_sendrawtransaction). + [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction). ## `priv_distributeRawTransaction` @@ -90,7 +90,7 @@ and submitting the PMT yourself instead of having it signed by the Besu node, gi } ``` - Send the enclave key in the `data` field, and the [privacy precompile address](../../Reference/API-Methods.md#priv_getprivacyprecompileaddress) in the `to` field of `eth_sendRawTransaction`: + Send the enclave key in the `data` field, and the [privacy precompile address](../../../reference/api/index.md#priv_getprivacyprecompileaddress) in the `to` field of `eth_sendRawTransaction`: ```json { @@ -158,7 +158,7 @@ private transactions to create a contract. !!! tip The `example` directory in the - [web3js-quorum client library](../Interact/Client-Libraries/web3js-quorum.md) contains examples of + [web3js-quorum client library](../use-privacy/web3js-quorum.md) contains examples of signing and encoding private transactions. diff --git a/docs/private-networks/how-to/send-transactions/revert-reason.md b/docs/private-networks/how-to/send-transactions/revert-reason.md index a3747348cab..f83c2851aec 100644 --- a/docs/private-networks/how-to/send-transactions/revert-reason.md +++ b/docs/private-networks/how-to/send-transactions/revert-reason.md @@ -64,7 +64,7 @@ the revert reason as an ABI-encoded string. revert reason in the transactions receipt's root hash means the revert reason is only available to nodes that execute the transaction when importing the block. That is, the revert reason is not available if using fast synchronization - ([`--sync-mode=FAST`](../../Reference/CLI/CLI-Syntax.md#sync-mode)). + ([`--sync-mode=FAST`](../../../reference/cli/options.md#sync-mode)). !!! example diff --git a/docs/private-networks/how-to/use-permissioning/local.md b/docs/private-networks/how-to/use-permissioning/local.md index 02a56382796..69320eb1620 100644 --- a/docs/private-networks/how-to/use-permissioning/local.md +++ b/docs/private-networks/how-to/use-permissioning/local.md @@ -116,11 +116,11 @@ Account allowlisting is at the node level. That is, each node in the network has !!! caution "Using account permissioning and privacy" Account permissioning is incompatible with - [random key signing](../Use-Privacy/Sign-Privacy-Marker-Transactions.md) for - [privacy marker transactions](../../Concepts/Privacy/Private-Transaction-Processing.md). + [random key signing](../use-privacy/sign-pmts.md) for + [privacy marker transactions](../../concepts/privacy/private-transactions/processing.md). If using account permissioning and privacy, a signing key must be specified using the - [`--privacy-marker-transaction-signing-key-file`](../../Reference/CLI/CLI-Syntax.md#privacy-marker-transaction-signing-key-file) + [`--privacy-marker-transaction-signing-key-file`](../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) command line option and the corresponding public key included in the accounts allowlist. Transaction validation against the accounts allowlist occurs at the following points: @@ -212,10 +212,10 @@ options. !!!note - The [`--permissions-accounts-config-file`](../../Reference/CLI/CLI-Syntax.md#permissions-accounts-config-file) - and [`permissions-nodes-config-file`](../../Reference/CLI/CLI-Syntax.md#permissions-nodes-config-file) + The [`--permissions-accounts-config-file`](../../../reference/cli/options.md#permissions-accounts-config-file) + and [`permissions-nodes-config-file`](../../../reference/cli/options.md#permissions-nodes-config-file) options are not used when running Besu from the - [Docker image](../Get-Started/Installation-Options/Run-Docker-Image.md). Use a bind mount to + [Docker image](../../../get-started/install/run-docker-image.md). Use a bind mount to [specify a permissions configuration file with Docker]. !!! example "Sample permissions configuration file" diff --git a/docs/private-networks/how-to/use-permissioning/onchain.md b/docs/private-networks/how-to/use-permissioning/onchain.md index 8fc8b79e6bc..a0f8ed61a8e 100644 --- a/docs/private-networks/how-to/use-permissioning/onchain.md +++ b/docs/private-networks/how-to/use-permissioning/onchain.md @@ -41,17 +41,17 @@ To remove a node from the nodes allowlist: If you add a running node, the node does not attempt to reconnect to the bootnode and synchronize until peer discovery restarts. To add an allowlisted node as a peer without waiting for peer discovery to restart, use - [`admin_addPeer`](../../Reference/API-Methods.md#admin_addpeer). + [`admin_addPeer`](../../../reference/api/index.md#admin_addpeer). If you add the node to the allowlist before starting the node, using `admin_addPeer` is not required because peer discovery is run on node startup. !!! tip - If nodes are not connecting as expected, set the [log level to `TRACE`](../../Reference/CLI/CLI-Syntax.md#logging) + If nodes are not connecting as expected, set the [log level to `TRACE`](../../../reference/cli/options.md#logging) and search for messages containing `Node permissioning` to identify the issue. - Ensure the [`--p2p-host`](../../Reference/CLI/CLI-Syntax.md#p2p-host) command line option has been + Ensure the [`--p2p-host`](../../../reference/cli/options.md#p2p-host) command line option has been correctly configured for all nodes with the externally accessible address. diff --git a/docs/private-networks/how-to/use-privacy/access-private-transactions.md b/docs/private-networks/how-to/use-privacy/access-private-transactions.md index 7c3deaba319..174a8fa43d9 100644 --- a/docs/private-networks/how-to/use-privacy/access-private-transactions.md +++ b/docs/private-networks/how-to/use-privacy/access-private-transactions.md @@ -31,7 +31,7 @@ was invalid (`0x2`). !!! example "Private transaction failure example" To deploy a private contract, you submit a transaction using - [`eea_sendRawTransaction`](../Send-Transactions/Creating-Sending-Private-Transactions.md). If + [`eea_sendRawTransaction`](../send-transactions/private-transactions.md). If contract deployment fails because of insufficient gas, the privacy marker transaction receipt has a status of success and the private transaction receipt has a status of failure. diff --git a/docs/private-networks/how-to/use-privacy/flexible.md b/docs/private-networks/how-to/use-privacy/flexible.md index 80a9a1eccbf..a3a26afe3ee 100644 --- a/docs/private-networks/how-to/use-privacy/flexible.md +++ b/docs/private-networks/how-to/use-privacy/flexible.md @@ -20,7 +20,7 @@ membership of [flexible privacy groups](../../concepts/privacy/flexible-privacy. !!! important - [Flexible privacy groups](../../Concepts/Privacy/Flexible-PrivacyGroups.md) are an early access + [Flexible privacy groups](../../concepts/privacy/flexible-privacy.md) are an early access feature. Don't use in production networks. The flexible privacy group interfaces may change between releases. There might not be an @@ -28,7 +28,7 @@ membership of [flexible privacy groups](../../concepts/privacy/flexible-privacy. group functionality in future versions. We don't recommend creating flexible privacy groups in a chain with existing - [offchain privacy groups](../../Concepts/Privacy/Privacy-Groups.md). + [offchain privacy groups](../../concepts/privacy/privacy-groups.md). ## Enabling flexible privacy groups diff --git a/docs/private-networks/how-to/use-privacy/privacy-groups.md b/docs/private-networks/how-to/use-privacy/privacy-groups.md index 0ecfa10bf34..2e57b36f6e0 100644 --- a/docs/private-networks/how-to/use-privacy/privacy-groups.md +++ b/docs/private-networks/how-to/use-privacy/privacy-groups.md @@ -20,6 +20,6 @@ groups: !!! tip You can find and delete - [EEA-compliant privacy groups](../../Concepts/Privacy/Privacy-Groups.md) using - [`priv_findPrivacyGroup`](../../Reference/API-Methods.md#priv_findprivacygroup) and - [`priv_deletePrivacyGroup`](../../Reference/API-Methods.md#priv_deleteprivacygroup). + [EEA-compliant privacy groups](../../concepts/privacy/privacy-groups.md) using + [`priv_findPrivacyGroup`](../../../reference/api/index.md#priv_findprivacygroup) and + [`priv_deletePrivacyGroup`](../../../reference/api/index.md#priv_deleteprivacygroup). diff --git a/docs/private-networks/how-to/use-privacy/sign-pmts.md b/docs/private-networks/how-to/use-privacy/sign-pmts.md index baad7761220..1d47af2b3bd 100644 --- a/docs/private-networks/how-to/use-privacy/sign-pmts.md +++ b/docs/private-networks/how-to/use-privacy/sign-pmts.md @@ -25,16 +25,16 @@ command line option when starting Besu. !!! caution "Using account permissioning and privacy" - You cannot use [Account permissioning] with random key signing. + You can't use [account permissioning] with random key signing. If using account permissioning and privacy, a signing key must be specified using the - [`--privacy-marker-transaction-signing-key-file`](../../Reference/CLI/CLI-Syntax.md#privacy-marker-transaction-signing-key-file) + [`--privacy-marker-transaction-signing-key-file`](../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) command line option and the corresponding public key included in the accounts allowlist. !!! note Besu signs privacy marker transactions during the - [private transaction process](../../Concepts/Privacy/Private-Transaction-Processing.md). + [private transaction process](../../concepts/privacy/private-transactions/processing.md). -[Account permissioning]: ../../concepts/permissioning/index.md#account-permissioning +[account permissioning]: ../../concepts/permissioning/index.md#account-permissioning diff --git a/docs/private-networks/how-to/use-privacy/tessera.md b/docs/private-networks/how-to/use-privacy/tessera.md index 5a7c38175b6..15854df0d96 100644 --- a/docs/private-networks/how-to/use-privacy/tessera.md +++ b/docs/private-networks/how-to/use-privacy/tessera.md @@ -18,14 +18,13 @@ and [run in a separate instance](#separate-instances) to Hyperledger Besu. !!! note - You can also [configure Besu for high availability](../Configure/Configure-HA/High-Availability.md) using load - balancers. + You can also [configure Besu for high availability] using load balancers. ## High availability Privacy requires you to [configure Tessera for high availability]. Tessera also requires [`orion` mode](https://docs.tessera.consensys.net/en/stable/HowTo/Configure/Orion-Mode/) -to be enabled if **not** running Besu in [GoQuorum compatible privacy mode](ompatible-privacy.md). +to be enabled if **not** running Besu in [GoQuorum compatible privacy mode](goquorum-compatible.md). To successfully distribute a private transaction, all private transaction participants must be online. If any participants are offline when submitting the private transaction, the transaction is @@ -48,3 +47,4 @@ enough memory. [configure Tessera for high availability]: https://consensys.net/docs/goquorum//en/stable/configure-and-manage/configure/high-availability/ +[configure Besu for high availability]: ../../../how-to/configure/Configure-HA diff --git a/docs/private-networks/tutorials/clique.md b/docs/private-networks/tutorials/clique.md index f3aee64035a..43c968935b6 100644 --- a/docs/private-networks/tutorials/clique.md +++ b/docs/private-networks/tutorials/clique.md @@ -113,7 +113,8 @@ Copy the following genesis definition to a file called `cliqueGenesis.json` and !!! note - We recommend specifying the latest [milestone](../../Reference/Config-Items.md#milestone-blocks) when creating the configuration file for a private network. + We recommend specifying the latest [milestone](../../reference/genesis-items.md#milestone-blocks) when creating + the genesis file for a private network. This ensures you are using the most up-to-date protocol and have access to the most recent opcodes. In `extraData`, replace `` with the @@ -260,8 +261,7 @@ Import accounts to MetaMask and send transactions, as described in the !!! info - Besu does not support - [private key management](../../HowTo/Send-Transactions/Account-Management.md). + Besu doesn't support [private key management](../../how-to/send-transactions.md). ## Stop the nodes diff --git a/docs/private-networks/tutorials/ethash.md b/docs/private-networks/tutorials/ethash.md index 6db99e3e661..9146608e5d0 100644 --- a/docs/private-networks/tutorials/ethash.md +++ b/docs/private-networks/tutorials/ethash.md @@ -84,7 +84,8 @@ the `Private-Network` directory: !!! note - We recommend specifying the latest [milestone](../../Reference/Config-Items.md#milestone-blocks) when creating the configuration file for a private network. + We recommend specifying the latest [milestone](../../reference/genesis-items.md#milestone-blocks) when creating + the genesis file for a private network. This ensures you are using the most up-to-date protocol and have access to the most recent opcodes. !!! warning @@ -208,8 +209,7 @@ Import accounts to MetaMask and send transactions as described in the !!! info - Besu does not support - [private key management](../../HowTo/Send-Transactions/Account-Management.md). + Besu doesn't support [private key management](../../how-to/send-transactions.md). Send transactions using `eth_sendRawTransaction` to [send ether or, deploy or invoke contracts](../../how-to/send-transactions.md). diff --git a/docs/private-networks/tutorials/ibft/index.md b/docs/private-networks/tutorials/ibft/index.md index 7951032ccbf..b5426b2b33e 100644 --- a/docs/private-networks/tutorials/ibft/index.md +++ b/docs/private-networks/tutorials/ibft/index.md @@ -105,7 +105,8 @@ in the `IBFT-Network` directory: !!! note - We recommend specifying the latest [milestone](../../Reference/Config-Items.md#milestone-blocks) when creating the configuration file for a private network. + We recommend specifying the latest [milestone](../../../reference/genesis-items.md#milestone-blocks) + when creating the configuration file for a private network. This ensures you are using the most up-to-date protocol and have access to the most recent opcodes. !!! warning @@ -364,8 +365,7 @@ Import accounts to MetaMask and send transactions as described in the !!! info - Besu does not support - [private key management](../../HowTo/Send-Transactions/Account-Management.md). + Besu doesn't support [private key management](../../../how-to/send-transactions.md). ## Stop the nodes diff --git a/docs/private-networks/tutorials/kubernetes/charts.md b/docs/private-networks/tutorials/kubernetes/charts.md index 89c3e077d35..b034a287a97 100644 --- a/docs/private-networks/tutorials/kubernetes/charts.md +++ b/docs/private-networks/tutorials/kubernetes/charts.md @@ -88,7 +88,7 @@ This tutorial isolates groups of resources (for example, StatefulSets and Servic The rest of this tutorial uses `besu` as the namespace, but you're free to pick any name when deploying, as long as it's consistent across the - [infrastructure scripts](./Create-Cluster.md) and charts. + [infrastructure scripts](cluster.md) and charts. Run the following in a terminal window: @@ -174,7 +174,7 @@ or on the command line `kubectl -n quorum get services quorum-monitoring-ingress !!! note We refer to the ingress here as `external-nginx` because it deals with monitoring endpoints specifically. We - also deploy a second ingress called `network-ingress` which is for the blockchain nodes only in [step 8](#8-connecting-to-the-node-from-your-local-machine-via-an-ingress) + also deploy a second ingress called `network-ingress` which is for the blockchain nodes only in [step 8](#9-connect-to-the-node-from-your-local-machine-via-an-ingress) ![`k8s-ingress-external`](../../../images/kubernetes-ingress-ip.png) @@ -403,7 +403,7 @@ To add (or remove) more validators to the initial validator pool, you need to de and then [vote](../../how-to/configure/consensus/ibft.md#add-and-remove-validators) that node in. The vote API call must be made on a majority of the existing pool and the new node will then become a validator. -Please refer to the [Ingress Section](#8-connecting-to-the-node-from-your-local-machine-via-an-ingress) for details on +Please refer to the [Ingress Section](#9-connect-to-the-node-from-your-local-machine-via-an-ingress) for details on making the API calls from your local machine or equivalent. ### 8. Deploy RPC or Transaction nodes @@ -445,7 +445,7 @@ Logs for Besu resemble the following: !!! note - In the examples above we use `member-1` and `rpc-1` as release names for the deployments. You can pick any release + In these examples we use `member-1` and `rpc-1` as release names for the deployments. You can pick any release name that you'd like to use in place of those as per your requirements. ### 9. Connect to the node from your local machine via an ingress diff --git a/docs/private-networks/tutorials/kubernetes/nat-manager.md b/docs/private-networks/tutorials/kubernetes/nat-manager.md index ae7500ce0af..3b3e6807586 100644 --- a/docs/private-networks/tutorials/kubernetes/nat-manager.md +++ b/docs/private-networks/tutorials/kubernetes/nat-manager.md @@ -153,8 +153,8 @@ When steps 1 and 2 are completed, deploy Besu using the following YAML example: Automatic detection error messages do not prevent you to use Besu. - Try the fix indicated for each error or use [`--nat-method=KUBERNETES`](../../HowTo/Find-and-Connect/Specifying-NAT.md#kubernetes) CLI option - and [set IP address and port manually](../../HowTo/Find-and-Connect/Configuring-Ports.md). + Try the fix indicated for each error or use [`--nat-method=KUBERNETES`](../../../how-to/connect/specify-nat.md#kubernetes) CLI option + and [set IP address and port manually](../../../how-to/connect/configure-ports.md). Possible errors messages for Kubernetes automatic detection failure: diff --git a/docs/private-networks/tutorials/permissioning/index.md b/docs/private-networks/tutorials/permissioning/index.md index da9cc2e2771..639e335b19a 100644 --- a/docs/private-networks/tutorials/permissioning/index.md +++ b/docs/private-networks/tutorials/permissioning/index.md @@ -420,8 +420,7 @@ Import the first account from the genesis file into MetaMask and send transactio !!! info - Besu does not support - [private key management](../../HowTo/Send-Transactions/Account-Management.md). + Besu doesn't support [private key management](../../../how-to/send-transactions.md). ### Try sending a transaction from an account not in the accounts allowlist diff --git a/docs/private-networks/tutorials/permissioning/onchain.md b/docs/private-networks/tutorials/permissioning/onchain.md index a3adfda6ac4..a4850960873 100644 --- a/docs/private-networks/tutorials/permissioning/onchain.md +++ b/docs/private-networks/tutorials/permissioning/onchain.md @@ -11,7 +11,7 @@ This tutorial configures permissioning on a [IBFT 2.0 proof of authority (PoA)] !!! note - Production environments require a Web server to [host the permissioning management dapp](../../HowTo/Deploy/Production.md). + Production environments require a Web server to [host the permissioning management dapp](../../how-to/use-permissioning/onchain.md). ## Prerequisites @@ -182,7 +182,7 @@ the `alloc` section of the contract: The permissioning contract has multiple interfaces, and each interface maps to a specific version of the [Enterprise Ethereum Alliance Client Specification](https://entethalliance.org/technical-specifications/). - Ensure that you specify the [permissioning contract interface](../../HowTo/Limit-Access/Specify-Perm-Version.md) + Ensure that you specify the [permissioning contract interface](../../how-to/use-permissioning/onchain.md) being used when starting Besu. ### 6. Copy the node private keys to the node directories @@ -245,7 +245,7 @@ Create the following environment variables and set to the specified values: To allow MetaMask to connect, the node must have JSON-RPC HTTP enabled, and have `--rpc-http-cors-origins` set to allow MetaMask. - If your network is not a [free gas network](../../HowTo/Configure/FreeGas.md), the account used + If your network is not a [free gas network](../../how-to/configure/free-gas.md), the account used to interact with the permissioning contracts must have a balance. Start the first node with command line options to enable onchain permissioning and the location of @@ -324,7 +324,7 @@ The migration logs the addresses of the Admin and Rules contracts. !!! note Production environments require a Web server to - [host the permissioning management dapp](../../HowTo/Deploy/Production.md). + [host the permissioning management dapp](../../how-to/use-permissioning/onchain.md). 1. In the `permissioning-smart-contracts` directory, start the Web server serving the dapp: diff --git a/docs/private-networks/tutorials/privacy/index.md b/docs/private-networks/tutorials/privacy/index.md index b1ca9c9ca62..b9bd33eea86 100644 --- a/docs/private-networks/tutorials/privacy/index.md +++ b/docs/private-networks/tutorials/privacy/index.md @@ -358,9 +358,9 @@ The command line specifies privacy options: !!! note Use the - [`--privacy-marker-transaction-signing-key-file`](../../Reference/CLI/CLI-Syntax.md#privacy-marker-transaction-signing-key-file) + [`--privacy-marker-transaction-signing-key-file`](../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) command line option to sign - [privacy marker transactions](../../Concepts/Privacy/Private-Transaction-Processing.md) using a + [privacy marker transactions](../../../concepts/privacy/private-transactions/processing.md) using a supplied key. The command line option is mandatory in privacy-enabled paid gas networks. When the node starts, the [enode URL](../../../concepts/node-keys.md#enode-url) displays. Copy the @@ -388,10 +388,10 @@ Node-1 as the bootnode: The command line specifies the same options as for Node-1 with different ports and Tessera node URL. The [`--bootnodes`](../../../reference/cli/options.md#bootnodes) option specifies the enode URL of Node-1. -!!!note +!!! note - When running Besu from the [Docker image](../../HowTo/Get-Started/Installation-Options/Run-Docker-Image.md), - [expose ports](../../HowTo/Get-Started/Installation-Options/Run-Docker-Image.md#exposing-ports). + When running Besu from the [Docker image](../../../get-started/install/run-docker-image.md), + [expose ports](../../../get-started/install/run-docker-image.md#expose-ports). ## 7. Start Besu Node-3 diff --git a/docs/private-networks/tutorials/privacy/multi-tenancy.md b/docs/private-networks/tutorials/privacy/multi-tenancy.md index 234aa485a3c..d8914339b2f 100644 --- a/docs/private-networks/tutorials/privacy/multi-tenancy.md +++ b/docs/private-networks/tutorials/privacy/multi-tenancy.md @@ -132,7 +132,7 @@ In the `Node-1/Tessera` directory, update the `tessera.conf` file by adding the !!! note - If you are running Besu in [GoQuorum-compatible privacy mode](../../HowTo/Use-Privacy/Use-GoQuorum-compatible-privacy.md), + If you are running Besu in [GoQuorum-compatible privacy mode](../../how-to/use-privacy/goquorum-compatible.md), disable [`orion` mode](https://docs.tessera.consensys.net/en/stable/HowTo/Configure/Orion-Mode/) by removing the line `"mode": "orion",` from the Tessera configuration file. @@ -166,10 +166,10 @@ The command line specifies privacy options: !!! note - [`--rpc-http-authentication-jwt-public-key-file`](../../Reference/CLI/CLI-Syntax.md#rpc-http-authentication-jwt-public-key-file) + [`--rpc-http-authentication-jwt-public-key-file`](../../../reference/cli/options.md#rpc-http-authentication-jwt-public-key-file) is only required when using [JWT public key authentication]. If using [username and password authentication], use - [`--rpc-http-authentication-credentials-file`](../../Reference/CLI/CLI-Syntax.md#rpc-http-authentication-credentials-file) + [`--rpc-http-authentication-credentials-file`](../../../reference/cli/options.md#rpc-http-authentication-credentials-file) instead. [Start the remaining Besu nodes](index.md#7-start-besu-node-2). diff --git a/docs/private-networks/tutorials/privacy/web3js-quorum.md b/docs/private-networks/tutorials/privacy/web3js-quorum.md index 2ccb3f5e0ab..f6f4075d976 100644 --- a/docs/private-networks/tutorials/privacy/web3js-quorum.md +++ b/docs/private-networks/tutorials/privacy/web3js-quorum.md @@ -15,7 +15,7 @@ To use the examples provided in the web3js-quorum library with !!! note - This example uses 3 of the 4 nodes configured in the [privacy tutorial](Configuring-Privacy.md). + This example uses 3 of the 4 nodes configured in the [privacy tutorial](index.md). 1. Clone the **ConsenSys/web3js-quorum** repository: @@ -58,7 +58,7 @@ To use the examples provided in the web3js-quorum library with !!! note If you receive a `Method not enabled` error, ensure you enabled the appropriate APIs - using the [`--rpc-http-api`](../../Reference/CLI/CLI-Syntax.md#rpc-http-api) + using the [`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api) 1. Copy the contract address from the private transaction receipt and set the `CONTRACT_ADDRESS` environment variable: diff --git a/docs/private-networks/tutorials/qbft.md b/docs/private-networks/tutorials/qbft.md index beaa2830c65..4b13afe0154 100644 --- a/docs/private-networks/tutorials/qbft.md +++ b/docs/private-networks/tutorials/qbft.md @@ -109,7 +109,8 @@ in the `QBFT-Network` directory: !!! note - We recommend specifying the latest [milestone](../../Reference/Config-Items.md#milestone-blocks) when creating the configuration file for a private network. + We recommend specifying the latest [milestone](../../reference/genesis-items.md#milestone-blocks) + when creating the genesis file for a private network. This ensures you are using the most up-to-date protocol and have access to the most recent opcodes. !!! warning @@ -362,8 +363,7 @@ to MetaMask and send transactions as described in the [created for each node](#3-generate-node-keys-and-a-genesis-file) has the node address as the name. - Besu does not support - [private key management](../../HowTo/Send-Transactions/Account-Management.md). + Besu doesn't support [private key management](../../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]. diff --git a/docs/private-networks/tutorials/quickstart.md b/docs/private-networks/tutorials/quickstart.md index 6c958397e4a..577015ebe91 100644 --- a/docs/private-networks/tutorials/quickstart.md +++ b/docs/private-networks/tutorials/quickstart.md @@ -48,7 +48,7 @@ Enter `n` for [Codefi Orchestrate](https://docs.orchestrate.consensys.net/en/sta !!! 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/Privacy-Example.md), which details how to send private + 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 @@ -249,8 +249,7 @@ You can use [MetaMask](https://metamask.io/) to send a transaction on your priva !!! note - Besu doesn't incorporate - [account management](../HowTo/Send-Transactions/Account-Management.md). + Besu doesn't incorporate [account management](../../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 @@ -269,7 +268,7 @@ You can use [MetaMask](https://metamask.io/) to send a transaction on your priva !!! tip - You can use a zero gas price here as this private test network is a [free gas network](../HowTo/Configure/FreeGas.md), + 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. diff --git a/docs/public-networks/get-started/start-node.md b/docs/public-networks/get-started/start-node.md index c305be2069f..5afe65432d8 100644 --- a/docs/public-networks/get-started/start-node.md +++ b/docs/public-networks/get-started/start-node.md @@ -120,13 +120,13 @@ data-path="/tmp/tmpdata-path" The following settings are a security risk in production environments: * Enabling the HTTP JSON-RPC service - ([`--rpc-http-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled)) and setting - [`--rpc-http-host`](../../Reference/CLI/CLI-Syntax.md#rpc-http-host) to 0.0.0.0 exposes the + ([`--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/CLI-Syntax.md#host-allowlist) to `"*"` + * 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/CLI-Syntax.md#rpc-http-cors-origins) to + [`--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 Ropsten testnet diff --git a/docs/public-networks/how-to/connect/sync-node.md b/docs/public-networks/how-to/connect/sync-node.md index 52de444c440..1f558e716b1 100644 --- a/docs/public-networks/how-to/connect/sync-node.md +++ b/docs/public-networks/how-to/connect/sync-node.md @@ -84,8 +84,8 @@ You can observe the `besu_synchronizer_fast_sync_*` and `besu_synchronizer_world because snap sync can be faster by several days. If your snap sync completes successfully, you have the correct world state. - We recommend using snap sync with the [Bonsai](Data-Storage-Formats.md#bonsai-tries) data storage format for the - fastest sync and lowest storage requirements. + 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=X_SNAP`](../../../reference/cli/options.md#sync-mode). You need Besu version 22.4.0 or later to use snap sync. @@ -125,8 +125,8 @@ difficulty as in the following example. !!! note - If using [Clique](../HowTo/Configure/Consensus-Protocols/Clique.md) consensus, the checkpoint - must be the beginning of an epoch. + If using [Clique](../../../private-networks/how-to/configure/consensus/clique.md) consensus, the + checkpoint must be the beginning of an epoch. Checkpoints are currently already defined in the network configurations for Ethereum Mainnet and the Ropsten and Goerli testnets. diff --git a/docs/reference/api/index.md b/docs/reference/api/index.md index f015be4f970..01f390cc0fd 100644 --- a/docs/reference/api/index.md +++ b/docs/reference/api/index.md @@ -7,8 +7,8 @@ description: Hyperledger Besu JSON-RPC API methods reference !!! attention * 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/CLI-Syntax.md#rpc-http-host) or - [--rpc-http-port](CLI/CLI-Syntax.md#rpc-http-port) options, update the endpoint. + 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. * Except for the examples made on the Ropsten network, the example requests are made against private networks. Depending on network configuration and activity, your example results might be different. @@ -22,8 +22,8 @@ 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/CLI-Syntax.md#rpc-http-api) or - [`--rpc-ws-api`](CLI/CLI-Syntax.md#rpc-ws-api) options. + 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` @@ -32,7 +32,7 @@ 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. + [enode URL](../../concepts/node-keys.md#enode-url) is correct. #### Parameters @@ -142,7 +142,7 @@ Generates cached log bloom indexes for blocks. APIs such as [`eth_getLogs`](#eth !!! tip Manually executing `admin_generateLogBloomCache` is not required unless the - [`--auto-log-bloom-caching-enabled`](CLI/CLI-Syntax.md#auto-log-bloom-caching-enabled) command + [`--auto-log-bloom-caching-enabled`](../cli/options.md#auto-log-bloom-caching-enabled) command line option is set to false. !!! note @@ -321,7 +321,7 @@ None 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`](../HowTo/Find-and-Connect/Specifying-NAT.md). + `listenAddr` is defined by [`--nat-method`](../../how-to/connect/specify-nat.md). !!! example @@ -505,8 +505,8 @@ The `CLIQUE` API methods provide access to the [Clique](../../private-networks/h !!! note The `CLIQUE` API methods are not enabled by default for JSON-RPC. To enable the `CLIQUE` API - methods use the [`--rpc-http-api`](CLI/CLI-Syntax.md#rpc-http-api) or - [`--rpc-ws-api`](CLI/CLI-Syntax.md#rpc-ws-api) options. + methods use the [`--rpc-http-api`](../cli/options.md#rpc-http-api) or + [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) options. ### `clique_discard` @@ -784,8 +784,8 @@ We recommend using the [`TRACE` API](#trace-methods) for production use over the !!! 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/CLI-Syntax.md#rpc-http-api) or - [`--rpc-ws-api`](CLI/CLI-Syntax.md#rpc-ws-api) options. + 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` @@ -1659,8 +1659,8 @@ The `EEA` API methods provide functionality for [private transactions](../../pri !!! note The `EEA` API methods are not enabled by default for JSON-RPC. To enable the `EEA` API methods, - use the [`--rpc-http-api`](CLI/CLI-Syntax.md#rpc-http-api) or - [`--rpc-ws-api`](CLI/CLI-Syntax.md#rpc-ws-api) options. + use the [`--rpc-http-api`](../cli/options.md#rpc-http-api) or + [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) options. ### `eea_sendRawTransaction` @@ -1684,14 +1684,14 @@ transaction data using `eea_sendRawTransaction`. For production systems requiring private transactions, use a network with a consensus mechanism supporting transaction finality to make sure the private state does not become inconsistent - with the chain. For example, [IBFT 2.0](../HowTo/Configure/Consensus-Protocols/IBFT.md) - and [QBFT](../HowTo/Configure/Consensus-Protocols/QBFT.md) provide the required finality. + with the chain. For example, [IBFT 2.0](../../private-networks/how-to/configure/consensus/ibft.md) + and [QBFT](../../private-networks/how-to/configure/consensus/qbft.mdd) provide the required finality. - Using private transactions with [pruning](../Concepts/Pruning.md) or - [fast sync](CLI/CLI-Syntax.md#sync-mode) is not supported. + Using private transactions with [pruning](../../public-networks/how-to/connect/sync-node.md) or + [fast sync](../cli/options.md#sync-mode) is not supported. - Besu does not implement - [`eea_sendTransaction`](../HowTo/Send-Transactions/Account-Management.md). + Besu doesn't implement + [`eea_sendTransaction`](../../how-to/send-transactions.md). [EthSigner](https://docs.ethsigner.consensys.net/en/latest/) provides transaction signing and implements [`eea_sendTransaction`](https://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/#eea_sendtransaction). @@ -1740,7 +1740,7 @@ The `ETH` API methods allow you to interact with the blockchain. !!! note - Methods with an equivalent [GraphQL](../HowTo/Interact/APIs/GraphQL.md) query include a GraphQL + 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]. @@ -1751,7 +1751,7 @@ Returns a list of account addresses a client owns. !!!note This method returns an empty object because Besu - [doesn't support key management](../HowTo/Send-Transactions/Account-Management.md) inside the + [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 @@ -1873,7 +1873,9 @@ the `eth_call` error response includes the [revert reason](../../private-network !!! note - By default, `eth_call` does not fail if the sender account has an insufficient balance. This is done by setting the balance of the account to a large amount of ether. To enforce balance rules, set the [`strict` parameter](API-Objects.md#transaction-call-object) in the transaction call object to `true`. + By default, `eth_call` does not fail if the sender account has an insufficient balance. + This is done by setting the balance of the account to a large amount of ether. + To enforce balance rules, set the [`strict` parameter](objects.md#transaction-call-object) in the transaction call object to `true`. #### Returns @@ -1941,7 +1943,8 @@ the `eth_call` error response includes the [revert reason](../../private-network !!! example "Example of a simulated contract creation" - The following example creates a simulated contract by not including the `to` parameter from the [transaction call object](API-Objects.md#transaction-call-object) in the `call` parameter. + 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. === "curl HTTP" @@ -2924,7 +2927,7 @@ command line option at the default value of `true` to improve log retrieval perf !!! 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` . + object and get logs without creating a filter, use `eth_getLogs`. #### Parameters @@ -2987,7 +2990,9 @@ command line option at the default value of `true` to improve log retrieval perf !!! attention - Using `eth_getLogs` to get the logs from a large range of blocks, especially an entire chain from its genesis block, can cause Besu to hang and never return a response. We recommend splitting one large query into multiple ones for better performance. + Using `eth_getLogs` to get the logs from a large range of blocks, especially an entire chain from + its genesis block, can cause Besu to hang and never return a response. + We recommend splitting one large query into multiple ones for better performance. #### Parameters @@ -3919,7 +3924,7 @@ Returns uncle specified by block hash and index. !!! note - Uncles do not contain individual transactions. + Uncles don't contain individual transactions. !!! example @@ -4570,9 +4575,9 @@ You can interact with contracts using `eth_sendRawTransaction` or [`eth_call`](# To avoid exposing your private key, create signed transactions offline and send the signed transaction data using `eth_sendRawTransaction`. -!!!important +!!! important - Besu does not implement [`eth_sendTransaction`](../HowTo/Send-Transactions/Account-Management.md). + Besu doesn't implement [`eth_sendTransaction`](../../how-to/send-transactions.md). [EthSigner](https://docs.ethsigner.consensys.net/) provides transaction signing and implements [`eth_sendTransaction`](https://docs.ethsigner.consensys.net/Using-EthSigner/Using-EthSigner/#eth_sendtransaction). @@ -4580,9 +4585,10 @@ transaction data using `eth_sendRawTransaction`. #### Parameters `transaction`: *string* - signed transaction serialized to hexadecimal format + !!! note - [Creating and Sending Transactions](../HowTo/Send-Transactions/Transactions.md) includes + [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. @@ -4865,8 +4871,8 @@ The `IBFT` API methods provide access to the [IBFT 2.0](../../private-networks/h !!! note The `IBFT` API methods are not enabled by default for JSON-RPC. To enable the `IBFT` API - methods, use the [`--rpc-http-api`](CLI/CLI-Syntax.md#rpc-http-api) or - [`--rpc-ws-api`](CLI/CLI-Syntax.md#rpc-ws-api) options. + methods, use the [`--rpc-http-api`](../cli/options.md#rpc-http-api) or + [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) options. ### `ibft_discardValidatorVote` @@ -5149,8 +5155,8 @@ The `MINER` API methods allow you to control the node’s mining operation. !!! note The `MINER` API methods are not enabled by default for JSON-RPC. To enable the `MINER` API - methods, use the [`--rpc-http-api`](CLI/CLI-Syntax.md#rpc-http-api) or - [`--rpc-ws-api`](CLI/CLI-Syntax.md#rpc-ws-api) options. + 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` @@ -5421,7 +5427,8 @@ Returns enabled services (for example, `jsonrpc`) and the host and port for each !!! note - The [`--nat-method`](../CLI/CLI-Syntax/#nat-method) setting affects the JSON-RPC and P2P host and port values, but not the metrics host and port values. + 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 @@ -5541,8 +5548,8 @@ Use these methods for [local permissioning](../../private-networks/how-to/use-pe !!! important The `PERM` API methods are not enabled by default for JSON-RPC. To enable the `PERM` API - methods, use the [`--rpc-http-api`](CLI/CLI-Syntax.md#rpc-http-api) or - [`--rpc-ws-api`](CLI/CLI-Syntax.md#rpc-ws-api) CLI options. + methods, use the [`--rpc-http-api`](../cli/options.md#rpc-http-api) or + [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) CLI options. ### `perm_addAccountsToAllowlist` @@ -5846,8 +5853,8 @@ 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/CLI-Syntax.md#rpc-http-api) or - [`--rpc-ws-api`](CLI/CLI-Syntax.md#rpc-ws-api) options. + 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` @@ -5893,8 +5900,8 @@ The `PRIV` API methods provide functionality for [private transactions](../../pr !!! note The `PRIV` API methods are not enabled by default for JSON-RPC. To enable the `PRIV` API - methods, use the [`--rpc-http-api`](CLI/CLI-Syntax.md#rpc-http-api) or - [`--rpc-ws-api`](CLI/CLI-Syntax.md#rpc-ws-api) options. + methods, use the [`--rpc-http-api`](../cli/options.md#rpc-http-api) or + [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) options. ### `priv_call` @@ -6103,8 +6110,8 @@ Distributes a signed, RLP encoded !!! tip - If you want to sign the [privacy marker transaction](../Concepts/Privacy/Private-Transaction-Processing.md) outside of Besu, - use [`priv_distributeRawTransaction`](..//HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md#priv_distributerawtransaction) + If you want to sign the [privacy marker transaction](../../private-networks/how-to/use-privacy/sign-pmts.md) + outside of Besu, use [`priv_distributeRawTransaction`](../../private-networks/how-to/send-transactions/private-transactions.md#priv_distributerawtransaction) instead of [`eea_sendRawTransaction`](#eea_sendrawtransaction). #### Parameters @@ -6787,8 +6794,8 @@ The `QBFT` API methods provide access to the [QBFT](../../private-networks/how-t !!! note The `QBFT` API methods are not enabled by default for JSON-RPC. To enable the `QBFT` API - methods, use the [`--rpc-http-api`](CLI/CLI-Syntax.md#rpc-http-api) or - [`--rpc-ws-api`](CLI/CLI-Syntax.md#rpc-ws-api) options. + methods, use the [`--rpc-http-api`](../cli/options.md#rpc-http-api) or + [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) options. ### `qbft_discardValidatorVote` @@ -7073,8 +7080,8 @@ The `TRACE` API is a more concise alternative to the [`DEBUG` API](#debug-method !!! 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/CLI-Syntax.md#rpc-http-api) or - [`--rpc-ws-api`](CLI/CLI-Syntax.md#rpc-ws-api) options. + 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` @@ -7083,8 +7090,8 @@ Provides transaction processing of [type `trace`](../trace-types.md#trace) for t !!! important Your node must be an archive node (that is, synchronized without pruning or fast sync) or the - requested block must be within the number of [blocks retained](CLI/CLI-Syntax.md#pruning-blocks-retained) with [pruning enabled](CLI/CLI-Syntax.md#pruning-enabled) - (by default, 1024). + requested block must be within the number of [blocks retained](../cli/options.md#pruning-blocks-retained) + with [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). #### Parameters @@ -7184,7 +7191,7 @@ Executes the given call and returns a number of possible traces for it. !!! important The requested transaction must be contained in a block within the number of - [blocks retained](CLI/CLI-Syntax.md#pruning-blocks-retained) with [pruning enabled](CLI/CLI-Syntax.md#pruning-enabled) + [blocks retained](../cli/options.md#pruning-blocks-retained) with [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). #### Parameters @@ -7255,8 +7262,8 @@ Performs multiple call traces on top of the same block. You can trace dependent !!! important - The requested block must be within the number of [blocks retained](CLI/CLI-Syntax.md#pruning-blocks-retained) - with [pruning enabled](CLI/CLI-Syntax.md#pruning-enabled) + The requested block must be within the number of [blocks retained](../cli/options.md#pruning-blocks-retained) + with [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). #### Parameters @@ -7350,8 +7357,8 @@ Returns traces matching the specified filter. !!! important Your node must be an archive node (that is, synchronized without pruning or fast sync) or the - requested block must be within the number of [blocks retained](CLI/CLI-Syntax.md#pruning-blocks-retained) with [pruning enabled](CLI/CLI-Syntax.md#pruning-enabled) - (by default, 1024). + requested block must be within the number of [blocks retained](../cli/options.md#pruning-blocks-retained) + with [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). #### Parameters @@ -7437,7 +7444,8 @@ Returns trace at given position. Your node must be an archive node (that is, synchronized without pruning or fast sync) or the requested transaction must be contained in a block within - the number of [blocks retained](CLI/CLI-Syntax.md#pruning-blocks-retained) with [pruning enabled](CLI/CLI-Syntax.md#pruning-enabled) (by default, 1024). + the number of [blocks retained](../cli/options.md#pruning-blocks-retained) with + [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). #### Parameters @@ -7503,7 +7511,8 @@ Traces a call to `eth_sendRawTransaction` without making the call, returning the !!! important The requested transaction must be contained in a block within - the number of [blocks retained](CLI/CLI-Syntax.md#pruning-blocks-retained) with [pruning enabled](CLI/CLI-Syntax.md#pruning-enabled) (by default, 1024). + the number of [blocks retained](../cli/options.md#pruning-blocks-retained) with + [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). #### Parameters @@ -7563,8 +7572,8 @@ Provides transaction processing tracing per block. !!! important - The requested block must be within the number of [blocks retained](CLI/CLI-Syntax.md#pruning-blocks-retained) with [pruning enabled](CLI/CLI-Syntax.md#pruning-enabled) - (by default, 1024). + The requested block must be within the number of [blocks retained](../cli/options.md#pruning-blocks-retained) + with [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). #### Parameters @@ -7680,7 +7689,8 @@ Provides transaction processing of [type `trace`](../trace-types.md#trace) for t Your node must be an archive node (that is, synchronized without pruning or fast sync) or the requested transaction must be contained in a block within - the number of [blocks retained](CLI/CLI-Syntax.md#pruning-blocks-retained) with [pruning enabled](CLI/CLI-Syntax.md#pruning-enabled) (by default, 1024). + the number of [blocks retained](../cli/options.md#pruning-blocks-retained) with + [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). #### Parameters @@ -7810,8 +7820,8 @@ The `TXPOOL` API methods allow you to inspect the contents of the transaction po !!! 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/CLI-Syntax.md#rpc-http-api) or - [`--rpc-ws-api`](CLI/CLI-Syntax.md#rpc-ws-api) options. + 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` diff --git a/docs/reference/cli/options.md b/docs/reference/cli/options.md index 7429b102e76..be1b49cfa11 100644 --- a/docs/reference/cli/options.md +++ b/docs/reference/cli/options.md @@ -895,7 +895,7 @@ By default, Besu accepts requests from `localhost` and `127.0.0.1`. This isn't a permissioning feature. If you want to restrict access to the API, we recommend using the - [Besu authentication mechanism](../../HowTo/Interact/APIs/Authentication.md) with username and password + [Besu authentication mechanism](../../how-to/use-besu-api/authenticate.md) with username and password authentication or JWT public key authentication. !!! note @@ -1404,9 +1404,9 @@ using the [`--miner-enabled`](#miner-enabled) option or the !!!note Besu ignores this option in networks using - [Clique](../../HowTo/Configure/Consensus-Protocols/Clique.md), - [IBFT 2.0](../../HowTo/Configure/Consensus-Protocols/IBFT.md), or - [QBFT](../../HowTo/Configure/Consensus-Protocols/QBFT.md) consensus protocols. + [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` @@ -1623,7 +1623,7 @@ The default is `AUTO`. `NONE` disables NAT functionality. UPnP gateway device. You must specify `DOCKER` when using the - [Besu Docker image](../../HowTo/Get-Started/Installation-Options/Run-Docker-Image.md). + [Besu Docker image](../../get-started/install/run-docker-image.md). ### `network` @@ -1810,7 +1810,7 @@ The default is `127.0.0.1`. !!! info - If [`--nat-method`](#nat-method) is set to [`NONE`](../../HowTo/Find-and-Connect/Specifying-NAT.md#none), + 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` @@ -2178,8 +2178,8 @@ is `false`. !!! important - Using private transactions with [pruning](../../Concepts/Pruning.md) and/or Fast Sync is not - supported. + Using private transactions with [pruning](../../public-networks/concepts/data-storage-formats.md) + or [fast sync](#sync-mode) is not supported. ### `privacy-marker-transaction-signing-key-file` @@ -2208,7 +2208,7 @@ is `false`. ``` `` is the name of the private key file used to -[sign Privacy Marker Transactions](../../private-networks/how-to/use-privacy/sign-pmts.md). +[sign privacy marker transactions](../../private-networks/how-to/use-privacy/sign-pmts.md). !!! note @@ -2560,12 +2560,13 @@ The default is `false`. !!! important - Using pruning with [private transactions](../../Concepts/Privacy/Privacy-Overview.md) is not + Using pruning with [private transactions](../../private-networks/concepts/privacy/index.md) isn't supported. !!! Important - Pruning is being deprecated for [Bonsai Tries](../../Concepts/Data-Storage-Formats.md#bonsai-tries) and is currently not being updated. + Pruning is being deprecated for [Bonsai Tries](../../public-networks/concepts/data-storage-formats.md#bonsai-tries) + and is currently not being updated. ### `random-peer-priority-enabled` @@ -3451,7 +3452,7 @@ service. !!! note - `wscat` does not support headers. [Authentication](../../HowTo/Interact/APIs/Authentication.md) + `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. diff --git a/docs/reference/cli/subcommands.md b/docs/reference/cli/subcommands.md index 91c152005fd..b56d338672b 100644 --- a/docs/reference/cli/subcommands.md +++ b/docs/reference/cli/subcommands.md @@ -79,9 +79,9 @@ Provides node public key related actions. !!!caution To get the public key or address of a node, ensure you use the - [`--data-path`](CLI-Syntax.md#data-path) or - [`--node-private-key-file`](CLI-Syntax.md#node-private-key-file) option with the `public-key` - command. Otherwise, a new [node key](../../Concepts/Node-Keys.md) is silently generated when + [`--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` @@ -200,7 +200,7 @@ generate. !!! tip Manually executing `generate-log-bloom-cache` is not required unless you set the - [`--auto-log-bloom-caching-enabled`](CLI-Syntax.md#auto-log-bloom-caching-enabled) command line + [`--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 diff --git a/docs/reference/trace-types.md b/docs/reference/trace-types.md index 8ca71edd2af..7b3a093a924 100644 --- a/docs/reference/trace-types.md +++ b/docs/reference/trace-types.md @@ -4,7 +4,7 @@ description: Transaction trace types # Transaction trace types -When [tracing transactions](../how-to/troubleshoot/Trace-Transactions.md), the trace type options are +When [tracing transactions](../how-to/troubleshoot/trace-transactions.md), the trace type options are [`trace`](#trace), [`vmTrace`](#vmtrace), and [`stateDiff`](#statediff). ## trace @@ -156,7 +156,7 @@ An absent value is distinct from zero when creating accounts or clearing storage ## 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): +[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) @@ -164,7 +164,7 @@ The trace options `trace`, `vmTrace`, and `stateDiff` are available for the foll * [`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): +[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) diff --git a/mkdocs.yml b/mkdocs.yml index 558e2b0551b..98d6f72fdcf 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -64,7 +64,7 @@ nav: - System requirements: public-networks/get-started/system-requirements.md - Install Besu: - Index: get-started/install/index.md - - Run Besu from Docker image: get-started/install/run-from-docker-image.md + - Run Besu from Docker image: get-started/install/run-docker-image.md - Install binary distribution: get-started/install/binary-distribution.md - Start Besu: public-networks/get-started/start-node.md - How to: @@ -83,7 +83,7 @@ nav: - Configure static nodes: how-to/connect/static-nodes.md - Configure ports: how-to/connect/configure-ports.md - Manage peers: how-to/connect/manage-peers.md - - Specify NAT method: how-to/connect/specify-nat-method.md + - Specify NAT method: how-to/connect/specify-nat.md - Monitor nodes: - Use metrics: how-to/monitor/metrics.md - Configure logging: how-to/monitor/logging.md @@ -128,7 +128,7 @@ nav: - System requirements: private-networks/get-started/system-requirements.md - Install Besu: - Index: get-started/install/index.md - - Run Besu from Docker image: get-started/install/run-from-docker-image.md + - Run Besu from Docker image: get-started/install/run-docker-image.md - Install binary distribution: get-started/install/binary-distribution.md - Start Besu: private-networks/get-started/start-node.md - How to: @@ -138,7 +138,7 @@ nav: - QBFT: private-networks/how-to/configure/consensus/qbft.md - IBFT: private-networks/how-to/configure/consensus/ibft.md - Clique: private-networks/how-to/configure/consensus/clique.md - - Add and remove validators without voting: private-networks/how-to/configure/consensus/add-and-remove-validators-without-voting.md + - Add and remove validators without voting: private-networks/how-to/configure/consensus/add-validators-without-voting.md - Free gas network: private-networks/how-to/configure/free-gas.md - Validators: private-networks/how-to/configure/validators.md - Pre-deploy a contract: private-networks/how-to/configure/contracts.md @@ -159,15 +159,15 @@ nav: - Access logs using JSON-RPC: how-to/use-besu-api/access-logs.md - Create and send transactions: - Index: how-to/send-transactions.md - - Create and send private transactions: private-networks/how-to/send-transactions/index.md - - Send concurrent private transactions: private-networks/how-to/send-transactions/concurent-index.md + - Create and send private transactions: private-networks/how-to/send-transactions/private-transactions.md + - Send concurrent private transactions: private-networks/how-to/send-transactions/concurent-private-transactions.md - Include revert reason: private-networks/how-to/send-transactions/revert-reason.md - Find and connect to peers: - Configure bootnodes: private-networks/how-to/connect/bootnodes.md - Configure static nodes: how-to/connect/static-nodes.md - Configure ports: how-to/connect/configure-ports.md - Manage peers: how-to/connect/manage-peers.md - - Specify NAT method: how-to/connect/specify-nat-method.md + - Specify NAT method: how-to/connect/specify-nat.md - Monitor nodes: - Index: how-to/monitor/index.md - Use metrics: how-to/monitor/metrics.md @@ -183,7 +183,7 @@ nav: - Run Tessera with Besu: private-networks/how-to/use-privacy/tessera.md - Create and manage privacy groups: private-networks/how-to/use-privacy/privacy-groups.md - Use flexible privacy groups: private-networks/how-to/use-privacy/flexible.md - - Access private and privacy marker transactions: private-networks/how-to/use-privacy/access-index.md + - Access private and privacy marker transactions: private-networks/how-to/use-privacy/access-private-transactions.md - Sign privacy marker transactions: private-networks/how-to/use-privacy/sign-pmts.md - Use the web3js-quorum library: private-networks/how-to/use-privacy/web3js-quorum.md - Performance best practices: private-networks/how-to/use-privacy/performance-best-practices.md @@ -201,7 +201,7 @@ nav: - Backup and restore: private-networks/how-to/backup.md - Upgrade: - Upgrade node: how-to/upgrade/node.md - - Upgrade protocol: private-networks/upgrade/protocol.md + - Upgrade protocol: private-networks/how-to/upgrade/protocol.md - Troubleshoot: - Use EVM tool: how-to/troubleshoot/evm-tool.md - Use Java Flight Recorder: how-to/troubleshoot/java-flight-recorder.md @@ -370,8 +370,8 @@ plugins: HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.md: how-to/use-besu-api/access-logs.md HowTo/Send-Transactions/Transactions.md: how-to/send-transactions.md HowTo/Send-Transactions/Account-Management.md: how-to/send-transactions.md - HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md: private-networks/how-to/send-transactions/index.md - HowTo/Send-Transactions/Concurrent-Private-Transactions.md: private-networks/how-to/send-transactions/concurrent-index.md + HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md: private-networks/how-to/send-transactions/private-transactions.md + HowTo/Send-Transactions/Concurrent-Private-Transactions.md: private-networks/how-to/send-transactions/concurrent-private-transactions.md HowTo/Send-Transactions/Revert-Reason.md: private-networks/how-to/send-transactions/revert-reason.md HowTo/Find-and-Connect/Bootnodes.md: private-networks/how-to/connect/bootnodes.md HowTo/Find-and-Connect/Static-Nodes.md: how-to/connect/static-nodes.md @@ -432,7 +432,7 @@ plugins: HowTo/Use-Privacy/Run-Tessera-With-Besu.md: private-networks/how-to/use-privacy/tessera.md HowTo/Use-Privacy/Create-Manage-Privacy-Groups.md: private-networks/how-to/use-privacy/privacy-groups.md HowTo/Use-Privacy/Use-FlexiblePrivacy.md: private-networks/how-to/use-privacy/flexible.md - HowTo/Use-Privacy/Access-Private-Transactions.md: private-networks/how-to/use-privacy/access-index.md + HowTo/Use-Privacy/Access-Private-Transactions.md: private-networks/how-to/use-privacy/access-private-transactions.md HowTo/Use-Privacy/Sign-Privacy-Marker-Transactions.md: private-networks/how-to/use-privacy/sign-pmts.md HowTo/Interact/Client-Libraries/web3js-quorum.md: private-networks/how-to/use-privacy/web3js-quorum.md HowTo/Use-Privacy/Performance-Best-Practices.md: private-networks/how-to/use-privacy/performance-best-practices.md From fbc764870be1a9d7e5c3fb708547d598c6b624ca Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Thu, 14 Jul 2022 13:58:20 -0700 Subject: [PATCH 07/31] more link fixes Signed-off-by: Alexandra Tran --- .../get-started/start-node.md | 24 +++++++------------ .../how-to/configure/consensus/ibft.md | 2 +- .../tutorials/privacy/index.md | 2 +- docs/reference/api/index.md | 2 +- 4 files changed, 11 insertions(+), 19 deletions(-) diff --git a/docs/private-networks/get-started/start-node.md b/docs/private-networks/get-started/start-node.md index c305be2069f..4c10e0fe400 100644 --- a/docs/private-networks/get-started/start-node.md +++ b/docs/private-networks/get-started/start-node.md @@ -45,17 +45,17 @@ the file using the [`--genesis-file`](../../reference/cli/options.md#genesis-fil ## Syncing and storage By default, Besu syncs to the current state of the blockchain using -[fast sync](../how-to/connect/sync-node.md#fast-synchronization) in: +[fast sync](../../public-networks/how-to/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](../how-to/connect/sync-node.md#snap-synchronization) for a faster sync, by starting Besu +We recommend using [snap sync](../../public-networks/how-to/connect/sync-node.md#snap-synchronization) for a faster sync, by starting Besu with [`--sync-mode=X_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 default, Besu stores data in the [Forest of Tries](../../public-networks/concepts/data-storage-formats.md#forest-of-tries) format. +We recommend using [Bonsai Tries](../../public-networks/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). ## Confirm node is running @@ -120,13 +120,13 @@ data-path="/tmp/tmpdata-path" The following settings are a security risk in production environments: * Enabling the HTTP JSON-RPC service - ([`--rpc-http-enabled`](../../Reference/CLI/CLI-Syntax.md#rpc-http-enabled)) and setting - [`--rpc-http-host`](../../Reference/CLI/CLI-Syntax.md#rpc-http-host) to 0.0.0.0 exposes the + ([`--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/CLI-Syntax.md#host-allowlist) to `"*"` + * 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/CLI-Syntax.md#rpc-http-cors-origins) to + [`--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 Ropsten testnet @@ -164,14 +164,6 @@ besu --network=goerli --data-path=/ Where `` and `` are the path and directory to save the Goerli chain data to. -## Run a node on Kiln testnet - -You can [test Besu as an execution client](../tutorials/merge-testnet.md#start-besu) on the -[Kiln Merge testnet](https://blog.ethereum.org/2022/03/14/kiln-merge-testnet/). -You must also run a [consensus client](../concepts/the-merge.md#consensus-clients) with Besu on the Merge -testnet. -For example, [Teku](https://docs.teku.consensys.net/en/stable/). - ## Run a node on Sepolia testnet To run a node on [Sepolia](https://github.com/goerli/sepolia) specifying a data directory: diff --git a/docs/private-networks/how-to/configure/consensus/ibft.md b/docs/private-networks/how-to/configure/consensus/ibft.md index 89292ae7599..d0a353ade0e 100644 --- a/docs/private-networks/how-to/configure/consensus/ibft.md +++ b/docs/private-networks/how-to/configure/consensus/ibft.md @@ -171,7 +171,7 @@ To tune the block timeout for your network deployment: !!! tip - View [`TRACE` logs](../../../Reference/API-Methods.md#admin_changeloglevel) to see round change + View [`TRACE` logs](../../../../reference/api/index.md#trace-methods) to see round change log messages. Use a [transition](#transitions) to update the `blockperiodseconds` in an existing network. diff --git a/docs/private-networks/tutorials/privacy/index.md b/docs/private-networks/tutorials/privacy/index.md index b9bd33eea86..1725fbfbdb0 100644 --- a/docs/private-networks/tutorials/privacy/index.md +++ b/docs/private-networks/tutorials/privacy/index.md @@ -360,7 +360,7 @@ The command line specifies privacy options: Use the [`--privacy-marker-transaction-signing-key-file`](../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) command line option to sign - [privacy marker transactions](../../../concepts/privacy/private-transactions/processing.md) using a + [privacy marker transactions](../../concepts/privacy/private-transactions/processing.md) using a supplied key. The command line option is mandatory in privacy-enabled paid gas networks. When the node starts, the [enode URL](../../../concepts/node-keys.md#enode-url) displays. Copy the diff --git a/docs/reference/api/index.md b/docs/reference/api/index.md index 01f390cc0fd..8d185516485 100644 --- a/docs/reference/api/index.md +++ b/docs/reference/api/index.md @@ -1685,7 +1685,7 @@ transaction data using `eea_sendRawTransaction`. For production systems requiring private transactions, use a network with a consensus mechanism supporting transaction finality to make sure the private state does not become inconsistent with the chain. For example, [IBFT 2.0](../../private-networks/how-to/configure/consensus/ibft.md) - and [QBFT](../../private-networks/how-to/configure/consensus/qbft.mdd) provide the required finality. + and [QBFT](../../private-networks/how-to/configure/consensus/qbft.md) provide the required finality. Using private transactions with [pruning](../../public-networks/how-to/connect/sync-node.md) or [fast sync](../cli/options.md#sync-mode) is not supported. From 582d00a882012fa7c42240508b1918d6973adbc5 Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Thu, 14 Jul 2022 14:29:22 -0700 Subject: [PATCH 08/31] mkdocs fixes Signed-off-by: Alexandra Tran --- mkdocs.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 98d6f72fdcf..d4edebe5c63 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -160,7 +160,7 @@ nav: - Create and send transactions: - Index: how-to/send-transactions.md - Create and send private transactions: private-networks/how-to/send-transactions/private-transactions.md - - Send concurrent private transactions: private-networks/how-to/send-transactions/concurent-private-transactions.md + - Send concurrent private transactions: private-networks/how-to/send-transactions/concurrent-private-transactions.md - Include revert reason: private-networks/how-to/send-transactions/revert-reason.md - Find and connect to peers: - Configure bootnodes: private-networks/how-to/connect/bootnodes.md @@ -424,7 +424,7 @@ plugins: Concepts/ArchitectureOverview.md: index.md Concepts/Mining.md: how-to/configure/mining.md HowTo/Troubleshoot/Troubleshooting.md: how-to/troubleshoot/evm-tool.md - Concepts/Protocol-Upgrades.md: private-networks/how-to/ugprade/protocol.md + Concepts/Protocol-Upgrades.md: private-networks/how-to/upgrade/protocol.md Reference/Resources.md: index.md HowTo/Use-Privacy/EEA-compliant.md: private-networks/how-to/use-privacy/eea-compliant.md HowTo/Use-Privacy/Privacy.md: private-networks/how-to/use-privacy/besu-extended.md From 6c0a6365687b6229ec8c5c56781b29fe69847a5b Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Fri, 15 Jul 2022 10:50:26 -0700 Subject: [PATCH 09/31] fix link and add nav tabs Signed-off-by: Alexandra Tran --- docs/index.md | 3 +++ mkdocs.yml | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 81c5627d648..68b2c424416 100644 --- a/docs/index.md +++ b/docs/index.md @@ -3,6 +3,9 @@ title: Hyperledger Besu Ethereum client description: Besu is an open-source Ethereum client developed under the Apache 2.0 license and written in Java. It runs on the Ethereum public network, private networks, and test networks. +hide: + - navigation + - toc --- # Besu Ethereum client diff --git a/mkdocs.yml b/mkdocs.yml index d4edebe5c63..e99e5528f60 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -50,6 +50,8 @@ theme: accent: teal favicon: favicon.svg logo: *logo_reversed + features: + - navigation.tabs extra_css: - assets/stylesheets/custom_theme.css @@ -475,7 +477,7 @@ plugins: Tutorials/Privacy/Configuring-Multi-Tenancy.md: private-networks/tutorials/privacy/multi-tenancy.md Tutorials/Privacy/web3js-quorum-Multinode-example.md: private-networks/tutorials/privacy/web3js-quorum.md Tutorials/Permissioning/Create-Permissioned-Network.md: private-networks/tutorials/permissioning/index.md - Tutorials/Permissioning/Getting-Started-Onchain-Permissioning: private-networks/tutorials/permissioning/onchain.md + Tutorials/Permissioning/Getting-Started-Onchain-Permissioning.md: private-networks/tutorials/permissioning/onchain.md Tutorials/Permissioning/Upgrade-Permissioning-Contract.md: private-networks/tutorials/permissioning/upgrade-contracts.md Tutorials/Contracts/Deploying-Contracts.md: private-networks/tutorials/contracts/index.md Tutorials/Contracts/Account-Funds-Transfers.md: private-networks/tutorials/contracts/transfer-funds.md From 3f572d9e107d9815e6b6ba68bc1e8e9ba85684cd Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Fri, 15 Jul 2022 13:02:06 -0700 Subject: [PATCH 10/31] more link fixes Signed-off-by: Alexandra Tran --- docs/private-networks/tutorials/kubernetes/cluster.md | 2 +- docs/public-networks/tutorials/merge-testnet.md | 2 +- docs/reference/api/objects.md | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/private-networks/tutorials/kubernetes/cluster.md b/docs/private-networks/tutorials/kubernetes/cluster.md index 913ab6efc9c..9c08efb10b0 100644 --- a/docs/private-networks/tutorials/kubernetes/cluster.md +++ b/docs/private-networks/tutorials/kubernetes/cluster.md @@ -80,7 +80,7 @@ The [template](https://github.com/ConsenSys/quorum-kubernetes/tree/master/aws) c infrastructure used to build the cluster and other resources in AWS. We also use some native services with the cluster for performance and best practices, these include: -* [Pod identities](hhttps://github.com/aws/amazon-eks-pod-identity-webhook). +* [Pod identities](https://github.com/aws/amazon-eks-pod-identity-webhook). * [Secrets Store CSI drivers](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html). * Dynamic storage classes backed by AWS EBS. The [volume claims](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims) are fixed diff --git a/docs/public-networks/tutorials/merge-testnet.md b/docs/public-networks/tutorials/merge-testnet.md index b03b8697af2..34e7cb5ca95 100644 --- a/docs/public-networks/tutorials/merge-testnet.md +++ b/docs/public-networks/tutorials/merge-testnet.md @@ -17,7 +17,7 @@ Install [Besu](../../get-started/install/binary-distribution.md) and Ensure you meet the prerequisites for the installation option you use. For example, you must have Java 11+ if using the Besu and Teku binary distributions. -Ensure you meet the [system requirements for Besu on Mainnet](../get-started/System-Requirements). +Ensure you meet the [system requirements for Besu on Mainnet](../get-started/system-requirements.md). ## 2. Generate the shared secret diff --git a/docs/reference/api/objects.md b/docs/reference/api/objects.md index 04b844cfbda..a9772d20862 100644 --- a/docs/reference/api/objects.md +++ b/docs/reference/api/objects.md @@ -25,7 +25,7 @@ Returned by [`eth_getBlockByHash`](index.md#eth_getblockbyhash) and | **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. | -| **extraData** | Data | Extra data field for this block. The first 32 bytes is vanity data you can set using the [`--miner-extra-data`](/CLI/CLI-Syntax.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). | +| **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. | @@ -95,7 +95,7 @@ Returned by [`eth_getMinerDataByBlockHash`](index.md#eth_getminerdatabyblockhash | **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/CLI-Syntax.md#miner-extra-data) command line option. | +| **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. | @@ -264,7 +264,7 @@ Returned by [`eth_getTransactionReceipt`](index.md#eth_gettransactionreceipt). | **transactionHash** | Data, 32 bytes | Hash of the transaction. | | **transactionIndex** | Quantity, Integer | Index position of transaction in the block. | | **transactionType** | String | [Transaction type](../../concepts/Transactions/Transaction-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/CLI-Syntax.md#revert-reason-enabled). | +| **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). | !!!note @@ -300,7 +300,7 @@ Returned by [`priv_getTransactionReceipt`](index.md#priv_gettransactionreceipt). | **logs** | Array | Array of [log objects](#log-object) generated by this private transaction. | | **to** | Data, 20 bytes | Address of the receiver, if sending ether, otherwise, null. | | **transactionIndex** | Quantity, Integer | Index position of transaction in the block. | -| **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/CLI-Syntax.md#revert-reason-enabled). | +| **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). | | **output** | Data | RLP-encoded return value of a contract call if a value returns, otherwise, `null`. | | **commitmentHash** | Data, 32 bytes | Hash of the privacy marker transaction. | | **status** | Quantity | Either `0x1` (success) or `0x0` (failure). | From 26f21dc0f8cab11fcfe6a1fd514cf7d254f9619b Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Mon, 18 Jul 2022 11:44:07 -0700 Subject: [PATCH 11/31] update and move mining, onchain permissioning, and key mgmt content Signed-off-by: Alexandra Tran --- DCO.md | 2 +- docs/concepts/Mining.md | 17 ------ .../Send-Transactions/Account-Management.md | 4 +- docs/how-to/configure/mining.md | 12 ++++ docs/how-to/send-transactions.md | 19 +++++- .../concepts/permissioning/onchain.md | 5 +- .../how-to/deploy/Production.md | 38 ------------ .../use-permissioning/Specify-Perm-Version.md | 20 ------- .../how-to/use-permissioning/onchain.md | 60 +++++++++++++++++-- .../tutorials/permissioning/onchain.md | 2 +- .../permissioning/upgrade-contracts.md | 2 +- docs/reference/cli/options.md | 2 +- 12 files changed, 93 insertions(+), 90 deletions(-) delete mode 100644 docs/concepts/Mining.md delete mode 100644 docs/private-networks/how-to/deploy/Production.md delete mode 100644 docs/private-networks/how-to/use-permissioning/Specify-Perm-Version.md diff --git a/DCO.md b/DCO.md index 53600ccc4f0..b64635844d9 100644 --- a/DCO.md +++ b/DCO.md @@ -2,7 +2,7 @@ Developer Certificate of Origin =============================== Per section 13.a of the -[Hyperledger Charter](https://www.hyperledger.org/about/charter), all code +[Hyperledger Charter](https://www.hyperledger.org/about/charter-2), all code submitted to the Hyperledger Foundation needs to have a [Developer Certificate of Origin](http://developercertificate.org/) (DCO) sign-off. diff --git a/docs/concepts/Mining.md b/docs/concepts/Mining.md deleted file mode 100644 index eb3036ca2ac..00000000000 --- a/docs/concepts/Mining.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -description: Mining overview ---- - -# Mining - -Hyperledger Besu supports CPU and GPU mining, which are -[configured using command line options](../how-to/configure/mining.md). - -GPU mining support testing 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. diff --git a/docs/how-to/Send-Transactions/Account-Management.md b/docs/how-to/Send-Transactions/Account-Management.md index 646f3447f62..a5306a2cd3d 100644 --- a/docs/how-to/Send-Transactions/Account-Management.md +++ b/docs/how-to/Send-Transactions/Account-Management.md @@ -2,9 +2,9 @@ description: Using third party wallets for account management with Hyperledger Besu --- -# Using wallets for key management +# Use wallets for key management -Hyperledger Besu does not support key management inside the client. Use: +Besu doesn't support key management inside the client. Use: * [EthSigner](http://docs.ethsigner.consensys.net/en/latest/) with Besu to provide access to your key store and sign transactions. diff --git a/docs/how-to/configure/mining.md b/docs/how-to/configure/mining.md index 5f4d765e9f1..d81da8583a5 100644 --- a/docs/how-to/configure/mining.md +++ b/docs/how-to/configure/mining.md @@ -4,6 +4,18 @@ description: Using Hyperledger Besu for PoW CPU mining # Mining +Hyperledger Besu supports CPU and GPU mining, which are configured using command line options. + +GPU mining support testing 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. + ## Configure CPU mining To enable CPU mining, start Hyperledger Besu with the following options: diff --git a/docs/how-to/send-transactions.md b/docs/how-to/send-transactions.md index 40fac2da1f4..5bdaac835c3 100644 --- a/docs/how-to/send-transactions.md +++ b/docs/how-to/send-transactions.md @@ -2,7 +2,7 @@ description: Some use cases of creating transactions on a Hyperledger Besu network --- -# Creating and sending transactions +# Create and send transactions You can send signed transactions using the [`eth_sendRawTransaction`](../reference/api/index.md#eth_sendrawtransaction) JSON-RPC API @@ -20,7 +20,7 @@ Ether and create a smart contract. !!! warning "Private keys" - Do not use the accounts from the examples on Mainnet or any public network except for testing. + 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 @@ -59,3 +59,18 @@ compares the characteristics of both calls. | 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: + +* [EthSigner](http://docs.ethsigner.consensys.net/en/latest/) 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. + +!!! tip + + [EthSigner](http://docs.ethsigner.consensys.net/en/latest/) implements + [`eth_sendTransaction`](http://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/#eth_sendtransaction) + and [`eea_sendTransaction`](http://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/#eea_sendtransaction). \ No newline at end of file diff --git a/docs/private-networks/concepts/permissioning/onchain.md b/docs/private-networks/concepts/permissioning/onchain.md index 6e70b0a1bc4..3f42affa6d0 100644 --- a/docs/private-networks/concepts/permissioning/onchain.md +++ b/docs/private-networks/concepts/permissioning/onchain.md @@ -43,7 +43,7 @@ The permissioning smart contracts provided in the The permissioning contract has multiple interfaces, and each interface maps to a specific version of the [Enterprise Ethereum Alliance Client Specification](https://entethalliance.org/technical-specifications/). - Ensure that you specify the permissioning contract interface being used when starting Besu. + Ensure that you [specify the permissioning contract interface] being used when starting Besu. ## Permissioning management dapp @@ -93,5 +93,6 @@ bootnodes to rediscover peers. All bootnodes must be on the nodes allowlist. -[permissioning management dapp]: ../../tutorials/permissioning/onchain.md +[permissioning management dapp]: ../../how-to/use-permissioning/onchain.md#deploy-the-permissioning-management-dapp [`--privacy-marker-transaction-signing-key-file`]: ../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file +[specify the permissioning contract interface]: ../../how-to/use-permissioning/onchain.md#specify-the-permissioning-contract-interface-version diff --git a/docs/private-networks/how-to/deploy/Production.md b/docs/private-networks/how-to/deploy/Production.md deleted file mode 100644 index d546a794dc8..00000000000 --- a/docs/private-networks/how-to/deploy/Production.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -description: Deploying Hyperledger Besu permissioning management dapp for production ---- - -# Deploying the Hyperledger Besu permissioning management dapp for production - -To deploy the permissioning management dapp for production: - -1. Retrieve the most recent release (tarball or zip) from the [projects release page]. - -1. Unpack the distribution into a directory available to your Web server. - -1. In the root of the unpack directory, add a file called `config.json` replacing the placeholders - shown below. - - !!!example "`config.json`" - - ```json - - { - "accountIngressAddress": "
", - "nodeIngressAddress": "
", - "networkId": "" - } - ``` - -1. On your Web server, host the contents of the directory as static files and direct root requests - to `index.html`. - -## Starting a production permissioned network - -Follow the procedure as for [Getting started with onchain permissioning], but do not perform the -steps using `yarn` to install, build, and start the development server. Instead, follow the -procedure above to deploy the permissioning management dapp to your Web server. - - -[projects release page]: https://github.com/ConsenSys/permissioning-smart-contracts/releases/latest -[Getting started with onchain permissioning]: ../../tutorials/permissioning/onchain.md diff --git a/docs/private-networks/how-to/use-permissioning/Specify-Perm-Version.md b/docs/private-networks/how-to/use-permissioning/Specify-Perm-Version.md deleted file mode 100644 index d4fc3008eb2..00000000000 --- a/docs/private-networks/how-to/use-permissioning/Specify-Perm-Version.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -description: Specify the permissioning interface version ---- - -# Specify the permissioning contract interface version - -Use the [`--permissions-nodes-contract-version`](../../../reference/cli/options.md#permissions-nodes-contract-version) -command line option to specify the version of the [permissioning contract interface](../../concepts/permissioning/onchain.md#permissioning-contracts). -The default is 1. - -Specify the contract interface version that maps to the version of the [Enterprise Ethereum Alliance Client Specification](https://entethalliance.org/technical-specifications/) -the contract interface implements. - -| | EEA Client Specification | Contract interface | -|:--------|:-------------------------|:-------------------| -| Version | 5 | 1 | -| Version | 6 | 2 | - -The permissioning contracts in the [`ConsenSys/permissioning-smart-contracts`](https://github.com/ConsenSys/permissioning-smart-contracts) -repository implement the version 2 contract interface. diff --git a/docs/private-networks/how-to/use-permissioning/onchain.md b/docs/private-networks/how-to/use-permissioning/onchain.md index a0f8ed61a8e..802f7c52ef9 100644 --- a/docs/private-networks/how-to/use-permissioning/onchain.md +++ b/docs/private-networks/how-to/use-permissioning/onchain.md @@ -5,14 +5,45 @@ description: Updating Hyperledger Besu onchain allowlists # Use onchain permissioning When using [onchain permissioning](../../concepts/permissioning/onchain.md), you can update -[nodes](#update-nodes-allowlist) and [accounts](#update-accounts-allowlist) allowlists. +[nodes](#update-nodes-allowlist) and [accounts](#update-accounts-allowlist) allowlists using the +Besu [permissioning management dapp](#deploy-the-permissioning-management-dapp). + +## Deploy the permissioning management dapp + +To deploy the permissioning management dapp for production: + +1. Retrieve the most recent release (tarball or zip) from the [projects release page]. + +1. Unpack the distribution into a directory available to your Web server. + +1. In the root of the unpack directory, add a file called `config.json` replacing the placeholders + shown below. + + !!! example "`config.json`" + + ```json + + { + "accountIngressAddress": "
", + "nodeIngressAddress": "
", + "networkId": "" + } + ``` + +1. On your Web server, host the contents of the directory as static files and direct root requests + to `index.html`. + +!!! note "Start a production permissioned network" + + To start a production permissioned network, follow the [onchain permissioning tutorial], but don't + perform the steps using `yarn` to install, build, and start the development server. + Instead, follow the steps in this section to deploy the permissioning management dapp to your Web server. ## Update nodes allowlist To add a node to the Hyperledger Besu nodes allowlist: -1. On the **Nodes** tab of the [permissioning management dapp](../../tutorials/permissioning/onchain.md), - select **Add Node**. +1. On the **Nodes** tab of the permissioning management dapp, select **Add Node**. The **Add Node** window displays. 2. Enter the [enode URL](../../../concepts/node-keys.md#enode-url) of the node you are adding and select **Add Node**. @@ -61,8 +92,8 @@ To remove a node from the nodes allowlist: To add an account to the accounts allowlist: -1. On the **Accounts** tab of the [permissioning management dapp](../../tutorials/permissioning/onchain.md), - select **Add Account**. The **Add Account** window displays. +1. On the **Accounts** tab of the permissioning management dapp, select **Add Account**. + The **Add Account** window displays. 1. Enter the account address in the **Account Address** field and select **Add Account**. To remove an account from the accounts allowlist: @@ -75,4 +106,23 @@ To remove an account from the accounts allowlist: You can add or remove admins in the same way as [accounts](#update-accounts-allowlist), except on the **Admins** tab. +## Specify the permissioning contract interface version + +Use the [`--permissions-nodes-contract-version`](../../../reference/cli/options.md#permissions-nodes-contract-version) +command line option to specify the version of the [permissioning contract interface](../../concepts/permissioning/onchain.md#permissioning-contracts). +The default is 1. + +Specify the contract interface version that maps to the version of the [Enterprise Ethereum Alliance Client Specification](https://entethalliance.org/technical-specifications/) +the contract interface implements. + +| | EEA Client Specification | Contract interface | +|:--------|:-------------------------|:-------------------| +| Version | 5 | 1 | +| Version | 6 | 2 | + +The permissioning contracts in the [`ConsenSys/permissioning-smart-contracts`](https://github.com/ConsenSys/permissioning-smart-contracts) +repository implement the version 2 contract interface. + [support domain names]: ../../../concepts/node-keys.md#domain-name-support +[projects release page]: https://github.com/ConsenSys/permissioning-smart-contracts/releases/latest +[onchain permissioning tutorial]: ../../tutorials/permissioning/onchain.md diff --git a/docs/private-networks/tutorials/permissioning/onchain.md b/docs/private-networks/tutorials/permissioning/onchain.md index a4850960873..141d0b36320 100644 --- a/docs/private-networks/tutorials/permissioning/onchain.md +++ b/docs/private-networks/tutorials/permissioning/onchain.md @@ -265,7 +265,7 @@ On the command line: [`--permissions-nodes-contract-enabled`](../../../reference/cli/options.md#permissions-nodes-contract-enabled). * Set the address of the Node Ingress contract in the genesis file using [`--permissions-nodes-contract-address`](../../../reference/cli/options.md#permissions-nodes-contract-address). -* Set the version of the [permissioning contract interface](../../how-to/use-permissioning/Specify-Perm-Version.md) +* Set the version of the [permissioning contract interface](../../how-to/use-permissioning/onchain.md#specify-the-permissioning-contract-interface-version) using [`--permissions-nodes-contract-version`](../../../reference/cli/options.md#permissions-nodes-contract-version). * Enable the JSON-RPC API using [`--rpc-http-enabled`](../../../reference/cli/options.md#rpc-http-enabled). diff --git a/docs/private-networks/tutorials/permissioning/upgrade-contracts.md b/docs/private-networks/tutorials/permissioning/upgrade-contracts.md index 47b3e310f05..fc6aa4d8821 100644 --- a/docs/private-networks/tutorials/permissioning/upgrade-contracts.md +++ b/docs/private-networks/tutorials/permissioning/upgrade-contracts.md @@ -157,7 +157,7 @@ The dapp displays at [`http://localhost:3000`](http://localhost:3000). ### 7. Restart Besu nodes Restart the Besu nodes with the updated [`NodeIngress`](#5-deploy-the-contracts) -contract address and [permissioning contract interface](../../how-to/use-permissioning/Specify-Perm-Version.md) +contract address and [permissioning contract interface](../../how-to/use-permissioning/onchain.md#specify-the-permissioning-contract-interface-version) version 2. !!! example diff --git a/docs/reference/cli/options.md b/docs/reference/cli/options.md index be1b49cfa11..cf012bf1478 100644 --- a/docs/reference/cli/options.md +++ b/docs/reference/cli/options.md @@ -2144,7 +2144,7 @@ Enables or disables contract-based permissions-nodes-contract-version=2 ``` -Version of the EEA [node permissioning interface](../../private-networks/how-to/use-permissioning/Specify-Perm-Version.md). +Version of the EEA [node permissioning interface](../../private-networks/how-to/use-permissioning/onchain.md#specify-the-permissioning-contract-interface-version). The default is 1. ### `privacy-enabled` From ce3d2c574dc74736adbbdbefba6fcdc897facdc2 Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Mon, 18 Jul 2022 12:41:30 -0700 Subject: [PATCH 12/31] Update home page and add network index pages Signed-off-by: Alexandra Tran --- .../Send-Transactions/Account-Management.md | 27 ------------ docs/how-to/develop/client-libraries.md | 2 +- docs/how-to/send-transactions.md | 2 +- docs/how-to/use-besu-api/index.md | 2 +- docs/index.md | 42 +++++++++---------- .../get-started/system-requirements.md | 9 ++-- docs/private-networks/index.md | 20 +++++++++ .../get-started/system-requirements.md | 2 - docs/public-networks/index.md | 10 +++++ mkdocs.yml | 2 + 10 files changed, 59 insertions(+), 59 deletions(-) delete mode 100644 docs/how-to/Send-Transactions/Account-Management.md create mode 100644 docs/private-networks/index.md create mode 100644 docs/public-networks/index.md diff --git a/docs/how-to/Send-Transactions/Account-Management.md b/docs/how-to/Send-Transactions/Account-Management.md deleted file mode 100644 index a5306a2cd3d..00000000000 --- a/docs/how-to/Send-Transactions/Account-Management.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -description: Using third party wallets for account management with Hyperledger Besu ---- - -# Use wallets for key management - -Besu doesn't support key management inside the client. Use: - -* [EthSigner](http://docs.ethsigner.consensys.net/en/latest/) 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. - -In Besu, you can use the JSON-RPC methods: - -* [`eth_getBalance`](../../reference/api/index.md#eth_getbalance) to retrieve the account balance. -* [`eth_sendRawTransaction`](../../reference/api/index.md#eth_sendrawtransaction) to transfer - ether or create and interact with contracts. For more information, see - [Transactions](../send-transactions.md#transactions)). -* [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) to send - [private transactions](../../private-networks/how-to/send-transactions/private-transactions.md). - -!!! tip - - [EthSigner](http://docs.ethsigner.consensys.net/en/latest/) implements - [`eth_sendTransaction`](http://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/#eth_sendtransaction) - and [`eea_sendTransaction`](http://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/#eea_sendtransaction). diff --git a/docs/how-to/develop/client-libraries.md b/docs/how-to/develop/client-libraries.md index 8a6873853fd..aed177f73c8 100644 --- a/docs/how-to/develop/client-libraries.md +++ b/docs/how-to/develop/client-libraries.md @@ -20,7 +20,7 @@ Use client libraries to: * [Create and send private transactions]. !!! note - [Hyperledger Besu does not support key management inside the client](../Send-Transactions/Account-Management.md). + [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/docs/how-to/send-transactions.md b/docs/how-to/send-transactions.md index 5bdaac835c3..96725e477b6 100644 --- a/docs/how-to/send-transactions.md +++ b/docs/how-to/send-transactions.md @@ -73,4 +73,4 @@ Besu doesn't support key management inside the client. Use: [EthSigner](http://docs.ethsigner.consensys.net/en/latest/) implements [`eth_sendTransaction`](http://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/#eth_sendtransaction) - and [`eea_sendTransaction`](http://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/#eea_sendtransaction). \ No newline at end of file + and [`eea_sendTransaction`](http://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/#eea_sendtransaction). diff --git a/docs/how-to/use-besu-api/index.md b/docs/how-to/use-besu-api/index.md index 5b9c1e40ff3..f8cac7c3663 100644 --- a/docs/how-to/use-besu-api/index.md +++ b/docs/how-to/use-besu-api/index.md @@ -102,7 +102,7 @@ To send signed transactions, use [`eth_sendRawTransaction`](../../reference/api/index.md#eth_sendrawtransaction). `eth_sendTransaction` is not implemented. -For [account management](../Send-Transactions/Account-Management.md), use third-party wallets. +For [account management](../send-transactions.md#use-wallets-for-key-management), use third-party wallets. ### Protocols diff --git a/docs/index.md b/docs/index.md index 68b2c424416..71867cc0843 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,39 +8,30 @@ hide: - toc --- -# Besu Ethereum client +# Hyperledger Besu Ethereum client -## What is Hyperledger Besu? +Hyperledger Besu is an open source Ethereum client developed under the Apache 2.0 license and written in Java. +It runs on: -Hyperledger Besu is an open-source Ethereum client developed under the Apache 2.0 license and written in Java. -It runs on Ethereum Mainnet, private networks, and test networks such as Rinkeby, Ropsten, Goerli, and the Merge testnet. -Besu serves as an [execution client](public-networks/concepts/the-merge.md) on Ethereum Mainnet and the Merge testnet. - -Besu implements proof of authority (QBFT, IBFT 2.0, and Clique) and proof of work (Ethash) consensus mechanisms. - -You can use Besu to develop enterprise applications requiring secure, high-performance transaction -processing in a private network. - -Besu supports enterprise features including privacy and permissioning. +- [**Public networks**](public-networks/index.md) - You can run Besu as an + [execution client](public-networks/concepts/the-merge.md) on Ethereum Mainnet and Ethereum + public testnets, such as Goerli and Sepolia. +- [**Private networks**](private-networks/index.md) - You can create or join a network not connected to + Mainnet or a public testnet. + Use private networks to develop enterprise applications requiring secure, high-performance transaction + processing. ## What can you do with Besu? Besu includes a [command line interface](reference/cli/options.md) and [JSON-RPC API](how-to/use-besu-api/index.md) for running, maintaining, debugging, and monitoring -nodes in an Ethereum network. You can use the API via RPC over HTTP or via WebSockets. Besu also +nodes in an Ethereum network. You can use the API via RPC over HTTP or via WebSocket. Besu also supports Pub/Sub. The API supports typical Ethereum functionalities such as: * Ether mining. * Smart contract development. * Decentralized application (dapp) development. -## New to Ethereum? - -Get started with the [Developer Quickstart](private-networks/tutorials/quickstart.md). Use the quickstart -to rapidly generate local blockchain networks. - -Learn more about [use cases for Ethereum](https://consensys.net/blockchain-use-cases/case-studies/). - ## What does Besu support? The Besu client supports common smart contract and dapp development, deployment, and operational @@ -48,6 +39,15 @@ use cases, using tools such as [Truffle](http://truffleframework.com/), [Remix](https://github.com/ethereum/remix), and [web3j](https://web3j.io/). The client supports common JSON-RPC API methods such as `eth`, `net`, `web3`, `debug`, and `miner`. -Besu doesn't support [key management](how-to/Send-Transactions/Account-Management.md) inside the +Besu doesn't support [key management](how-to/send-transactions.md#use-wallets-for-key-management) inside the client. You can use [EthSigner](http://docs.ethsigner.consensys.net/en/latest/) with Besu to access your key store and sign transactions. + +## Besu architecture + +The following diagram outlines the Besu high-level architecture. + +![Architecture](images/Architecture.png) + +If you have any questions about Besu or its architecture, contact us on the +[Besu channel on Hyperledger Discord](https://discord.gg/hyperledger). diff --git a/docs/private-networks/get-started/system-requirements.md b/docs/private-networks/get-started/system-requirements.md index 894ce43ef30..d7aa1380e2e 100644 --- a/docs/private-networks/get-started/system-requirements.md +++ b/docs/private-networks/get-started/system-requirements.md @@ -5,12 +5,6 @@ description: System requirements to sync and run Besu # System requirements for private networks -A Hyperledger Besu private network is a network not connected to Ethereum Mainnet or an Ethereum testnet. -Private networks typically use a different [chain ID](../../concepts/network-and-chain-id.md) and -[consensus protocol](../how-to/configure/consensus/index.md). -Participation in private networks is typically restricted in some way, so the volume of traffic is -much lower than Mainnet, resulting in lower system requirements. - Private network system requirements depend on many factors, including: * Size of the world state for the network. @@ -20,6 +14,9 @@ Private network system requirements depend on many factors, including: [PubSub](../../how-to/use-besu-api/rpc-pubsub.md), or [GraphQL](../../how-to/use-besu-api/graphql.md) queries handled by the node. +Participation in private networks is typically restricted in some way, so the volume of traffic is +much lower than on Mainnet, resulting in lower system requirements. + ## Determining system requirements To determine system requirements, check CPU and disk space requirements using diff --git a/docs/private-networks/index.md b/docs/private-networks/index.md new file mode 100644 index 00000000000..d559a5a6e96 --- /dev/null +++ b/docs/private-networks/index.md @@ -0,0 +1,20 @@ +--- +description: Private networks overview +--- + +# Hyperledger Besu for private networks + +You can use Besu to develop enterprise applications requiring secure, high-performance transaction +processing in a private network. + +A private network is a network not connected to Ethereum Mainnet or an Ethereum testnet. +Private networks typically use a different [chain ID](../concepts/network-and-chain-id.md) and +proof of authority consensus ([QBFT](how-to/configure/consensus/qbft.md), +[IBFT 2.0](how-to/configure/consensus/ibft.md), or [Clique](how-to/configure/consensus/clique.md)). + +You can also [create a local development network](tutorials/ethash.md) using proof of work (Ethash). + +Besu supports enterprise features including [privacy](concepts/privacy) and [permissioning](concepts/permissioning). + +Get started with the [Developer Quickstart](tutorials/quickstart.md) to rapidly generate local +blockchain networks. \ No newline at end of file diff --git a/docs/public-networks/get-started/system-requirements.md b/docs/public-networks/get-started/system-requirements.md index d2adc7b612c..cd82b3bf034 100644 --- a/docs/public-networks/get-started/system-requirements.md +++ b/docs/public-networks/get-started/system-requirements.md @@ -5,8 +5,6 @@ description: System requirements to sync and run Besu # System requirements for public networks -You can use Hyperledger Besu on Ethereum Mainnet and public Ethereum testnets. - Determine public network system requirements by checking CPU and disk space requirements using [Prometheus](../../how-to/monitor/metrics.md#monitor-node-performance-using-prometheus). Grafana provides a [sample dashboard](https://grafana.com/grafana/dashboards/10273) for Besu. diff --git a/docs/public-networks/index.md b/docs/public-networks/index.md new file mode 100644 index 00000000000..88f854ffbb1 --- /dev/null +++ b/docs/public-networks/index.md @@ -0,0 +1,10 @@ +--- +description: Public networks overview +--- + +# Hyperledger Besu for public networks + +Besu serves as an [execution client](concepts/the-merge.md) on public proof-of-stake Ethereum +networks such as Ethereum Mainnet, Ropsten, Goerli, Sepolia, and the Merge testnet. + +You can also run Besu using proof of work on [Ethereum Classic](../how-to/configure/mining.md). diff --git a/mkdocs.yml b/mkdocs.yml index e99e5528f60..57d4d9bdc14 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -62,6 +62,7 @@ extra_javascript: nav: - Public networks: + - Index: public-networks/index.md - Get started: - System requirements: public-networks/get-started/system-requirements.md - Install Besu: @@ -126,6 +127,7 @@ nav: - Projects using Besu: reference/projects-using-besu.md - Security disclosure policy: reference/disclosure.md - Private networks: + - Index: private-networks/index.md - Get started: - System requirements: private-networks/get-started/system-requirements.md - Install Besu: From 0c6f4b8beae277b390447c2cc32fda598582bd1b Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Mon, 18 Jul 2022 12:49:52 -0700 Subject: [PATCH 13/31] md fix Signed-off-by: Alexandra Tran --- docs/private-networks/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/private-networks/index.md b/docs/private-networks/index.md index d559a5a6e96..f0fd665eb53 100644 --- a/docs/private-networks/index.md +++ b/docs/private-networks/index.md @@ -17,4 +17,4 @@ You can also [create a local development network](tutorials/ethash.md) using pro Besu supports enterprise features including [privacy](concepts/privacy) and [permissioning](concepts/permissioning). Get started with the [Developer Quickstart](tutorials/quickstart.md) to rapidly generate local -blockchain networks. \ No newline at end of file +blockchain networks. From 7b7e24b6c77c3c91c318b4ea9befadc7f27ebb36 Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Tue, 19 Jul 2022 05:07:51 -0700 Subject: [PATCH 14/31] update and restructure tls, bootnode, and protocol upgrade content Signed-off-by: Alexandra Tran --- docs/concepts/Protocol-Upgrades.md | 30 -------- docs/concepts/TLS.md | 22 ------ .../how-to/configure/tls/client-and-server.md | 14 ++-- .../how-to/configure/validators.md | 4 +- .../how-to/connect/bootnodes.md | 71 ++++++++++++++----- .../how-to/deploy/Bootnodes.md | 57 --------------- .../how-to/upgrade/protocol.md | 40 +++++++---- docs/private-networks/tutorials/quickstart.md | 2 +- 8 files changed, 94 insertions(+), 146 deletions(-) delete mode 100644 docs/concepts/Protocol-Upgrades.md delete mode 100644 docs/concepts/TLS.md delete mode 100644 docs/private-networks/how-to/deploy/Bootnodes.md diff --git a/docs/concepts/Protocol-Upgrades.md b/docs/concepts/Protocol-Upgrades.md deleted file mode 100644 index 7a12e1ab070..00000000000 --- a/docs/concepts/Protocol-Upgrades.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -description: Protocol upgrades ---- - -# Network upgrades in private networks - -Network upgrades are the mechanism for upgrading the Ethereum protocol. The time when the protocol -upgrade occurs is the network upgrade. - -For the Ethereum Mainnet and public testnets (for example, Rinkeby), the milestone block -definitions are in Hyperledger Besu. Upgrading your Besu client applies the network upgrade. - -For private networks, all network participants must agree on the protocol upgrades and then -coordinate the network upgrades. The genesis file specifies the -[milestone block](../reference/genesis-items.md#milestone-blocks) at which to apply the -[protocol upgrade](../private-networks/how-to/upgrade/protocol.md). - -## Backward compatibility - -Some protocol upgrades include changes that might break existing contracts (for example, gas cost -changes). Before upgrading your protocol, review included EIPs for possible impact. A -[meta EIP](https://eips.ethereum.org/meta) for each protocol upgrade lists included EIPs. For -example, [Istanbul](https://eips.ethereum.org/EIPS/eip-1679). - -!!! tip - - For compatibility with future protocol upgrades, do not hardcode any gas price assumptions. - - Implementing upgradeable contracts enables contracts to be upgraded if a protocol upgrade does - include breaking changes. diff --git a/docs/concepts/TLS.md b/docs/concepts/TLS.md deleted file mode 100644 index 065043636d3..00000000000 --- a/docs/concepts/TLS.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -description: TLS overview ---- - -# TLS communication - -Hyperledger Besu supports TLS to secure client and server communication, or [secure P2P communication] between nodes. - -!!! important - - To secure client and server communication, you also need to configure the client ([EthSigner](https://docs.ethsigner.consensys.net/en/latest/Concepts/TLS/)) - or server ([Tessera](https://docs.tessera.consensys.net/HowTo/Configure/TLS/)) for TLS. - -The following diagram displays an example client and server TLS configuration. - -![Besu client and server TLS](../images/Besu_TLS.png) - -You must store private keys and certificates in password-protected PKCS12 keystore files. - -Use the command line options to [enable and configure](../private-networks/how-to/configure/tls/client-and-server.md) TLS. - -[secure P2P communication]: ../private-networks/how-to/configure/tls/p2p.md diff --git a/docs/private-networks/how-to/configure/tls/client-and-server.md b/docs/private-networks/how-to/configure/tls/client-and-server.md index fe4295ab068..1eafe738021 100644 --- a/docs/private-networks/how-to/configure/tls/client-and-server.md +++ b/docs/private-networks/how-to/configure/tls/client-and-server.md @@ -5,25 +5,29 @@ description: Configure TLS # Configure TLS Hyperledger Besu supports TLS for client and server communication. For example, you can -[configure TLS](../../../../concepts/TLS.md) for communication between +configure TLS for communication between [EthSigner](https://docs.ethsigner.consensys.net/en/latest/Concepts/TLS/) and Besu, and Besu and [Tessera](https://docs.tessera.consensys.net/HowTo/Configure/TLS/). +The following diagram displays an example client and server TLS configuration. + +![Besu client and server TLS](../../../../images/Besu_TLS.png) + Configure TLS communication from the command line. -**Prerequisites**: +## Prerequisites -* Besu's password-protected PKCS12 keystore. +* Besu's password-protected PKCS12 keystore * File containing the keystore password ## Configure client TLS Allow clients (for example a dapp, curl, or EthSigner) to send and receive secure HTTP JSON-RPCs. -**Client Prerequisites**: +**Client prerequisites**: * [Configure the client for TLS] -* Client's PKCS12 keystore information. +* Client's PKCS12 keystore information ### Create the known clients file diff --git a/docs/private-networks/how-to/configure/validators.md b/docs/private-networks/how-to/configure/validators.md index 0d41c2ddfe3..7af1cc2ca4d 100644 --- a/docs/private-networks/how-to/configure/validators.md +++ b/docs/private-networks/how-to/configure/validators.md @@ -4,7 +4,7 @@ description: Configuring validators in production networks # Configuring validators in a production network -As when [configuring bootnodes](../deploy/Bootnodes.md): +As when [configuring bootnodes](../connect/bootnodes.md): 1. Create the [node key pair](../../../concepts/node-keys.md) (that is, the private and public key) before starting the validator. @@ -31,7 +31,7 @@ You can [vote validators in or out of the validator pool]. ## Validators as bootnodes -Validators can also be bootnodes. Other than the [usual configuration for bootnodes](../deploy/Bootnodes.md), +Validators can also be bootnodes. Other than the [usual configuration for bootnodes](../connect/bootnodes.md), you do not need to specify any extra configuration when a validator is also a bootnode. If you remove a validator that is also a bootnode, ensure there are enough remaining bootnodes on diff --git a/docs/private-networks/how-to/connect/bootnodes.md b/docs/private-networks/how-to/connect/bootnodes.md index 0bae4958571..0e32b7744f9 100644 --- a/docs/private-networks/how-to/connect/bootnodes.md +++ b/docs/private-networks/how-to/connect/bootnodes.md @@ -2,36 +2,32 @@ description: Configuring bootnodoes --- -# Bootnodes +# Configure bootnodes You can use bootnodes to initially discover peers. Bootnodes are regular nodes used to discover other nodes. +In private networks for development or testing purposes, specify at least one bootnode. + +In production networks, [configure two or more nodes as bootnodes](#configure-bootnodes-in-a-production-network). + !!! tip Bootnodes and static nodes are parallel methods for finding peers. Depending on your use case, - you can use only bootnodes, only static nodes, or both bootnodes and statics nodes. For - example, you run multiple nodes on Mainnet (discovery using bootnodes), but want to ensure your - nodes are always connected (using static nodes). + you can use only bootnodes, only static nodes, or both bootnodes and statics nodes. To find peers, configure one or more bootnodes. To configure a specific set of peer connections, use [static nodes](../../../how-to/connect/static-nodes.md). -## Mainnet and public testnets +!!! note "Mainnet and public testnets" -For Mainnet and the Rinkeby, Ropsten, Sepolia, and Goerli testnets, Hyperledger Besu has an internal list of -enode URLs and uses this list automatically when you specify the -[`--network`](../../../reference/cli/options.md#network) option. - -## Private networks - -In private networks for development or testing purposes, specify at least one bootnode. + For Mainnet and the Rinkeby, Ropsten, Sepolia, and Goerli testnets, Hyperledger Besu has an + internal list of enode URLs and uses this list automatically when you specify the + [`--network`](../../../reference/cli/options.md#network) option. -In production networks, [configure two or more nodes as bootnodes](../deploy/Bootnodes.md). +## Specify a bootnode -### Specify a bootnode - -To start a node, specifying a bootnode [enode](../../../concepts/node-keys.md) for P2P discovery, +To start a node, specify a bootnode [enode](../../../concepts/node-keys.md) for P2P discovery, using the [`--bootnodes`](../../../reference/cli/options.md#bootnodes) option. !!! example @@ -48,3 +44,46 @@ specify a different host or port, use the By default, peer discovery listens on all available network 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. + +## Configure bootnodes in a production network + +A network must have at least one operating bootnode. To allow for continuity in the event of +failure, configure two or more bootnodes in a production network. + +We don't recommend putting bootnodes behind a load balancer because the +[enode](../../../concepts/node-keys.md#enode-url) relates to the node public key, IP address, and +discovery ports. Any changes to a bootnode enode prevents other nodes from being able to establish +a connection with the bootnode. This is why we recommend putting more bootnodes on the network +itself. + +To ensure a bootnode enode doesn't change when recovering from a complete bootnode failure: + +1. Create the [node key pair](../../../concepts/node-keys.md) (that is, the private and public key) + before starting the bootnode. +1. When creating bootnodes in the cloud (for example, AWS and Azure), attempt to assign a static IP + address to them. If your network is: + + * Publicly accessible, assign an elastic IP. + * Internal only, specify a private IP address when you create the instance and record this IP + address. + +We recommend storing the bootnode configuration under source control. + +To allow for failure, specify all bootnodes on the command line (even to the bootnodes themselves). + +!!! tip + + Having each bootnode list the other bootnodes increases the speed of discovery. + Nodes ignore their own enode in the bootnodes list so it isn't required to specify different + bootnode lists to the bootnodes themselves. + +## Add and remove bootnodes + +Adding new bootnodes is a similar process to creating bootnodes. After creating the bootnodes and +adding them to the network, update the [`--bootnodes`](../../../reference/cli/options.md#bootnodes) +command line option for each node to include the new bootnodes. + +When adding bootnodes, you don't need to restart running nodes. By updating the +[`--bootnodes`](../../../reference/cli/options.md#bootnodes) option, the next time you restart the +nodes (for example, when [upgrading](../../../how-to/upgrade/node.md)), the nodes connect to the new +bootnodes. diff --git a/docs/private-networks/how-to/deploy/Bootnodes.md b/docs/private-networks/how-to/deploy/Bootnodes.md deleted file mode 100644 index 66ce0372ad1..00000000000 --- a/docs/private-networks/how-to/deploy/Bootnodes.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -description: Configuring bootnodes in production networks ---- - -# Configuring bootnodes in a production network - -A network must have at least one operating bootnode. To allow for continuity in the event of -failure, configure two or more bootnodes. - -We do not recommend putting bootnodes behind a load balancer because the -[enode](../../../concepts/node-keys.md#enode-url) relates to the node public key, IP address, and -discovery ports. Any changes to a bootnode enode prevents other nodes from being able to establish -a connection with the bootnode. This is why we recommend putting more bootnodes on the network -itself. - -To ensure that a bootnode enode does not change when recovering from a complete bootnode failure: - -1. Create the [node key pair](../../../concepts/node-keys.md) (that is, the private and public key) - before starting the bootnode. -1. When creating bootnodes in the cloud (for example, AWS and Azure), attempt to assign a static IP - address to them. If your network is: - - * Publicly accessible, assign an elastic IP. - * Internal only, specify a private IP address when you create the instance and record this IP - address. - -We recommend that you store the bootnode configuration under source control. - -## Specifying bootnodes - -To allow for failure, specify all bootnodes on the command line (even to the bootnodes themselves). - -!!! example - - If your network has two bootnodes, pass the following parameter to all nodes, including the - bootnodes. - - ```bash - --bootnodes=enode://@:30303,@:30303 - ``` - -!!! tip - - Having each bootnode list the other bootnodes increases the speed of discovery. Nodes ignore - their own enode in the bootnodes list so it is not required to specify different bootnode lists - to the bootnodes themselves. - -## Adding and removing bootnodes - -Adding new bootnodes is a similar process to creating bootnodes. After creating the bootnodes and -adding them to the network,update the [`--bootnodes`](../../../reference/cli/options.md#bootnodes) -command line option for each node to include the new bootnodes. - -When adding bootnodes, you do not need to restart running nodes. By updating the -[`--bootnodes`](../../../reference/cli/options.md#bootnodes) option, the next time you restart the -nodes (for example, when [upgrading](../../../how-to/upgrade/node.md)), the nodes connect to the new -bootnodes. diff --git a/docs/private-networks/how-to/upgrade/protocol.md b/docs/private-networks/how-to/upgrade/protocol.md index 8647afdd1b2..8809634b0ed 100644 --- a/docs/private-networks/how-to/upgrade/protocol.md +++ b/docs/private-networks/how-to/upgrade/protocol.md @@ -2,24 +2,38 @@ description: Upgrading protocol versions --- -# Upgrading your protocol in a private network +# Network and protocol upgrades -To [upgrade the protocol](../../../concepts/Protocol-Upgrades.md) (also known as a hard fork) in a -private network: +Network upgrades are the mechanism for upgrading the Ethereum protocol. +Protocol upgrades occur during the network upgrades. -1. Review included EIPs for breaking changes. A [meta EIP](https://eips.ethereum.org/meta) for each - protocol upgrade lists included EIPs. For example, - [Istanbul](https://eips.ethereum.org/EIPS/eip-1679). -1. Network participants agree on the block number at which to - [upgrade](../../../concepts/Protocol-Upgrades.md). -1. For each node in the network: +For Ethereum Mainnet and public testnets, the milestone block definitions are included in Besu. +Upgrading your Besu client applies the network upgrade. + +For private networks, all network participants must agree on the protocol upgrades and coordinate +the network upgrades. +The genesis file specifies the milestone block at which to apply the protocol upgrade. - a. Add the - [milestone block number](../../../reference/genesis-items.md#milestone-blocks) to the genesis - file. - b. Restart the node before reaching milestone block. +## Upgrade the protocol + +To upgrade the protocol in a private network: + +1. Review included EIPs for breaking changes. + A [meta EIP](https://eips.ethereum.org/meta) for each protocol upgrade lists included EIPs. + For example, [Istanbul](https://eips.ethereum.org/EIPS/eip-1679). +1. Network participants agree on the block number at which to upgrade. +1. For each node in the network: + 1. Add the [milestone block number](../../../reference/genesis-items.md#milestone-blocks) to + the genesis file. + 1. Restart the node before reaching milestone block. !!! caution To avoid a forked network, all network participants must update their genesis file to include the agreed on milestone block and restart their node before reaching the milestone block. + +!!! tip "Tips" + + - For compatibility with future protocol upgrades, don't hardcode any gas price assumptions. + - Implementing upgradeable contracts enables contracts to be upgraded if a protocol upgrade does + include breaking changes. diff --git a/docs/private-networks/tutorials/quickstart.md b/docs/private-networks/tutorials/quickstart.md index 577015ebe91..783ea0a5344 100644 --- a/docs/private-networks/tutorials/quickstart.md +++ b/docs/private-networks/tutorials/quickstart.md @@ -598,7 +598,7 @@ or via [RPC API calls](../../reference/api/index.md#perm_addnodestoallowlist). -[bootnodes]: ../how-to/deploy/Bootnodes.md +[bootnodes]: ../how-to/connect/bootnodes.md [permissions file]: ../how-to/use-permissioning/local.md [static nodes]: ../../how-to/connect/static-nodes.md [allow list]: ../how-to/use-permissioning/local.md#node-allowlisting From 4038b9b29e2429c938416526de053f7d9d59ff15 Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Tue, 19 Jul 2022 13:59:38 -0700 Subject: [PATCH 15/31] initial add global variables Signed-off-by: Alexandra Tran --- docs/concepts/ArchitectureOverview.md | 12 -- docs/{ => global}/concepts/Network-vs-Node.md | 2 +- docs/{ => global}/concepts/Plugins.md | 2 +- docs/{ => global}/concepts/Pruning.md | 0 .../concepts/Transactions/Transaction-Pool.md | 4 +- .../Transactions/Transaction-Types.md | 0 .../Transactions/Transaction-Validation.md | 2 +- docs/{ => global}/concepts/events-and-logs.md | 0 docs/{ => global}/concepts/genesis-file.md | 4 +- .../concepts/network-and-chain-id.md | 2 +- docs/{ => global}/concepts/node-keys.md | 0 .../get-started/install/Build-from-source.md | 0 .../install/binary-distribution.md | 0 .../{ => global}/get-started/install/index.md | 2 +- .../get-started/install/run-docker-image.md | 0 .../Configure-HA/High-Availability.md | 2 +- .../Configure-HA/Sample-Configuration.md | 0 .../how-to/configure/configuration-file.md | 0 docs/{ => global}/how-to/configure/mining.md | 0 .../how-to/configure/pass-jvm-options.md | 0 .../how-to/connect/configure-ports.md | 2 +- .../how-to/connect/manage-peers.md | 2 +- .../how-to/connect/specify-nat.md | 2 +- .../how-to/connect/static-nodes.md | 0 .../how-to/develop/client-libraries.md | 8 +- docs/{ => global}/how-to/develop/truffle.md | 0 docs/{ => global}/how-to/monitor/index.md | 0 docs/{ => global}/how-to/monitor/logging.md | 2 +- docs/{ => global}/how-to/monitor/metrics.md | 2 +- docs/{ => global}/how-to/send-transactions.md | 0 .../how-to/troubleshoot/Troubleshooting.md | 24 +-- .../how-to/troubleshoot/evm-tool.md | 0 .../troubleshoot/java-flight-recorder.md | 0 .../how-to/troubleshoot/trace-transactions.md | 0 docs/{ => global}/how-to/upgrade/node.md | 0 .../how-to/use-besu-api/access-logs.md | 4 +- .../how-to/use-besu-api/authenticate.md | 6 +- .../how-to/use-besu-api/graphql.md | 2 +- .../{ => global}/how-to/use-besu-api/index.md | 0 .../how-to/use-besu-api/json-rpc.md | 0 docs/{ => global}/how-to/use-besu-api/jwt.png | Bin .../how-to/use-besu-api/rpc-pubsub.md | 2 +- .../reference/Plugin-API-Interfaces.md | 2 +- docs/{ => global}/reference/api/index.md | 102 ++++++------ docs/{ => global}/reference/api/objects.md | 14 +- docs/{ => global}/reference/cli/options.md | 72 ++++---- .../{ => global}/reference/cli/subcommands.md | 16 +- docs/{ => global}/reference/disclosure.md | 0 docs/{ => global}/reference/evm-tool.md | 2 +- docs/{ => global}/reference/genesis-items.md | 24 +-- .../reference/projects-using-besu.md | 0 docs/{ => global}/reference/trace-types.md | 0 docs/{ => global}/reference/web3js-quorum.md | 0 docs/index.md | 6 +- .../concepts/events-and-logs.md | 1 + .../private-networks/concepts/genesis-file.md | 1 + .../concepts/network-and-chain-id.md | 1 + docs/private-networks/concepts/node-keys.md | 1 + .../concepts/permissioning/onchain.md | 2 +- .../concepts/permissioning/plugin.md | 2 +- .../concepts/privacy/flexible-privacy.md | 8 +- .../concepts/privacy/index.md | 2 +- .../concepts/privacy/multi-tenancy.md | 2 +- .../concepts/privacy/plugin.md | 6 +- .../concepts/privacy/privacy-groups.md | 2 +- .../privacy/private-transactions/index.md | 12 +- .../private-transactions/processing.md | 8 +- .../install/binary-distribution.md | 1 + .../get-started/install/index.md | 1 + .../get-started/install/run-docker-image.md | 1 + .../get-started/start-node.md | 26 +-- .../get-started/system-requirements.md | 8 +- docs/private-networks/how-to/backup.md | 8 +- .../how-to/configure/configuration-file.md | 1 + .../add-validators-without-voting.md | 4 +- .../how-to/configure/consensus/clique.md | 30 ++-- .../how-to/configure/consensus/ibft.md | 38 ++--- .../how-to/configure/consensus/qbft.md | 36 ++-- .../how-to/configure/contracts.md | 2 +- .../how-to/configure/curves.md | 2 +- .../how-to/configure/free-gas.md | 6 +- .../how-to/configure/mining.md | 1 + .../how-to/configure/pass-jvm-options.md | 1 + .../how-to/configure/tls/client-and-server.md | 24 +-- .../how-to/configure/validators.md | 2 +- .../how-to/connect/bootnodes.md | 20 +-- .../how-to/connect/configure-ports.md | 1 + .../how-to/connect/manage-peers.md | 1 + .../how-to/connect/specify-nat.md | 1 + .../how-to/connect/static-nodes.md | 1 + .../how-to/deploy/ethstats.md | 4 +- .../how-to/develop/client-libraries.md | 1 + .../how-to/develop/truffle.md | 1 + docs/private-networks/how-to/monitor/index.md | 1 + .../how-to/monitor/logging.md | 1 + .../how-to/monitor/metrics.md | 1 + .../how-to/monitor/opentelemetry.md | 8 +- .../private-networks/how-to/monitor/splunk.md | 4 +- .../concurrent-private-transactions.md | 10 +- .../send-transactions/private-transactions.md | 26 +-- .../how-to/send-transactions/revert-reason.md | 22 +-- .../how-to/troubleshoot/evm-tool.md | 1 + .../troubleshoot/java-flight-recorder.md | 1 + .../how-to/troubleshoot/trace-transactions.md | 1 + docs/private-networks/how-to/upgrade/node.md | 1 + .../how-to/upgrade/protocol.md | 2 +- .../how-to/use-permissioning/local.md | 48 +++--- .../how-to/use-permissioning/onchain.md | 6 +- .../access-private-transactions.md | 8 +- .../how-to/use-privacy/besu-extended.md | 14 +- .../how-to/use-privacy/eea-compliant.md | 10 +- .../how-to/use-privacy/flexible.md | 8 +- .../how-to/use-privacy/goquorum-compatible.md | 2 +- .../how-to/use-privacy/privacy-groups.md | 6 +- .../how-to/use-privacy/sign-pmts.md | 4 +- .../how-to/use-privacy/tessera.md | 2 +- .../how-to/use-privacy/web3js-quorum.md | 4 +- docs/private-networks/index.md | 2 +- .../reference/accounts-for-testing.md | 4 +- docs/private-networks/tutorials/clique.md | 32 ++-- .../tutorials/contracts/index.md | 6 +- docs/private-networks/tutorials/ethash.md | 36 ++-- docs/private-networks/tutorials/ibft/index.md | 38 ++--- .../tutorials/ibft/validators.md | 16 +- .../tutorials/kubernetes/nat-manager.md | 14 +- .../tutorials/permissioning/index.md | 50 +++--- .../tutorials/permissioning/onchain.md | 38 ++--- .../tutorials/privacy/index.md | 18 +- .../tutorials/privacy/multi-tenancy.md | 22 +-- .../tutorials/privacy/quickstart.md | 2 +- .../tutorials/privacy/web3js-quorum.md | 2 +- docs/private-networks/tutorials/qbft.md | 38 ++--- docs/private-networks/tutorials/quickstart.md | 16 +- .../concepts/data-storage-formats.md | 6 +- .../concepts/events-and-logs.md | 1 + docs/public-networks/concepts/genesis-file.md | 1 + .../concepts/network-and-chain-id.md | 1 + docs/public-networks/concepts/node-keys.md | 1 + .../install/binary-distribution.md | 1 + .../get-started/install/index.md | 1 + .../get-started/install/run-docker-image.md | 1 + .../public-networks/get-started/start-node.md | 26 +-- .../get-started/system-requirements.md | 8 +- .../how-to/configuration-file.md | 1 + .../how-to/connect/configure-ports.md | 1 + .../how-to/connect/manage-peers.md | 1 + .../how-to/connect/specify-nat.md | 1 + .../how-to/connect/static-nodes.md | 1 + .../how-to/connect/sync-node.md | 16 +- .../how-to/develop/client-libraries.md | 1 + .../public-networks/how-to/develop/truffle.md | 1 + docs/public-networks/how-to/monitor/index.md | 1 + .../public-networks/how-to/monitor/logging.md | 1 + .../public-networks/how-to/monitor/metrics.md | 1 + docs/public-networks/how-to/node.md | 1 + .../how-to/pass-jvm-options.md | 1 + .../how-to/prepare-for-the-merge.md | 4 +- .../how-to/troubleshoot/evm-tool.md | 1 + .../troubleshoot/java-flight-recorder.md | 1 + .../how-to/troubleshoot/trace-transactions.md | 1 + docs/public-networks/how-to/use-engine-api.md | 16 +- docs/public-networks/how-to/use-pow/mining.md | 1 + docs/public-networks/index.md | 2 +- .../reference/engine-api/objects.md | 2 +- .../tutorials/merge-testnet.md | 6 +- mkdocs.yml | 157 +++++++++--------- 166 files changed, 711 insertions(+), 676 deletions(-) delete mode 100644 docs/concepts/ArchitectureOverview.md rename docs/{ => global}/concepts/Network-vs-Node.md (87%) rename docs/{ => global}/concepts/Plugins.md (96%) rename docs/{ => global}/concepts/Pruning.md (100%) rename docs/{ => global}/concepts/Transactions/Transaction-Pool.md (92%) rename docs/{ => global}/concepts/Transactions/Transaction-Types.md (100%) rename docs/{ => global}/concepts/Transactions/Transaction-Validation.md (95%) rename docs/{ => global}/concepts/events-and-logs.md (100%) rename docs/{ => global}/concepts/genesis-file.md (90%) rename docs/{ => global}/concepts/network-and-chain-id.md (96%) rename docs/{ => global}/concepts/node-keys.md (100%) rename docs/{ => global}/get-started/install/Build-from-source.md (100%) rename docs/{ => global}/get-started/install/binary-distribution.md (100%) rename docs/{ => global}/get-started/install/index.md (79%) rename docs/{ => global}/get-started/install/run-docker-image.md (100%) rename docs/{ => global}/how-to/configure/Configure-HA/High-Availability.md (98%) rename docs/{ => global}/how-to/configure/Configure-HA/Sample-Configuration.md (100%) rename docs/{ => global}/how-to/configure/configuration-file.md (100%) rename docs/{ => global}/how-to/configure/mining.md (100%) rename docs/{ => global}/how-to/configure/pass-jvm-options.md (100%) rename docs/{ => global}/how-to/connect/configure-ports.md (97%) rename docs/{ => global}/how-to/connect/manage-peers.md (97%) rename docs/{ => global}/how-to/connect/specify-nat.md (97%) rename docs/{ => global}/how-to/connect/static-nodes.md (100%) rename docs/{ => global}/how-to/develop/client-libraries.md (63%) rename docs/{ => global}/how-to/develop/truffle.md (100%) rename docs/{ => global}/how-to/monitor/index.md (100%) rename docs/{ => global}/how-to/monitor/logging.md (96%) rename docs/{ => global}/how-to/monitor/metrics.md (99%) rename docs/{ => global}/how-to/send-transactions.md (100%) rename docs/{ => global}/how-to/troubleshoot/Troubleshooting.md (86%) rename docs/{ => global}/how-to/troubleshoot/evm-tool.md (100%) rename docs/{ => global}/how-to/troubleshoot/java-flight-recorder.md (100%) rename docs/{ => global}/how-to/troubleshoot/trace-transactions.md (100%) rename docs/{ => global}/how-to/upgrade/node.md (100%) rename docs/{ => global}/how-to/use-besu-api/access-logs.md (97%) rename docs/{ => global}/how-to/use-besu-api/authenticate.md (97%) rename docs/{ => global}/how-to/use-besu-api/graphql.md (98%) rename docs/{ => global}/how-to/use-besu-api/index.md (100%) rename docs/{ => global}/how-to/use-besu-api/json-rpc.md (100%) rename docs/{ => global}/how-to/use-besu-api/jwt.png (100%) rename docs/{ => global}/how-to/use-besu-api/rpc-pubsub.md (99%) rename docs/{ => global}/reference/Plugin-API-Interfaces.md (98%) rename docs/{ => global}/reference/api/index.md (98%) rename docs/{ => global}/reference/api/objects.md (96%) rename docs/{ => global}/reference/cli/options.md (95%) rename docs/{ => global}/reference/cli/subcommands.md (92%) rename docs/{ => global}/reference/disclosure.md (100%) rename docs/{ => global}/reference/evm-tool.md (98%) rename docs/{ => global}/reference/genesis-items.md (76%) rename docs/{ => global}/reference/projects-using-besu.md (100%) rename docs/{ => global}/reference/trace-types.md (100%) rename docs/{ => global}/reference/web3js-quorum.md (100%) create mode 100644 docs/private-networks/concepts/events-and-logs.md create mode 100644 docs/private-networks/concepts/genesis-file.md create mode 100644 docs/private-networks/concepts/network-and-chain-id.md create mode 100644 docs/private-networks/concepts/node-keys.md create mode 100644 docs/private-networks/get-started/install/binary-distribution.md create mode 100644 docs/private-networks/get-started/install/index.md create mode 100644 docs/private-networks/get-started/install/run-docker-image.md create mode 100644 docs/private-networks/how-to/configure/configuration-file.md create mode 100644 docs/private-networks/how-to/configure/mining.md create mode 100644 docs/private-networks/how-to/configure/pass-jvm-options.md create mode 100644 docs/private-networks/how-to/connect/configure-ports.md create mode 100644 docs/private-networks/how-to/connect/manage-peers.md create mode 100644 docs/private-networks/how-to/connect/specify-nat.md create mode 100644 docs/private-networks/how-to/connect/static-nodes.md create mode 100644 docs/private-networks/how-to/develop/client-libraries.md create mode 100644 docs/private-networks/how-to/develop/truffle.md create mode 100644 docs/private-networks/how-to/monitor/index.md create mode 100644 docs/private-networks/how-to/monitor/logging.md create mode 100644 docs/private-networks/how-to/monitor/metrics.md create mode 100644 docs/private-networks/how-to/troubleshoot/evm-tool.md create mode 100644 docs/private-networks/how-to/troubleshoot/java-flight-recorder.md create mode 100644 docs/private-networks/how-to/troubleshoot/trace-transactions.md create mode 100644 docs/private-networks/how-to/upgrade/node.md create mode 100644 docs/public-networks/concepts/events-and-logs.md create mode 100644 docs/public-networks/concepts/genesis-file.md create mode 100644 docs/public-networks/concepts/network-and-chain-id.md create mode 100644 docs/public-networks/concepts/node-keys.md create mode 100644 docs/public-networks/get-started/install/binary-distribution.md create mode 100644 docs/public-networks/get-started/install/index.md create mode 100644 docs/public-networks/get-started/install/run-docker-image.md create mode 100644 docs/public-networks/how-to/configuration-file.md create mode 100644 docs/public-networks/how-to/connect/configure-ports.md create mode 100644 docs/public-networks/how-to/connect/manage-peers.md create mode 100644 docs/public-networks/how-to/connect/specify-nat.md create mode 100644 docs/public-networks/how-to/connect/static-nodes.md create mode 100644 docs/public-networks/how-to/develop/client-libraries.md create mode 100644 docs/public-networks/how-to/develop/truffle.md create mode 100644 docs/public-networks/how-to/monitor/index.md create mode 100644 docs/public-networks/how-to/monitor/logging.md create mode 100644 docs/public-networks/how-to/monitor/metrics.md create mode 100644 docs/public-networks/how-to/node.md create mode 100644 docs/public-networks/how-to/pass-jvm-options.md create mode 100644 docs/public-networks/how-to/troubleshoot/evm-tool.md create mode 100644 docs/public-networks/how-to/troubleshoot/java-flight-recorder.md create mode 100644 docs/public-networks/how-to/troubleshoot/trace-transactions.md create mode 100644 docs/public-networks/how-to/use-pow/mining.md diff --git a/docs/concepts/ArchitectureOverview.md b/docs/concepts/ArchitectureOverview.md deleted file mode 100644 index d52388c8878..00000000000 --- a/docs/concepts/ArchitectureOverview.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -description: Hyperledger Besu architecture ---- - -# Hyperledger Besu architecture - -The following diagram outlines the Hyperledger Besu high-level architecture. - -![Architecture](../images/Architecture.png) - -For more information about the Hyperledger Besu architecture, contact us on the -[Besu channel on Hyperledger Discord](https://discord.gg/hyperledger). diff --git a/docs/concepts/Network-vs-Node.md b/docs/global/concepts/Network-vs-Node.md similarity index 87% rename from docs/concepts/Network-vs-Node.md rename to docs/global/concepts/Network-vs-Node.md index 7ea4531f418..dd107ac418c 100644 --- a/docs/concepts/Network-vs-Node.md +++ b/docs/global/concepts/Network-vs-Node.md @@ -8,7 +8,7 @@ You can configure Besu at the network level and the node level. Specify network-wide settings in the [genesis file](../reference/genesis-items.md). For example, include `evmStackSize` or specify the -[consensus mechanism](../private-networks/how-to/configure/consensus/index.md). +[consensus mechanism](../../private-networks/how-to/configure/consensus/index.md). Specify node settings on the command line or in the [node configuration file](../how-to/configure/configuration-file.md). For example, enable diff --git a/docs/concepts/Plugins.md b/docs/global/concepts/Plugins.md similarity index 96% rename from docs/concepts/Plugins.md rename to docs/global/concepts/Plugins.md index f8c3f0aaecf..ba6b8f67f93 100644 --- a/docs/concepts/Plugins.md +++ b/docs/global/concepts/Plugins.md @@ -18,7 +18,7 @@ third-party application. The API exposes data about the following components: * Logs * Syncing state. -![Besu plugin API](../images/Hyperledger-Besu-Plugin-API.png) +![Besu plugin API](../../images/Hyperledger-Besu-Plugin-API.png) The plugin API provides access to [interfaces](../reference/Plugin-API-Interfaces.md) allowing you to build the plugin. diff --git a/docs/concepts/Pruning.md b/docs/global/concepts/Pruning.md similarity index 100% rename from docs/concepts/Pruning.md rename to docs/global/concepts/Pruning.md diff --git a/docs/concepts/Transactions/Transaction-Pool.md b/docs/global/concepts/Transactions/Transaction-Pool.md similarity index 92% rename from docs/concepts/Transactions/Transaction-Pool.md rename to docs/global/concepts/Transactions/Transaction-Pool.md index d2670a777cb..7c4d97dcb80 100644 --- a/docs/concepts/Transactions/Transaction-Pool.md +++ b/docs/global/concepts/Transactions/Transaction-Pool.md @@ -22,8 +22,8 @@ Options and methods for configuring and monitoring the transaction pool include: RPC subscriptions to notify of transactions added to and dropped from the transaction pool. !!! important - 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 + 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. ## Dropping transactions when the transaction pool is full diff --git a/docs/concepts/Transactions/Transaction-Types.md b/docs/global/concepts/Transactions/Transaction-Types.md similarity index 100% rename from docs/concepts/Transactions/Transaction-Types.md rename to docs/global/concepts/Transactions/Transaction-Types.md diff --git a/docs/concepts/Transactions/Transaction-Validation.md b/docs/global/concepts/Transactions/Transaction-Validation.md similarity index 95% rename from docs/concepts/Transactions/Transaction-Validation.md rename to docs/global/concepts/Transactions/Transaction-Validation.md index a3d9a2d8622..d1c3dc3fcb2 100644 --- a/docs/concepts/Transactions/Transaction-Validation.md +++ b/docs/global/concepts/Transactions/Transaction-Validation.md @@ -7,7 +7,7 @@ description: What transaction validation and when For transactions submitted and added to a block, Besu validates the transactions, as illustrated in the following diagram. -![Transaction Validation](../../images/transaction-validation.png) +![Transaction Validation](../../../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 diff --git a/docs/concepts/events-and-logs.md b/docs/global/concepts/events-and-logs.md similarity index 100% rename from docs/concepts/events-and-logs.md rename to docs/global/concepts/events-and-logs.md diff --git a/docs/concepts/genesis-file.md b/docs/global/concepts/genesis-file.md similarity index 90% rename from docs/concepts/genesis-file.md rename to docs/global/concepts/genesis-file.md index 7a143be9d45..e2cf8adedec 100644 --- a/docs/concepts/genesis-file.md +++ b/docs/global/concepts/genesis-file.md @@ -2,7 +2,7 @@ description: Configuring a network using the genesis file --- -# Creating the Hyperledger Besu genesis file +# Genesis file The genesis file defines the first block in the chain, and the first block defines which chain you want to join. @@ -16,7 +16,7 @@ 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 +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. !!! example "Example IBFT 2.0 genesis file" diff --git a/docs/concepts/network-and-chain-id.md b/docs/global/concepts/network-and-chain-id.md similarity index 96% rename from docs/concepts/network-and-chain-id.md rename to docs/global/concepts/network-and-chain-id.md index b033d3855d6..8c69773390b 100644 --- a/docs/concepts/network-and-chain-id.md +++ b/docs/global/concepts/network-and-chain-id.md @@ -69,7 +69,7 @@ To change a chain ID and start a new chain: 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). +5. [Restart the nodes](../../private-networks/tutorials/ibft/index.md#6-start-the-first-node-as-the-bootnode). !!! important diff --git a/docs/concepts/node-keys.md b/docs/global/concepts/node-keys.md similarity index 100% rename from docs/concepts/node-keys.md rename to docs/global/concepts/node-keys.md diff --git a/docs/get-started/install/Build-from-source.md b/docs/global/get-started/install/Build-from-source.md similarity index 100% rename from docs/get-started/install/Build-from-source.md rename to docs/global/get-started/install/Build-from-source.md diff --git a/docs/get-started/install/binary-distribution.md b/docs/global/get-started/install/binary-distribution.md similarity index 100% rename from docs/get-started/install/binary-distribution.md rename to docs/global/get-started/install/binary-distribution.md diff --git a/docs/get-started/install/index.md b/docs/global/get-started/install/index.md similarity index 79% rename from docs/get-started/install/index.md rename to docs/global/get-started/install/index.md index 13be0d685a7..8cfdb34f919 100644 --- a/docs/get-started/install/index.md +++ b/docs/global/get-started/install/index.md @@ -7,7 +7,7 @@ description: Options for getting started with Hyperledger Besu ## New to Hyperledger Besu? -Get started with the [Developer Quickstart](../../private-networks/tutorials/quickstart.md). +Get started with the [Developer Quickstart](../../../private-networks/tutorials/quickstart.md). Use the quickstart to rapidly generate local blockchain networks. ## Installation options diff --git a/docs/get-started/install/run-docker-image.md b/docs/global/get-started/install/run-docker-image.md similarity index 100% rename from docs/get-started/install/run-docker-image.md rename to docs/global/get-started/install/run-docker-image.md diff --git a/docs/how-to/configure/Configure-HA/High-Availability.md b/docs/global/how-to/configure/Configure-HA/High-Availability.md similarity index 98% rename from docs/how-to/configure/Configure-HA/High-Availability.md rename to docs/global/how-to/configure/Configure-HA/High-Availability.md index 7ed3a8a0685..4a20bfaef74 100644 --- a/docs/how-to/configure/Configure-HA/High-Availability.md +++ b/docs/global/how-to/configure/Configure-HA/High-Availability.md @@ -10,7 +10,7 @@ To enable high availability to the 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](../../../images/LoadBalancer.png) +![Load Balancer](../../../../images/LoadBalancer.png) !!! important diff --git a/docs/how-to/configure/Configure-HA/Sample-Configuration.md b/docs/global/how-to/configure/Configure-HA/Sample-Configuration.md similarity index 100% rename from docs/how-to/configure/Configure-HA/Sample-Configuration.md rename to docs/global/how-to/configure/Configure-HA/Sample-Configuration.md diff --git a/docs/how-to/configure/configuration-file.md b/docs/global/how-to/configure/configuration-file.md similarity index 100% rename from docs/how-to/configure/configuration-file.md rename to docs/global/how-to/configure/configuration-file.md diff --git a/docs/how-to/configure/mining.md b/docs/global/how-to/configure/mining.md similarity index 100% rename from docs/how-to/configure/mining.md rename to docs/global/how-to/configure/mining.md diff --git a/docs/how-to/configure/pass-jvm-options.md b/docs/global/how-to/configure/pass-jvm-options.md similarity index 100% rename from docs/how-to/configure/pass-jvm-options.md rename to docs/global/how-to/configure/pass-jvm-options.md diff --git a/docs/how-to/connect/configure-ports.md b/docs/global/how-to/connect/configure-ports.md similarity index 97% rename from docs/how-to/connect/configure-ports.md rename to docs/global/how-to/connect/configure-ports.md index 6972664bad2..152dc8d35f3 100644 --- a/docs/how-to/connect/configure-ports.md +++ b/docs/global/how-to/connect/configure-ports.md @@ -7,7 +7,7 @@ description: To enable communication you must expose Hyperledger Besu ports appr 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](../../images/PortConfiguration.png) +![Port Configuration](../../../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). diff --git a/docs/how-to/connect/manage-peers.md b/docs/global/how-to/connect/manage-peers.md similarity index 97% rename from docs/how-to/connect/manage-peers.md rename to docs/global/how-to/connect/manage-peers.md index eb4cb287583..91be9096127 100644 --- a/docs/how-to/connect/manage-peers.md +++ b/docs/global/how-to/connect/manage-peers.md @@ -16,7 +16,7 @@ in small, stable networks. You can use [`admin_addPeer`](../../reference/cli/options.md#admin_addpeer) to attempt a specific connection, but this isn't P2P discovery. -We recommend [using bootnodes](../../private-networks/how-to/connect/bootnodes.md) to initially discover peers. +We recommend [using bootnodes](../../../private-networks/how-to/connect/bootnodes.md) to initially discover peers. ## Limit peers diff --git a/docs/how-to/connect/specify-nat.md b/docs/global/how-to/connect/specify-nat.md similarity index 97% rename from docs/how-to/connect/specify-nat.md rename to docs/global/how-to/connect/specify-nat.md index 3552e2c951e..a04f37ab17e 100644 --- a/docs/how-to/connect/specify-nat.md +++ b/docs/global/how-to/connect/specify-nat.md @@ -75,7 +75,7 @@ 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. +A tutorial to [Configure the Nat Manager for Kubernetes](../../../private-networks/tutorials/kubernetes/nat-manager.md) is available. ## Docker diff --git a/docs/how-to/connect/static-nodes.md b/docs/global/how-to/connect/static-nodes.md similarity index 100% rename from docs/how-to/connect/static-nodes.md rename to docs/global/how-to/connect/static-nodes.md diff --git a/docs/how-to/develop/client-libraries.md b/docs/global/how-to/develop/client-libraries.md similarity index 63% rename from docs/how-to/develop/client-libraries.md rename to docs/global/how-to/develop/client-libraries.md index aed177f73c8..32a2ee191af 100644 --- a/docs/how-to/develop/client-libraries.md +++ b/docs/global/how-to/develop/client-libraries.md @@ -9,10 +9,10 @@ Dapps use client libraries, such as [web3.js](https://github.com/ethereum/web3.j 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). +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](../../images/Hyperledger-Besu-Client-Libraries.png) +![Client Libraries](../../../images/Hyperledger-Besu-Client-Libraries.png) Use client libraries to: @@ -23,4 +23,4 @@ Use client libraries to: [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 +[Create and send private transactions]: ../../../private-networks/how-to/send-transactions/private-transactions.md diff --git a/docs/how-to/develop/truffle.md b/docs/global/how-to/develop/truffle.md similarity index 100% rename from docs/how-to/develop/truffle.md rename to docs/global/how-to/develop/truffle.md diff --git a/docs/how-to/monitor/index.md b/docs/global/how-to/monitor/index.md similarity index 100% rename from docs/how-to/monitor/index.md rename to docs/global/how-to/monitor/index.md diff --git a/docs/how-to/monitor/logging.md b/docs/global/how-to/monitor/logging.md similarity index 96% rename from docs/how-to/monitor/logging.md rename to docs/global/how-to/monitor/logging.md index 4097bc08b8d..04d19c60ed1 100644 --- a/docs/how-to/monitor/logging.md +++ b/docs/global/how-to/monitor/logging.md @@ -12,7 +12,7 @@ Hyperledger Besu uses Log4J2 for logging and provides two methods to configure l * [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. +[example implementation using Elastic Stack](../../../private-networks/how-to/monitor/elastic-stack.md) for log management. ## Basic logging diff --git a/docs/how-to/monitor/metrics.md b/docs/global/how-to/monitor/metrics.md similarity index 99% rename from docs/how-to/monitor/metrics.md rename to docs/global/how-to/monitor/metrics.md index 12d0ebe99c7..923e3875b08 100644 --- a/docs/how-to/monitor/metrics.md +++ b/docs/global/how-to/monitor/metrics.md @@ -302,4 +302,4 @@ If a metric has a JSON-RPC equivalent, it is included in the definition column. maximum number of P2P connections that can be established. -[monitoring with Prometheus and Grafana configured]: ../../private-networks/tutorials/quickstart.md#monitor-nodes-with-prometheus-and-grafana +[monitoring with Prometheus and Grafana configured]: ../../../private-networks/tutorials/quickstart.md#monitor-nodes-with-prometheus-and-grafana diff --git a/docs/how-to/send-transactions.md b/docs/global/how-to/send-transactions.md similarity index 100% rename from docs/how-to/send-transactions.md rename to docs/global/how-to/send-transactions.md diff --git a/docs/how-to/troubleshoot/Troubleshooting.md b/docs/global/how-to/troubleshoot/Troubleshooting.md similarity index 86% rename from docs/how-to/troubleshoot/Troubleshooting.md rename to docs/global/how-to/troubleshoot/Troubleshooting.md index e645d9a1b23..2eca9dd4264 100644 --- a/docs/how-to/troubleshoot/Troubleshooting.md +++ b/docs/global/how-to/troubleshoot/Troubleshooting.md @@ -16,12 +16,12 @@ directory. ## Invalid block header If a `TimeStampMoreRecentThanParent | Invalid block header` error occurs, the [genesis file](../../concepts/genesis-file.md) of the new node is specifying a higher -[`blockperiodseconds`](../../private-networks/how-to/configure/consensus/ibft.md#block-time) than the imported chain. +[`blockperiodseconds`](../../../private-networks/how-to/configure/consensus/ibft.md#block-time) than the imported chain. The imported chain makes new blocks faster than the genesis file allows and Besu rejects them with this error. This error most often occurs when importing chains from older versions of Besu. -To correct this error, decrease the `blockperiodseconds` in the new [IBFT 2.0 genesis file](../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) -or [QFBT genesis file](../../private-networks/how-to/configure/consensus/qbft.md#genesis-file) to a lower value that satisfies the block header validation. +To correct this error, decrease the `blockperiodseconds` in the new [IBFT 2.0 genesis file](../../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) +or [QFBT genesis file](../../../private-networks/how-to/configure/consensus/qbft.md#genesis-file) to a lower value that satisfies the block header validation. !!! example @@ -29,8 +29,8 @@ or [QFBT genesis file](../../private-networks/how-to/configure/consensus/qbft.md decrease the `blockperiodseconds` from 4 seconds to 3 seconds to match the imported chain. After you have updated the new genesis file, if the imported chain has a `blockperiodseconds` value set lower than you prefer, you can adjust it by configuring the block time on an -[existing IBFT 2.0](../../private-networks/how-to/configure/consensus/ibft.md#configure-block-time-on-an-existing-network-deployment) -or [existing QBFT](../../private-networks/how-to/configure/consensus/qbft.md#configure-block-time-on-an-existing-network) network. +[existing IBFT 2.0](../../../private-networks/how-to/configure/consensus/ibft.md#configure-block-time-on-an-existing-network-deployment) +or [existing QBFT](../../../private-networks/how-to/configure/consensus/qbft.md#configure-block-time-on-an-existing-network) network. ## Host not authorized @@ -47,7 +47,7 @@ If your nodes are running in AWS, check you have appropriate `SecurityGroups` to the required ports. Check that the [enode URLs](../../concepts/node-keys.md#enode-url) specified for -[bootnodes](../../private-networks/how-to/connect/bootnodes.md) or +[bootnodes](../../../private-networks/how-to/connect/bootnodes.md) or [static nodes](../connect/static-nodes.md) match the enode URLs displayed when starting the remote nodes. @@ -70,8 +70,8 @@ On non-mining nodes, log messages indicate importing blocks. To confirm the block number is increasing, use the [`eth_blockNumber`](../../reference/api/index.md#eth_blocknumber) JSON-RPC API method. -If there is no block creating 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 +If there is no block creating 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. ## Transactions are not mined @@ -83,7 +83,7 @@ returns, but the transaction is never mined, check 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 +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. ## Genesis milestone @@ -105,7 +105,7 @@ Restart Besu with the command line option ## Pending State Nodes not decreasing for a full node in Grafana -During [fast synchronization](../../public-networks/how-to/connect/sync-node.md#run-a-full-node) for a full node, the +During [fast synchronization](../../../public-networks/how-to/connect/sync-node.md#run-a-full-node) for a full node, 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 synchronization and then goes to 0. @@ -115,7 +115,7 @@ In the following example the Pivot Block is 0 (zero) and the Pending State Nodes 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](../../images/fastsync.png) +![Fast synchronization](../../../images/fastsync.png) The easiest solution in this scenario is to restart fast synchronization to obtain a new pivot block. @@ -172,7 +172,7 @@ sudo mount /dev/urandom /dev/random -o bind ## Quorum Developer Quickstart not working on Apple M1 chip -The [Quorum Developer Quickstart](../../private-networks/tutorials/quickstart.md) does not currently support +The [Quorum Developer Quickstart](../../../private-networks/tutorials/quickstart.md) does not currently support the Apple M1 chip. The quickstart starts up on machines that use the chip, but may show the following symptoms: diff --git a/docs/how-to/troubleshoot/evm-tool.md b/docs/global/how-to/troubleshoot/evm-tool.md similarity index 100% rename from docs/how-to/troubleshoot/evm-tool.md rename to docs/global/how-to/troubleshoot/evm-tool.md diff --git a/docs/how-to/troubleshoot/java-flight-recorder.md b/docs/global/how-to/troubleshoot/java-flight-recorder.md similarity index 100% rename from docs/how-to/troubleshoot/java-flight-recorder.md rename to docs/global/how-to/troubleshoot/java-flight-recorder.md diff --git a/docs/how-to/troubleshoot/trace-transactions.md b/docs/global/how-to/troubleshoot/trace-transactions.md similarity index 100% rename from docs/how-to/troubleshoot/trace-transactions.md rename to docs/global/how-to/troubleshoot/trace-transactions.md diff --git a/docs/how-to/upgrade/node.md b/docs/global/how-to/upgrade/node.md similarity index 100% rename from docs/how-to/upgrade/node.md rename to docs/global/how-to/upgrade/node.md diff --git a/docs/how-to/use-besu-api/access-logs.md b/docs/global/how-to/use-besu-api/access-logs.md similarity index 97% rename from docs/how-to/use-besu-api/access-logs.md rename to docs/global/how-to/use-besu-api/access-logs.md index ffc42893a49..e293033f07d 100644 --- a/docs/how-to/use-besu-api/access-logs.md +++ b/docs/global/how-to/use-besu-api/access-logs.md @@ -17,7 +17,7 @@ Use [`eth_newFilter`](../../reference/api/index.md#eth_newfilter) to create the 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 +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). @@ -163,7 +163,7 @@ Filters for private contracts are created, accessed, and uninstalled using: * [`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 +The [privacy group ID](../../../private-networks/concepts/privacy/index.md) must be specified as parameter 0 for the `priv` methods. !!! example diff --git a/docs/how-to/use-besu-api/authenticate.md b/docs/global/how-to/use-besu-api/authenticate.md similarity index 97% rename from docs/how-to/use-besu-api/authenticate.md rename to docs/global/how-to/use-besu-api/authenticate.md index 6db28689014..72e4bd60b94 100644 --- a/docs/how-to/use-besu-api/authenticate.md +++ b/docs/global/how-to/use-besu-api/authenticate.md @@ -7,7 +7,7 @@ description: Hyperledger Besu authentication and authorization for 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. +[multi-tenancy](../../../private-networks/concepts/privacy/multi-tenancy.md) to verify tenant data access. Besu supports two mutually exclusive authentication methods: @@ -61,7 +61,7 @@ Each user requiring JSON-RPC access the configuration file lists 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). + [multi-tenancy](../../../private-networks/concepts/privacy/multi-tenancy.md). !!! example "Password hash subcommand" @@ -208,7 +208,7 @@ 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). + [multi-tenancy](../../../private-networks/concepts/privacy/multi-tenancy.md). !!! example "JWT generation example" diff --git a/docs/how-to/use-besu-api/graphql.md b/docs/global/how-to/use-besu-api/graphql.md similarity index 98% rename from docs/how-to/use-besu-api/graphql.md rename to docs/global/how-to/use-besu-api/graphql.md index 6a4e0cc604d..44759c17baa 100644 --- a/docs/how-to/use-besu-api/graphql.md +++ b/docs/global/how-to/use-besu-api/graphql.md @@ -39,7 +39,7 @@ The third-party tool, [GraphiQL](https://github.com/skevy/graphiql-app), provide interface for editing and testing GraphQL queries and mutations. GraphiQL also provides access to the [Besu GraphQL schema] from within the app. -![GraphiQL](../../images/GraphiQL.png) +![GraphiQL](../../../images/GraphiQL.png) ## Pending diff --git a/docs/how-to/use-besu-api/index.md b/docs/global/how-to/use-besu-api/index.md similarity index 100% rename from docs/how-to/use-besu-api/index.md rename to docs/global/how-to/use-besu-api/index.md diff --git a/docs/how-to/use-besu-api/json-rpc.md b/docs/global/how-to/use-besu-api/json-rpc.md similarity index 100% rename from docs/how-to/use-besu-api/json-rpc.md rename to docs/global/how-to/use-besu-api/json-rpc.md diff --git a/docs/how-to/use-besu-api/jwt.png b/docs/global/how-to/use-besu-api/jwt.png similarity index 100% rename from docs/how-to/use-besu-api/jwt.png rename to docs/global/how-to/use-besu-api/jwt.png diff --git a/docs/how-to/use-besu-api/rpc-pubsub.md b/docs/global/how-to/use-besu-api/rpc-pubsub.md similarity index 99% rename from docs/how-to/use-besu-api/rpc-pubsub.md rename to docs/global/how-to/use-besu-api/rpc-pubsub.md index 4a6eb1122ec..e8124afe1db 100644 --- a/docs/how-to/use-besu-api/rpc-pubsub.md +++ b/docs/global/how-to/use-besu-api/rpc-pubsub.md @@ -15,7 +15,7 @@ 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). +* `priv_subscribe` and `priv_unsubscribe` - create or cancel a subscription for [private logs](../../../private-networks/concepts/privacy/index.md). !!!important diff --git a/docs/reference/Plugin-API-Interfaces.md b/docs/global/reference/Plugin-API-Interfaces.md similarity index 98% rename from docs/reference/Plugin-API-Interfaces.md rename to docs/global/reference/Plugin-API-Interfaces.md index 3acf8e2d1ba..bf783c9c3bf 100644 --- a/docs/reference/Plugin-API-Interfaces.md +++ b/docs/global/reference/Plugin-API-Interfaces.md @@ -59,4 +59,4 @@ the `https://hyperledger.jfrog.io/hyperledger/besu-maven` repository and the `pl The `start` step can be ignored and your plugin module will be instantiated when the command line interface is parsed and available. -[privacy marker transactions]: ../private-networks/concepts/privacy/private-transactions/processing.md +[privacy marker transactions]: ../../private-networks/concepts/privacy/private-transactions/processing.md diff --git a/docs/reference/api/index.md b/docs/global/reference/api/index.md similarity index 98% rename from docs/reference/api/index.md rename to docs/global/reference/api/index.md index 8d185516485..758c3d323be 100644 --- a/docs/reference/api/index.md +++ b/docs/global/reference/api/index.md @@ -500,7 +500,7 @@ Removes a [static node](../../how-to/connect/static-nodes.md). ## `CLIQUE` methods -The `CLIQUE` API methods provide access to the [Clique](../../private-networks/how-to/configure/consensus/clique.md) consensus engine. +The `CLIQUE` API methods provide access to the [Clique](../../../private-networks/how-to/configure/consensus/clique.md) consensus engine. !!! note @@ -697,7 +697,7 @@ Lists signers for the specified block. ### `clique_proposals` Returns -[current proposals](../../private-networks/how-to/configure/consensus/clique.md#adding-and-removing-signers). +[current proposals](../../../private-networks/how-to/configure/consensus/clique.md#adding-and-removing-signers). #### Parameters @@ -1653,8 +1653,8 @@ Returns full trace of all invoked opcodes of all transactions included in the bl ## `EEA` methods -The `EEA` API methods provide functionality for [private transactions](../../private-networks/concepts/privacy/private-transactions/index.md) and -[privacy groups](../../private-networks/concepts/privacy/privacy-groups.md). +The `EEA` API methods provide functionality for [private transactions](../../../private-networks/concepts/privacy/private-transactions/index.md) and +[privacy groups](../../../private-networks/concepts/privacy/privacy-groups.md). !!! note @@ -1665,16 +1665,16 @@ The `EEA` API methods provide functionality for [private transactions](../../pri ### `eea_sendRawTransaction` Distributes the -[private transaction](../../private-networks/how-to/send-transactions/private-transactions.md), -generates the [privacy marker transaction](../../private-networks/concepts/privacy/private-transactions/processing.md) +[private transaction](../../../private-networks/how-to/send-transactions/private-transactions.md), +generates the [privacy marker transaction](../../../private-networks/concepts/privacy/private-transactions/processing.md) and submits it to the transaction pool, and returns the transaction hash of the -[privacy marker transaction](../../private-networks/concepts/privacy/private-transactions/processing.md). +[privacy marker transaction](../../../private-networks/concepts/privacy/private-transactions/processing.md). The signed transaction passed as an input parameter includes the `privateFrom`, -[`privateFor` or `privacyGroupId`](../../private-networks/how-to/send-transactions/private-transactions.md#eea-compliant-or-besu-extended-privacy), +[`privateFor` or `privacyGroupId`](../../../private-networks/how-to/send-transactions/private-transactions.md#eea-compliant-or-besu-extended-privacy), and `restriction` fields. -The `gas` and `gasPrice` are used by the [privacy marker transaction](../../private-networks/concepts/privacy/private-transactions/processing.md) +The `gas` and `gasPrice` are used by the [privacy marker transaction](../../../private-networks/concepts/privacy/private-transactions/processing.md) not the private transaction itself. To avoid exposing your private key, create signed transactions offline and send the signed @@ -1703,7 +1703,7 @@ transaction data using `eea_sendRawTransaction`. #### Returns `result`: *string* - 32-byte transaction hash of the -[Privacy Marker Transaction](../../private-networks/concepts/privacy/private-transactions/processing.md) +[Privacy Marker Transaction](../../../private-networks/concepts/privacy/private-transactions/processing.md) !!! tip @@ -1861,7 +1861,7 @@ Invokes a contract function locally and does not change the state of the blockch You can interact with contracts using [`eth_sendRawTransaction`](#eth_sendrawtransaction) or `eth_call`. If revert reason is enabled with [`--revert-reason-enabled`](../cli/options.md#revert-reason-enabled), -the `eth_call` error response includes the [revert reason](../../private-networks/how-to/send-transactions/revert-reason.md). +the `eth_call` error response includes the [revert reason](../../../private-networks/how-to/send-transactions/revert-reason.md). #### Parameters @@ -2056,7 +2056,7 @@ The `eth_estimateGas` call does not send a transaction. You must call [`eth_sendRawTransaction`](#eth_sendrawtransaction) to execute the transaction. If revert reason is enabled with [`--revert-reason-enabled`](../cli/options.md#revert-reason-enabled), -the `eth_estimateGas` error response includes the [revert reason](../../private-networks/how-to/send-transactions/revert-reason.md). +the `eth_estimateGas` error response includes the [revert reason](../../../private-networks/how-to/send-transactions/revert-reason.md). #### Parameters @@ -3305,7 +3305,7 @@ from untrusted sources, by using a trusted block hash. ### `eth_getQuorumPayload` -When using [GoQuorum-compatible privacy](../../private-networks/how-to/use-privacy/goquorum-compatible.md), returns the +When using [GoQuorum-compatible privacy](../../../private-networks/how-to/use-privacy/goquorum-compatible.md), returns the [unencrypted payload from Tessera](https://docs.tessera.consensys.net/Concepts/Transaction-manager/#private-transaction-flow). #### Parameters @@ -3793,7 +3793,7 @@ next account nonce not used by any pending transactions. 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 +If you enabled [revert reason](../../../private-networks/how-to/send-transactions/revert-reason.md), the receipt includes available revert reasons in the response. #### Parameters @@ -4866,7 +4866,7 @@ Filters time out when not requested by [`eth_getFilterChanges`](#eth_getfilterch ## `IBFT` 2.0 methods -The `IBFT` API methods provide access to the [IBFT 2.0](../../private-networks/how-to/configure/consensus/ibft.md) consensus engine. +The `IBFT` API methods provide access to the [IBFT 2.0](../../../private-networks/how-to/configure/consensus/ibft.md) consensus engine. !!! note @@ -4912,8 +4912,8 @@ Discards a proposal to [add or remove a validator] with the specified address. ### `ibft_getPendingVotes` -Returns [votes](../../private-networks/how-to/configure/consensus/ibft.md#adding-and-removing-validators) cast in the current -[epoch](../../private-networks/how-to/configure/consensus/ibft.md#genesis-file). +Returns [votes](../../../private-networks/how-to/configure/consensus/ibft.md#adding-and-removing-validators) cast in the current +[epoch](../../../private-networks/how-to/configure/consensus/ibft.md#genesis-file). #### Parameters @@ -5543,7 +5543,7 @@ None ## `PERM` (Permissioning) methods The `PERM` API methods provide permissioning functionality. -Use these methods for [local permissioning](../../private-networks/how-to/use-permissioning/local.md) only. +Use these methods for [local permissioning](../../../private-networks/how-to/use-permissioning/local.md) only. !!! important @@ -5554,7 +5554,7 @@ Use these methods for [local permissioning](../../private-networks/how-to/use-pe ### `perm_addAccountsToAllowlist` Adds accounts (participants) to the -[accounts permission list](../../private-networks/how-to/use-permissioning/local.md#account-permissioning). +[accounts permission list](../../../private-networks/how-to/use-permissioning/local.md#account-permissioning). #### Parameters @@ -5597,7 +5597,7 @@ allowlist and including invalid account addresses.) ### `perm_addNodesToAllowlist` Adds nodes to the -[nodes allowlist](../../private-networks/how-to/use-permissioning/local.md#node-allowlisting). +[nodes allowlist](../../../private-networks/how-to/use-permissioning/local.md#node-allowlisting). To use domain names in enode URLs, ensure you [enable DNS support](../../concepts/node-keys.md#domain-name-support) to avoid receiving a `request contains an invalid node` error. @@ -5647,7 +5647,7 @@ including invalid enode URLs. ### `perm_getAccountsAllowlist` Lists accounts (participants) in the -[accounts permissions list](../../private-networks/how-to/use-permissioning/local.md#account-permissioning). +[accounts permissions list](../../../private-networks/how-to/use-permissioning/local.md#account-permissioning). #### Parameters @@ -5687,7 +5687,7 @@ None ### `perm_getNodesAllowlist` Lists nodes in the -[nodes allowlist](../../private-networks/how-to/use-permissioning/local.md#node-allowlisting). +[nodes allowlist](../../../private-networks/how-to/use-permissioning/local.md#node-allowlisting). #### Parameters @@ -5763,7 +5763,7 @@ None ### `perm_removeAccountsFromAllowlist` Removes accounts (participants) from the -[accounts permissions list](../../private-networks/how-to/use-permissioning/local.md#account-permissioning). +[accounts permissions list](../../../private-networks/how-to/use-permissioning/local.md#account-permissioning). #### Parameters @@ -5806,7 +5806,7 @@ and including invalid account addresses.) ### `perm_removeNodesFromAllowlist` Removes nodes from the -[nodes allowlist](../../private-networks/how-to/use-permissioning/local.md#node-allowlisting). +[nodes allowlist](../../../private-networks/how-to/use-permissioning/local.md#node-allowlisting). #### Parameters @@ -5894,8 +5894,8 @@ Reloads specified plugin configuration. ## `PRIV` methods -The `PRIV` API methods provide functionality for [private transactions](../../private-networks/concepts/privacy/private-transactions/index.md) and -[privacy groups](../../private-networks/concepts/privacy/privacy-groups.md). +The `PRIV` API methods provide functionality for [private transactions](../../../private-networks/concepts/privacy/private-transactions/index.md) and +[privacy groups](../../../private-networks/concepts/privacy/privacy-groups.md). !!! note @@ -5911,7 +5911,7 @@ For private contracts, `priv_call` is the same as [`eth_call`](#eth_call) for pu #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../private-networks/concepts/privacy/privacy-groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../../private-networks/concepts/privacy/privacy-groups.md) * `call`: *object* - [transaction call object](objects.md#transaction-call-object) @@ -6032,7 +6032,7 @@ Returns the state root of the specified privacy group at the specified block. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../private-networks/concepts/privacy/privacy-groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../../private-networks/concepts/privacy/privacy-groups.md) * `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, or `pending`, as described in @@ -6106,7 +6106,7 @@ Deletes the specified privacy group. ### `priv_distributeRawTransaction` Distributes a signed, RLP encoded -[private transaction](../../private-networks/how-to/send-transactions/private-transactions.md). +[private transaction](../../../private-networks/how-to/send-transactions/private-transactions.md). !!! tip @@ -6159,8 +6159,8 @@ members are A and B, a privacy group containing A, B, and C is not returned. #### Returns `result`: *array* of *objects* - privacy group objects containing only the specified members; privacy groups are -[EEA-compliant](../../private-networks/concepts/privacy/privacy-groups.md#enterprise-ethereum-alliance-privacy) -or [Besu-extended](../../private-networks/concepts/privacy/privacy-groups.md#besu-extended-privacy) with types: +[EEA-compliant](../../../private-networks/concepts/privacy/privacy-groups.md#enterprise-ethereum-alliance-privacy) +or [Besu-extended](../../../private-networks/concepts/privacy/privacy-groups.md#besu-extended-privacy) with types: * `LEGACY` for EEA-compliant groups. @@ -6208,7 +6208,7 @@ is stored as a hexadecimal value. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../private-networks/concepts/privacy/privacy-groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../../private-networks/concepts/privacy/privacy-groups.md) * `address`: *string* - 20-byte contract address @@ -6302,7 +6302,7 @@ of log objects or an empty list. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../private-networks/concepts/privacy/privacy-groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../../private-networks/concepts/privacy/privacy-groups.md) * `filterId`: *string* - filter ID @@ -6366,7 +6366,7 @@ for private contracts. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../private-networks/concepts/privacy/privacy-groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../../private-networks/concepts/privacy/privacy-groups.md) * `filterId`: *string* - filter ID @@ -6437,7 +6437,7 @@ for private contracts. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../private-networks/concepts/privacy/privacy-groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../../private-networks/concepts/privacy/privacy-groups.md) * `filterOptions`: *object* - [filter options object](objects.md#filter-options-object) @@ -6501,7 +6501,7 @@ for private contracts. ### `priv_getPrivacyPrecompileAddress` Returns the address of the -[privacy precompiled contract](../../private-networks/concepts/privacy/private-transactions/processing.md). +[privacy precompiled contract](../../../private-networks/concepts/privacy/private-transactions/processing.md). The address is derived and based on the value of the [`privacy-flexible-groups-enabled`](../cli/options.md#privacy-flexible-groups-enabled) option. @@ -6706,7 +6706,7 @@ for public contracts. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../private-networks/concepts/privacy/privacy-groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../../private-networks/concepts/privacy/privacy-groups.md) * `filterOptions`: *object* - [filter options object](objects.md#filter-options-object) @@ -6755,7 +6755,7 @@ for public contracts. #### Parameters -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../private-networks/concepts/privacy/privacy-groups.md) +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../../private-networks/concepts/privacy/privacy-groups.md) * `filterId`: *string* - filter ID @@ -6789,7 +6789,7 @@ for public contracts. ## `QBFT` methods -The `QBFT` API methods provide access to the [QBFT](../../private-networks/how-to/configure/consensus/qbft.md) consensus engine. +The `QBFT` API methods provide access to the [QBFT](../../../private-networks/how-to/configure/consensus/qbft.md) consensus engine. !!! note @@ -6800,7 +6800,7 @@ The `QBFT` API methods provide access to the [QBFT](../../private-networks/how-t ### `qbft_discardValidatorVote` Discards a proposal to -[add or remove a validator](../../private-networks/how-to/configure/consensus/qbft.md#adding-and-removing-validators) with the specified address. +[add or remove a validator](../../../private-networks/how-to/configure/consensus/qbft.md#adding-and-removing-validators) with the specified address. #### Parameters @@ -6836,8 +6836,8 @@ Discards a proposal to ### `qbft_getPendingVotes` -Returns [votes](../../private-networks/how-to/configure/consensus/qbft.md#adding-and-removing-validators) cast in the current -[epoch](../../private-networks/how-to/configure/consensus/qbft.md#genesis-file). +Returns [votes](../../../private-networks/how-to/configure/consensus/qbft.md#adding-and-removing-validators) cast in the current +[epoch](../../../private-networks/how-to/configure/consensus/qbft.md#genesis-file). #### Parameters @@ -7037,7 +7037,7 @@ Lists the validators defined in the specified block. ### `qbft_proposeValidatorVote` Proposes to -[add or remove a validator](../../private-networks/how-to/configure/consensus/qbft.md#adding-and-removing-validators) with the specified address. +[add or remove a validator](../../../private-networks/how-to/configure/consensus/qbft.md#adding-and-removing-validators) with the specified address. #### Parameters @@ -7104,7 +7104,7 @@ Provides transaction processing of [type `trace`](../trace-types.md#trace) for t `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). +the returned list items include the [revert reason](../../../private-networks/how-to/send-transactions/revert-reason.md). !!! example @@ -7591,7 +7591,7 @@ combination of the three options including none of them. 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). +[revert reason](../../../private-networks/how-to/send-transactions/revert-reason.md). !!! example @@ -7701,7 +7701,7 @@ Provides transaction processing of [type `trace`](../trace-types.md#trace) for t `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). +the returned list items include the [revert reason](../../../private-networks/how-to/send-transactions/revert-reason.md). !!! example @@ -8125,10 +8125,10 @@ None [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 -[add or remove a signer with the specified address]: ../../private-networks/how-to/configure/consensus/clique.md#add-and-remove-signers -[signers for the specified block]: ../../private-networks/how-to/configure/consensus/clique.md#adding-and-removing-signers -[add or remove a validator]: ../../private-networks/how-to/configure/consensus/ibft.md#add-and-remove-validators -[permissions configuration file]: ../../private-networks/how-to/use-permissioning/local.md#permissions-configuration-file -[group of sender and recipients]: ../../private-networks/concepts/privacy/privacy-groups.md#enterprise-ethereum-alliance-privacy +[add or remove a signer with the specified address]: ../../../private-networks/how-to/configure/consensus/clique.md#add-and-remove-signers +[signers for the specified block]: ../../../private-networks/how-to/configure/consensus/clique.md#adding-and-removing-signers +[add or remove a validator]: ../../../private-networks/how-to/configure/consensus/ibft.md#add-and-remove-validators +[permissions configuration file]: ../../../private-networks/how-to/use-permissioning/local.md#permissions-configuration-file +[group of sender and recipients]: ../../../private-networks/concepts/privacy/privacy-groups.md#enterprise-ethereum-alliance-privacy *[EEA]: Enterprise Ethereum Alliance diff --git a/docs/reference/api/objects.md b/docs/global/reference/api/objects.md similarity index 96% rename from docs/reference/api/objects.md rename to docs/global/reference/api/objects.md index a9772d20862..e819b3962d5 100644 --- a/docs/reference/api/objects.md +++ b/docs/global/reference/api/objects.md @@ -25,7 +25,7 @@ Returned by [`eth_getBlockByHash`](index.md#eth_getblockbyhash) and | **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. | -| **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). | +| **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. | @@ -138,9 +138,9 @@ Returned by [`priv_getPrivateTransaction`](index.md#priv_getprivatetransaction). | **r** | Data, 32 bytes | ECDSA signature r. | | **s** | Data, 32 bytes | ECDSA signature s. | | **privateFrom** | Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) public key of the sender. | -| **privateFor** | Array of Data, 32 bytes each | [Tessera](https://docs.tessera.consensys.net/) public keys of recipients. Not returned if using `privacyGroupId` to [send the transaction](../../private-networks/concepts/privacy/privacy-groups.md#privacy-types). | -| **privacyGroupId** | Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) privacy group ID of recipients. Not returned if using `privateFor` to [send the transaction](../../private-networks/concepts/privacy/privacy-groups.md#privacy-types). | -| **restriction** | String | Must be [`restricted`](../../private-networks/concepts/privacy/private-transactions/index.md). | +| **privateFor** | Array of Data, 32 bytes each | [Tessera](https://docs.tessera.consensys.net/) public keys of recipients. Not returned if using `privacyGroupId` to [send the transaction](../../../private-networks/concepts/privacy/privacy-groups.md#privacy-types). | +| **privacyGroupId** | Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) privacy group ID of recipients. Not returned if using `privateFor` to [send the transaction](../../../private-networks/concepts/privacy/privacy-groups.md#privacy-types). | +| **restriction** | String | Must be [`restricted`](../../../private-networks/concepts/privacy/private-transactions/index.md). | ## Range object @@ -213,7 +213,7 @@ and | **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/Transaction-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/Transaction-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/). | +| **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. | | **publicKey** | Data, 64 bytes | Public key of the sender. | | **raw** | Data | This signed transaction in Recursive Length Prefix (RLP) encoded form. | @@ -264,7 +264,7 @@ Returned by [`eth_getTransactionReceipt`](index.md#eth_gettransactionreceipt). | **transactionHash** | Data, 32 bytes | Hash of the transaction. | | **transactionIndex** | Quantity, Integer | Index position of transaction in the block. | | **transactionType** | String | [Transaction type](../../concepts/Transactions/Transaction-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). | +| **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). | !!!note @@ -300,7 +300,7 @@ Returned by [`priv_getTransactionReceipt`](index.md#priv_gettransactionreceipt). | **logs** | Array | Array of [log objects](#log-object) generated by this private transaction. | | **to** | Data, 20 bytes | Address of the receiver, if sending ether, otherwise, null. | | **transactionIndex** | Quantity, Integer | Index position of transaction in the block. | -| **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). | +| **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). | | **output** | Data | RLP-encoded return value of a contract call if a value returns, otherwise, `null`. | | **commitmentHash** | Data, 32 bytes | Hash of the privacy marker transaction. | | **status** | Quantity | Either `0x1` (success) or `0x0` (failure). | diff --git a/docs/reference/cli/options.md b/docs/global/reference/cli/options.md similarity index 95% rename from docs/reference/cli/options.md rename to docs/global/reference/cli/options.md index cf012bf1478..debfadc81bf 100644 --- a/docs/reference/cli/options.md +++ b/docs/global/reference/cli/options.md @@ -226,8 +226,8 @@ You can specify the banned node IDs with or without the `0x` prefix. bonsai-maximum-back-layers-to-load=256 ``` -When using [Bonsai Tries](../../public-networks/concepts/data-storage-formats.md#bonsai-tries), the -[maximum number of layers back](../../public-networks/concepts/data-storage-formats.md#accessing-data) Bonsai can go to reconstruct a +When using [Bonsai Tries](../../../public-networks/concepts/data-storage-formats.md#bonsai-tries), the +[maximum number of layers back](../../../public-networks/concepts/data-storage-formats.md#accessing-data) Bonsai can go to reconstruct a historical state. The default is 512. @@ -258,7 +258,7 @@ The default is 512. ``` A list of comma-separated [enode URLs](../../concepts/node-keys.md#enode-url) for -[P2P discovery bootstrap](../../private-networks/how-to/connect/bootnodes.md). +[P2P discovery bootstrap](../../../private-networks/how-to/connect/bootnodes.md). When connecting to Mainnet or public testnets, the default is a predefined list of enode URLs. @@ -412,7 +412,7 @@ The path to the Besu data directory. The default is the directory you installed data-storage-format="BONSAI" ``` -The [data storage format](../../public-networks/concepts/data-storage-formats.md) to use. +The [data storage format](../../../public-networks/concepts/data-storage-formats.md) to use. Set to `BONSAI` for Bonsai Tries or `FOREST` for Forest of Tries. The default is `FOREST`. @@ -531,7 +531,7 @@ A comma-separated list of hostnames to allow for Engine API access (applies to b ```bash engine-jwt-disabled=true ``` -Disables or enables [authentication](../../public-networks/how-to/use-engine-api.md#authentication) for Engine APIs. +Disables or enables [authentication](../../../public-networks/how-to/use-engine-api.md#authentication) for Engine APIs. The default is `false` (authentication is enabled by default). ### `engine-jwt-secret` @@ -560,11 +560,11 @@ The default is `false` (authentication is enabled by default). engine-jwt-secret="jwt.hex" ``` -Shared secret used to authenticate [consensus clients](../../public-networks/concepts/the-merge.md) when using the Engine JSON-RPC API (both +Shared secret used to authenticate [consensus clients](../../../public-networks/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](../../public-networks/tutorials/merge-testnet.md#prerequisites). +See an [example of how to generate this](../../../public-networks/tutorials/merge-testnet.md#prerequisites). ### `engine-rpc-port` @@ -621,7 +621,7 @@ The default is `8551`. ethstats="Dev-Node-1:secret@127.0.0.1:3001" ``` -Reporting URL of an [Ethstats](../../private-networks/how-to/deploy/ethstats.md) server. +Reporting URL of an [Ethstats](../../../private-networks/how-to/deploy/ethstats.md) server. ### `ethstats-contact` @@ -681,7 +681,7 @@ Contact email address to send to the Ethstats server specified by [`--ethstats`] fast-sync-min-peers=8 ``` -The minimum number of peers required before starting [fast synchronization](../../public-networks/how-to/connect/sync-node.md#run-a-full-node). +The minimum number of peers required before starting [fast synchronization](../../../public-networks/how-to/connect/sync-node.md#run-a-full-node). The default is 5. !!! note @@ -1063,7 +1063,7 @@ Other categories are `KVSTORE_ROCKSDB`, `KVSTORE_PRIVATE_ROCKSDB`, `KVSTORE_ROCK `KVSTORE_PRIVATE_ROCKSDB_STATS`. Categories containing `PRIVATE` track metrics when you enable -[private transactions](../../private-networks/concepts/privacy/index.md). +[private transactions](../../../private-networks/concepts/privacy/index.md). ### `metrics-enabled` @@ -1578,7 +1578,7 @@ lowest value [`eth_gasPrice`](../api/index.md#eth_gasprice) can return. The defa Wei. !!! important - 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. + 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). @@ -1659,8 +1659,8 @@ Possible values are: | Network | Chain | Type | Default Sync Mode | Description | |:----------|:------|:------------|:-------------------|:---------------------------------------------------------------| | `mainnet` | ETH | Production | [FAST](#sync-mode) | The main network | -| `kiln` | ETH | Test | [FAST](#sync-mode) | A PoS network similar to the main Ethereum network post-[Merge](../../public-networks/concepts/the-merge.md) | -| `ropsten` | ETH | Test | [FAST](#sync-mode) | A PoS network similar to the main Ethereum network post-[Merge](../../public-networks/concepts/the-merge.md) | +| `kiln` | ETH | Test | [FAST](#sync-mode) | A PoS network similar to the main Ethereum network post-[Merge](../../../public-networks/concepts/the-merge.md) | +| `ropsten` | ETH | Test | [FAST](#sync-mode) | A PoS network similar to the main Ethereum network post-[Merge](../../../public-networks/concepts/the-merge.md) | | `rinkeby` | ETH | Test | [FAST](#sync-mode) | A PoA network using Clique | | `goerli` | ETH | Test | [FAST](#sync-mode) | A PoA network using Clique | | `sepolia` | ETH | Test | [FAST](#sync-mode) | A PoW network | @@ -1964,7 +1964,7 @@ Enables or disables file-based account level permissions. The default is `false` ``` The contract address for -[onchain account permissioning](../../private-networks/concepts/permissioning/onchain.md). +[onchain account permissioning](../../../private-networks/concepts/permissioning/onchain.md). ### `permissions-accounts-contract-enabled` @@ -1993,7 +1993,7 @@ The contract address for ``` Enables or disables contract-based -[onchain account permissioning](../../private-networks/concepts/permissioning/onchain.md). The default +[onchain account permissioning](../../../private-networks/concepts/permissioning/onchain.md). The default is `false`. ### `permissions-nodes-config-file` @@ -2086,7 +2086,7 @@ Enables or disables file-based node level permissions. The default is `false`. ``` The contract address for -[onchain node permissioning](../../private-networks/concepts/permissioning/onchain.md). +[onchain node permissioning](../../../private-networks/concepts/permissioning/onchain.md). ### `permissions-nodes-contract-enabled` @@ -2115,7 +2115,7 @@ The contract address for ``` Enables or disables contract-based -[onchain node permissioning](../../private-networks/concepts/permissioning/onchain.md). The default is +[onchain node permissioning](../../../private-networks/concepts/permissioning/onchain.md). The default is `false`. ### `permissions-nodes-contract-version` @@ -2144,7 +2144,7 @@ Enables or disables contract-based permissions-nodes-contract-version=2 ``` -Version of the EEA [node permissioning interface](../../private-networks/how-to/use-permissioning/onchain.md#specify-the-permissioning-contract-interface-version). +Version of the EEA [node permissioning interface](../../../private-networks/how-to/use-permissioning/onchain.md#specify-the-permissioning-contract-interface-version). The default is 1. ### `privacy-enabled` @@ -2173,7 +2173,7 @@ The default is 1. privacy-enabled=false ``` -Enables or disables [private transactions](../../private-networks/concepts/privacy/index.md). The default +Enables or disables [private transactions](../../../private-networks/concepts/privacy/index.md). The default is `false`. !!! important @@ -2208,7 +2208,7 @@ is `false`. ``` `` is the name of the private key file used to -[sign privacy marker transactions](../../private-networks/how-to/use-privacy/sign-pmts.md). +[sign privacy marker transactions](../../../private-networks/how-to/use-privacy/sign-pmts.md). !!! note @@ -2250,7 +2250,7 @@ with a different randomly generated key. privacy-multi-tenancy-enabled=false ``` -Enables or disables [multi-tenancy](../../private-networks/concepts/privacy/multi-tenancy.md) for private +Enables or disables [multi-tenancy](../../../private-networks/concepts/privacy/multi-tenancy.md) for private transactions. The default is `false`. ### `privacy-flexible-groups-enabled` @@ -2279,7 +2279,7 @@ transactions. The default is `false`. privacy-flexible-groups-enabled=true ``` -Enables or disables [flexible privacy groups](../../private-networks/concepts/privacy/flexible-privacy.md). The default is `false`. +Enables or disables [flexible privacy groups](../../../private-networks/concepts/privacy/flexible-privacy.md). The default is `false`. Deprecated syntax for this option is `--privacy-onchain-groups-enabled`. @@ -2432,7 +2432,7 @@ The path to the file containing the password to decrypt the keystore. ``` The path to the file containing the hostnames, ports, and SHA256 certificate fingerprints of the -[authorized privacy enclave](../../private-networks/how-to/configure/tls/client-and-server.md#create-the-known-servers-file). +[authorized privacy enclave](../../../private-networks/how-to/configure/tls/client-and-server.md#create-the-known-servers-file). ### `privacy-url` @@ -2461,7 +2461,7 @@ The path to the file containing the hostnames, ports, and SHA256 certificate fin ``` The URL on which the -[Tessera node](../../private-networks/tutorials/privacy/index.md#3-create-tessera-configuration-files) is +[Tessera node](../../../private-networks/tutorials/privacy/index.md#3-create-tessera-configuration-files) is running. ### `pruning-block-confirmations` @@ -2494,7 +2494,7 @@ The minimum number of confirmations on a block before marking of newly-stored or nodes that cannot be pruned. The default is 10. !!! important - Using pruning with [private transactions](../../private-networks/concepts/privacy/index.md) is not + Using pruning with [private transactions](../../../private-networks/concepts/privacy/index.md) is not supported. ### `pruning-blocks-retained` @@ -2526,7 +2526,7 @@ nodes that cannot be pruned. The default is 10. The minimum number of recent blocks to keep the entire world state for. The default is 1024. !!! important - Using pruning with [private transactions](../../private-networks/concepts/privacy/index.md) is not + Using pruning with [private transactions](../../../private-networks/concepts/privacy/index.md) is not supported. ### `pruning-enabled` @@ -2750,7 +2750,7 @@ rejects that peer. revert-reason-enabled=true ``` -Enables or disables including the [revert reason](../../private-networks/how-to/send-transactions/revert-reason.md) in the +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`. @@ -3281,7 +3281,7 @@ The path to the file containing the password to decrypt the keystore. ``` 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 +[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 @@ -3748,10 +3748,10 @@ The default is `false`. ``` The synchronization mode. -Use `FAST` for [fast sync](../../public-networks/how-to/connect/sync-node.md#fast-synchronization), `FULL` for -[full sync](../../public-networks/how-to/connect/sync-node.md#run-an-archive-node), `X_SNAP` for -[snap sync](../../public-networks/how-to/connect/sync-node.md#snap-synchronization), and `X_CHECKPOINT` for -[checkpoint sync](../../public-networks/how-to/connect/sync-node.md#checkpoint-synchronization). +Use `FAST` for [fast sync](../../../public-networks/how-to/connect/sync-node.md#fast-synchronization), `FULL` for +[full sync](../../../public-networks/how-to/connect/sync-node.md#run-an-archive-node), `X_SNAP` for +[snap sync](../../../public-networks/how-to/connect/sync-node.md#snap-synchronization), and `X_CHECKPOINT` for +[checkpoint sync](../../../public-networks/how-to/connect/sync-node.md#checkpoint-synchronization). * 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. @@ -3951,9 +3951,9 @@ Prints version information and exit. [push gateway integration]: ../../how-to/monitor/metrics.md#running-prometheus-with-besu-in-push-mode -[accounts permissions configuration file]: ../../private-networks/how-to/use-permissioning/local.md#permissions-configuration-file -[nodes permissions configuration file]: ../../private-networks/how-to/use-permissioning/local.md#permissions-configuration-file -[account permissioning]: ../../private-networks/concepts/permissioning/index.md#account-permissioning -[TLS on communication with the Private Transaction Manager]: ../../private-networks/concepts/privacy/index.md#private-transaction-manager +[accounts permissions configuration file]: ../../../private-networks/how-to/use-permissioning/local.md#permissions-configuration-file +[nodes permissions configuration file]: ../../../private-networks/how-to/use-permissioning/local.md#permissions-configuration-file +[account permissioning]: ../../../private-networks/concepts/permissioning/index.md#account-permissioning +[TLS on communication with the Private Transaction Manager]: ../../../private-networks/concepts/privacy/index.md#private-transaction-manager [JWT provider's public key file]: ../../how-to/use-besu-api/authenticate.md#jwt-public-key-authentication [plugin]: ../Plugin-API-Interfaces.md diff --git a/docs/reference/cli/subcommands.md b/docs/global/reference/cli/subcommands.md similarity index 92% rename from docs/reference/cli/subcommands.md rename to docs/global/reference/cli/subcommands.md index b56d338672b..022cb947097 100644 --- a/docs/reference/cli/subcommands.md +++ b/docs/global/reference/cli/subcommands.md @@ -174,12 +174,12 @@ Provides operator actions. besu operator generate-blockchain-config --config-file=config.json --to=myNetworkFiles ``` Generates an -[IBFT 2.0](../../private-networks/tutorials/ibft/index.md) or -[QBFT](../../private-networks/tutorials/qbft.md) genesis file. +[IBFT 2.0](../../../private-networks/tutorials/ibft/index.md) or +[QBFT](../../../private-networks/tutorials/qbft.md) genesis file. The configuration file has two nested JSON nodes. The first is the `genesis` property defining the -[IBFT 2.0](../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) or -[QBFT](../../private-networks/how-to/configure/consensus/qbft.md#genesis-file) genesis file, except for +[IBFT 2.0](../../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) or +[QBFT](../../../private-networks/how-to/configure/consensus/qbft.md#genesis-file) genesis file, except for the `extraData` string. The second is the `blockchain` property defining the number of key pairs to generate. @@ -243,11 +243,11 @@ Encodes the RLP hexadecimal string for use in a IBFT 2.0 or QBFT genesis file. T Supported types are: -* `IBFT_EXTRA_DATA` - The [IBFT 2.0 genesis file](../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) includes -the `IBFT_EXTRA_DATA` type in the [`extraData`](../../private-networks/how-to/configure/consensus/ibft.md#extra-data) property. +* `IBFT_EXTRA_DATA` - The [IBFT 2.0 genesis file](../../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) includes +the `IBFT_EXTRA_DATA` type in the [`extraData`](../../../private-networks/how-to/configure/consensus/ibft.md#extra-data) property. -* `QBFT_EXTRA_DATA` - The [QBFT genesis file](../../private-networks/how-to/configure/consensus/qbft.md#genesis-file) includes - the `QBFT_EXTRA_DATA` type in the [`extraData`](../../private-networks/how-to/configure/consensus/qbft.md#extra-data) property. +* `QBFT_EXTRA_DATA` - The [QBFT genesis file](../../../private-networks/how-to/configure/consensus/qbft.md#genesis-file) includes + the `QBFT_EXTRA_DATA` type in the [`extraData`](../../../private-networks/how-to/configure/consensus/qbft.md#extra-data) property. ???+ summary "IBFT 2.0 extra data" diff --git a/docs/reference/disclosure.md b/docs/global/reference/disclosure.md similarity index 100% rename from docs/reference/disclosure.md rename to docs/global/reference/disclosure.md diff --git a/docs/reference/evm-tool.md b/docs/global/reference/evm-tool.md similarity index 98% rename from docs/reference/evm-tool.md rename to docs/global/reference/evm-tool.md index bbc0a4573ff..b5f22bdacfc 100644 --- a/docs/reference/evm-tool.md +++ b/docs/global/reference/evm-tool.md @@ -83,7 +83,7 @@ If set to a non-zero value, the sender account must have enough value to cover t The account the invocation is sent from. The specified account must exist in the world state, which unless specified by `--genesis` -or `--prestate` is the set of [accounts used for testing](../private-networks/reference/accounts-for-testing.md). +or `--prestate` is the set of [accounts used for testing](../../private-networks/reference/accounts-for-testing.md). ### `receiver` diff --git a/docs/reference/genesis-items.md b/docs/global/reference/genesis-items.md similarity index 76% rename from docs/reference/genesis-items.md rename to docs/global/reference/genesis-items.md index 8dbf0d11989..344ba6d5d6f 100644 --- a/docs/reference/genesis-items.md +++ b/docs/global/reference/genesis-items.md @@ -15,23 +15,23 @@ Network configuration items are specified in the genesis file in the `config` ob |---------------------|-:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 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`. | +| `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`. | | `isQuorum` | Set to `true` to allow [interoperable private transactions] between Hyperledger Besu and [GoQuorum clients] using the Tessera private transaction manager. | -| `ecCurve` | Specifies [the elliptic curve to use](../private-networks/how-to/configure/curves.md). Default is `secp256k1`. | +| `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. | ## 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: +[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`. @@ -46,7 +46,7 @@ consensus protocols. | `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). | +| `alloc` | Defines [accounts with balances](../../private-networks/reference/accounts-for-testing.md) or [contracts](../../private-networks/how-to/configure/contracts.md). | ## Milestone blocks @@ -150,4 +150,4 @@ Anything listed in the configuration file also takes precedence. [GoQuorum clients]: https://consensys.net/docs/goquorum/en/stable/ -[interoperable private transactions]: ../private-networks/how-to/use-privacy/goquorum-compatible.md +[interoperable private transactions]: ../../private-networks/how-to/use-privacy/goquorum-compatible.md diff --git a/docs/reference/projects-using-besu.md b/docs/global/reference/projects-using-besu.md similarity index 100% rename from docs/reference/projects-using-besu.md rename to docs/global/reference/projects-using-besu.md diff --git a/docs/reference/trace-types.md b/docs/global/reference/trace-types.md similarity index 100% rename from docs/reference/trace-types.md rename to docs/global/reference/trace-types.md diff --git a/docs/reference/web3js-quorum.md b/docs/global/reference/web3js-quorum.md similarity index 100% rename from docs/reference/web3js-quorum.md rename to docs/global/reference/web3js-quorum.md diff --git a/docs/index.md b/docs/index.md index 441bedc51eb..5779b1fcf03 100644 --- a/docs/index.md +++ b/docs/index.md @@ -23,8 +23,8 @@ It runs on: ## What can you do with Besu? -Besu includes a [command line interface](reference/cli/options.md) and -[JSON-RPC API](how-to/use-besu-api/index.md) for running, maintaining, debugging, and monitoring +Besu includes a [command line interface](global/reference/cli/options.md) and +[JSON-RPC API](global/how-to/use-besu-api/index.md) for running, maintaining, debugging, and monitoring nodes in an Ethereum network. You can use the API via RPC over HTTP or via WebSocket. Besu also supports Pub/Sub. The API supports typical Ethereum functionalities such as: @@ -39,7 +39,7 @@ use cases, using tools such as [Truffle](http://truffleframework.com/), [Remix](https://github.com/ethereum/remix), and [web3j](https://web3j.io/). The client supports common JSON-RPC API methods such as `eth`, `net`, `web3`, `debug`, and `miner`. -Besu doesn't support [key management](how-to/send-transactions.md#use-wallets-for-key-management) inside the +Besu doesn't support [key management](global/how-to/send-transactions.md#use-wallets-for-key-management) inside the client. You can use [EthSigner](http://docs.ethsigner.consensys.net/en/latest/) with Besu to access your key store and sign transactions. diff --git a/docs/private-networks/concepts/events-and-logs.md b/docs/private-networks/concepts/events-and-logs.md new file mode 100644 index 00000000000..a291c2e7ddf --- /dev/null +++ b/docs/private-networks/concepts/events-and-logs.md @@ -0,0 +1 @@ +{!global/concepts/events-and-logs.md!} \ No newline at end of file diff --git a/docs/private-networks/concepts/genesis-file.md b/docs/private-networks/concepts/genesis-file.md new file mode 100644 index 00000000000..6f044282802 --- /dev/null +++ b/docs/private-networks/concepts/genesis-file.md @@ -0,0 +1 @@ +{!global/concepts/genesis-file.md!} \ No newline at end of file diff --git a/docs/private-networks/concepts/network-and-chain-id.md b/docs/private-networks/concepts/network-and-chain-id.md new file mode 100644 index 00000000000..25bb556d75e --- /dev/null +++ b/docs/private-networks/concepts/network-and-chain-id.md @@ -0,0 +1 @@ +{!global/concepts/network-and-chain-id.md!} \ No newline at end of file diff --git a/docs/private-networks/concepts/node-keys.md b/docs/private-networks/concepts/node-keys.md new file mode 100644 index 00000000000..f90433346c5 --- /dev/null +++ b/docs/private-networks/concepts/node-keys.md @@ -0,0 +1 @@ +{!global/concepts/node-keys.md!} \ No newline at end of file diff --git a/docs/private-networks/concepts/permissioning/onchain.md b/docs/private-networks/concepts/permissioning/onchain.md index 3f42affa6d0..ae74815af4e 100644 --- a/docs/private-networks/concepts/permissioning/onchain.md +++ b/docs/private-networks/concepts/permissioning/onchain.md @@ -94,5 +94,5 @@ bootnodes to rediscover peers. [permissioning management dapp]: ../../how-to/use-permissioning/onchain.md#deploy-the-permissioning-management-dapp -[`--privacy-marker-transaction-signing-key-file`]: ../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file +[`--privacy-marker-transaction-signing-key-file`]: ../../../global/reference/cli/options.md#privacy-marker-transaction-signing-key-file [specify the permissioning contract interface]: ../../how-to/use-permissioning/onchain.md#specify-the-permissioning-contract-interface-version diff --git a/docs/private-networks/concepts/permissioning/plugin.md b/docs/private-networks/concepts/permissioning/plugin.md index 0cc211e2df4..86e0ec09bd8 100644 --- a/docs/private-networks/concepts/permissioning/plugin.md +++ b/docs/private-networks/concepts/permissioning/plugin.md @@ -4,7 +4,7 @@ description: Plugin based permissioning # Permissioning plugin -You can define complex [permissioning](index.md) solutions by [building a plugin](../../../concepts/Plugins.md) that +You can define complex [permissioning](index.md) solutions by [building a plugin](../../../global/concepts/Plugins.md) that extends Hyperledger Besu functionality. The plugin API provides a `PermissioningService` interface that currently supports connection permissioning and diff --git a/docs/private-networks/concepts/privacy/flexible-privacy.md b/docs/private-networks/concepts/privacy/flexible-privacy.md index 1630bd10370..9b2e71e6cc7 100644 --- a/docs/private-networks/concepts/privacy/flexible-privacy.md +++ b/docs/private-networks/concepts/privacy/flexible-privacy.md @@ -80,16 +80,16 @@ but later removed from, Besu allows the user access to the following functionali group: - Private transactions using `priv_getTransaction` and private transaction receipts using - [`priv_getTransactionReceipt`](../../../reference/api/index.md#priv_gettransactionreceipt) from blocks up to (and + [`priv_getTransactionReceipt`](../../../global/reference/api/index.md#priv_gettransactionreceipt) from blocks up to (and including) the removal block. !!! note A removed group member may have access to some private transactions after the removal PMT in the same block. -- Using [`priv_call`](../../../reference/api/index.md#priv_call) on blocks up to (and including) the removal block. +- Using [`priv_call`](../../../global/reference/api/index.md#priv_call) on blocks up to (and including) the removal block. -- Private logs using [`priv_getLogs`](../../../reference/api/index.md#priv_getlogs) for blocks up to (and including) the +- Private logs using [`priv_getLogs`](../../../global/reference/api/index.md#priv_getlogs) for blocks up to (and including) the removal block. When the `toBlock` is greater than the removal block, `priv_getLogs` still returns logs up to the removal block. @@ -99,4 +99,4 @@ group: they've created are also removed and can't be accessed. A user can only create and access filters for a privacy group they are currently a member of. -All other [`PRIV` API methods](../../../reference/api/index.md#priv-methods) fail for the removed group member. +All other [`PRIV` API methods](../../../global/reference/api/index.md#priv-methods) fail for the removed group member. diff --git a/docs/private-networks/concepts/privacy/index.md b/docs/private-networks/concepts/privacy/index.md index 108a024de7e..d20d3e8bf10 100644 --- a/docs/private-networks/concepts/privacy/index.md +++ b/docs/private-networks/concepts/privacy/index.md @@ -80,4 +80,4 @@ occur. [highly available and run in a separate instance to Besu]: ../../how-to/use-privacy/tessera.md -[pruning]: ../../../concepts/Pruning.md +[pruning]: ../../../global/concepts/Pruning.md diff --git a/docs/private-networks/concepts/privacy/multi-tenancy.md b/docs/private-networks/concepts/privacy/multi-tenancy.md index 304a77b58cd..f65a42b5ba2 100644 --- a/docs/private-networks/concepts/privacy/multi-tenancy.md +++ b/docs/private-networks/concepts/privacy/multi-tenancy.md @@ -40,4 +40,4 @@ JSON-RPC requests, and the tenant has access to the requested privacy data. Private data is isolated and each tenant uses a JSON Web Token (JWT) for authentication. You can -[create the JWT either externally or internally](../../../how-to/use-besu-api/authenticate.md). +[create the JWT either externally or internally](../../../global/how-to/use-besu-api/authenticate.md). diff --git a/docs/private-networks/concepts/privacy/plugin.md b/docs/private-networks/concepts/privacy/plugin.md index b54c865d857..335249f87bb 100644 --- a/docs/private-networks/concepts/privacy/plugin.md +++ b/docs/private-networks/concepts/privacy/plugin.md @@ -4,7 +4,7 @@ description: Privacy plugin # Privacy plugin -You can define your own strategy for private transactions by [building a plugin](../../../concepts/Plugins.md) that extends +You can define your own strategy for private transactions by [building a plugin](../../../global/concepts/Plugins.md) that extends Hyperledger Besu functionality. The plugin can take many forms, but it must provide Besu with a private transaction when required. @@ -29,7 +29,7 @@ for the PMT is. ### Sending transactions -When submitting a private transaction using [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction), +When submitting a private transaction using [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction), the signed transaction must be sent to `0x000000000000000000000000000000000000007a` to indicate which [privacy precompiled contract](private-transactions/processing.md) is being used. @@ -48,7 +48,7 @@ The transaction flow is as follows: The process of mining transactions happens in reverse to sending transactions. 1. The Mainnet transaction processor processes the PMT in the same way as - any other public transaction. On nodes containing the [privacy precompile contract](../../../reference/api/index.md#priv_getprivacyprecompileaddress) + any other public transaction. On nodes containing the [privacy precompile contract](../../../global/reference/api/index.md#priv_getprivacyprecompileaddress) specified in the `to` attribute of the PMT, the Mainnet transaction processor passes the PMT to the privacy precompile contract. !!! note diff --git a/docs/private-networks/concepts/privacy/privacy-groups.md b/docs/private-networks/concepts/privacy/privacy-groups.md index 70737ca2e65..1d8cbd3ea13 100644 --- a/docs/private-networks/concepts/privacy/privacy-groups.md +++ b/docs/private-networks/concepts/privacy/privacy-groups.md @@ -83,7 +83,7 @@ provided by Tessera. ### Besu-extended privacy The Besu-extended privacy implementation creates a privacy group using -[`priv_createPrivacyGroup`](../../../reference/api/index.md#priv_createprivacygroup) with private +[`priv_createPrivacyGroup`](../../../global/reference/api/index.md#priv_createprivacygroup) with private transactions sent to the privacy group ID. !!! example diff --git a/docs/private-networks/concepts/privacy/private-transactions/index.md b/docs/private-networks/concepts/privacy/private-transactions/index.md index 355700706ed..74bc1ae8d5e 100644 --- a/docs/private-networks/concepts/privacy/private-transactions/index.md +++ b/docs/private-networks/concepts/privacy/private-transactions/index.md @@ -42,7 +42,7 @@ You can [create and send private transactions](../../../how-to/send-transactions Besu and Tessera nodes both have public/private key pairs identifying them. A Besu node sending a private transaction to a Tessera node signs the transaction with the Besu node private key. The `privateFrom` and `privateFor` parameters specified in the RLP-encoded transaction string for -[`eea_sendRawTransaction`](../../../../reference/api/index.md#eea_sendrawtransaction) are the public keys of the Tessera +[`eea_sendRawTransaction`](../../../../global/reference/api/index.md#eea_sendrawtransaction) are the public keys of the Tessera nodes sending and receiving the transaction. !!! important @@ -68,11 +68,11 @@ That is, the nonce for account A for privacy group ABC is different to the nonce ### Private nonce validation -Unlike public transactions, private transactions are not submitted to the [transaction pool](../../../../concepts/Transactions/Transaction-Pool.md). +Unlike public transactions, private transactions are not submitted to the [transaction pool](../../../../global/concepts/Transactions/Transaction-Pool.md). The private transaction is distributed directly to the participants in the transaction, and the PMT is submitted to the transaction pool. -Unlike [public transaction nonces](../../../../concepts/Transactions/Transaction-Validation.md), private transaction nonces aren't +Unlike [public transaction nonces](../../../../global/concepts/Transactions/Transaction-Validation.md), private transaction nonces aren't validated when the private transaction is submitted. If a private transaction has an incorrect nonce, the PMT is still valid and is added to a block. However, in this scenario, the private transaction execution fails when [processing the PMT](processing.md) @@ -83,7 +83,7 @@ The following private transaction flow illustrates when nonce validation occurs: 1. Submit a private transaction with a [nonce value](#private-transaction-nonce). 1. The private transaction is distributed to all participants in the privacy group. 1. The PMT is created and submitted to the transaction pool with a nonce of `0` if using one-time accounts. - If using a specific account with [`--privacy-marker-transaction-signing-key-file`](../../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file), + If using a specific account with [`--privacy-marker-transaction-signing-key-file`](../../../../global/reference/cli/options.md#privacy-marker-transaction-signing-key-file), the public nonce for that account is obtained and used for the PMT. 1. The PMT is mined and included in the block. 1. After the block containing the PMT is imported, and the PMT is processed, the private transaction is retrieved from @@ -94,8 +94,8 @@ The following private transaction flow illustrates when nonce validation occurs: ### Private nonce management -In Besu, you call [`eth_getTransactionCount`](../../../../reference/api/index.md#eth_gettransactioncount) to get a nonce, -then use that nonce with [`eea_sendRawTransaction`](../../../../reference/api/index.md#eea_sendrawtransaction) to send a +In Besu, you call [`eth_getTransactionCount`](../../../../global/reference/api/index.md#eth_gettransactioncount) to get a nonce, +then use that nonce with [`eea_sendRawTransaction`](../../../../global/reference/api/index.md#eea_sendrawtransaction) to send a private transaction. However, when you send multiple transactions in row, if a subsequent call to `getTransactionCount` happens before a diff --git a/docs/private-networks/concepts/privacy/private-transactions/processing.md b/docs/private-networks/concepts/privacy/private-transactions/processing.md index 901c28eea03..d97c73e7cef 100644 --- a/docs/private-networks/concepts/privacy/private-transactions/processing.md +++ b/docs/private-networks/concepts/privacy/private-transactions/processing.md @@ -17,7 +17,7 @@ Processing [private transactions](index.md) involves the following: * **Privacy marker transaction (PMT)**: A public Ethereum transaction with a payload of the enclave key. The enclave key is a pointer to the private transaction in Tessera. - The `to` attribute of the PMT is the [address of the privacy precompiled contract](../../../../reference/api/index.md#priv_getprivacyprecompileaddress). + The `to` attribute of the PMT is the [address of the privacy precompiled contract](../../../../global/reference/api/index.md#priv_getprivacyprecompileaddress). The PMT is [signed with a random key or the key specified on the command line]. @@ -25,7 +25,7 @@ Private transaction processing is illustrated and described in the following dia ![Processing Private Transactions](../../../../images/PrivateTransactionProcessing.png) -1. Submit a private transaction using [`eea_sendRawTransaction`](../../../../reference/api/index.md#eea_sendrawtransaction). +1. Submit a private transaction using [`eea_sendRawTransaction`](../../../../global/reference/api/index.md#eea_sendrawtransaction). The signed transaction includes transaction parameters specific to private transactions, including: * `privateFor` or `privacyGroupId`, which specifies the list of recipients. @@ -55,7 +55,7 @@ Private transaction processing is illustrated and described in the following dia 1. Besu mines the PMT into a block and the PMT is distributed to all Ethereum nodes in the network. 1. The Mainnet Transaction Processor processes the PMT in the same way as any other public transaction. - On nodes containing the [privacy precompile contract](../../../../reference/api/index.md#priv_getprivacyprecompileaddress) + On nodes containing the [privacy precompile contract](../../../../global/reference/api/index.md#priv_getprivacyprecompileaddress) specified in the `to` attribute of the PMT, the Mainnet Transaction Processor passes the PMT to the privacy precompile contract. @@ -84,4 +84,4 @@ Private transaction processing is illustrated and described in the following dia [signed with a random key or the key specified on the command line]: ../../../how-to/use-privacy/sign-pmts.md [highly available and run in a separate instance to Besu]: ../../../how-to/use-privacy/tessera.md -[pruning]: ../../../../concepts/Pruning.md +[pruning]: ../../../../global/concepts/Pruning.md diff --git a/docs/private-networks/get-started/install/binary-distribution.md b/docs/private-networks/get-started/install/binary-distribution.md new file mode 100644 index 00000000000..8e45618dc6b --- /dev/null +++ b/docs/private-networks/get-started/install/binary-distribution.md @@ -0,0 +1 @@ +{!global/get-started/install/binary-distribution.md!} diff --git a/docs/private-networks/get-started/install/index.md b/docs/private-networks/get-started/install/index.md new file mode 100644 index 00000000000..a3f21b5aed7 --- /dev/null +++ b/docs/private-networks/get-started/install/index.md @@ -0,0 +1 @@ +{!global/get-started/install/index.md!} diff --git a/docs/private-networks/get-started/install/run-docker-image.md b/docs/private-networks/get-started/install/run-docker-image.md new file mode 100644 index 00000000000..502759d70ca --- /dev/null +++ b/docs/private-networks/get-started/install/run-docker-image.md @@ -0,0 +1 @@ +{!global/get-started/install/run-docker-image.md!} diff --git a/docs/private-networks/get-started/start-node.md b/docs/private-networks/get-started/start-node.md index 4c10e0fe400..a5246b9d269 100644 --- a/docs/private-networks/get-started/start-node.md +++ b/docs/private-networks/get-started/start-node.md @@ -7,18 +7,18 @@ description: Starting Hyperledger Besu You can use Besu nodes for varying purposes, as described in the [Overview](../../index.md). Nodes can connect to the Ethereum Mainnet, public testnets such as Ropsten, or private networks. -Use the [`besu`](../../reference/cli/options.md) command with the required command line options +Use the [`besu`](../../global/reference/cli/options.md) command with the required command line options to start a node. Alternatively, use the [launcher](#besu-launcher) to start Besu interactively with the most common options. ## Prerequisites -[Besu Installed](../../get-started/install/binary-distribution.md) +[Besu Installed](../../global/get-started/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 +the local block data or use the [`--data-path`](../../global/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 @@ -31,38 +31,38 @@ Besu specifies the genesis configuration, and sets the network ID and bootnodes [Goerli](#run-a-node-on-goerli-testnet), [Kiln](#run-a-node-on-kiln-testnet), [Sepolia](#run-a-node-on-sepolia-testnet), and [Mainnet](#run-a-node-on-ethereum-mainnet). -When you specify [`--network=dev`](../../reference/cli/options.md#network), Besu uses the +When you specify [`--network=dev`](../../global/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 +[`--network=dev`](../../global/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. +the file using the [`--genesis-file`](../../global/reference/cli/options.md#genesis-file) option. ## Syncing and storage By default, Besu syncs to the current state of the blockchain using [fast sync](../../public-networks/how-to/connect/sync-node.md#fast-synchronization) in: -- Networks specified using [`--network`](../../reference/cli/options.md#network) except for the `dev` +- Networks specified using [`--network`](../../global/reference/cli/options.md#network) except for the `dev` development network. - Ethereum Mainnet. We recommend using [snap sync](../../public-networks/how-to/connect/sync-node.md#snap-synchronization) for a faster sync, by starting Besu -with [`--sync-mode=X_SNAP`](../../reference/cli/options.md#sync-mode). +with [`--sync-mode=X_SNAP`](../../global/reference/cli/options.md#sync-mode). By default, Besu stores data in the [Forest of Tries](../../public-networks/concepts/data-storage-formats.md#forest-of-tries) format. We recommend using [Bonsai Tries](../../public-networks/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). +by starting Besu with [`--data-storage-format=BONSAI`](../../global/reference/cli/options.md#data-storage-format). ## 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 +[`--rpc-http-enabled`](../../global/reference/cli/options.md#rpc-http-enabled) option, use +[cURL](https://curl.haxx.se/) to call [JSON-RPC API methods](../../global/reference/api/index.md) to confirm the node is running. !!!example @@ -101,7 +101,7 @@ To run a node that mines blocks at a rate suitable for testing purposes: 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/configure/configuration-file.md) +You can also use the following [configuration file](../../global/how-to/configure/configuration-file.md) on the command line to start a node with the same options as above: ```toml @@ -192,7 +192,7 @@ besu --rpc-http-enabled ## Besu launcher Use the Besu launcher to interactively configure and start a node with the most common options. The -launcher asks a series of questions and generates a [configuration file](../../how-to/configure/configuration-file.md). +launcher asks a series of questions and generates a [configuration file](../../global/how-to/configure/configuration-file.md). To run the Besu launcher: diff --git a/docs/private-networks/get-started/system-requirements.md b/docs/private-networks/get-started/system-requirements.md index d7aa1380e2e..13d64936261 100644 --- a/docs/private-networks/get-started/system-requirements.md +++ b/docs/private-networks/get-started/system-requirements.md @@ -9,9 +9,9 @@ Private network system requirements depend on many factors, including: * Size of the world state for the network. * Number of transactions submitted to the network. -* [Block gas limit](../../reference/genesis-items.md#genesis-block-parameters). -* Number and complexity of [JSON-RPC](../../how-to/use-besu-api/json-rpc.md), - [PubSub](../../how-to/use-besu-api/rpc-pubsub.md), or [GraphQL](../../how-to/use-besu-api/graphql.md) queries +* [Block gas limit](../../global/reference/genesis-items.md#genesis-block-parameters). +* Number and complexity of [JSON-RPC](../../global/how-to/use-besu-api/json-rpc.md), + [PubSub](../../global/how-to/use-besu-api/rpc-pubsub.md), or [GraphQL](../../global/how-to/use-besu-api/graphql.md) queries handled by the node. Participation in private networks is typically restricted in some way, so the volume of traffic is @@ -20,7 +20,7 @@ much lower than on Mainnet, resulting in lower system requirements. ## Determining system requirements To determine system requirements, check CPU and disk space requirements using -[Prometheus](../../how-to/monitor/metrics.md#monitor-node-performance-using-prometheus). Grafana provides a +[Prometheus](../../global/how-to/monitor/metrics.md#monitor-node-performance-using-prometheus). Grafana provides a [sample dashboard](https://grafana.com/grafana/dashboards/10273) for Besu. ## Java Virtual Machine size diff --git a/docs/private-networks/how-to/backup.md b/docs/private-networks/how-to/backup.md index 03685af5363..e393409fba9 100644 --- a/docs/private-networks/how-to/backup.md +++ b/docs/private-networks/how-to/backup.md @@ -17,12 +17,12 @@ file under source control. If installed locally, the default data location is the Besu installation directory. We recommend mounting a -[separate volume to store data](../../get-started/install/run-docker-image.md#starting-besu). Use the -[`--data-path`](../../reference/cli/options.md#data-path) command line option to pass the path +[separate volume to store data](../../global/get-started/install/run-docker-image.md#starting-besu). Use the +[`--data-path`](../../global/reference/cli/options.md#data-path) command line option to pass the path to Besu. The default data location is the Besu installation directory, or `/opt/besu/database` if using the -[Besu Docker image](../../get-started/install/run-docker-image.md). +[Besu Docker image](../../global/get-started/install/run-docker-image.md). Having some data reduces the time to synchronize a new node. You can perform periodic backups of the data directory and send the data to your preferred backup mechanism. For example, `cron` job and @@ -52,4 +52,4 @@ The process for finding peers after restarting is the same as for [finding peers after upgrading and restarting]. -[finding peers after upgrading and restarting]: ../../how-to/upgrade/node.md#finding-peers-on-restarting +[finding peers after upgrading and restarting]: ../../global/how-to/upgrade/node.md#finding-peers-on-restarting diff --git a/docs/private-networks/how-to/configure/configuration-file.md b/docs/private-networks/how-to/configure/configuration-file.md new file mode 100644 index 00000000000..75f8acf64f4 --- /dev/null +++ b/docs/private-networks/how-to/configure/configuration-file.md @@ -0,0 +1 @@ +{!global/how-to/configure/configuration-file.md!} \ No newline at end of file diff --git a/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md b/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md index f5c097da346..98bcd14a744 100644 --- a/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md +++ b/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md @@ -145,8 +145,8 @@ To add or remove validators without voting: 1. Restart all nodes in the network using the updated genesis file. You can make a rolling update of the nodes, as long as they're all up before the transition block is processed. 1. To verify the changes after the transition block, call - [`qbft_getValidatorsByBlockNumber`](../../../../reference/api/index.md#qbft_getvalidatorsbyblocknumber) or - [`ibft_getValidatorsByBlockNumber`](../../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber), + [`qbft_getValidatorsByBlockNumber`](../../../../global/reference/api/index.md#qbft_getvalidatorsbyblocknumber) or + [`ibft_getValidatorsByBlockNumber`](../../../../global/reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. !!! caution diff --git a/docs/private-networks/how-to/configure/consensus/clique.md b/docs/private-networks/how-to/configure/consensus/clique.md index 39d8641a948..b21e3e9f89c 100644 --- a/docs/private-networks/how-to/configure/consensus/clique.md +++ b/docs/private-networks/how-to/configure/consensus/clique.md @@ -23,7 +23,7 @@ You can [create a private network using Clique](../../../tutorials/clique.md). ## Genesis file -To use Clique in a private network, Besu requires a Clique [genesis file](../../../../concepts/genesis-file.md). When connecting to Rinkeby, +To use Clique in a private network, Besu requires a Clique [genesis file](../../../../global/concepts/genesis-file.md). When connecting to Rinkeby, Besu uses the [`rinkeby.json`](https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/config/src/main/resources/rinkeby.json) genesis file in the `/besu/config/src/main/resources` directory. @@ -99,34 +99,34 @@ Additionally, [`extraData`](#extra-data) is limited to 32 bytes of vanity data a ## Connect to a Clique network To connect to the Rinkeby testnet, start Besu with the -[`--network=rinkeby`](../../../../reference/cli/options.md#network) command line option. To start a +[`--network=rinkeby`](../../../../global/reference/cli/options.md#network) command line option. To start a node on a Clique private network, use the -[`--genesis-file`](../../../../reference/cli/options.md#genesis-file) option to specify the custom +[`--genesis-file`](../../../../global/reference/cli/options.md#genesis-file) option to specify the custom genesis file. ## Add and remove signers Existing signers propose and vote to add or remove validators using the Clique JSON-RPC API methods. -Enable the HTTP interface with [`--rpc-http-enabled`](../../../../reference/cli/options.md#rpc-http-enabled) or the -WebSocket interface with [`--rpc-ws-enabled`](../../../../reference/cli/options.md#rpc-ws-enabled). +Enable the HTTP interface with [`--rpc-http-enabled`](../../../../global/reference/cli/options.md#rpc-http-enabled) or the +WebSocket interface with [`--rpc-ws-enabled`](../../../../global/reference/cli/options.md#rpc-ws-enabled). The Clique API methods are disabled by default. -To enable them, specify the [`--rpc-http-api`](../../../../reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../../../reference/cli/options.md#rpc-ws-api) option and include `CLIQUE`. +To enable them, specify the [`--rpc-http-api`](../../../../global/reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../../global/reference/cli/options.md#rpc-ws-api) option and include `CLIQUE`. The methods to add or remove signers are: -* [`clique_propose`](../../../../reference/api/index.md#clique_propose). -* [`clique_getSigners`](../../../../reference/api/index.md#clique_getsigners). -* [`clique_discard`](../../../../reference/api/index.md#clique_discard). +* [`clique_propose`](../../../../global/reference/api/index.md#clique_propose). +* [`clique_getSigners`](../../../../global/reference/api/index.md#clique_getsigners). +* [`clique_discard`](../../../../global/reference/api/index.md#clique_discard). To view signer metrics for a specified block range, call -[`clique_getSignerMetrics`](../../../../reference/api/index.md#clique_getsignermetrics). +[`clique_getSignerMetrics`](../../../../global/reference/api/index.md#clique_getsignermetrics). ### Add a signer To propose adding a signer to a Clique network, call -[`clique_propose`](../../../../reference/api/index.md#clique_propose), specifying the address of the proposed signer and `true`. +[`clique_propose`](../../../../global/reference/api/index.md#clique_propose), specifying the address of the proposed signer and `true`. A majority of signers must execute the call. !!! example "JSON-RPC `clique_propose` request example" @@ -141,7 +141,7 @@ When more than 50% of the existing signers propose adding the signer, with their signer can begin signing blocks. To return a list of signers and confirm the addition of a proposed signer, call -[`clique_getSigners`](../../../../reference/api/index.md#clique_getsigners). +[`clique_getSigners`](../../../../global/reference/api/index.md#clique_getsigners). !!! example "JSON-RPC `clique_getSigners` request example" @@ -150,7 +150,7 @@ To return a list of signers and confirm the addition of a proposed signer, call ``` To discard your proposal after confirming the addition of a signer, call -[`clique_discard`](../../../../reference/api/index.md#clique_discard) specifying the address of the proposed signer. +[`clique_discard`](../../../../global/reference/api/index.md#clique_discard) specifying the address of the proposed signer. !!! example "JSON-RPC `clique_discard` request example" @@ -161,7 +161,7 @@ To discard your proposal after confirming the addition of a signer, call ### Remove a signer The process for removing a signer from a Clique network is the same as [adding a signer](#add-a-signer), except you -specify `false` as the second parameter of [`clique_propose`](../../../../reference/api/index.md#clique_propose). +specify `false` as the second parameter of [`clique_propose`](../../../../global/reference/api/index.md#clique_propose). ### Epoch transition diff --git a/docs/private-networks/how-to/configure/consensus/ibft.md b/docs/private-networks/how-to/configure/consensus/ibft.md index d0a353ade0e..b0bc25a2b2f 100644 --- a/docs/private-networks/how-to/configure/consensus/ibft.md +++ b/docs/private-networks/how-to/configure/consensus/ibft.md @@ -25,11 +25,11 @@ You can [create a private network using IBFT](../../../tutorials/ibft/index.md). !!! tip You can use a plugin to securely store a validator's key using the - [`--security-module`](../../../../reference/cli/options.md#security-module) option. + [`--security-module`](../../../../global/reference/cli/options.md#security-module) option. ## Genesis file -To use IBFT 2.0, Besu requires an IBFT 2.0 [genesis file](../../../../concepts/genesis-file.md). The genesis file defines properties +To use IBFT 2.0, Besu requires an IBFT 2.0 [genesis file](../../../../global/concepts/genesis-file.md). The genesis file defines properties specific to IBFT 2.0. !!! example "Example IBFT 2.0 genesis file" @@ -82,7 +82,7 @@ The properties with specific values in the IBFT 2.0 genesis files are: block identification. To start a node on an IBFT 2.0 private network, use the -[`--genesis-file`](../../../../reference/cli/options.md#genesis-file) option to specify the custom +[`--genesis-file`](../../../../global/reference/cli/options.md#genesis-file) option to specify the custom genesis file. ### Extra data @@ -107,7 +107,7 @@ Formally, `extraData` in the genesis block contains #### Generate extra data To generate the `extraData` RLP string for inclusion in the genesis file, use the -[`rlp encode`](../../../../reference/cli/subcommands.md#rlp) Besu subcommand. +[`rlp encode`](../../../../global/reference/cli/subcommands.md#rlp) Besu subcommand. !!! example @@ -117,7 +117,7 @@ To generate the `extraData` RLP string for inclusion in the genesis file, use th Where the `toEncode.json` file contains a list of the initial validators, in ascending order. To write the validator address and copy it to the `toEncode.json` file, use the -[`public-key export-address`](../../../../reference/cli/subcommands.md#export-address) Besu subcommand. +[`public-key export-address`](../../../../global/reference/cli/subcommands.md#export-address) Besu subcommand. For example: !!! example "One initial validator in `toEncode.json` file" @@ -196,21 +196,21 @@ Additionally, [`extraData`](#extra-data) is limited to 32 bytes of vanity data a ## Add and remove validators Existing validators propose and vote to add or remove validators using the IBFT 2.0 JSON-RPC API methods. -Enable the HTTP interface with [`--rpc-http-enabled`](../../../../reference/cli/options.md#rpc-http-enabled) or the -WebSocket interface with [`--rpc-ws-enabled`](../../../../reference/cli/options.md#rpc-ws-enabled). +Enable the HTTP interface with [`--rpc-http-enabled`](../../../../global/reference/cli/options.md#rpc-http-enabled) or the +WebSocket interface with [`--rpc-ws-enabled`](../../../../global/reference/cli/options.md#rpc-ws-enabled). The IBFT 2.0 API methods are disabled by default. -To enable them, specify the [`--rpc-http-api`](../../../../reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../../../reference/cli/options.md#rpc-ws-api) option and include `IBFT`. +To enable them, specify the [`--rpc-http-api`](../../../../global/reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../../global/reference/cli/options.md#rpc-ws-api) option and include `IBFT`. The methods to add or remove validators are: -* [`ibft_getPendingVotes`](../../../../reference/api/index.md#ibft_getpendingvotes). -* [`ibft_proposeValidatorVote`](../../../../reference/api/index.md#ibft_proposevalidatorvote). -* [`ibft_discardValidatorVote`](../../../../reference/api/index.md#ibft_discardvalidatorvote). +* [`ibft_getPendingVotes`](../../../../global/reference/api/index.md#ibft_getpendingvotes). +* [`ibft_proposeValidatorVote`](../../../../global/reference/api/index.md#ibft_proposevalidatorvote). +* [`ibft_discardValidatorVote`](../../../../global/reference/api/index.md#ibft_discardvalidatorvote). To view validator metrics for a specified block range, use -[`ibft_getSignerMetrics`](../../../../reference/api/index.md#ibft_getsignermetrics). +[`ibft_getSignerMetrics`](../../../../global/reference/api/index.md#ibft_getsignermetrics). !!! note @@ -220,7 +220,7 @@ To view validator metrics for a specified block range, use ### Add a validator To propose adding a validator to an IBFT 2.0 network, call -[`ibft_proposeValidatorVote`](../../../../reference/api/index.md#ibft_proposevalidatorvote), specifying the address of the +[`ibft_proposeValidatorVote`](../../../../global/reference/api/index.md#ibft_proposevalidatorvote), specifying the address of the proposed validator and `true`. A majority of validators must execute the call. @@ -231,14 +231,14 @@ A majority of validators must execute the call. ``` When the validator proposes the next block, the protocol inserts one proposal received from -[`ibft_proposeValidatorVote`](../../../../reference/api/index.md#ibft_proposevalidatorvote) into the block. +[`ibft_proposeValidatorVote`](../../../../global/reference/api/index.md#ibft_proposevalidatorvote) into the block. If blocks include all proposals, subsequent blocks proposed by the validator will not contain a vote. When more than 50% of the existing validators have published a matching proposal, the protocol adds the proposed validator to the validator pool and the validator can begin validating blocks. To return a list of validators and confirm the addition of a proposed validator, use -[`ibft_getValidatorsByBlockNumber`](../../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber). +[`ibft_getValidatorsByBlockNumber`](../../../../global/reference/api/index.md#ibft_getvalidatorsbyblocknumber). !!! example "JSON-RPC `ibft_getValidatorsByBlockNumber` request example" @@ -247,7 +247,7 @@ To return a list of validators and confirm the addition of a proposed validator, ``` To discard your proposal after confirming the addition of a validator, call -[`ibft_discardValidatorVote`](../../../../reference/api/index.md#ibft_discardvalidatorvote), +[`ibft_discardValidatorVote`](../../../../global/reference/api/index.md#ibft_discardvalidatorvote), specifying the address of the proposed validator. !!! example "JSON-RPC `ibft_discardValidatorVote` request example" @@ -260,7 +260,7 @@ specifying the address of the proposed validator. The process for removing a validator from an IBFT 2.0 network is the same as [adding a validator](#add-a-validator) except you specify `false` as the second parameter of -[`ibft_proposeValidatorVote`](../../../../reference/api/index.md#ibft_proposevalidatorvote). +[`ibft_proposeValidatorVote`](../../../../global/reference/api/index.md#ibft_proposevalidatorvote). ### Epoch transition @@ -360,7 +360,7 @@ To update an existing network with a new `blockperiodseconds`: 3. Restart all nodes in the network using the updated genesis file. 4. To verify the changes after the transition block, call - [`ibft_getValidatorsByBlockNumber`](../../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. + [`ibft_getValidatorsByBlockNumber`](../../../../global/reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. ### Configure block rewards on an existing network deployment diff --git a/docs/private-networks/how-to/configure/consensus/qbft.md b/docs/private-networks/how-to/configure/consensus/qbft.md index 96369d2952c..f61d6d6bb8c 100644 --- a/docs/private-networks/how-to/configure/consensus/qbft.md +++ b/docs/private-networks/how-to/configure/consensus/qbft.md @@ -28,7 +28,7 @@ You can [create a private network using QBFT](../../../tutorials/qbft.md). ## Genesis file -To use QBFT, define a [genesis file](../../../../concepts/genesis-file.md) that contains the QBFT properties. +To use QBFT, define a [genesis file](../../../../global/concepts/genesis-file.md) that contains the QBFT properties. The genesis file differs depending on the [validator management method](#add-and-remove-validators) you intend to use. @@ -164,7 +164,7 @@ The properties with specific values in the QBFT genesis files are: block identification. To start a node on a QBFT private network, use the -[`--genesis-file`](../../../../reference/cli/options.md#genesis-file) option to specify the custom +[`--genesis-file`](../../../../global/reference/cli/options.md#genesis-file) option to specify the custom genesis file. ### Extra data @@ -200,7 +200,7 @@ Formally, `extraData` in the genesis block contains: #### Generate extra data To generate the `extraData` RLP string for inclusion in the genesis file, -use the [`rlp encode`](../../../../reference/cli/subcommands.md#rlp) Besu subcommand. +use the [`rlp encode`](../../../../global/reference/cli/subcommands.md#rlp) Besu subcommand. !!! example @@ -210,7 +210,7 @@ use the [`rlp encode`](../../../../reference/cli/subcommands.md#rlp) Besu subcom Where the `toEncode.json` file contains a list of the initial validators, in ascending order. To write the validator address and copy it to the `toEncode.json` file, use the -[`public-key export-address`](../../../../reference/cli/subcommands.md#export-address) Besu +[`public-key export-address`](../../../../global/reference/cli/subcommands.md#export-address) Besu subcommand. For example: !!! example "Initial validators in `toEncode.json` file" @@ -311,21 +311,21 @@ method are configured in the genesis file's `storage` section. ### Add and remove validators using block headers -Enable the HTTP interface with [`--rpc-http-enabled`](../../../../reference/cli/options.md#rpc-http-enabled) or the -WebSockets interface with [`--rpc-ws-enabled`](../../../../reference/cli/options.md#rpc-ws-enabled). +Enable the HTTP interface with [`--rpc-http-enabled`](../../../../global/reference/cli/options.md#rpc-http-enabled) or the +WebSockets interface with [`--rpc-ws-enabled`](../../../../global/reference/cli/options.md#rpc-ws-enabled). The QBFT API methods are disabled by default. -To enable them, specify the [`--rpc-http-api`](../../../../reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../../../reference/cli/options.md#rpc-ws-api) option and include `QBFT`. +To enable them, specify the [`--rpc-http-api`](../../../../global/reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../../global/reference/cli/options.md#rpc-ws-api) option and include `QBFT`. The methods to add or remove validators are: -* [`qbft_getPendingVotes`](../../../../reference/api/index.md#qbft_getpendingvotes). -* [`qbft_proposeValidatorVote`](../../../../reference/api/index.md#qbft_proposevalidatorvote). -* [`qbft_discardValidatorVote`](../../../../reference/api/index.md#qbft_discardvalidatorvote). +* [`qbft_getPendingVotes`](../../../../global/reference/api/index.md#qbft_getpendingvotes). +* [`qbft_proposeValidatorVote`](../../../../global/reference/api/index.md#qbft_proposevalidatorvote). +* [`qbft_discardValidatorVote`](../../../../global/reference/api/index.md#qbft_discardvalidatorvote). To view validator metrics for a specified block range, use -[`qbft_getSignerMetrics`](../../../../reference/api/index.md#qbft_getsignermetrics). +[`qbft_getSignerMetrics`](../../../../global/reference/api/index.md#qbft_getsignermetrics). !!! note @@ -335,7 +335,7 @@ To view validator metrics for a specified block range, use #### Add a validator To propose adding a validator, call -[`qbft_proposeValidatorVote`](../../../../reference/api/index.md#qbft_proposevalidatorvote), +[`qbft_proposeValidatorVote`](../../../../global/reference/api/index.md#qbft_proposevalidatorvote), specifying the address of the proposed validator and `true`. A majority of validators must execute the call. @@ -346,7 +346,7 @@ the call. ``` When the validator proposes the next block, the protocol inserts one proposal received from -[`qbft_proposeValidatorVote`](../../../../reference/api/index.md#qbft_proposevalidatorvote) into the +[`qbft_proposeValidatorVote`](../../../../global/reference/api/index.md#qbft_proposevalidatorvote) into the block. If blocks include all proposals, subsequent blocks proposed by the validator will not contain a vote. @@ -354,7 +354,7 @@ When more than 50% of the existing validators have published a matching proposal adds the proposed validator to the validator pool and the validator can begin validating blocks. To return a list of validators and confirm the addition of a proposed validator, use -[`qbft_getValidatorsByBlockNumber`](../../../../reference/api/index.md#qbft_getvalidatorsbyblocknumber). +[`qbft_getValidatorsByBlockNumber`](../../../../global/reference/api/index.md#qbft_getvalidatorsbyblocknumber). !!! example "JSON-RPC `qbft_getValidatorsByBlockNumber` request example" @@ -363,7 +363,7 @@ To return a list of validators and confirm the addition of a proposed validator, ``` To discard your proposal after confirming the addition of a validator, call -[`qbft_discardValidatorVote`](../../../../reference/api/index.md#qbft_discardvalidatorvote), +[`qbft_discardValidatorVote`](../../../../global/reference/api/index.md#qbft_discardvalidatorvote), specifying the address of the proposed validator. !!! example "JSON-RPC `qbft_discardValidatorVote` request example" @@ -376,7 +376,7 @@ specifying the address of the proposed validator. The process for removing a validator is the same as adding a validator except you specify `false` as the second parameter of -[`qbft_proposeValidatorVote`](../../../../reference/api/index.md#qbft_proposevalidatorvote). +[`qbft_proposeValidatorVote`](../../../../global/reference/api/index.md#qbft_proposevalidatorvote). #### Epoch transition @@ -491,7 +491,7 @@ To update an existing network with a new `blockperiodseconds`: 3. Restart all nodes in the network using the updated genesis file. 4. To verify the changes after the transition block, call - [`qbft_getValidatorsByBlockNumber`](../../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. + [`qbft_getValidatorsByBlockNumber`](../../../../global/reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. ### Configure block rewards on an existing network deployment diff --git a/docs/private-networks/how-to/configure/contracts.md b/docs/private-networks/how-to/configure/contracts.md index 97334d36d4f..f8ce990414a 100644 --- a/docs/private-networks/how-to/configure/contracts.md +++ b/docs/private-networks/how-to/configure/contracts.md @@ -4,7 +4,7 @@ description: Pre-deploying contracts in the genesis file # Pre-deploying contracts in the genesis file -To pre-deploy contracts when starting Besu, specify the contract code in the [genesis file](../../../concepts/genesis-file.md). +To pre-deploy contracts when starting Besu, specify the contract code in the [genesis file](../../../global/concepts/genesis-file.md). !!! example "Contract code in the genesis file" diff --git a/docs/private-networks/how-to/configure/curves.md b/docs/private-networks/how-to/configure/curves.md index f1b5eb4f38f..66febcb61a3 100644 --- a/docs/private-networks/how-to/configure/curves.md +++ b/docs/private-networks/how-to/configure/curves.md @@ -12,7 +12,7 @@ By default, Besu uses the Ethereum standard `secp256k1` elliptic curve (EC). However, when running nodes in a private network, it is possible to configure an alternative elliptic curve. The configuration for what elliptic curve Besu will use is done in the network configuration section of genesis file, -using the [`ecCurve`](../../../reference/genesis-items.md#Configuration_Items) key: +using the [`ecCurve`](../../../global/reference/genesis-items.md#Configuration_Items) key: ```bash { diff --git a/docs/private-networks/how-to/configure/free-gas.md b/docs/private-networks/how-to/configure/free-gas.md index 56a7b6c599f..e585314fa28 100644 --- a/docs/private-networks/how-to/configure/free-gas.md +++ b/docs/private-networks/how-to/configure/free-gas.md @@ -74,7 +74,7 @@ size (in bytes). ### 3. Start Besu with a minimum gas price of zero -When starting nodes, set the [minimum gas price](../../../reference/cli/options.md#min-gas-price) +When starting nodes, set the [minimum gas price](../../../global/reference/cli/options.md#min-gas-price) to zero. === "Command Line" @@ -90,10 +90,10 @@ to zero. ``` !!! important - In a free gas network, ensure the [minimum gas price](../../../reference/cli/options.md#min-gas-price) + In a free gas network, ensure the [minimum gas price](../../../global/reference/cli/options.md#min-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`](../../../reference/api/index.md#eth_gasprice). + You can query a node's gas configuration using [`eth_gasPrice`](../../../global/reference/api/index.md#eth_gasprice). ## Configuring free gas in Truffle diff --git a/docs/private-networks/how-to/configure/mining.md b/docs/private-networks/how-to/configure/mining.md new file mode 100644 index 00000000000..07e3ced951a --- /dev/null +++ b/docs/private-networks/how-to/configure/mining.md @@ -0,0 +1 @@ +{!global/how-to/configure/mining.md!} \ No newline at end of file diff --git a/docs/private-networks/how-to/configure/pass-jvm-options.md b/docs/private-networks/how-to/configure/pass-jvm-options.md new file mode 100644 index 00000000000..01d40b1172b --- /dev/null +++ b/docs/private-networks/how-to/configure/pass-jvm-options.md @@ -0,0 +1 @@ +{!global/how-to/configure/pass-jvm-options.md!} \ No newline at end of file diff --git a/docs/private-networks/how-to/configure/tls/client-and-server.md b/docs/private-networks/how-to/configure/tls/client-and-server.md index 1eafe738021..64cea71b06c 100644 --- a/docs/private-networks/how-to/configure/tls/client-and-server.md +++ b/docs/private-networks/how-to/configure/tls/client-and-server.md @@ -66,22 +66,22 @@ besu --rpc-http-enabled --rpc-http-tls-enabled --rpc-http-tls-client-auth-enable The command line: * Enables the HTTP JSON-RPC service using the - [`--rpc-http-enabled`](../../../../reference/cli/options.md#rpc-http-enabled) option. + [`--rpc-http-enabled`](../../../../global/reference/cli/options.md#rpc-http-enabled) option. * Enables TLS for the HTTP JSON-RPC service using the - [`--rpc-http-tls-enabled`](../../../../reference/cli/options.md#rpc-http-tls-enabled) option. + [`--rpc-http-tls-enabled`](../../../../global/reference/cli/options.md#rpc-http-tls-enabled) option. * Enables TLS client authentication using the - [`--rpc-http-tls-client-auth-enabled`](../../../../reference/cli/options.md#rpc-http-tls-client-auth-enabled) option. + [`--rpc-http-tls-client-auth-enabled`](../../../../global/reference/cli/options.md#rpc-http-tls-client-auth-enabled) option. * Specifies the keystore using the - [`--rpc-http-tls-keystore-file`](../../../../reference/cli/options.md#rpc-http-tls-keystore-file) + [`--rpc-http-tls-keystore-file`](../../../../global/reference/cli/options.md#rpc-http-tls-keystore-file) option. * Specifies the file that contains the password to decrypt the keystore using the - [`--rpc-http-tls-keystore-password-file`](../../../../reference/cli/options.md#rpc-http-tls-keystore-password-file) option. + [`--rpc-http-tls-keystore-password-file`](../../../../global/reference/cli/options.md#rpc-http-tls-keystore-password-file) option. * [Specifies the clients](#create-the-known-clients-file) allowed to connect to Besu using the - [`--rpc-http-tls-known-clients-file`](../../../../reference/cli/options.md#rpc-http-tls-known-clients-file) option. + [`--rpc-http-tls-known-clients-file`](../../../../global/reference/cli/options.md#rpc-http-tls-known-clients-file) option. * specifies the Java cipher suites using the - [`--rpc-http-tls-cipher-suite`](../../../../reference/cli/options.md#rpc-http-tls-cipher-suite) option. + [`--rpc-http-tls-cipher-suite`](../../../../global/reference/cli/options.md#rpc-http-tls-cipher-suite) option. * specifies the TLS protocol version using the - [`--rpc-http-tls-protocol`](../../../../reference/cli/options.md#rpc-http-tls-protocol) option. + [`--rpc-http-tls-protocol`](../../../../global/reference/cli/options.md#rpc-http-tls-protocol) option. !!! note @@ -127,14 +127,14 @@ besu --privacy-tls-enabled --privacy-tls-keystore-file=/Users/me/my_node/keystor The command line: * Enables TLS with the server using the - [`--privacy-tls-enabled`](../../../../reference/cli/options.md#privacy-tls-enabled) option. + [`--privacy-tls-enabled`](../../../../global/reference/cli/options.md#privacy-tls-enabled) option. * Specifies the keystore using the - [`--privacy-tls-keystore-file`](../../../../reference/cli/options.md#privacy-tls-keystore-file) + [`--privacy-tls-keystore-file`](../../../../global/reference/cli/options.md#privacy-tls-keystore-file) option. * Specifies the file that contains the password to decrypt the keystore using the - [`--privacy-tls-keystore-password-file`](../../../../reference/cli/options.md#privacy-tls-keystore-password-file) option. + [`--privacy-tls-keystore-password-file`](../../../../global/reference/cli/options.md#privacy-tls-keystore-password-file) option. * Specifies the trusted servers using the - [`--privacy-tls-known-enclave-file`](../../../../reference/cli/options.md#privacy-tls-known-enclave-file) option. + [`--privacy-tls-known-enclave-file`](../../../../global/reference/cli/options.md#privacy-tls-known-enclave-file) option. [Configure the client for TLS]: https://docs.ethsigner.consensys.net/en/latest/HowTo/Configure-TLS/#server-tls-connection diff --git a/docs/private-networks/how-to/configure/validators.md b/docs/private-networks/how-to/configure/validators.md index 7af1cc2ca4d..9ee32d275a7 100644 --- a/docs/private-networks/how-to/configure/validators.md +++ b/docs/private-networks/how-to/configure/validators.md @@ -6,7 +6,7 @@ description: Configuring validators in production networks As when [configuring bootnodes](../connect/bootnodes.md): -1. Create the [node key pair](../../../concepts/node-keys.md) (that is, the private and public key) +1. Create the [node key pair](../../../global/concepts/node-keys.md) (that is, the private and public key) before starting the validator. 1. When creating validators in the cloud (for example, AWS or Azure), attempt to assign static IP addresses to them. If your network is: diff --git a/docs/private-networks/how-to/connect/bootnodes.md b/docs/private-networks/how-to/connect/bootnodes.md index 0e32b7744f9..999fc8b84c3 100644 --- a/docs/private-networks/how-to/connect/bootnodes.md +++ b/docs/private-networks/how-to/connect/bootnodes.md @@ -27,8 +27,8 @@ In production networks, [configure two or more nodes as bootnodes](#configure-bo ## Specify a bootnode -To start a node, specify a bootnode [enode](../../../concepts/node-keys.md) for P2P discovery, -using the [`--bootnodes`](../../../reference/cli/options.md#bootnodes) option. +To start a node, specify a bootnode [enode](../../../global/concepts/node-keys.md) for P2P discovery, +using the [`--bootnodes`](../../../global/reference/cli/options.md#bootnodes) option. !!! example @@ -38,12 +38,12 @@ using the [`--bootnodes`](../../../reference/cli/options.md#bootnodes) option. The default host and port advertised to other peers for P2P discovery is `127.0.0.1:30303`. To specify a different host or port, use the -[`--p2p-host`](../../../reference/cli/options.md#p2p-host) and -[`--p2p-port`](../../../reference/cli/options.md#p2p-port) options. +[`--p2p-host`](../../../global/reference/cli/options.md#p2p-host) and +[`--p2p-port`](../../../global/reference/cli/options.md#p2p-port) options. By default, peer discovery listens on all available network 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. +[`--p2p-interface`](../../../global/reference/cli/options.md#p2p-interface) option. ## Configure bootnodes in a production network @@ -51,14 +51,14 @@ A network must have at least one operating bootnode. To allow for continuity in failure, configure two or more bootnodes in a production network. We don't recommend putting bootnodes behind a load balancer because the -[enode](../../../concepts/node-keys.md#enode-url) relates to the node public key, IP address, and +[enode](../../../global/concepts/node-keys.md#enode-url) relates to the node public key, IP address, and discovery ports. Any changes to a bootnode enode prevents other nodes from being able to establish a connection with the bootnode. This is why we recommend putting more bootnodes on the network itself. To ensure a bootnode enode doesn't change when recovering from a complete bootnode failure: -1. Create the [node key pair](../../../concepts/node-keys.md) (that is, the private and public key) +1. Create the [node key pair](../../../global/concepts/node-keys.md) (that is, the private and public key) before starting the bootnode. 1. When creating bootnodes in the cloud (for example, AWS and Azure), attempt to assign a static IP address to them. If your network is: @@ -80,10 +80,10 @@ To allow for failure, specify all bootnodes on the command line (even to the boo ## Add and remove bootnodes Adding new bootnodes is a similar process to creating bootnodes. After creating the bootnodes and -adding them to the network, update the [`--bootnodes`](../../../reference/cli/options.md#bootnodes) +adding them to the network, update the [`--bootnodes`](../../../global/reference/cli/options.md#bootnodes) command line option for each node to include the new bootnodes. When adding bootnodes, you don't need to restart running nodes. By updating the -[`--bootnodes`](../../../reference/cli/options.md#bootnodes) option, the next time you restart the -nodes (for example, when [upgrading](../../../how-to/upgrade/node.md)), the nodes connect to the new +[`--bootnodes`](../../../global/reference/cli/options.md#bootnodes) option, the next time you restart the +nodes (for example, when [upgrading](../../../global/how-to/upgrade/node.md)), the nodes connect to the new bootnodes. diff --git a/docs/private-networks/how-to/connect/configure-ports.md b/docs/private-networks/how-to/connect/configure-ports.md new file mode 100644 index 00000000000..e46c57ff546 --- /dev/null +++ b/docs/private-networks/how-to/connect/configure-ports.md @@ -0,0 +1 @@ +{!global/how-to/connect/configure-ports.md!} \ No newline at end of file diff --git a/docs/private-networks/how-to/connect/manage-peers.md b/docs/private-networks/how-to/connect/manage-peers.md new file mode 100644 index 00000000000..9b75b0c5d8a --- /dev/null +++ b/docs/private-networks/how-to/connect/manage-peers.md @@ -0,0 +1 @@ +{!global/how-to/connect/manage-peers.md!} \ No newline at end of file diff --git a/docs/private-networks/how-to/connect/specify-nat.md b/docs/private-networks/how-to/connect/specify-nat.md new file mode 100644 index 00000000000..a2eec6bd294 --- /dev/null +++ b/docs/private-networks/how-to/connect/specify-nat.md @@ -0,0 +1 @@ +{!global/how-to/connect/specify-nat.md!} \ No newline at end of file diff --git a/docs/private-networks/how-to/connect/static-nodes.md b/docs/private-networks/how-to/connect/static-nodes.md new file mode 100644 index 00000000000..47a82f28477 --- /dev/null +++ b/docs/private-networks/how-to/connect/static-nodes.md @@ -0,0 +1 @@ +{!global/how-to/connect/static-nodes.md!} \ No newline at end of file diff --git a/docs/private-networks/how-to/deploy/ethstats.md b/docs/private-networks/how-to/deploy/ethstats.md index 7dcecfd0e11..b8005b2df9e 100644 --- a/docs/private-networks/how-to/deploy/ethstats.md +++ b/docs/private-networks/how-to/deploy/ethstats.md @@ -36,8 +36,8 @@ for installing those components and connecting to a dashboard. You can use command line options to connect a node directly to a [dashboard](https://github.com/goerli/ethstats-client#available-dashboards), without using a client. -Start a node using the [`--ethstats`](../../../reference/cli/options.md#ethstats) option to specify the Ethstats server URL. -You can specify a contact email to send to the server using [`--ethstats-contact`](../../../reference/cli/options.md#ethstats-contact). +Start a node using the [`--ethstats`](../../../global/reference/cli/options.md#ethstats) option to specify the Ethstats server URL. +You can specify a contact email to send to the server using [`--ethstats-contact`](../../../global/reference/cli/options.md#ethstats-contact). !!! example diff --git a/docs/private-networks/how-to/develop/client-libraries.md b/docs/private-networks/how-to/develop/client-libraries.md new file mode 100644 index 00000000000..aeee06418f1 --- /dev/null +++ b/docs/private-networks/how-to/develop/client-libraries.md @@ -0,0 +1 @@ +{!global/how-to/develop/client-libraries.md!} \ No newline at end of file diff --git a/docs/private-networks/how-to/develop/truffle.md b/docs/private-networks/how-to/develop/truffle.md new file mode 100644 index 00000000000..7d63cd97f6e --- /dev/null +++ b/docs/private-networks/how-to/develop/truffle.md @@ -0,0 +1 @@ +{!global/how-to/develop/truffle.md!} \ No newline at end of file diff --git a/docs/private-networks/how-to/monitor/index.md b/docs/private-networks/how-to/monitor/index.md new file mode 100644 index 00000000000..3e492a8f52d --- /dev/null +++ b/docs/private-networks/how-to/monitor/index.md @@ -0,0 +1 @@ +{!global/how-to/monitor/index.md!} \ No newline at end of file diff --git a/docs/private-networks/how-to/monitor/logging.md b/docs/private-networks/how-to/monitor/logging.md new file mode 100644 index 00000000000..0f0670dd9d7 --- /dev/null +++ b/docs/private-networks/how-to/monitor/logging.md @@ -0,0 +1 @@ +{!global/how-to/monitor/logging.md!} \ No newline at end of file diff --git a/docs/private-networks/how-to/monitor/metrics.md b/docs/private-networks/how-to/monitor/metrics.md new file mode 100644 index 00000000000..c2a59fb7148 --- /dev/null +++ b/docs/private-networks/how-to/monitor/metrics.md @@ -0,0 +1 @@ +{!global/how-to/monitor/metrics.md!} \ No newline at end of file diff --git a/docs/private-networks/how-to/monitor/opentelemetry.md b/docs/private-networks/how-to/monitor/opentelemetry.md index 432057e50ba..728a6eb4385 100644 --- a/docs/private-networks/how-to/monitor/opentelemetry.md +++ b/docs/private-networks/how-to/monitor/opentelemetry.md @@ -5,8 +5,8 @@ description: Collect Besu information with the OpenTelemetry Collector # OpenTelemetry You can use the OpenTelemetry monitoring and tracing service to gather node metrics and traces. -To enable OpenTelemetry to access Hyperledger Besu, use the [`--metrics-enabled`](../../../reference/cli/options.md#metrics-enabled) -and [`--metrics-protocol=opentelemetry`](../../../reference/cli/options.md#metrics-protocol) options. +To enable OpenTelemetry to access Hyperledger Besu, use the [`--metrics-enabled`](../../../global/reference/cli/options.md#metrics-enabled) +and [`--metrics-protocol=opentelemetry`](../../../global/reference/cli/options.md#metrics-protocol) options. Use [Splunk](https://splunk.com) to visualize the collected data. A [Besu Sync example](https://github.com/splunk/splunk-connect-for-ethereum/tree/master/examples/besu-sync) is available. @@ -140,8 +140,8 @@ Download and install the [OpenTelemetry Collector](https://github.com/open-telem You can also refer to this [Docker-compose example](https://github.com/splunk/splunk-connect-for-ethereum/blob/989dc2ccae7d8235bf3ce2a83a18cf0cd1713294/examples/besu-sync/full-sync/docker-compose.yaml). -1. Start Besu with the [`--metrics-enabled`](../../../reference/cli/options.md#metrics-enabled) and - [`--metrics-protocol=opentelemetry`](../../../reference/cli/options.md#metrics-protocol) options. +1. Start Besu with the [`--metrics-enabled`](../../../global/reference/cli/options.md#metrics-enabled) and + [`--metrics-protocol=opentelemetry`](../../../global/reference/cli/options.md#metrics-protocol) options. For example, run the following command to start a single node: === "Syntax" diff --git a/docs/private-networks/how-to/monitor/splunk.md b/docs/private-networks/how-to/monitor/splunk.md index 9ec8dd40c84..bf4752d2d79 100644 --- a/docs/private-networks/how-to/monitor/splunk.md +++ b/docs/private-networks/how-to/monitor/splunk.md @@ -68,7 +68,7 @@ Docker Compose environment provided by Splunk. ### Requirements - [Docker](https://docs.docker.com/compose/install/) -- [Besu 1.4.4](https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/CHANGELOG.md#144) or later [installed](../../../get-started/install/binary-distribution.md) +- [Besu 1.4.4](https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/CHANGELOG.md#144) or later [installed](../../../global/get-started/install/binary-distribution.md) !!! important @@ -150,7 +150,7 @@ Docker Compose environment provided by Splunk. ### Requirements - [Splunk Enterprise license](https://www.splunk.com/) -- [Besu 1.4.4](https://github.com/hyperledger/besu/blob/master/CHANGELOG.md#144) or later [installed](../../../get-started/install/binary-distribution.md) +- [Besu 1.4.4](https://github.com/hyperledger/besu/blob/master/CHANGELOG.md#144) or later [installed](../../../global/get-started/install/binary-distribution.md) ### Steps diff --git a/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md b/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md index 7326ced6967..65bbdfb4312 100644 --- a/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md +++ b/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md @@ -9,12 +9,12 @@ Private transaction processing involves two transactions, the private transactio The private transaction and the PMT each have their own [nonce](../../concepts/privacy/private-transactions/index.md#nonces). If your private transaction rate requires sending private transactions without waiting for the previous -private transaction to be mined, using [`eth_getTransactionCount`](../../../reference/api/index.md#eth_gettransactioncount) -and [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) may result in +private transaction to be mined, using [`eth_getTransactionCount`](../../../global/reference/api/index.md#eth_gettransactioncount) +and [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction) may result in [incorrect nonces](../../concepts/privacy/private-transactions/index.md#private-nonce-management). In this case, use [`priv_distributeRawTransaction`](private-transactions.md#priv_distributerawtransaction) -instead of [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction). +instead of [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction). !!! note @@ -22,10 +22,10 @@ instead of [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendra [`priv_getEeaTransactionCount`](../../../reference/api/index.md#priv_geteeatransactioncount) to get the nonce for an account for the specified privacy group or participants. -Send the corresponding PMT using [`eth_sendRawTransaction`](../../../reference/api/index.md#eth_sendrawtransaction), +Send the corresponding PMT using [`eth_sendRawTransaction`](../../../global/reference/api/index.md#eth_sendrawtransaction), specifying the public PMT nonce. This method allows you to create and send the PMT yourself rather than -[`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) handling the PMT. +[`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction) handling the PMT. !!! important diff --git a/docs/private-networks/how-to/send-transactions/private-transactions.md b/docs/private-networks/how-to/send-transactions/private-transactions.md index ca9ec5237de..fc7e4ed8ab4 100644 --- a/docs/private-networks/how-to/send-transactions/private-transactions.md +++ b/docs/private-networks/how-to/send-transactions/private-transactions.md @@ -26,7 +26,7 @@ The `gas` and `gasPrice` specified when sending a private transaction are used b ## `eea_sendRawTransaction` -[`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) distributes the +[`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction) distributes the private transaction to the participating nodes, and signs and submits the PMT, as described in [Private transaction processing](../../concepts/privacy/private-transactions/processing.md). @@ -38,28 +38,28 @@ private transaction to the participating nodes, and signs and submits the PMT, a ## `priv_distributeRawTransaction` -Use [`priv_distributeRawTransaction`](../../../reference/api/index.md#priv_distributerawtransaction) instead of +Use [`priv_distributeRawTransaction`](../../../global/reference/api/index.md#priv_distributerawtransaction) instead of [`eea_sendRawTransaction`](#eea_sendrawtransaction) when sending [concurrent private transactions](concurrent-private-transactions.md). -[`priv_distributeRawTransaction`](../../../reference/api/index.md#priv_distributerawtransaction) +[`priv_distributeRawTransaction`](../../../global/reference/api/index.md#priv_distributerawtransaction) distributes the private transaction to the participating nodes but does not sign and submit the PMT. That is, it performs steps 1 to 5 of [Private Transaction Processing](../../concepts/privacy/private-transactions/processing.md). If using -[`priv_distributeRawTransaction`](../../../reference/api/index.md#priv_distributerawtransaction) -instead of [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction), use +[`priv_distributeRawTransaction`](../../../global/reference/api/index.md#priv_distributerawtransaction) +instead of [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction), use the value returned by -[`priv_distributeRawTransaction`](../../../reference/api/index.md#priv_distributerawtransaction), +[`priv_distributeRawTransaction`](../../../global/reference/api/index.md#priv_distributerawtransaction), which is the enclave key to the private transaction in [Tessera](https://docs.tessera.consensys.net/), in the `data` field of a call to -[`eth_sendRawTransaction`](../../../reference/api/index.md#eth_sendrawtransaction). +[`eth_sendRawTransaction`](../../../global/reference/api/index.md#eth_sendrawtransaction). Use the value returned by -[`priv_getPrivacyPrecompileAddress`](../../../reference/api/index.md#priv_getprivacyprecompileaddress), which is the +[`priv_getPrivacyPrecompileAddress`](../../../global/reference/api/index.md#priv_getprivacyprecompileaddress), which is the address of the [privacy precompiled contract](../../concepts/privacy/private-transactions/processing.md), in the `to` field of the call. -By using the [public Ethereum transaction](../../../how-to/send-transactions.md), -[`eth_sendRawTransaction`](../../../reference/api/index.md#eth_sendrawtransaction), you are signing +By using the [public Ethereum transaction](../../../global/how-to/send-transactions.md), +[`eth_sendRawTransaction`](../../../global/reference/api/index.md#eth_sendrawtransaction), you are signing and submitting the PMT yourself instead of having it signed by the Besu node, giving you greater control over the PMT. !!! warning @@ -111,15 +111,15 @@ and submitting the PMT yourself instead of having it signed by the Besu node, gi To create an [EEA-compliant private transaction], specify `privateFor` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction). To create a [Besu-extended private transaction], specify a `privacyGroupId` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction). ## Unsigned and unencoded private transactions -The [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) parameter is +The [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction) parameter is a signed RLP-encoded private transaction. Shown below are examples of unsigned and unencoded private transactions to create a contract. diff --git a/docs/private-networks/how-to/send-transactions/revert-reason.md b/docs/private-networks/how-to/send-transactions/revert-reason.md index f83c2851aec..c091c28b7c7 100644 --- a/docs/private-networks/how-to/send-transactions/revert-reason.md +++ b/docs/private-networks/how-to/send-transactions/revert-reason.md @@ -41,11 +41,11 @@ client an optional string message containing information about the error. ## Enabling revert reason -Use the [`--revert-reason-enabled`](../../../reference/cli/options.md#revert-reason-enabled) +Use the [`--revert-reason-enabled`](../../../global/reference/cli/options.md#revert-reason-enabled) command line option to include the revert reason in the transaction receipt, -[`eth_estimateGas`](../../../reference/api/index.md#eth_estimategas) error, -[`eth_call`](../../../reference/api/index.md#eth_call) error, and -[`trace`](../../../reference/trace-types.md#trace) response in Hyperledger Besu. +[`eth_estimateGas`](../../../global/reference/api/index.md#eth_estimategas) error, +[`eth_call`](../../../global/reference/api/index.md#eth_call) error, and +[`trace`](../../../global/reference/trace-types.md#trace) response in Hyperledger Besu. !!! caution @@ -55,7 +55,7 @@ command line option to include the revert reason in the transaction receipt, ## Where is the revert reason included With revert reason enabled, the transaction receipt returned by -[`eth_getTransactionReceipt`](../../../reference/api/index.md#eth_gettransactionreceipt) includes +[`eth_getTransactionReceipt`](../../../global/reference/api/index.md#eth_gettransactionreceipt) includes the revert reason as an ABI-encoded string. !!! important @@ -90,8 +90,8 @@ the revert reason as an ABI-encoded string. } ``` -The error returned by [`eth_estimateGas`](../../../reference/api/index.md#eth_estimategas) and -[`eth_call`](../../../reference/api/index.md#eth_call) includes the revert reason as an ABI-encoded string in the `data` field. +The error returned by [`eth_estimateGas`](../../../global/reference/api/index.md#eth_estimategas) and +[`eth_call`](../../../global/reference/api/index.md#eth_call) includes the revert reason as an ABI-encoded string in the `data` field. !!! example "Example of `eth_estimateGas` and `eth_call` error" @@ -107,10 +107,10 @@ The error returned by [`eth_estimateGas`](../../../reference/api/index.md#eth_es } ``` -The list items in the [`trace`](../../../reference/trace-types.md#trace) response returned by -[`trace_replayBlockTransactions`](../../../reference/api/index.md#trace_replayblocktransactions), -[`trace_block`](../../../reference/api/index.md#trace_block), and -[`trace_transaction`](../../../reference/api/index.md#trace_transaction) include the revert reason as an ABI-encoded string. +The list items in the [`trace`](../../../global/reference/trace-types.md#trace) response returned by +[`trace_replayBlockTransactions`](../../../global/reference/api/index.md#trace_replayblocktransactions), +[`trace_block`](../../../global/reference/api/index.md#trace_block), and +[`trace_transaction`](../../../global/reference/api/index.md#trace_transaction) include the revert reason as an ABI-encoded string. !!! example "Example of `trace` response list item" diff --git a/docs/private-networks/how-to/troubleshoot/evm-tool.md b/docs/private-networks/how-to/troubleshoot/evm-tool.md new file mode 100644 index 00000000000..fc0a8cdb349 --- /dev/null +++ b/docs/private-networks/how-to/troubleshoot/evm-tool.md @@ -0,0 +1 @@ +{!global/how-to/troubleshoot/evm-tool.md!} \ No newline at end of file diff --git a/docs/private-networks/how-to/troubleshoot/java-flight-recorder.md b/docs/private-networks/how-to/troubleshoot/java-flight-recorder.md new file mode 100644 index 00000000000..552c107f915 --- /dev/null +++ b/docs/private-networks/how-to/troubleshoot/java-flight-recorder.md @@ -0,0 +1 @@ +{!global/how-to/troubleshoot/java-flight-recorder.md!} \ No newline at end of file diff --git a/docs/private-networks/how-to/troubleshoot/trace-transactions.md b/docs/private-networks/how-to/troubleshoot/trace-transactions.md new file mode 100644 index 00000000000..2d86f10b8cb --- /dev/null +++ b/docs/private-networks/how-to/troubleshoot/trace-transactions.md @@ -0,0 +1 @@ +{!global/how-to/troubleshoot/trace-transactions.md!} \ No newline at end of file diff --git a/docs/private-networks/how-to/upgrade/node.md b/docs/private-networks/how-to/upgrade/node.md new file mode 100644 index 00000000000..7d9db9bf437 --- /dev/null +++ b/docs/private-networks/how-to/upgrade/node.md @@ -0,0 +1 @@ +{!global/how-to/upgrade/node.md!} \ No newline at end of file diff --git a/docs/private-networks/how-to/upgrade/protocol.md b/docs/private-networks/how-to/upgrade/protocol.md index 8809634b0ed..8b47d782fe1 100644 --- a/docs/private-networks/how-to/upgrade/protocol.md +++ b/docs/private-networks/how-to/upgrade/protocol.md @@ -23,7 +23,7 @@ To upgrade the protocol in a private network: For example, [Istanbul](https://eips.ethereum.org/EIPS/eip-1679). 1. Network participants agree on the block number at which to upgrade. 1. For each node in the network: - 1. Add the [milestone block number](../../../reference/genesis-items.md#milestone-blocks) to + 1. Add the [milestone block number](../../../global/reference/genesis-items.md#milestone-blocks) to the genesis file. 1. Restart the node before reaching milestone block. diff --git a/docs/private-networks/how-to/use-permissioning/local.md b/docs/private-networks/how-to/use-permissioning/local.md index 69320eb1620..9ed93c3d2b5 100644 --- a/docs/private-networks/how-to/use-permissioning/local.md +++ b/docs/private-networks/how-to/use-permissioning/local.md @@ -26,7 +26,7 @@ enabled, communication is only between nodes in the allowlist. Node allowlisting is at the node level. That is, each node in the network has a [permissions configuration file](#permissions-configuration-file) file in the -[data directory](../../../reference/cli/options.md#data-path) for the node. +[data directory](../../../global/reference/cli/options.md#data-path) for the node. Local permissioning doesn't check that the node using the permissions configuration file is listed in the allowlist, it only checks that the remote end of the connection is in the allowlist. Use [onchain permissioning] if you @@ -57,23 +57,23 @@ start with node permissions enabled. ### Enabling node allowlisting To enable node allowlisting, specify the -[`--permissions-nodes-config-file-enabled`](../../../reference/cli/options.md#permissions-nodes-config-file-enabled) +[`--permissions-nodes-config-file-enabled`](../../../global/reference/cli/options.md#permissions-nodes-config-file-enabled) option when starting Besu. The `PERM` API methods are not enabled by default. To enable the `PERM` API methods, use the -[`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../../reference/cli/options.md#rpc-ws-api) options. +[`--rpc-http-api`](../../../global/reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../global/reference/cli/options.md#rpc-ws-api) options. ### Updating the node allowlist To update the nodes allowlist while the node is running, use the following JSON-RPC API methods: -* [perm_addNodesToAllowlist](../../../reference/api/index.md#perm_addnodestoallowlist) -* [perm_removeNodesFromAllowlist](../../../reference/api/index.md#perm_removenodesfromallowlist) +* [perm_addNodesToAllowlist](../../../global/reference/api/index.md#perm_addnodestoallowlist) +* [perm_removeNodesFromAllowlist](../../../global/reference/api/index.md#perm_removenodesfromallowlist) You can also update the [`permissions_config.toml`](#permissions-configuration-file) file directly and then update the allowlist using the -[`perm_reloadPermissionsFromFile`](../../../reference/api/index.md#perm_reloadpermissionsfromfile) +[`perm_reloadPermissionsFromFile`](../../../global/reference/api/index.md#perm_reloadpermissionsfromfile) method. Updates to the permissions configuration file persist across node restarts. @@ -81,7 +81,7 @@ Updates to the permissions configuration file persist across node restarts. ### Viewing the node allowlist To view the nodes allowlist, use the -[perm_getNodesAllowlist](../../../reference/api/index.md#perm_getnodesallowlist) method. +[perm_getNodesAllowlist](../../../global/reference/api/index.md#perm_getnodesallowlist) method. !!! note @@ -111,7 +111,7 @@ permissioning accepts transactions only from accounts in the accounts allowlist. Account allowlisting is at the node level. That is, each node in the network has a [permissions configuration file](#permissions-configuration-file) in the -[data directory](../../../reference/cli/options.md#data-path) for the node. +[data directory](../../../global/reference/cli/options.md#data-path) for the node. !!! caution "Using account permissioning and privacy" @@ -126,7 +126,7 @@ Account allowlisting is at the node level. That is, each node in the network has Transaction validation against the accounts allowlist occurs at the following points: * Submitted by JSON-RPC API method - [`eth_sendRawTransaction`](../../../reference/api/index.md#eth_sendrawtransaction) + [`eth_sendRawTransaction`](../../../global/reference/api/index.md#eth_sendrawtransaction) * Received via propagation from another node * Added to a block by a mining node @@ -165,23 +165,23 @@ The following diagram illustrates applying local and onchain permissioning rules ### Enabling account allowlisting To enable account allowlisting, specify the -[`--permissions-accounts-config-file-enabled`](../../../reference/cli/options.md#permissions-accounts-config-file-enabled) +[`--permissions-accounts-config-file-enabled`](../../../global/reference/cli/options.md#permissions-accounts-config-file-enabled) option when starting Besu. The `PERM` API methods are not enabled by default. To enable the `PERM` API methods, use the -[`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../../reference/cli/options.md#rpc-ws-api) options. +[`--rpc-http-api`](../../../global/reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../global/reference/cli/options.md#rpc-ws-api) options. ### Updating the account allowlist To update the accounts allowlist when the node is running, use the JSON-RPC API methods: -* [`perm_addAccountsToAllowlist`](../../../reference/api/index.md#perm_addaccountstoallowlist) -* [`perm_removeAccountsFromAllowlist`](../../../reference/api/index.md#perm_removeaccountsfromallowlist). +* [`perm_addAccountsToAllowlist`](../../../global/reference/api/index.md#perm_addaccountstoallowlist) +* [`perm_removeAccountsFromAllowlist`](../../../global/reference/api/index.md#perm_removeaccountsfromallowlist). You can also update the [`permissions_config.toml`](#permissions-configuration-file) file directly and use the -[`perm_reloadPermissionsFromFile`](../../../reference/api/index.md#perm_reloadpermissionsfromfile) +[`perm_reloadPermissionsFromFile`](../../../global/reference/api/index.md#perm_reloadpermissionsfromfile) method to update the allowlists. Updates to the permissions configuration file persist across node restarts. @@ -189,25 +189,25 @@ Updates to the permissions configuration file persist across node restarts. ### Viewing the account allowlist To view the accounts allowlist, use the -[`perm_getAccountsAllowlist`](../../../reference/api/index.md#perm_getaccountsallowlist) method. +[`perm_getAccountsAllowlist`](../../../global/reference/api/index.md#perm_getaccountsallowlist) method. ## Permissions configuration file The permissions configuration file contains the nodes and accounts allowlists. If the -[`--permissions-accounts-config-file`](../../../reference/cli/options.md#permissions-accounts-config-file) -and [`--permissions-nodes-config-file`](../../../reference/cli/options.md#permissions-nodes-config-file) +[`--permissions-accounts-config-file`](../../../global/reference/cli/options.md#permissions-accounts-config-file) +and [`--permissions-nodes-config-file`](../../../global/reference/cli/options.md#permissions-nodes-config-file) options are not specified, the name of the permissions configuration file must be [`permissions_config.toml`](#permissions-configuration-file) and must be in the -[data directory](../../../reference/cli/options.md#data-path) for the node. +[data directory](../../../global/reference/cli/options.md#data-path) for the node. You can specify the accounts and nodes allowlists in the same file or in separate files for accounts and nodes. To specify a permissions configuration file (or separate files for accounts and nodes) in any location, use the -[`--permissions-accounts-config-file`](../../../reference/cli/options.md#permissions-accounts-config-file) +[`--permissions-accounts-config-file`](../../../global/reference/cli/options.md#permissions-accounts-config-file) and -[`--permissions-nodes-config-file`](../../../reference/cli/options.md#permissions-nodes-config-file) +[`--permissions-nodes-config-file`](../../../global/reference/cli/options.md#permissions-nodes-config-file) options. !!!note @@ -227,6 +227,6 @@ options. ``` -[specify a permissions configuration file with Docker]: ../../../get-started/install/run-docker-image.md#permissions-configuration-file -[support domain names]: ../../../concepts/node-keys.md#domain-name-support +[specify a permissions configuration file with Docker]: ../../../global/get-started/install/run-docker-image.md#permissions-configuration-file +[support domain names]: ../../../global/concepts/node-keys.md#domain-name-support [onchain permissioning]: ../../concepts/permissioning/onchain.md diff --git a/docs/private-networks/how-to/use-permissioning/onchain.md b/docs/private-networks/how-to/use-permissioning/onchain.md index 802f7c52ef9..61f04a8c6d6 100644 --- a/docs/private-networks/how-to/use-permissioning/onchain.md +++ b/docs/private-networks/how-to/use-permissioning/onchain.md @@ -45,7 +45,7 @@ To add a node to the Hyperledger Besu nodes allowlist: 1. On the **Nodes** tab of the permissioning management dapp, select **Add Node**. The **Add Node** window displays. -2. Enter the [enode URL](../../../concepts/node-keys.md#enode-url) of the node you are adding and select **Add Node**. +2. Enter the [enode URL](../../../global/concepts/node-keys.md#enode-url) of the node you are adding and select **Add Node**. !!! tip @@ -108,7 +108,7 @@ You can add or remove admins in the same way as [accounts](#update-accounts-allo ## Specify the permissioning contract interface version -Use the [`--permissions-nodes-contract-version`](../../../reference/cli/options.md#permissions-nodes-contract-version) +Use the [`--permissions-nodes-contract-version`](../../../global/reference/cli/options.md#permissions-nodes-contract-version) command line option to specify the version of the [permissioning contract interface](../../concepts/permissioning/onchain.md#permissioning-contracts). The default is 1. @@ -123,6 +123,6 @@ the contract interface implements. The permissioning contracts in the [`ConsenSys/permissioning-smart-contracts`](https://github.com/ConsenSys/permissioning-smart-contracts) repository implement the version 2 contract interface. -[support domain names]: ../../../concepts/node-keys.md#domain-name-support +[support domain names]: ../../../global/concepts/node-keys.md#domain-name-support [projects release page]: https://github.com/ConsenSys/permissioning-smart-contracts/releases/latest [onchain permissioning tutorial]: ../../tutorials/permissioning/onchain.md diff --git a/docs/private-networks/how-to/use-privacy/access-private-transactions.md b/docs/private-networks/how-to/use-privacy/access-private-transactions.md index 174a8fa43d9..e691c961db1 100644 --- a/docs/private-networks/how-to/use-privacy/access-private-transactions.md +++ b/docs/private-networks/how-to/use-privacy/access-private-transactions.md @@ -21,9 +21,9 @@ With the transaction hash returned when submitting the private transaction, to g receipt for the: * Private transaction, use - [`priv_getTransactionReceipt`](../../../reference/api/index.md#priv_gettransactionreceipt). + [`priv_getTransactionReceipt`](../../../global/reference/api/index.md#priv_gettransactionreceipt). * Privacy marker transaction, use - [`eth_getTransactionReceipt`](../../../reference/api/index.md#eth_gettransactionreceipt). + [`eth_getTransactionReceipt`](../../../global/reference/api/index.md#eth_gettransactionreceipt). The transaction receipt includes a `status` indicating if the transaction failed (`0x0`), succeeded (`0x1`), or was invalid (`0x2`). @@ -40,6 +40,6 @@ was invalid (`0x2`). With the transaction hash returned when submitting the private transaction, to get the: * Private transaction, use - [`priv_getPrivateTransaction`](../../../reference/api/index.md#priv_getprivatetransaction). + [`priv_getPrivateTransaction`](../../../global/reference/api/index.md#priv_getprivatetransaction). * Privacy marker transaction, use - [`eth_getTransactionByHash`](../../../reference/api/index.md#eth_gettransactionbyhash). + [`eth_getTransactionByHash`](../../../global/reference/api/index.md#eth_gettransactionbyhash). diff --git a/docs/private-networks/how-to/use-privacy/besu-extended.md b/docs/private-networks/how-to/use-privacy/besu-extended.md index d03a6ae5f91..cc6021ce7ba 100644 --- a/docs/private-networks/how-to/use-privacy/besu-extended.md +++ b/docs/private-networks/how-to/use-privacy/besu-extended.md @@ -14,23 +14,23 @@ Hyperledger Besu provides an extended implementation of privacy allowing you to [create a privacy group for a set of participants](../../concepts/privacy/privacy-groups.md). You must specify the privacy group ID when sending private transactions. -To enable the [`PRIV` API methods](../../../reference/api/index.md#priv-methods), use 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. +To enable the [`PRIV` API methods](../../../global/reference/api/index.md#priv-methods), use the +[`--rpc-http-api`](../../../global/reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../global/reference/cli/options.md#rpc-ws-api) command line options. To create the privacy group containing the recipients of a private transaction, use -[`priv_createPrivacyGroup`](../../../reference/api/index.md#priv_createprivacygroup). +[`priv_createPrivacyGroup`](../../../global/reference/api/index.md#priv_createprivacygroup). To create an EEA-compliant private transaction, specify `privacyGroupId` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction). ## Privacy group type Privacy groups created using -[`priv_createPrivacyGroup`](../../../reference/api/index.md#priv_createprivacygroup) +[`priv_createPrivacyGroup`](../../../global/reference/api/index.md#priv_createprivacygroup) have a `BESU` privacy group type when returned by -[`priv_findPrivacyGroup`](../../../reference/api/index.md#priv_findprivacygroup). +[`priv_findPrivacyGroup`](../../../global/reference/api/index.md#priv_findprivacygroup). !!! example diff --git a/docs/private-networks/how-to/use-privacy/eea-compliant.md b/docs/private-networks/how-to/use-privacy/eea-compliant.md index f7e8ae3d252..dc0bb267034 100644 --- a/docs/private-networks/how-to/use-privacy/eea-compliant.md +++ b/docs/private-networks/how-to/use-privacy/eea-compliant.md @@ -14,19 +14,19 @@ When using Hyperledger Besu [EEA-compliant privacy](../../concepts/privacy/priva group of nodes specified by `privateFrom` and `privateFor` form a privacy group, to which Tessera assigns a unique privacy group ID. -To enable the [`EEA` API methods](../../../reference/api/index.md#eea-methods), use 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. +To enable the [`EEA` API methods](../../../global/reference/api/index.md#eea-methods), use the +[`--rpc-http-api`](../../../global/reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../global/reference/cli/options.md#rpc-ws-api) command line options. To create an EEA-compliant private transaction, specify `privateFor` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction). ## Privacy group type Privacy groups created when specifying `privateFrom` and `privateFor` have a `LEGACY` privacy group type when returned by -[`priv_findPrivacyGroup`](../../../reference/api/index.md#priv_findprivacygroup). +[`priv_findPrivacyGroup`](../../../global/reference/api/index.md#priv_findprivacygroup). !!! example diff --git a/docs/private-networks/how-to/use-privacy/flexible.md b/docs/private-networks/how-to/use-privacy/flexible.md index a3a26afe3ee..76fa973dec3 100644 --- a/docs/private-networks/how-to/use-privacy/flexible.md +++ b/docs/private-networks/how-to/use-privacy/flexible.md @@ -32,11 +32,11 @@ membership of [flexible privacy groups](../../concepts/privacy/flexible-privacy. ## Enabling flexible privacy groups -Use the [`--privacy-flexible-groups-enabled`](../../../reference/cli/options.md#privacy-flexible-groups-enabled) +Use the [`--privacy-flexible-groups-enabled`](../../../global/reference/cli/options.md#privacy-flexible-groups-enabled) command line option to enable [flexible privacy groups](../../concepts/privacy/flexible-privacy.md). -When flexible privacy groups are enabled, the [`priv_createPrivacyGroup`](../../../reference/api/index.md#priv_createprivacygroup), -[`priv_deletePrivacyGroup`](../../../reference/api/index.md#priv_deleteprivacygroup), -and [`priv_findPrivacyGroup`](../../../reference/api/index.md#priv_findprivacygroup) methods for +When flexible privacy groups are enabled, the [`priv_createPrivacyGroup`](../../../global/reference/api/index.md#priv_createprivacygroup), +[`priv_deletePrivacyGroup`](../../../global/reference/api/index.md#priv_deleteprivacygroup), +and [`priv_findPrivacyGroup`](../../../global/reference/api/index.md#priv_findprivacygroup) methods for [offchain privacy groups](../../concepts/privacy/privacy-groups.md) are disabled. ## Simple flexible privacy group example diff --git a/docs/private-networks/how-to/use-privacy/goquorum-compatible.md b/docs/private-networks/how-to/use-privacy/goquorum-compatible.md index 4ee4b74a494..6b8e77f8656 100644 --- a/docs/private-networks/how-to/use-privacy/goquorum-compatible.md +++ b/docs/private-networks/how-to/use-privacy/goquorum-compatible.md @@ -10,7 +10,7 @@ Besu and [GoQuorum clients] using the Tessera private transaction manager. This mode requires both networks to run an interoperable consensus algorithm such as [QBFT] to work. To run your Besu nodes in GoQuorum-compatible privacy mode, add the `isQuorum:true` flag to your -[genesis file](../../../concepts/genesis-file.md). +[genesis file](../../../global/concepts/genesis-file.md). While in GoQuorum-compatible privacy mode and using Tessera, disable [`orion` mode](https://docs.tessera.consensys.net/en/stable/HowTo/Configure/Orion-Mode/) by removing `"mode": "orion",` from the [Tessera configuration file](../../tutorials/privacy/multi-tenancy.md#3-update-the-tessera-configuration-file). diff --git a/docs/private-networks/how-to/use-privacy/privacy-groups.md b/docs/private-networks/how-to/use-privacy/privacy-groups.md index 2e57b36f6e0..1bd6252743e 100644 --- a/docs/private-networks/how-to/use-privacy/privacy-groups.md +++ b/docs/private-networks/how-to/use-privacy/privacy-groups.md @@ -13,9 +13,9 @@ description: Create and manage privacy groups with Hyperledger Besu Hyperledger Besu-extended privacy provides JSON-RPC API methods for creating and managing privacy groups: -* [`priv_createPrivacyGroup`](../../../reference/api/index.md#priv_createprivacygroup) -* [`priv_findPrivacyGroup`](../../../reference/api/index.md#priv_findprivacygroup) -* [`priv_deletePrivacyGroup`](../../../reference/api/index.md#priv_deleteprivacygroup). +* [`priv_createPrivacyGroup`](../../../global/reference/api/index.md#priv_createprivacygroup) +* [`priv_findPrivacyGroup`](../../../global/reference/api/index.md#priv_findprivacygroup) +* [`priv_deletePrivacyGroup`](../../../global/reference/api/index.md#priv_deleteprivacygroup). !!! tip diff --git a/docs/private-networks/how-to/use-privacy/sign-pmts.md b/docs/private-networks/how-to/use-privacy/sign-pmts.md index 1d47af2b3bd..c4fb01b1735 100644 --- a/docs/private-networks/how-to/use-privacy/sign-pmts.md +++ b/docs/private-networks/how-to/use-privacy/sign-pmts.md @@ -6,7 +6,7 @@ description: How to sign a privacy marker transaction with Hyperledger Besu You can sign privacy marker transactions with either a random key or a specified key. To sign privacy marker transactions with a specified private key, use -[`--privacy-marker-transaction-signing-key-file`](../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) +[`--privacy-marker-transaction-signing-key-file`](../../../global/reference/cli/options.md#privacy-marker-transaction-signing-key-file) when starting Hyperledger Besu. !!! note @@ -20,7 +20,7 @@ adequate funds. In [free gas networks](../configure/free-gas.md), to provide further anonymity by signing each privacy marker transaction with a different random key, exclude the -[`--privacy-marker-transaction-signing-key-file`](../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) +[`--privacy-marker-transaction-signing-key-file`](../../../global/reference/cli/options.md#privacy-marker-transaction-signing-key-file) command line option when starting Besu. !!! caution "Using account permissioning and privacy" diff --git a/docs/private-networks/how-to/use-privacy/tessera.md b/docs/private-networks/how-to/use-privacy/tessera.md index 15854df0d96..c175f74e362 100644 --- a/docs/private-networks/how-to/use-privacy/tessera.md +++ b/docs/private-networks/how-to/use-privacy/tessera.md @@ -47,4 +47,4 @@ enough memory. [configure Tessera for high availability]: https://consensys.net/docs/goquorum//en/stable/configure-and-manage/configure/high-availability/ -[configure Besu for high availability]: ../../../how-to/configure/Configure-HA +[configure Besu for high availability]: ../../../global/how-to/configure/Configure-HA diff --git a/docs/private-networks/how-to/use-privacy/web3js-quorum.md b/docs/private-networks/how-to/use-privacy/web3js-quorum.md index 68887b2eab3..9d289c70d59 100644 --- a/docs/private-networks/how-to/use-privacy/web3js-quorum.md +++ b/docs/private-networks/how-to/use-privacy/web3js-quorum.md @@ -35,8 +35,8 @@ npm install web3js-quorum Initialize your client where: * `` is the JSON-RPC HTTP endpoint of your Hyperledger Besu node. Specified - by the [`--rpc-http-host`](../../../reference/cli/options.md#rpc-http-host) and - [`--rpc-http-port`](../../../reference/cli/options.md#rpc-http-port) command line options. + by the [`--rpc-http-host`](../../../global/reference/cli/options.md#rpc-http-host) and + [`--rpc-http-port`](../../../global/reference/cli/options.md#rpc-http-port) command line options. !!! example diff --git a/docs/private-networks/index.md b/docs/private-networks/index.md index f0fd665eb53..e4aeb788587 100644 --- a/docs/private-networks/index.md +++ b/docs/private-networks/index.md @@ -8,7 +8,7 @@ You can use Besu to develop enterprise applications requiring secure, high-perfo processing in a private network. A private network is a network not connected to Ethereum Mainnet or an Ethereum testnet. -Private networks typically use a different [chain ID](../concepts/network-and-chain-id.md) and +Private networks typically use a different [chain ID](../global/concepts/network-and-chain-id.md) and proof of authority consensus ([QBFT](how-to/configure/consensus/qbft.md), [IBFT 2.0](how-to/configure/consensus/ibft.md), or [Clique](how-to/configure/consensus/clique.md)). diff --git a/docs/private-networks/reference/accounts-for-testing.md b/docs/private-networks/reference/accounts-for-testing.md index 6c786abe44c..90d4a6b122d 100644 --- a/docs/private-networks/reference/accounts-for-testing.md +++ b/docs/private-networks/reference/accounts-for-testing.md @@ -9,7 +9,7 @@ network. Hyperledger Besu also provides predefined accounts for use in developme ## Development mode -When you start Besu with the [`--network=dev`](../../reference/cli/options.md#network) command line option, Besu +When you start Besu with the [`--network=dev`](../../global/reference/cli/options.md#network) command line option, Besu uses the `dev.json` genesis file by default. The `dev.json` genesis file defines the following accounts used for testing. @@ -23,4 +23,4 @@ network. For an example of how to define accounts in the genesis file, see [`dev.json`](https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/config/src/main/resources/dev.json). To start Besu with the genesis file defining the existing accounts, use the -[`--genesis-file`](../../reference/cli/options.md#genesis-file) command line option . +[`--genesis-file`](../../global/reference/cli/options.md#genesis-file) command line option . diff --git a/docs/private-networks/tutorials/clique.md b/docs/private-networks/tutorials/clique.md index 43c968935b6..088979ebd12 100644 --- a/docs/private-networks/tutorials/clique.md +++ b/docs/private-networks/tutorials/clique.md @@ -14,7 +14,7 @@ A private network provides a configurable network for testing. This private netw ## Prerequisites -* [Hyperledger Besu](../../get-started/install/binary-distribution.md) +* [Hyperledger Besu](../../global/get-started/install/binary-distribution.md) * [Curl (or similar webservice client)](https://curl.haxx.se/download.html). ## Steps @@ -24,7 +24,7 @@ Listed on the right-hand side of the page are the steps to create a private netw ### 1. Create directories Each node requires a data directory for the blockchain data. When the node starts, Besu saves the -[node key](../../concepts/node-keys.md) in this directory. +[node key](../../global/concepts/node-keys.md) in this directory. Create directories for your private network, each of the three nodes, and a data directory for each node: @@ -46,7 +46,7 @@ file. For this Clique network, we'll use Node-1 as the initial signer. This requ address for Node-1. To get the address for Node-1, in the `Node-1` directory, use the -[`public-key export-address`](../../reference/cli/subcommands.md#export-address) subcommand to +[`public-key export-address`](../../global/reference/cli/subcommands.md#export-address) subcommand to write the node address to the specified file (`node1Address` in this example). === "MacOS" @@ -154,15 +154,15 @@ Start Node-1: The command line enables: * The JSON-RPC API using the - [`--rpc-http-enabled`](../../reference/cli/options.md#rpc-http-enabled) option + [`--rpc-http-enabled`](../../global/reference/cli/options.md#rpc-http-enabled) option * The ETH, NET, and CLIQUE APIs using the - [`--rpc-http-api`](../../reference/cli/options.md#rpc-http-api) option + [`--rpc-http-api`](../../global/reference/cli/options.md#rpc-http-api) option * All-host access to the HTTP JSON-RPC API using the - [`--host-allowlist`](../../reference/cli/options.md#host-allowlist) option + [`--host-allowlist`](../../global/reference/cli/options.md#host-allowlist) option * All-domain access to the node through the HTTP JSON-RPC API using the - [`--rpc-http-cors-origins`](../../reference/cli/options.md#rpc-http-cors-origins) option + [`--rpc-http-cors-origins`](../../global/reference/cli/options.md#rpc-http-cors-origins) option -When the node starts, the [enode URL](../../concepts/node-keys.md#enode-url) displays. +When the node starts, the [enode URL](../../global/concepts/node-keys.md#enode-url) displays. Copy the enode URL to specify Node-1 as the bootnode in the following steps. ![Node 1 Enode URL](../../images/EnodeStartup.png) @@ -187,13 +187,13 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * A different port to Node-1 for P2P discovery using the - [`--p2p-port`](../../reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../global/reference/cli/options.md#p2p-port) option. * A different port to Node-1 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../global/reference/cli/options.md#rpc-http-port) option. * The enode URL of Node-1 using the - [`--bootnodes`](../../reference/cli/options.md#bootnodes) option. + [`--bootnodes`](../../global/reference/cli/options.md#bootnodes) option. * The data directory for Node-2 using the - [`--data-path`](../../reference/cli/options.md#data-path) option. + [`--data-path`](../../global/reference/cli/options.md#data-path) option. * Other options as for [Node-1](#5-start-first-node-as-bootnode). ### 6. Start Node-3 @@ -216,18 +216,18 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * A different port to Node-1 and Node-2 for P2P discovery using the - [`--p2p-port`](../../reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../global/reference/cli/options.md#p2p-port) option. * A different port to Node-1 and Node-2 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../global/reference/cli/options.md#rpc-http-port) option. * The data directory for Node-3 using the - [`--data-path`](../../reference/cli/options.md#data-path) option. + [`--data-path`](../../global/reference/cli/options.md#data-path) option. * The bootnode as for [Node-2](#6-start-node-2) * Other options as for [Node-1](#5-start-first-node-as-bootnode). ### 7. Confirm the private network is working Start another terminal, use curl to call the JSON-RPC API -[`net_peerCount`](../../reference/api/index.md#net_peercount) method and confirm the nodes are +[`net_peerCount`](../../global/reference/api/index.md#net_peercount) method and confirm the nodes are functioning as peers: ```bash diff --git a/docs/private-networks/tutorials/contracts/index.md b/docs/private-networks/tutorials/contracts/index.md index e10e5f13bf7..17595ec5dca 100644 --- a/docs/private-networks/tutorials/contracts/index.md +++ b/docs/private-networks/tutorials/contracts/index.md @@ -152,7 +152,7 @@ Refer to the [EthSigner documentation](https://docs.ethsigner.consensys.net/) fo Pass the following parameters to the [`eth_sendTransaction`](https://docs.ethsigner.consensys.net/Reference/API-Methods/#eth_sendtransaction) call to EthSigner; EthSigner then converts the request to an -[`eth_sendRawTransaction`](../../../reference/api/index.md#eth_sendrawtransaction) call that Besu uses: +[`eth_sendRawTransaction`](../../../global/reference/api/index.md#eth_sendrawtransaction) call that Besu uses: * `to` - address of the receiver. To deploy a contract, set to `null`. * `from` - address of the sender account. For example `0x9b790656b9ec0db1936ed84b3bea605873558198`. @@ -188,7 +188,7 @@ Make the request using `eth_sendTransaction`: To deploy a private contract to another node or [privacy group](../../concepts/privacy/privacy-groups.md) member, use the [web3js-quorum](https://www.npmjs.com/package/web3js-quorum) library and -the [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) API call. +the [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction) API call. You must use this API call instead of [`eth_sendTransaction`](https://ethereum.github.io/execution-apis/api-documentation) because Hyperledger Besu keeps account management separate for stronger security. @@ -260,7 +260,7 @@ the contract's address. To deploy a private contract to another [privacy group](../../concepts/privacy/privacy-groups.md) member, use the [web3js-quorum](https://consensys.github.io/web3js-quorum/latest/index.html) library and -the [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) API call. +the [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction) API call. You must use this API call instead of [`eth_sendTransaction`](https://ethereum.github.io/execution-apis/api-documentation) because Hyperledger Besu keeps account management separate for stronger security. diff --git a/docs/private-networks/tutorials/ethash.md b/docs/private-networks/tutorials/ethash.md index 9146608e5d0..6137d3d9666 100644 --- a/docs/private-networks/tutorials/ethash.md +++ b/docs/private-networks/tutorials/ethash.md @@ -17,7 +17,7 @@ public testnets. ## Prerequisites -* [Hyperledger Besu](../../get-started/install/binary-distribution.md) +* [Hyperledger Besu](../../global/get-started/install/binary-distribution.md) * [Curl (or similar webservice client)](https://curl.haxx.se/download.html). ## Steps @@ -27,7 +27,7 @@ Listed on the right-hand side of the page are the steps to create a private netw ### 1. Create directories Each node requires a data directory for the blockchain data. When the node starts, Besu saves the -[node key](../../concepts/node-keys.md) in this directory. +[node key](../../global/concepts/node-keys.md) in this directory. Create directories for your private network, each of the three nodes, and a data directory for each node: @@ -49,7 +49,7 @@ blockchain). The genesis file includes entries for configuring the blockchain, s difficulty and initial accounts and balances. All nodes in a network must use the same genesis file. The -[network ID](../../concepts/network-and-chain-id.md) defaults to the `chainID` in the genesis +[network ID](../../global/concepts/network-and-chain-id.md) defaults to the `chainID` in the genesis file. The `fixeddifficulty` enables fast block mining. Copy the following genesis definition to a file called `privateNetworkGenesis.json` and save it in @@ -112,20 +112,20 @@ Start Node-1: The command line enables: * Mining and specifies the account to pay mining rewards to using the - [`--miner-enabled`](../../reference/cli/options.md#miner-enabled) and - [`--miner-coinbase`](../../reference/cli/options.md#miner-coinbase) options. -* JSON-RPC API using the [`--rpc-http-enabled`](../../reference/cli/options.md#rpc-http-enabled) + [`--miner-enabled`](../../global/reference/cli/options.md#miner-enabled) and + [`--miner-coinbase`](../../global/reference/cli/options.md#miner-coinbase) options. +* JSON-RPC API using the [`--rpc-http-enabled`](../../global/reference/cli/options.md#rpc-http-enabled) option. * All-host access to the HTTP JSON-RPC API using the - [`--host-allowlist`](../../reference/cli/options.md#host-allowlist) option. + [`--host-allowlist`](../../global/reference/cli/options.md#host-allowlist) option. * All-domain access to the node through the HTTP JSON-RPC API using the - [`--rpc-http-cors-origins`](../../reference/cli/options.md#rpc-http-cors-origins) option. + [`--rpc-http-cors-origins`](../../global/reference/cli/options.md#rpc-http-cors-origins) option. !!! info The miner coinbase account is one of the accounts defined in the genesis file. -When the node starts, the [enode URL](../../concepts/node-keys.md#enode-url) displays. Copy the +When the node starts, the [enode URL](../../global/concepts/node-keys.md#enode-url) displays. Copy the enode URL to specify Node-1 as the bootnode in the following steps. ![Node 1 Enode URL](../../images/EnodeStartup.png) @@ -150,11 +150,11 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * A different port to Node-1 for P2P discovery using the - [`--p2p-port`](../../reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../global/reference/cli/options.md#p2p-port) option. * The enode URL of Node-1 using the - [`--bootnodes`](../../reference/cli/options.md#bootnodes) option. + [`--bootnodes`](../../global/reference/cli/options.md#bootnodes) option. * A data directory for Node-2 using the - [`--data-path`](../../reference/cli/options.md#data-path) option. + [`--data-path`](../../global/reference/cli/options.md#data-path) option. * A genesis file as for Node-1. ### 5. Start Node-3 @@ -178,13 +178,13 @@ The command line specifies: * A different port to Node-1 and Node-2 for P2P discovery. * A data directory for Node-3 using the - [`--data-path`](../../reference/cli/options.md#data-path) option. + [`--data-path`](../../global/reference/cli/options.md#data-path) option. * A bootnode and genesis file as for Node-2. ### 6. Confirm the private network is working Start another terminal, use curl to call the JSON-RPC API -[`net_peerCount`](../../reference/api/index.md#net_peercount) method and confirm the nodes are +[`net_peerCount`](../../global/reference/api/index.md#net_peercount) method and confirm the nodes are functioning as peers: ```bash @@ -212,12 +212,12 @@ Import accounts to MetaMask and send transactions as described in the Besu doesn't support [private key management](../../how-to/send-transactions.md). Send transactions using `eth_sendRawTransaction` to -[send ether or, deploy or invoke contracts](../../how-to/send-transactions.md). +[send ether or, deploy or invoke contracts](../../global/how-to/send-transactions.md). -Use the [JSON-RPC API](../../how-to/use-besu-api/json-rpc.md). +Use the [JSON-RPC API](../../global/how-to/use-besu-api/json-rpc.md). -Start a node with the [`--rpc-ws-enabled`](../../reference/cli/options.md#rpc-ws-enabled) option -and use the [RPC Pub/Sub API](../../how-to/use-besu-api/rpc-pubsub.md). +Start a node with the [`--rpc-ws-enabled`](../../global/reference/cli/options.md#rpc-ws-enabled) option +and use the [RPC Pub/Sub API](../../global/how-to/use-besu-api/rpc-pubsub.md). ## Stop the nodes diff --git a/docs/private-networks/tutorials/ibft/index.md b/docs/private-networks/tutorials/ibft/index.md index b5426b2b33e..61fe75fef29 100644 --- a/docs/private-networks/tutorials/ibft/index.md +++ b/docs/private-networks/tutorials/ibft/index.md @@ -17,7 +17,7 @@ A private network provides a configurable network for testing. This private netw ## Prerequisites -* [Hyperledger Besu](../../../get-started/install/binary-distribution.md) +* [Hyperledger Besu](../../../global/get-started/install/binary-distribution.md) * [Curl (or similar webservice client)](https://curl.haxx.se/download.html). ## Steps @@ -197,17 +197,17 @@ In the `Node-1` directory, start Node-1: The command line: * Specifies the data directory for Node-1 using the - [`--data-path`](../../../reference/cli/options.md#data-path) option. + [`--data-path`](../../../global/reference/cli/options.md#data-path) option. * Enables the JSON-RPC API using the - [`--rpc-http-enabled`](../../../reference/cli/options.md#rpc-http-enabled) option. + [`--rpc-http-enabled`](../../../global/reference/cli/options.md#rpc-http-enabled) option. * Enables the ETH, NET, and IBFT APIs using the - [`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api) option. + [`--rpc-http-api`](../../../global/reference/cli/options.md#rpc-http-api) option. * Enables all-host access to the HTTP JSON-RPC API using the - [`--host-allowlist`](../../../reference/cli/options.md#host-allowlist) option. + [`--host-allowlist`](../../../global/reference/cli/options.md#host-allowlist) option. * Enables all-domain access to the node through the HTTP JSON-RPC API using the - [`--rpc-http-cors-origins`](../../../reference/cli/options.md#rpc-http-cors-origins) option. + [`--rpc-http-cors-origins`](../../../global/reference/cli/options.md#rpc-http-cors-origins) option. -When the node starts, the [enode URL](../../../concepts/node-keys.md#enode-url) displays. Copy the +When the node starts, the [enode URL](../../../global/concepts/node-keys.md#enode-url) displays. Copy the enode URL to specify Node-1 as the bootnode in the following steps. ![Node 1 Enode URL](../../../images/EnodeStartup.png) @@ -232,13 +232,13 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * The data directory for Node-2 using the - [`--data-path`](../../../reference/cli/options.md#data-path) option. + [`--data-path`](../../../global/reference/cli/options.md#data-path) option. * A different port to Node-1 for P2P discovery using the - [`--p2p-port`](../../../reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../../global/reference/cli/options.md#p2p-port) option. * A different port to Node-1 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../../reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../../global/reference/cli/options.md#rpc-http-port) option. * The enode URL of Node-1 using the - [`--bootnodes`](../../../reference/cli/options.md#bootnodes) option. + [`--bootnodes`](../../../global/reference/cli/options.md#bootnodes) option. * Other options as for [Node-1](#6-start-the-first-node-as-the-bootnode). ### 8. Start Node-3 @@ -261,11 +261,11 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * The data directory for Node-3 using the - [`--data-path`](../../../reference/cli/options.md#data-path) option. + [`--data-path`](../../../global/reference/cli/options.md#data-path) option. * A different port to Node-1 and Node-2 for P2P discovery using the - [`--p2p-port`](../../../reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../../global/reference/cli/options.md#p2p-port) option. * A different port to Node-1 and Node-2 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../../reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../../global/reference/cli/options.md#rpc-http-port) option. * The bootnode as for [Node-2](#7-start-node-2). * Other options as for [Node-1](#6-start-the-first-node-as-the-bootnode). @@ -289,18 +289,18 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * The data directory for Node-4 using the - [`--data-path`](../../../reference/cli/options.md#data-path) option. + [`--data-path`](../../../global/reference/cli/options.md#data-path) option. * A different port to Node-1, Node-2, and Node-3 for P2P discovery using the - [`--p2p-port`](../../../reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../../global/reference/cli/options.md#p2p-port) option. * A different port to Node-1, Node-2, and Node-3 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../../reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../../global/reference/cli/options.md#rpc-http-port) option. * The bootnode as for [Node-2](#7-start-node-2). * Other options as for [Node-1](#6-start-the-first-node-as-the-bootnode). ### 10. Confirm the private network is working Start another terminal, use curl to call the JSON-RPC API -[`ibft_getvalidatorsbyblocknumber`](../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber) +[`ibft_getvalidatorsbyblocknumber`](../../../global/reference/api/index.md#ibft_getvalidatorsbyblocknumber) method and confirm the network has four validators: ```bash @@ -349,7 +349,7 @@ Look at the logs to confirm Besu is producing blocks: ## Next steps -Use the [IBFT API](../../../reference/api/index.md#ibft-20-methods) to remove or add validators. +Use the [IBFT API](../../../global/reference/api/index.md#ibft-20-methods) to remove or add validators. !!! note diff --git a/docs/private-networks/tutorials/ibft/validators.md b/docs/private-networks/tutorials/ibft/validators.md index d3ab5102988..0ce8c6c16b2 100644 --- a/docs/private-networks/tutorials/ibft/validators.md +++ b/docs/private-networks/tutorials/ibft/validators.md @@ -33,13 +33,13 @@ besu --data-path=data --genesis-file=../genesis.json --bootnodes=`, ``, ``, and `` with the enode URL displayed when @@ -337,7 +337,7 @@ starting each node. ### 12. Add nodes as peers -Use the [`admin_addPeer`](../../../reference/api/index.md#admin_addpeer) JSON-RPC API method to add +Use the [`admin_addPeer`](../../../global/reference/api/index.md#admin_addpeer) JSON-RPC API method to add Node-1 as a peer for Node-2, Node-3, and Node-4. Replace `` with the enode URL displayed when starting Node-1. @@ -390,7 +390,7 @@ Replace `` with the enode URL displayed when starting Node-3. #### Check peer count -Use curl to call the JSON-RPC API [`net_peerCount`](../../../reference/api/index.md#net_peercount) method and confirm the +Use curl to call the JSON-RPC API [`net_peerCount`](../../../global/reference/api/index.md#net_peercount) method and confirm the nodes are functioning as peers: ```bash @@ -453,7 +453,7 @@ Change to the `Node-5` directory and start Node-5 specifying the Node-1 enode UR ``` Start another terminal and use curl to call the JSON-RPC API -[`net_peerCount`](../../../reference/api/index.md#net_peercount) method: +[`net_peerCount`](../../../global/reference/api/index.md#net_peercount) method: ```bash curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' localhost:8549 diff --git a/docs/private-networks/tutorials/permissioning/onchain.md b/docs/private-networks/tutorials/permissioning/onchain.md index 141d0b36320..39cac3727c2 100644 --- a/docs/private-networks/tutorials/permissioning/onchain.md +++ b/docs/private-networks/tutorials/permissioning/onchain.md @@ -258,25 +258,25 @@ besu --data-path=data --genesis-file=../genesis.json --permissions-accounts-cont On the command line: * Enable onchain accounts permissioning using - [`--permissions-accounts-contract-enabled`](../../../reference/cli/options.md#permissions-accounts-contract-enabled). + [`--permissions-accounts-contract-enabled`](../../../global/reference/cli/options.md#permissions-accounts-contract-enabled). * Set the address of the Account Ingress contract in the genesis file using - [`--permissions-accounts-contract-address`](../../../reference/cli/options.md#permissions-accounts-contract-address). + [`--permissions-accounts-contract-address`](../../../global/reference/cli/options.md#permissions-accounts-contract-address). * Enable onchain nodes permissioning using - [`--permissions-nodes-contract-enabled`](../../../reference/cli/options.md#permissions-nodes-contract-enabled). + [`--permissions-nodes-contract-enabled`](../../../global/reference/cli/options.md#permissions-nodes-contract-enabled). * Set the address of the Node Ingress contract in the genesis file using - [`--permissions-nodes-contract-address`](../../../reference/cli/options.md#permissions-nodes-contract-address). + [`--permissions-nodes-contract-address`](../../../global/reference/cli/options.md#permissions-nodes-contract-address). * Set the version of the [permissioning contract interface](../../how-to/use-permissioning/onchain.md#specify-the-permissioning-contract-interface-version) - using [`--permissions-nodes-contract-version`](../../../reference/cli/options.md#permissions-nodes-contract-version). + using [`--permissions-nodes-contract-version`](../../../global/reference/cli/options.md#permissions-nodes-contract-version). * Enable the JSON-RPC API using - [`--rpc-http-enabled`](../../../reference/cli/options.md#rpc-http-enabled). + [`--rpc-http-enabled`](../../../global/reference/cli/options.md#rpc-http-enabled). * Enable the `ADMIN`, `ETH`, `NET`, `PERM`, and `IBFT` APIs using - [`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api). + [`--rpc-http-api`](../../../global/reference/cli/options.md#rpc-http-api). * Allow all-host access to the HTTP JSON-RPC API using - [`--host-allowlist`](../../../reference/cli/options.md#host-allowlist). + [`--host-allowlist`](../../../global/reference/cli/options.md#host-allowlist). * Allow all-domain access to the node through the HTTP JSON-RPC API using - [`--rpc-http-cors-origins`](../../../reference/cli/options.md#rpc-http-cors-origins). + [`--rpc-http-cors-origins`](../../../global/reference/cli/options.md#rpc-http-cors-origins). -When the node starts, the [enode URL](../../../concepts/node-keys.md#enode-url) displays. Copy the +When the node starts, the [enode URL](../../../global/concepts/node-keys.md#enode-url) displays. Copy the enode URL to use when starting Node-2, Node-3, and Node-4. ### 9. Clone the contracts and install dependencies @@ -358,9 +358,9 @@ besu --data-path=data --genesis-file=../genesis.json --bootnodes= [Tessera]: https://docs.tessera.consensys.net/ diff --git a/docs/private-networks/tutorials/privacy/multi-tenancy.md b/docs/private-networks/tutorials/privacy/multi-tenancy.md index d8914339b2f..9782e1dc0a9 100644 --- a/docs/private-networks/tutorials/privacy/multi-tenancy.md +++ b/docs/private-networks/tutorials/privacy/multi-tenancy.md @@ -153,15 +153,15 @@ In the `Node-1` directory, start Besu Node-1: The command line specifies privacy options: -* [`--rpc-http-authentication-enabled`](../../../reference/cli/options.md#rpc-http-authentication-enabled) +* [`--rpc-http-authentication-enabled`](../../../global/reference/cli/options.md#rpc-http-authentication-enabled) enables authentication for JSON-RPC APIs. -* [`--rpc-http-authentication-jwt-public-key-file`](../../../reference/cli/options.md#rpc-http-authentication-jwt-public-key-file) +* [`--rpc-http-authentication-jwt-public-key-file`](../../../global/reference/cli/options.md#rpc-http-authentication-jwt-public-key-file) specifies the Operator's [public key file](#1-generate-a-private-and-public-key-pair). Used to authenticate the [tenant JWTs](#7-generate-the-tenant-jwts). -* [`--privacy-enabled`](../../../reference/cli/options.md#privacy-enabled) enables privacy. -* [`--privacy-url`](../../../reference/cli/options.md#privacy-url) specifies the +* [`--privacy-enabled`](../../../global/reference/cli/options.md#privacy-enabled) enables privacy. +* [`--privacy-url`](../../../global/reference/cli/options.md#privacy-url) specifies the [Quorum to Tessera (Q2T)] server address of the Tessera node (`Q2T` in `tessera.conf`). -* [`--privacy-multi-tenancy-enabled`](../../../reference/cli/options.md#privacy-multi-tenancy-enabled) +* [`--privacy-multi-tenancy-enabled`](../../../global/reference/cli/options.md#privacy-multi-tenancy-enabled) enables multi-tenancy. !!! note @@ -176,12 +176,12 @@ The command line specifies privacy options: ## 6. Generate the tenant JWTs -[Generate the JWT](../../../how-to/use-besu-api/authenticate.md#2-create-the-jwt) for each tenant +[Generate the JWT](../../../global/how-to/use-besu-api/authenticate.md#2-create-the-jwt) for each tenant and specify the [tenant's Tessera public key](#2-generate-tessera-keys) in the `privacyPublicKey` field. Ensure you apply the appropriate -[JSON-RPC API permissions](../../../how-to/use-besu-api/authenticate.md#json-rpc-permissions) to the +[JSON-RPC API permissions](../../../global/how-to/use-besu-api/authenticate.md#json-rpc-permissions) to the token. For example, ensure you enable the `PRIV` and `EEA` APIs for privacy. !!! note @@ -192,10 +192,10 @@ token. For example, ensure you enable the `PRIV` and `EEA` APIs for privacy. [Use the authentication token to make requests]. -[JWT public key authentication]: ../../../how-to/use-besu-api/authenticate.md#jwt-public-key-authentication -[username and password authentication]: ../../../how-to/use-besu-api/authenticate.md#username-and-password-authentication -[generate the private and public key pair]: ../../../how-to/use-besu-api/authenticate.md#1-generate-a-private-and-public-key-pair -[Use the authentication token to make requests]: ../../../how-to/use-besu-api/authenticate.md#using-an-authentication-token-to-make-requests +[JWT public key authentication]: ../../../global/how-to/use-besu-api/authenticate.md#jwt-public-key-authentication +[username and password authentication]: ../../../global/how-to/use-besu-api/authenticate.md#username-and-password-authentication +[generate the private and public key pair]: ../../../global/how-to/use-besu-api/authenticate.md#1-generate-a-private-and-public-key-pair +[Use the authentication token to make requests]: ../../../global/how-to/use-besu-api/authenticate.md#using-an-authentication-token-to-make-requests [Quorum to Tessera (Q2T)]: https://docs.tessera.consensys.net/Concepts/TesseraAPI/#quorum-to-tessera-api *[JWT]: JSON Web Token diff --git a/docs/private-networks/tutorials/privacy/quickstart.md b/docs/private-networks/tutorials/privacy/quickstart.md index 434ee4a47af..e731f235c2e 100644 --- a/docs/private-networks/tutorials/privacy/quickstart.md +++ b/docs/private-networks/tutorials/privacy/quickstart.md @@ -87,7 +87,7 @@ For more information on the endpoints and services, refer to README.md in the in To deploy a private contract to another [privacy group](../../concepts/privacy/privacy-groups.md) member, use the [web3js-quorum](https://consensys.github.io/web3js-quorum/latest/index.html) library and -the [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) API call. +the [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction) API call. You must use this API call instead of [`eth_sendTransaction`](https://ethereum.github.io/execution-apis/api-documentation) because Hyperledger Besu keeps account management separate for stronger security. diff --git a/docs/private-networks/tutorials/privacy/web3js-quorum.md b/docs/private-networks/tutorials/privacy/web3js-quorum.md index f6f4075d976..2fb04393c6d 100644 --- a/docs/private-networks/tutorials/privacy/web3js-quorum.md +++ b/docs/private-networks/tutorials/privacy/web3js-quorum.md @@ -33,7 +33,7 @@ To use the examples provided in the web3js-quorum library with * chain ID * Tessera node public keys * Hyperledger Besu node RPC URLs - * [Hyperledger Besu node private keys](../../../concepts/node-keys.md#node-private-key). + * [Hyperledger Besu node private keys](../../../global/concepts/node-keys.md#node-private-key). 1. In the `example/multiNodeExample` directory, deploy the contract: diff --git a/docs/private-networks/tutorials/qbft.md b/docs/private-networks/tutorials/qbft.md index 4b13afe0154..edce0e11f33 100644 --- a/docs/private-networks/tutorials/qbft.md +++ b/docs/private-networks/tutorials/qbft.md @@ -21,7 +21,7 @@ steps in the [example smart contract repository]. ## Prerequisites -* [Hyperledger Besu](../../get-started/install/binary-distribution.md) +* [Hyperledger Besu](../../global/get-started/install/binary-distribution.md) * [Curl (or similar webservice client)](https://curl.haxx.se/download.html). ## Steps @@ -201,17 +201,17 @@ In the `Node-1` directory, start Node-1: The command line: * Specifies the data directory for Node-1 using the - [`--data-path`](../../reference/cli/options.md#data-path) option. + [`--data-path`](../../global/reference/cli/options.md#data-path) option. * Enables the JSON-RPC API using the - [`--rpc-http-enabled`](../../reference/cli/options.md#rpc-http-enabled) option. + [`--rpc-http-enabled`](../../global/reference/cli/options.md#rpc-http-enabled) option. * Enables the ETH, NET, and QBFT APIs using the - [`--rpc-http-api`](../../reference/cli/options.md#rpc-http-api) option. + [`--rpc-http-api`](../../global/reference/cli/options.md#rpc-http-api) option. * Enables all-host access to the HTTP JSON-RPC API using the - [`--host-allowlist`](../../reference/cli/options.md#host-allowlist) option. + [`--host-allowlist`](../../global/reference/cli/options.md#host-allowlist) option. * Enables all-domain access to the node through the HTTP JSON-RPC API using the - [`--rpc-http-cors-origins`](../../reference/cli/options.md#rpc-http-cors-origins) option. + [`--rpc-http-cors-origins`](../../global/reference/cli/options.md#rpc-http-cors-origins) option. -When the node starts, the [enode URL](../../concepts/node-keys.md#enode-url) displays. Copy the +When the node starts, the [enode URL](../../global/concepts/node-keys.md#enode-url) displays. Copy the enode URL to specify Node-1 as the bootnode in the following steps. ![Node 1 Enode URL](../../images/EnodeStartup.png) @@ -236,13 +236,13 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * The data directory for Node-2 using the - [`--data-path`](../../reference/cli/options.md#data-path) option. + [`--data-path`](../../global/reference/cli/options.md#data-path) option. * A different port to Node-1 for P2P discovery using the - [`--p2p-port`](../../reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../global/reference/cli/options.md#p2p-port) option. * A different port to Node-1 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../global/reference/cli/options.md#rpc-http-port) option. * The enode URL of Node-1 using the - [`--bootnodes`](../../reference/cli/options.md#bootnodes) option. + [`--bootnodes`](../../global/reference/cli/options.md#bootnodes) option. * Other options as for [Node-1](#6-start-the-first-node-as-the-bootnode). ### 8. Start Node-3 @@ -265,11 +265,11 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * The data directory for Node-3 using the - [`--data-path`](../../reference/cli/options.md#data-path) option. + [`--data-path`](../../global/reference/cli/options.md#data-path) option. * A different port to Node-1 and Node-2 for P2P discovery using the - [`--p2p-port`](../../reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../global/reference/cli/options.md#p2p-port) option. * A different port to Node-1 and Node-2 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../global/reference/cli/options.md#rpc-http-port) option. * The bootnode as for [Node-2](#7-start-node-2). * Other options as for [Node-1](#6-start-the-first-node-as-the-bootnode). @@ -293,18 +293,18 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * The data directory for Node-4 using the - [`--data-path`](../../reference/cli/options.md#data-path) option. + [`--data-path`](../../global/reference/cli/options.md#data-path) option. * A different port to Node-1, Node-2, and Node-3 for P2P discovery using the - [`--p2p-port`](../../reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../global/reference/cli/options.md#p2p-port) option. * A different port to Node-1, Node-2, and Node-3 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../global/reference/cli/options.md#rpc-http-port) option. * The bootnode as for [Node-2](#7-start-node-2). * Other options as for [Node-1](#6-start-the-first-node-as-the-bootnode). ### 10. Confirm the private network is working Start another terminal, use curl to call the JSON-RPC API -[`qbft_getvalidatorsbyblocknumber`](../../reference/api/index.md#qbft_getvalidatorsbyblocknumber) +[`qbft_getvalidatorsbyblocknumber`](../../global/reference/api/index.md#qbft_getvalidatorsbyblocknumber) method and confirm the network has four validators: ```bash @@ -353,7 +353,7 @@ Look at the logs to confirm Besu is producing blocks: ## Next steps -Use the [QBFT API](../../reference/api/index.md#qbft-methods) to remove or add validators, or import accounts +Use the [QBFT API](../../global/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). diff --git a/docs/private-networks/tutorials/quickstart.md b/docs/private-networks/tutorials/quickstart.md index 783ea0a5344..d4db096c1a6 100644 --- a/docs/private-networks/tutorials/quickstart.md +++ b/docs/private-networks/tutorials/quickstart.md @@ -92,10 +92,10 @@ When execution is successfully finished, the process lists the available service - 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](../../how-to/monitor/metrics.md). + [Read more about metrics](../../global/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](../../how-to/monitor/metrics.md). + [Read more about metrics](../../global/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). @@ -135,7 +135,7 @@ You can directly access these tools from your browser at the addresses displayed - [Grafana dashboard](http://localhost:3000/d/XE4V0WGZz/besu-overview?orgId=1&refresh=10s&from=now-30m&to=now&var-system=All) For more details on how to configure and use these tools for your own nodes, see the -[performances monitoring documentation](../../how-to/monitor/metrics.md), +[performances monitoring documentation](../../global/how-to/monitor/metrics.md), [Prometheus documentation](https://prometheus.io/docs/introduction/overview/) and [Grafana documentation](https://grafana.com/docs/). @@ -199,7 +199,7 @@ or skip ahead to [Create a transaction using MetaMask](#create-a-transaction-usi Peers are the other nodes connected to the node receiving the JSON-RPC request. -Poll the peer count using [`net_peerCount`](../../reference/api/index.md#net_peercount): +Poll the peer count using [`net_peerCount`](../../global/reference/api/index.md#net_peercount): ```bash curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' http://localhost:8545 @@ -217,7 +217,7 @@ The result indicates that there are four peers (the validators): ### Request the most recent block number -Call [`eth_blockNumber`](../../reference/api/index.md#eth_blockNumber) to retrieve the number of the most recently +Call [`eth_blockNumber`](../../global/reference/api/index.md#eth_blockNumber) to retrieve the number of the most recently synchronized block: ```bash @@ -580,7 +580,7 @@ If the `nodekey.pub` is `4540ea...9c1d78` and the IP address is `172.16.239.41`, `"enode://4540ea...9c1d78@172.16.239.41:30303"`, which must be added to both files. Alternatively, call the -[`perm_addNodesToAllowlist`](../../reference/api/index.md#perm_addnodestoallowlist) API method on existing nodes to add +[`perm_addNodesToAllowlist`](../../global/reference/api/index.md#perm_addnodestoallowlist) API method on existing nodes to add the new node without restarting. !!! note @@ -594,13 +594,13 @@ the new node without restarting. 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](../../reference/api/index.md#perm_addnodestoallowlist). +or via [RPC API calls](../../global/reference/api/index.md#perm_addnodestoallowlist). [bootnodes]: ../how-to/connect/bootnodes.md [permissions file]: ../how-to/use-permissioning/local.md -[static nodes]: ../../how-to/connect/static-nodes.md +[static nodes]: ../../global/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/docs/public-networks/concepts/data-storage-formats.md b/docs/public-networks/concepts/data-storage-formats.md index 5e4248530e1..0700083dd8f 100644 --- a/docs/public-networks/concepts/data-storage-formats.md +++ b/docs/public-networks/concepts/data-storage-formats.md @@ -24,10 +24,10 @@ 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](../../concepts/Pruning.md) orphaned nodes and old branches. +and faster read performance. Bonsai inherently [prunes](../../global/concepts/Pruning.md) 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). +[`--data-storage-format=BONSAI`](../../global/reference/cli/options.md#data-storage-format). ![Bonsai_tries](../../images/Bonsai_tries.png) @@ -47,7 +47,7 @@ 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-maximum-back-layers-to-load`](../../reference/cli/options.md#bonsai-maximum-back-layers-to-load) option. +[`--bonsai-maximum-back-layers-to-load`](../../global/reference/cli/options.md#bonsai-maximum-back-layers-to-load) option. !!! note diff --git a/docs/public-networks/concepts/events-and-logs.md b/docs/public-networks/concepts/events-and-logs.md new file mode 100644 index 00000000000..a291c2e7ddf --- /dev/null +++ b/docs/public-networks/concepts/events-and-logs.md @@ -0,0 +1 @@ +{!global/concepts/events-and-logs.md!} \ No newline at end of file diff --git a/docs/public-networks/concepts/genesis-file.md b/docs/public-networks/concepts/genesis-file.md new file mode 100644 index 00000000000..6f044282802 --- /dev/null +++ b/docs/public-networks/concepts/genesis-file.md @@ -0,0 +1 @@ +{!global/concepts/genesis-file.md!} \ No newline at end of file diff --git a/docs/public-networks/concepts/network-and-chain-id.md b/docs/public-networks/concepts/network-and-chain-id.md new file mode 100644 index 00000000000..25bb556d75e --- /dev/null +++ b/docs/public-networks/concepts/network-and-chain-id.md @@ -0,0 +1 @@ +{!global/concepts/network-and-chain-id.md!} \ No newline at end of file diff --git a/docs/public-networks/concepts/node-keys.md b/docs/public-networks/concepts/node-keys.md new file mode 100644 index 00000000000..f90433346c5 --- /dev/null +++ b/docs/public-networks/concepts/node-keys.md @@ -0,0 +1 @@ +{!global/concepts/node-keys.md!} \ No newline at end of file diff --git a/docs/public-networks/get-started/install/binary-distribution.md b/docs/public-networks/get-started/install/binary-distribution.md new file mode 100644 index 00000000000..8e45618dc6b --- /dev/null +++ b/docs/public-networks/get-started/install/binary-distribution.md @@ -0,0 +1 @@ +{!global/get-started/install/binary-distribution.md!} diff --git a/docs/public-networks/get-started/install/index.md b/docs/public-networks/get-started/install/index.md new file mode 100644 index 00000000000..a3f21b5aed7 --- /dev/null +++ b/docs/public-networks/get-started/install/index.md @@ -0,0 +1 @@ +{!global/get-started/install/index.md!} diff --git a/docs/public-networks/get-started/install/run-docker-image.md b/docs/public-networks/get-started/install/run-docker-image.md new file mode 100644 index 00000000000..502759d70ca --- /dev/null +++ b/docs/public-networks/get-started/install/run-docker-image.md @@ -0,0 +1 @@ +{!global/get-started/install/run-docker-image.md!} diff --git a/docs/public-networks/get-started/start-node.md b/docs/public-networks/get-started/start-node.md index 5afe65432d8..9f1d0704207 100644 --- a/docs/public-networks/get-started/start-node.md +++ b/docs/public-networks/get-started/start-node.md @@ -7,18 +7,18 @@ description: Starting Hyperledger Besu You can use Besu nodes for varying purposes, as described in the [Overview](../../index.md). Nodes can connect to the Ethereum Mainnet, public testnets such as Ropsten, or private networks. -Use the [`besu`](../../reference/cli/options.md) command with the required command line options +Use the [`besu`](../../global/reference/cli/options.md) command with the required command line options to start a node. Alternatively, use the [launcher](#besu-launcher) to start Besu interactively with the most common options. ## Prerequisites -[Besu Installed](../../get-started/install/binary-distribution.md) +[Besu Installed](../../global/get-started/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 +the local block data or use the [`--data-path`](../../global/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 @@ -31,38 +31,38 @@ Besu specifies the genesis configuration, and sets the network ID and bootnodes [Goerli](#run-a-node-on-goerli-testnet), [Kiln](#run-a-node-on-kiln-testnet), [Sepolia](#run-a-node-on-sepolia-testnet), and [Mainnet](#run-a-node-on-ethereum-mainnet). -When you specify [`--network=dev`](../../reference/cli/options.md#network), Besu uses the +When you specify [`--network=dev`](../../global/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 +[`--network=dev`](../../global/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. +the file using the [`--genesis-file`](../../global/reference/cli/options.md#genesis-file) option. ## Syncing and storage By default, Besu syncs to the current state of the blockchain using [fast sync](../how-to/connect/sync-node.md#fast-synchronization) in: -- Networks specified using [`--network`](../../reference/cli/options.md#network) except for the `dev` +- Networks specified using [`--network`](../../global/reference/cli/options.md#network) except for the `dev` development network. - Ethereum Mainnet. We recommend using [snap sync](../how-to/connect/sync-node.md#snap-synchronization) for a faster sync, by starting Besu -with [`--sync-mode=X_SNAP`](../../reference/cli/options.md#sync-mode). +with [`--sync-mode=X_SNAP`](../../global/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). +by starting Besu with [`--data-storage-format=BONSAI`](../../global/reference/cli/options.md#data-storage-format). ## 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 +[`--rpc-http-enabled`](../../global/reference/cli/options.md#rpc-http-enabled) option, use +[cURL](https://curl.haxx.se/) to call [JSON-RPC API methods](../../global/reference/api/index.md) to confirm the node is running. !!!example @@ -101,7 +101,7 @@ To run a node that mines blocks at a rate suitable for testing purposes: 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/configure/configuration-file.md) +You can also use the following [configuration file](../../global/how-to/configure/configuration-file.md) on the command line to start a node with the same options as above: ```toml @@ -200,7 +200,7 @@ besu --rpc-http-enabled ## Besu launcher Use the Besu launcher to interactively configure and start a node with the most common options. The -launcher asks a series of questions and generates a [configuration file](../../how-to/configure/configuration-file.md). +launcher asks a series of questions and generates a [configuration file](../../global/how-to/configure/configuration-file.md). To run the Besu launcher: diff --git a/docs/public-networks/get-started/system-requirements.md b/docs/public-networks/get-started/system-requirements.md index cd82b3bf034..59ec2fd520d 100644 --- a/docs/public-networks/get-started/system-requirements.md +++ b/docs/public-networks/get-started/system-requirements.md @@ -6,7 +6,7 @@ description: System requirements to sync and run Besu # System requirements for public networks Determine public network system requirements by checking CPU and disk space requirements using -[Prometheus](../../how-to/monitor/metrics.md#monitor-node-performance-using-prometheus). +[Prometheus](../../global/how-to/monitor/metrics.md#monitor-node-performance-using-prometheus). Grafana provides a [sample dashboard](https://grafana.com/grafana/dashboards/10273) for Besu. !!! tip @@ -23,9 +23,9 @@ 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/Pruning.md) enabled requires approximately 750 GB of disk space. -[Full synchronization](../../reference/cli/options.md#sync-mode) requires approximately 3 TB. +[Fast synchronization](../../global/reference/cli/options.md#sync-mode) with +[pruning](../../global/concepts/Pruning.md) enabled requires approximately 750 GB of disk space. +[Full synchronization](../../global/reference/cli/options.md#sync-mode) requires approximately 3 TB. ## Disk type diff --git a/docs/public-networks/how-to/configuration-file.md b/docs/public-networks/how-to/configuration-file.md new file mode 100644 index 00000000000..75f8acf64f4 --- /dev/null +++ b/docs/public-networks/how-to/configuration-file.md @@ -0,0 +1 @@ +{!global/how-to/configure/configuration-file.md!} \ No newline at end of file diff --git a/docs/public-networks/how-to/connect/configure-ports.md b/docs/public-networks/how-to/connect/configure-ports.md new file mode 100644 index 00000000000..e46c57ff546 --- /dev/null +++ b/docs/public-networks/how-to/connect/configure-ports.md @@ -0,0 +1 @@ +{!global/how-to/connect/configure-ports.md!} \ No newline at end of file diff --git a/docs/public-networks/how-to/connect/manage-peers.md b/docs/public-networks/how-to/connect/manage-peers.md new file mode 100644 index 00000000000..9b75b0c5d8a --- /dev/null +++ b/docs/public-networks/how-to/connect/manage-peers.md @@ -0,0 +1 @@ +{!global/how-to/connect/manage-peers.md!} \ No newline at end of file diff --git a/docs/public-networks/how-to/connect/specify-nat.md b/docs/public-networks/how-to/connect/specify-nat.md new file mode 100644 index 00000000000..a2eec6bd294 --- /dev/null +++ b/docs/public-networks/how-to/connect/specify-nat.md @@ -0,0 +1 @@ +{!global/how-to/connect/specify-nat.md!} \ No newline at end of file diff --git a/docs/public-networks/how-to/connect/static-nodes.md b/docs/public-networks/how-to/connect/static-nodes.md new file mode 100644 index 00000000000..47a82f28477 --- /dev/null +++ b/docs/public-networks/how-to/connect/static-nodes.md @@ -0,0 +1 @@ +{!global/how-to/connect/static-nodes.md!} \ No newline at end of file diff --git a/docs/public-networks/how-to/connect/sync-node.md b/docs/public-networks/how-to/connect/sync-node.md index 1f558e716b1..ace859a5ca5 100644 --- a/docs/public-networks/how-to/connect/sync-node.md +++ b/docs/public-networks/how-to/connect/sync-node.md @@ -31,7 +31,7 @@ You can run a full node using [fast synchronization (fast sync)](#fast-synchroni ### Fast synchronization -Enable fast sync using [`--sync-mode=FAST`](../../../reference/cli/options.md#sync-mode). +Enable fast sync using [`--sync-mode=FAST`](../../../global/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. @@ -39,16 +39,16 @@ 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) +Fast sync is the default for named networks specified using the [`--network`](../../../global/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) +[`--network`](../../../global/reference/cli/options.md#network) or [`--genesis-file`](../../../global/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. +[metrics](../../../global/how-to/monitor/metrics.md#metrics-list) to monitor fast sync. !!! warning @@ -87,7 +87,7 @@ You can observe the `besu_synchronizer_fast_sync_*` and `besu_synchronizer_world 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=X_SNAP`](../../../reference/cli/options.md#sync-mode). +Enable snap sync using [`--sync-mode=X_SNAP`](../../../global/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 @@ -103,12 +103,12 @@ deleting the data directory, and starting over using `--sync-mode=X_SNAP`. Checkpoint sync is an experimental feature. -Enable checkpoint sync using [`--sync-mode=X_CHECKPOINT`](../../../reference/cli/options.md#sync-mode). +Enable checkpoint sync using [`--sync-mode=X_CHECKPOINT`](../../../global/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). +file](../../../global/concepts/genesis-file.md). You can configure a checkpoint in the genesis file by specifying the block hash, number, and total difficulty as in the following example. @@ -137,6 +137,6 @@ sync from the genesis 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). +[`--sync-mode=FULL`](../../../global/reference/cli/options.md#sync-mode). Full sync starts from the genesis block and reprocesses all transactions. diff --git a/docs/public-networks/how-to/develop/client-libraries.md b/docs/public-networks/how-to/develop/client-libraries.md new file mode 100644 index 00000000000..aeee06418f1 --- /dev/null +++ b/docs/public-networks/how-to/develop/client-libraries.md @@ -0,0 +1 @@ +{!global/how-to/develop/client-libraries.md!} \ No newline at end of file diff --git a/docs/public-networks/how-to/develop/truffle.md b/docs/public-networks/how-to/develop/truffle.md new file mode 100644 index 00000000000..7d63cd97f6e --- /dev/null +++ b/docs/public-networks/how-to/develop/truffle.md @@ -0,0 +1 @@ +{!global/how-to/develop/truffle.md!} \ No newline at end of file diff --git a/docs/public-networks/how-to/monitor/index.md b/docs/public-networks/how-to/monitor/index.md new file mode 100644 index 00000000000..3e492a8f52d --- /dev/null +++ b/docs/public-networks/how-to/monitor/index.md @@ -0,0 +1 @@ +{!global/how-to/monitor/index.md!} \ No newline at end of file diff --git a/docs/public-networks/how-to/monitor/logging.md b/docs/public-networks/how-to/monitor/logging.md new file mode 100644 index 00000000000..0f0670dd9d7 --- /dev/null +++ b/docs/public-networks/how-to/monitor/logging.md @@ -0,0 +1 @@ +{!global/how-to/monitor/logging.md!} \ No newline at end of file diff --git a/docs/public-networks/how-to/monitor/metrics.md b/docs/public-networks/how-to/monitor/metrics.md new file mode 100644 index 00000000000..c2a59fb7148 --- /dev/null +++ b/docs/public-networks/how-to/monitor/metrics.md @@ -0,0 +1 @@ +{!global/how-to/monitor/metrics.md!} \ No newline at end of file diff --git a/docs/public-networks/how-to/node.md b/docs/public-networks/how-to/node.md new file mode 100644 index 00000000000..7d9db9bf437 --- /dev/null +++ b/docs/public-networks/how-to/node.md @@ -0,0 +1 @@ +{!global/how-to/upgrade/node.md!} \ No newline at end of file diff --git a/docs/public-networks/how-to/pass-jvm-options.md b/docs/public-networks/how-to/pass-jvm-options.md new file mode 100644 index 00000000000..01d40b1172b --- /dev/null +++ b/docs/public-networks/how-to/pass-jvm-options.md @@ -0,0 +1 @@ +{!global/how-to/configure/pass-jvm-options.md!} \ No newline at end of file diff --git a/docs/public-networks/how-to/prepare-for-the-merge.md b/docs/public-networks/how-to/prepare-for-the-merge.md index e67d775611d..b6b04ac305f 100644 --- a/docs/public-networks/how-to/prepare-for-the-merge.md +++ b/docs/public-networks/how-to/prepare-for-the-merge.md @@ -32,7 +32,7 @@ You can use Besu with any consensus client. ### 1. Configure the Engine API The beacon node and Besu communicate using the [Engine API](use-engine-api.md). -Configure the Engine API by setting [`engine-rpc-port`](../../reference/cli/options.md#engine-rpc-port) in the Besu +Configure the Engine API by setting [`engine-rpc-port`](../../global/reference/cli/options.md#engine-rpc-port) in the Besu configuration file. Specify the Besu Engine API endpoint in the consensus client using the consensus client's configuration options. @@ -49,7 +49,7 @@ You can generate a JWT using a command line tool, for example: openssl rand -hex 32 -out ``` -Provide the JWT to Besu using the [`engine-jwt-secret`](../../reference/cli/options.md#engine-jwt-secret) +Provide the JWT to Besu using the [`engine-jwt-secret`](../../global/reference/cli/options.md#engine-jwt-secret) configuration option, and to the consensus client using its configuration options. For example, provide the JWT to [Teku] using the [`ee-jwt-secret-file`](https://docs.teku.consensys.net/en/latest/Reference/CLI/CLI-Syntax/#ee-jwt-secret-file) option. diff --git a/docs/public-networks/how-to/troubleshoot/evm-tool.md b/docs/public-networks/how-to/troubleshoot/evm-tool.md new file mode 100644 index 00000000000..fc0a8cdb349 --- /dev/null +++ b/docs/public-networks/how-to/troubleshoot/evm-tool.md @@ -0,0 +1 @@ +{!global/how-to/troubleshoot/evm-tool.md!} \ No newline at end of file diff --git a/docs/public-networks/how-to/troubleshoot/java-flight-recorder.md b/docs/public-networks/how-to/troubleshoot/java-flight-recorder.md new file mode 100644 index 00000000000..552c107f915 --- /dev/null +++ b/docs/public-networks/how-to/troubleshoot/java-flight-recorder.md @@ -0,0 +1 @@ +{!global/how-to/troubleshoot/java-flight-recorder.md!} \ No newline at end of file diff --git a/docs/public-networks/how-to/troubleshoot/trace-transactions.md b/docs/public-networks/how-to/troubleshoot/trace-transactions.md new file mode 100644 index 00000000000..2d86f10b8cb --- /dev/null +++ b/docs/public-networks/how-to/troubleshoot/trace-transactions.md @@ -0,0 +1 @@ +{!global/how-to/troubleshoot/trace-transactions.md!} \ No newline at end of file diff --git a/docs/public-networks/how-to/use-engine-api.md b/docs/public-networks/how-to/use-engine-api.md index 2674173c001..9467dd481ad 100644 --- a/docs/public-networks/how-to/use-engine-api.md +++ b/docs/public-networks/how-to/use-engine-api.md @@ -5,14 +5,14 @@ description: How to enable and use the Engine API # Use the Engine API After [The Merge](../concepts/the-merge.md), consensus and execution clients communicate with each other using the Engine API. -These [API methods](../reference/engine-api/index.md) are a separate subsection of the [JSON-RPC API](../../how-to/use-besu-api/index.md). +These [API methods](../reference/engine-api/index.md) are a separate subsection of the [JSON-RPC API](../../global/how-to/use-besu-api/index.md). ## Configure the Engine API To configure the Engine API: -- [Enable the JSON-RPC API](../../how-to/use-besu-api/index.md#enable-api-access). - Ensure the [`ETH` method is enabled](../../how-to/use-besu-api/json-rpc.md#api-methods-enabled-by-default) (it's enabled by default). +- [Enable the JSON-RPC API](../../global/how-to/use-besu-api/index.md#enable-api-access). + Ensure the [`ETH` method is enabled](../../global/how-to/use-besu-api/json-rpc.md#api-methods-enabled-by-default) (it's enabled by default). - Specify the [service ports](#service-ports). - Specify the [host allowlist](#host-allowlist). @@ -25,7 +25,7 @@ To configure the Engine API: ### 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. +[`--engine-rpc-port`](../../global/reference/cli/options.md#engine-rpc-port) option. The default is `8551`. ### Host allowlist @@ -33,7 +33,7 @@ The default is `8551`. 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. +[`--engine-host-allowlist`](../../global/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`. !!! important @@ -51,15 +51,15 @@ Specify "*" for `--engine-host-allowlist` to effectively disable host protection ## 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`. +By default, [authentication](../../global/how-to/use-besu-api/authenticate.md) for the Engine API is enabled. +To disable, set the [`--engine-jwt-disabled`](../../global/reference/cli/options.md#engine-jwt-disabled) option to `true`. !!! warning Don't disable JWT authentication in production environments. Disable only for testing purposes. -Set the [JWT secret](../../how-to/use-besu-api/authenticate.md#jwt-public-key-authentication) by using the [`--engine-jwt-secret`](../../reference/cli/options.md#engine-jwt-secret) option. +Set the [JWT secret](../../global/how-to/use-besu-api/authenticate.md#jwt-public-key-authentication) by using the [`--engine-jwt-secret`](../../global/reference/cli/options.md#engine-jwt-secret) option. ## Send a payload using the Engine API diff --git a/docs/public-networks/how-to/use-pow/mining.md b/docs/public-networks/how-to/use-pow/mining.md new file mode 100644 index 00000000000..07e3ced951a --- /dev/null +++ b/docs/public-networks/how-to/use-pow/mining.md @@ -0,0 +1 @@ +{!global/how-to/configure/mining.md!} \ No newline at end of file diff --git a/docs/public-networks/index.md b/docs/public-networks/index.md index 88f854ffbb1..45fa2a56b2a 100644 --- a/docs/public-networks/index.md +++ b/docs/public-networks/index.md @@ -7,4 +7,4 @@ description: Public networks overview Besu serves as an [execution client](concepts/the-merge.md) on public proof-of-stake Ethereum networks such as Ethereum Mainnet, Ropsten, Goerli, Sepolia, and the Merge testnet. -You can also run Besu using proof of work on [Ethereum Classic](../how-to/configure/mining.md). +You can also run Besu using proof of work on [Ethereum Classic](../global/how-to/configure/mining.md). diff --git a/docs/public-networks/reference/engine-api/objects.md b/docs/public-networks/reference/engine-api/objects.md index bfe3b839a56..a14d6a37aaf 100644 --- a/docs/public-networks/reference/engine-api/objects.md +++ b/docs/public-networks/reference/engine-api/objects.md @@ -24,7 +24,7 @@ Returned by [`engine_getPayloadV1`](index.md#engine_getpayloadv1). | `gasUsed` | *Quantity*, 64 Bits | Total gas used by all transactions in this block. | | `timestamp` | *Quantity*, 64 Bits | Unix timestamp 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/Transaction-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). | +| `baseFeePerGas` | *Quantity*, 256 Bits | The block's [base fee per gas](../../../global/concepts/Transactions/Transaction-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). | diff --git a/docs/public-networks/tutorials/merge-testnet.md b/docs/public-networks/tutorials/merge-testnet.md index 34e7cb5ca95..98587e27cd6 100644 --- a/docs/public-networks/tutorials/merge-testnet.md +++ b/docs/public-networks/tutorials/merge-testnet.md @@ -11,7 +11,7 @@ as a [consensus client](../concepts/the-merge.md#consensus-clients) on the ## 1. Install Besu and Teku -Install [Besu](../../get-started/install/binary-distribution.md) and +Install [Besu](../../global/get-started/install/binary-distribution.md) and [Teku](https://docs.teku.consensys.net/en/stable/HowTo/Get-Started/Installation-Options/Install-Binaries/). Ensure you meet the prerequisites for the installation option you use. @@ -71,9 +71,9 @@ besu \ ``` 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. +[`--engine-jwt-secret`](../../global/reference/cli/options.md#engine-jwt-secret) option. -See the [`--engine-*`](../../reference/cli/options.md#engine-host-allowlist) options for more information on running +See the [`--engine-*`](../../global/reference/cli/options.md#engine-host-allowlist) options for more information on running Besu as an execution client. ## 5. Start Teku diff --git a/mkdocs.yml b/mkdocs.yml index 57d4d9bdc14..4e7fffb1f1b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -66,9 +66,9 @@ nav: - Get started: - System requirements: public-networks/get-started/system-requirements.md - Install Besu: - - Index: get-started/install/index.md - - Run Besu from Docker image: get-started/install/run-docker-image.md - - Install binary distribution: get-started/install/binary-distribution.md + - Index: public-networks/get-started/install/index.md + - Run Besu from Docker image: public-networks/get-started/install/run-docker-image.md + - Install binary distribution: public-networks/get-started/install/binary-distribution.md - Start Besu: public-networks/get-started/start-node.md - How to: - Prepare for The Merge: public-networks/how-to/prepare-for-the-merge.md @@ -83,32 +83,33 @@ nav: - Create and send transactions: how-to/send-transactions.md - Connect to a network: - Sync Besu: public-networks/how-to/connect/sync-node.md - - Configure static nodes: how-to/connect/static-nodes.md - - Configure ports: how-to/connect/configure-ports.md - - Manage peers: how-to/connect/manage-peers.md - - Specify NAT method: how-to/connect/specify-nat.md + - Configure static nodes: public-networks/how-to/connect/static-nodes.md + - Configure ports: public-networks/how-to/connect/configure-ports.md + - Manage peers: public-networks/how-to/connect/manage-peers.md + - Specify NAT method: public-networks/how-to/connect/specify-nat.md - Monitor nodes: - - Use metrics: how-to/monitor/metrics.md - - Configure logging: how-to/monitor/logging.md - - Use a configuration file: how-to/configure/configuration-file.md - - Pass JVM options: how-to/configure/pass-jvm-options.md + - Index: public-networks/how-to/monitor/index.md + - Use metrics: public-networks/how-to/monitor/metrics.md + - Configure logging: public-networks/how-to/monitor/logging.md + - Use a configuration file: public-networks/how-to/configuration-file.md + - Pass JVM options: public-networks/how-to/pass-jvm-options.md - Develop dapps: - - Use Truffle: how-to/develop/truffle.md - - Use client libraries: how-to/develop/client-libraries.md + - Use Truffle: public-networks/how-to/develop/truffle.md + - Use client libraries: public-networks/how-to/develop/client-libraries.md - Use proof of work: - - Configure mining: how-to/configure/mining.md - - Upgrade Besu: how-to/upgrade/node.md + - Configure mining: public-networks/how-to/use-pow/mining.md + - Upgrade Besu: public-networks/how-to/node.md - Troubleshoot: - - Use EVM tool: how-to/troubleshoot/evm-tool.md - - Use Java Flight Recorder: how-to/troubleshoot/java-flight-recorder.md - - Trace transactions: how-to/troubleshoot/trace-transactions.md + - Use EVM tool: public-networks/how-to/troubleshoot/evm-tool.md + - Use Java Flight Recorder: public-networks/how-to/troubleshoot/java-flight-recorder.md + - Trace transactions: public-networks/how-to/troubleshoot/trace-transactions.md - Concepts: - The Merge: public-networks/concepts/the-merge.md - Data storage formats: public-networks/concepts/data-storage-formats.md - - Network ID and chain ID: concepts/network-and-chain-id.md - - Events and logs: concepts/events-and-logs.md - - Genesis file: concepts/genesis-file.md - - Node keys: concepts/node-keys.md + - Network ID and chain ID: public-networks/concepts/network-and-chain-id.md + - Events and logs: public-networks/concepts/events-and-logs.md + - Genesis file: public-networks/concepts/genesis-file.md + - Node keys: public-networks/concepts/node-keys.md - Tutorials: - Run Besu and Teku on the Merge testnet: public-networks/tutorials/merge-testnet.md - Reference: @@ -131,9 +132,9 @@ nav: - Get started: - System requirements: private-networks/get-started/system-requirements.md - Install Besu: - - Index: get-started/install/index.md - - Run Besu from Docker image: get-started/install/run-docker-image.md - - Install binary distribution: get-started/install/binary-distribution.md + - Index: private-networks/get-started/install/index.md + - Run Besu from Docker image: private-networks/get-started/install/run-docker-image.md + - Install binary distribution: private-networks/get-started/install/binary-distribution.md - Start Besu: private-networks/get-started/start-node.md - How to: - Configure: @@ -151,9 +152,9 @@ nav: - Peer-to-peer TLS: private-networks/how-to/configure/tls/p2p.md - Block proposal permissioning: private-networks/how-to/configure/block-proposal-permissioning.md - Alternative elliptic curves: private-networks/how-to/configure/curves.md - - Use a configuration file: how-to/configure/configuration-file.md - - Pass JVM options: how-to/configure/pass-jvm-options.md - - Mining: how-to/configure/mining.md + - Use a configuration file: private-networks/how-to/configure/configuration-file.md + - Pass JVM options: private-networks/how-to/configure/pass-jvm-options.md + - Mining: private-networks/how-to/configure/mining.md - Use the Besu API: - Index: how-to/use-besu-api/index.md - Use JSON-RPC over HTTP, WS, and IPC: how-to/use-besu-api/json-rpc.md @@ -168,18 +169,18 @@ nav: - Include revert reason: private-networks/how-to/send-transactions/revert-reason.md - Find and connect to peers: - Configure bootnodes: private-networks/how-to/connect/bootnodes.md - - Configure static nodes: how-to/connect/static-nodes.md - - Configure ports: how-to/connect/configure-ports.md - - Manage peers: how-to/connect/manage-peers.md - - Specify NAT method: how-to/connect/specify-nat.md + - Configure static nodes: private-networks/how-to/connect/static-nodes.md + - Configure ports: private-networks/how-to/connect/configure-ports.md + - Manage peers: private-networks/how-to/connect/manage-peers.md + - Specify NAT method: private-networks/how-to/connect/specify-nat.md - Monitor nodes: - - Index: how-to/monitor/index.md - - Use metrics: how-to/monitor/metrics.md + - Index: private-networks/how-to/monitor/index.md + - Use metrics: private-networks/how-to/monitor/metrics.md - Use Elastic Stack: private-networks/how-to/monitor/elastic-stack.md - Use Quorum Hibernate: private-networks/how-to/monitor/quorum-hibernate.md - Use Splunk: private-networks/how-to/monitor/splunk.md - Use OpenTelemtry: private-networks/how-to/monitor/opentelemetry.md - - Configure logging: how-to/monitor/logging.md + - Configure logging: private-networks/how-to/monitor/logging.md - Use privacy: - Use EEA-compliant privacy: private-networks/how-to/use-privacy/eea-compliant.md - Use Besu-extended privacy: private-networks/how-to/use-privacy/besu-extended.md @@ -200,19 +201,19 @@ nav: - Use Kubernetes: private-networks/how-to/deploy/kubernetes.md - Use Ethstats network monitor: private-networks/how-to/deploy/ethstats.md - Develop dapps: - - Use Truffle: how-to/develop/truffle.md - - Use client libraries: how-to/develop/client-libraries.md + - Use Truffle: private-networks/how-to/develop/truffle.md + - Use client libraries: private-networks/how-to/develop/client-libraries.md - Backup and restore: private-networks/how-to/backup.md - Upgrade: - - Upgrade node: how-to/upgrade/node.md + - Upgrade node: private-networks/how-to/upgrade/node.md - Upgrade protocol: private-networks/how-to/upgrade/protocol.md - Troubleshoot: - - Use EVM tool: how-to/troubleshoot/evm-tool.md - - Use Java Flight Recorder: how-to/troubleshoot/java-flight-recorder.md - - Trace transactions: how-to/troubleshoot/trace-transactions.md + - Use EVM tool: private-networks/how-to/troubleshoot/evm-tool.md + - Use Java Flight Recorder: private-networks/how-to/troubleshoot/java-flight-recorder.md + - Trace transactions: private-networks/how-to/troubleshoot/trace-transactions.md - Concepts: - Proof of authority consensus: private-networks/concepts/poa.md - - Genesis file: concepts/genesis-file.md + - Genesis file: private-networks/concepts/genesis-file.md - Privacy: - Index: private-networks/concepts/privacy/index.md - Private transactions: @@ -227,9 +228,9 @@ nav: - Onchain permissioning: private-networks/concepts/permissioning/onchain.md - Permissioning plugin: private-networks/concepts/permissioning/plugin.md - Public key infrastructure: private-networks/concepts/pki.md - - Network ID and chain ID: concepts/network-and-chain-id.md - - Events and logs: concepts/events-and-logs.md - - Node keys: concepts/node-keys.md + - Network ID and chain ID: private-networks/concepts/network-and-chain-id.md + - Events and logs: private-networks/concepts/events-and-logs.md + - Node keys: private-networks/concepts/node-keys.md - Tutorials: - Quorum Developer Quickstart: private-networks/tutorials/quickstart.md - Create a QBFT network: private-networks/tutorials/qbft.md @@ -327,17 +328,17 @@ plugins: # new_path can be a file inside the docs/ folder or any URL (http://...) HowTo/Get-Started/System-Requirements-Private.md: private-networks/get-started/system-requirements.md HowTo/Get-Started/System-Requirements-Public.md: public-networks/get-started/system-requirements.md - HowTo/Get-Started/Install-Binaries.md: get-started/install/binary-distribution.md - HowTo/Get-Started/Build-from-source.md: get-started/install/index.md - HowTo/Get-Started/Run-Docker-Image.md: get-started/install/run-docker-image.md + HowTo/Get-Started/Install-Binaries.md: public-networks/get-started/install/binary-distribution.md + HowTo/Get-Started/Build-from-source.md: public-networks/get-started/install/index.md + HowTo/Get-Started/Run-Docker-Image.md: public-networks/get-started/install/run-docker-image.md HowTo/Deploy/High-Availability.md: how-to/configure/Configure-HA/High-Availability.md HowTo/Deploy/Monitoring-Performance.md: how-to/monitor/metrics.md - HowTo/Upgrade/Upgrade-Network.md: how-to/upgrade/node.md - HowTo/Find-and-Connect/Using-UPnP.md: how-to/connect/specify-nat.md + HowTo/Upgrade/Upgrade-Network.md: public-networks/how-to/node.md + HowTo/Find-and-Connect/Using-UPnP.md: public-networks/how-to/connect/specify-nat.md HowTo/Use-Privacy/Run-Orion-With-Besu.md: private-networks/how-to/use-privacy/tessera.md Concepts/Transactions/Trace-Types.md: reference/trace-types.md - HowTo/Develop-Dapps/Use-web3js.md: how-to/develop/client-libraries.md - Concepts/Client-Libraries.md: how-to/develop/client-libraries.md + HowTo/Develop-Dapps/Use-web3js.md: public-networks/how-to/develop/client-libraries.md + Concepts/Client-Libraries.md: public-networks/how-to/develop/client-libraries.md Concepts/Privacy/Onchain-PrivacyGroups.md: private-networks/concepts/privacy/flexible-privacy.md HowTo/Use-Privacy/Use-OnChainPrivacy.md: private-networks/how-to/use-privacy/flexible.md Tutorials/Quickstarts/Azure-Private-Network-Quickstart.md: private-networks/tutorials/azure.md @@ -360,9 +361,9 @@ plugins: # restructure redirects: HowTo/Get-Started/System-Requirements/System-Requirements-Private.md: private-networks/get-started/system-requirements.md HowTo/Get-Started/System-Requirements/System-Requirements-Public.md: public-networks/get-started/system-requirements.md - HowTo/Get-Started/Installation-Options/Install-Binaries.md: get-started/install/binary-distribution.md - HowTo/Get-Started/Installation-Options/Build-from-source.md: get-started/install/index.md - HowTo/Get-Started/Installation-Options/Run-Docker-Image.md: get-started/install/run-docker-image.md + HowTo/Get-Started/Installation-Options/Install-Binaries.md: public-networks/get-started/install/binary-distribution.md + HowTo/Get-Started/Installation-Options/Build-from-source.md: public-networks/get-started/install/index.md + HowTo/Get-Started/Installation-Options/Run-Docker-Image.md: public-networks/get-started/install/run-docker-image.md HowTo/Get-Started/Starting-node.md: public-networks/get-started/start-node.md HowTo/Upgrade/Prepare-for-The-Merge.md: public-networks/how-to/prepare-for-the-merge.md HowTo/Interact/APIs/API.md: how-to/use-besu-api/index.md @@ -378,30 +379,30 @@ plugins: HowTo/Send-Transactions/Concurrent-Private-Transactions.md: private-networks/how-to/send-transactions/concurrent-private-transactions.md HowTo/Send-Transactions/Revert-Reason.md: private-networks/how-to/send-transactions/revert-reason.md HowTo/Find-and-Connect/Bootnodes.md: private-networks/how-to/connect/bootnodes.md - HowTo/Find-and-Connect/Static-Nodes.md: how-to/connect/static-nodes.md - HowTo/Find-and-Connect/Configuring-Ports.md: how-to/connect/configure-ports.md - HowTo/Find-and-Connect/Managing-Peers.md: how-to/connect/manage-peers.md - HowTo/Find-and-Connect/Specifying-NAT.md: how-to/connect/specify-nat.md + HowTo/Find-and-Connect/Static-Nodes.md: public-networks/how-to/connect/static-nodes.md + HowTo/Find-and-Connect/Configuring-Ports.md: public-networks/how-to/connect/configure-ports.md + HowTo/Find-and-Connect/Managing-Peers.md: public-networks/how-to/connect/manage-peers.md + HowTo/Find-and-Connect/Specifying-NAT.md: public-networks/how-to/connect/specify-nat.md Concepts/Node-Types.md: public-networks/how-to/connect/sync-node.md - HowTo/Monitor/Metrics.md: how-to/monitor/metrics.md - HowTo/Monitor/Logging.md: how-to/monitor/logging.md + HowTo/Monitor/Metrics.md: public-networks/how-to/monitor/metrics.md + HowTo/Monitor/Logging.md: public-networks/how-to/monitor/logging.md HowTo/Monitor/Elastic-Stack.md: private-networks/how-to/monitor/elastic-stack.md HowTo/Monitor/Quorum-Hibernate.md: private-networks/how-to/monitor/quorum-hibernate.md HowTo/Monitor/Splunk-Enterprise.md: private-networks/how-to/monitor/splunk.md HowTo/Monitor/OpenTelemetry-Collector.md: private-networks/how-to/monitor/opentelemetry.md - HowTo/Configure/Using-Configuration-File.md: how-to/configure/configuration-file.md - HowTo/Configure/Configure-Mining.md: how-to/configure/mining.md - HowTo/Configure/Passing-JVM-Options.md: how-to/configure/pass-jvm-options.md + HowTo/Configure/Using-Configuration-File.md: public-networks/how-to/configuration-file.md + HowTo/Configure/Configure-Mining.md: public-networks/how-to/use-pow/mining.md + HowTo/Configure/Passing-JVM-Options.md: public-networks/how-to/pass-jvm-options.md Concepts/Merge.md: public-networks/concepts/the-merge.md - Concepts/NetworkID-And-ChainID.md: concepts/network-and-chain-id.md - Concepts/Events-and-Logs.md: concepts/events-and-logs.md - HowTo/Configure/Genesis-File.md: concepts/genesis-file.md - HowTo/Upgrade/Upgrade-Node.md: how-to/upgrade/node.md + Concepts/NetworkID-And-ChainID.md: public-networks/concepts/network-and-chain-id.md + Concepts/Events-and-Logs.md: public-networks/concepts/events-and-logs.md + HowTo/Configure/Genesis-File.md: public-networks/concepts/genesis-file.md + HowTo/Upgrade/Upgrade-Node.md: public-networks/how-to/node.md HowTo/Upgrade/Upgrade-Protocol.md: private-networks/how-to/upgrade/protocol.md - HowTo/Troubleshoot/Use-EVM-Tool.md: how-to/troubleshoot/evm-tool.md - HowTo/Troubleshoot/Java-Flight-Recording.md: how-to/troubleshoot/java-flight-recorder.md - HowTo/Troubleshoot/Trace-Transactions.md: how-to/troubleshoot/trace-transactions.md - Concepts/Node-Keys.md: concepts/node-keys.md + HowTo/Troubleshoot/Use-EVM-Tool.md: public-networks/how-to/troubleshoot/evm-tool.md + HowTo/Troubleshoot/Java-Flight-Recording.md: public-networks/how-to/troubleshoot/java-flight-recorder.md + HowTo/Troubleshoot/Trace-Transactions.md: public-networks/how-to/troubleshoot/trace-transactions.md + Concepts/Node-Keys.md: public-networks/concepts/node-keys.md Concepts/Data-Storage-Formats.md: public-networks/concepts/data-storage-formats.md Tutorials/Merge-Testnet.md: public-networks/tutorials/merge-testnet.md Reference/CLI/CLI-Syntax.md: reference/cli/options.md @@ -426,8 +427,8 @@ plugins: HowTo/Configure/Block-Proposal-Permissioning.md: private-networks/how-to/configure/block-proposal-permissioning.md HowTo/Deploy/Bootnodes.md: private-networks/how-to/connect/bootnodes.md Concepts/ArchitectureOverview.md: index.md - Concepts/Mining.md: how-to/configure/mining.md - HowTo/Troubleshoot/Troubleshooting.md: how-to/troubleshoot/evm-tool.md + Concepts/Mining.md: public-networks/how-to/use-pow/mining.md + HowTo/Troubleshoot/Troubleshooting.md: public-networks/how-to/troubleshoot/evm-tool.md Concepts/Protocol-Upgrades.md: private-networks/how-to/upgrade/protocol.md Reference/Resources.md: index.md HowTo/Use-Privacy/EEA-compliant.md: private-networks/how-to/use-privacy/eea-compliant.md @@ -451,9 +452,9 @@ plugins: HowTo/Deploy/Ethstats.md: private-networks/how-to/deploy/ethstats.md Reference/web3js-quorum.md: private-networks/how-to/use-privacy/web3js-quorum.md HowTo/Deploy/Production.md: private-networks/how-to/use-permissioning/onchain.md - Concepts/Network-vs-Node.md: concepts/genesis-file.md - HowTo/Develop-Dapps/Truffle.md: how-to/develop/truffle.md - HowTo/Develop-Dapps/Client-Libraries.md: how-to/develop/client-libraries.md + Concepts/Network-vs-Node.md: public-networks/concepts/genesis-file.md + HowTo/Develop-Dapps/Truffle.md: public-networks/how-to/develop/truffle.md + HowTo/Develop-Dapps/Client-Libraries.md: public-networks/how-to/develop/client-libraries.md HowTo/Backup/Backup.md: private-networks/how-to/backup.md Concepts/Consensus-Protocols/Overview-Consensus.md: private-networks/how-to/configure/consensus/index.md Concepts/Consensus-Protocols/Comparing-PoA.md: private-networks/concepts/poa.md @@ -494,4 +495,4 @@ plugins: Tutorials/Kubernetes/Nat-Manager-Kubernetes.md: private-networks/tutorials/kubernetes/nat-manager.md Tutorials/Private-Network-Example-Azure.md: private-networks/tutorials/azure.md Reference/Accounts-for-Testing.md: private-networks/reference/accounts-for-testing.md - Concepts/Monitoring.md: how-to/monitor/index.md + Concepts/Monitoring.md: public-networks/how-to/monitor/index.md From d75f4370fdd11809d69df0d3446e31ab0b18c8db Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Tue, 19 Jul 2022 22:09:56 -0700 Subject: [PATCH 16/31] final variable files Signed-off-by: Alexandra Tran --- docs/private-networks/concepts/events-and-logs.md | 2 +- docs/private-networks/concepts/genesis-file.md | 2 +- docs/private-networks/concepts/network-and-chain-id.md | 2 +- docs/private-networks/concepts/node-keys.md | 2 +- docs/private-networks/how-to/configure/configuration-file.md | 2 +- docs/private-networks/how-to/configure/mining.md | 2 +- docs/private-networks/how-to/configure/pass-jvm-options.md | 2 +- docs/private-networks/how-to/connect/configure-ports.md | 2 +- docs/private-networks/how-to/connect/manage-peers.md | 2 +- docs/private-networks/how-to/connect/specify-nat.md | 2 +- docs/private-networks/how-to/connect/static-nodes.md | 2 +- docs/private-networks/how-to/develop/client-libraries.md | 2 +- docs/private-networks/how-to/develop/truffle.md | 2 +- docs/private-networks/how-to/monitor/index.md | 2 +- docs/private-networks/how-to/monitor/logging.md | 2 +- docs/private-networks/how-to/monitor/metrics.md | 2 +- docs/private-networks/how-to/send-transactions/index.md | 1 + docs/private-networks/how-to/troubleshoot/evm-tool.md | 2 +- .../how-to/troubleshoot/java-flight-recorder.md | 2 +- docs/private-networks/how-to/troubleshoot/trace-transactions.md | 2 +- docs/private-networks/how-to/upgrade/node.md | 2 +- docs/private-networks/how-to/use-besu-api/access-logs.md | 1 + docs/private-networks/how-to/use-besu-api/authenticate.md | 1 + docs/private-networks/how-to/use-besu-api/graphql.md | 1 + docs/private-networks/how-to/use-besu-api/index.md | 1 + docs/private-networks/how-to/use-besu-api/json-rpc.md | 1 + docs/private-networks/how-to/use-besu-api/rpc-pubsub.md | 1 + docs/private-networks/reference/api/index.md | 1 + docs/private-networks/reference/api/objects.md | 1 + docs/private-networks/reference/cli/options.md | 1 + docs/private-networks/reference/cli/subcommands.md | 1 + docs/private-networks/reference/disclosure.md | 1 + docs/private-networks/reference/evm-tool.md | 1 + docs/private-networks/reference/genesis-items.md | 1 + docs/private-networks/reference/projects-using-besu.md | 1 + docs/private-networks/reference/trace-types.md | 1 + docs/public-networks/concepts/events-and-logs.md | 2 +- docs/public-networks/concepts/genesis-file.md | 2 +- docs/public-networks/concepts/network-and-chain-id.md | 2 +- docs/public-networks/concepts/node-keys.md | 2 +- docs/public-networks/how-to/configuration-file.md | 2 +- docs/public-networks/how-to/connect/configure-ports.md | 2 +- docs/public-networks/how-to/connect/manage-peers.md | 2 +- docs/public-networks/how-to/connect/specify-nat.md | 2 +- docs/public-networks/how-to/connect/static-nodes.md | 2 +- docs/public-networks/how-to/develop/client-libraries.md | 2 +- docs/public-networks/how-to/develop/truffle.md | 2 +- docs/public-networks/how-to/monitor/index.md | 2 +- docs/public-networks/how-to/monitor/logging.md | 2 +- docs/public-networks/how-to/monitor/metrics.md | 2 +- docs/public-networks/how-to/node.md | 2 +- docs/public-networks/how-to/pass-jvm-options.md | 2 +- docs/public-networks/how-to/send-transactions.md | 1 + docs/public-networks/how-to/troubleshoot/evm-tool.md | 2 +- .../public-networks/how-to/troubleshoot/java-flight-recorder.md | 2 +- docs/public-networks/how-to/troubleshoot/trace-transactions.md | 2 +- docs/public-networks/how-to/use-besu-api/access-logs.md | 1 + docs/public-networks/how-to/use-besu-api/authenticate.md | 1 + docs/public-networks/how-to/use-besu-api/graphql.md | 1 + docs/public-networks/how-to/use-besu-api/index.md | 1 + docs/public-networks/how-to/use-besu-api/json-rpc.md | 1 + docs/public-networks/how-to/use-besu-api/rpc-pubsub.md | 1 + docs/public-networks/how-to/use-pow/mining.md | 2 +- docs/public-networks/reference/api/index.md | 1 + docs/public-networks/reference/api/objects.md | 1 + docs/public-networks/reference/cli/options.md | 1 + docs/public-networks/reference/cli/subcommands.md | 1 + docs/public-networks/reference/disclosure.md | 1 + docs/public-networks/reference/evm-tool.md | 1 + docs/public-networks/reference/genesis-items.md | 1 + docs/public-networks/reference/projects-using-besu.md | 1 + docs/public-networks/reference/trace-types.md | 1 + 72 files changed, 72 insertions(+), 40 deletions(-) create mode 100644 docs/private-networks/how-to/send-transactions/index.md create mode 100644 docs/private-networks/how-to/use-besu-api/access-logs.md create mode 100644 docs/private-networks/how-to/use-besu-api/authenticate.md create mode 100644 docs/private-networks/how-to/use-besu-api/graphql.md create mode 100644 docs/private-networks/how-to/use-besu-api/index.md create mode 100644 docs/private-networks/how-to/use-besu-api/json-rpc.md create mode 100644 docs/private-networks/how-to/use-besu-api/rpc-pubsub.md create mode 100644 docs/private-networks/reference/api/index.md create mode 100644 docs/private-networks/reference/api/objects.md create mode 100644 docs/private-networks/reference/cli/options.md create mode 100644 docs/private-networks/reference/cli/subcommands.md create mode 100644 docs/private-networks/reference/disclosure.md create mode 100644 docs/private-networks/reference/evm-tool.md create mode 100644 docs/private-networks/reference/genesis-items.md create mode 100644 docs/private-networks/reference/projects-using-besu.md create mode 100644 docs/private-networks/reference/trace-types.md create mode 100644 docs/public-networks/how-to/send-transactions.md create mode 100644 docs/public-networks/how-to/use-besu-api/access-logs.md create mode 100644 docs/public-networks/how-to/use-besu-api/authenticate.md create mode 100644 docs/public-networks/how-to/use-besu-api/graphql.md create mode 100644 docs/public-networks/how-to/use-besu-api/index.md create mode 100644 docs/public-networks/how-to/use-besu-api/json-rpc.md create mode 100644 docs/public-networks/how-to/use-besu-api/rpc-pubsub.md create mode 100644 docs/public-networks/reference/api/index.md create mode 100644 docs/public-networks/reference/api/objects.md create mode 100644 docs/public-networks/reference/cli/options.md create mode 100644 docs/public-networks/reference/cli/subcommands.md create mode 100644 docs/public-networks/reference/disclosure.md create mode 100644 docs/public-networks/reference/evm-tool.md create mode 100644 docs/public-networks/reference/genesis-items.md create mode 100644 docs/public-networks/reference/projects-using-besu.md create mode 100644 docs/public-networks/reference/trace-types.md diff --git a/docs/private-networks/concepts/events-and-logs.md b/docs/private-networks/concepts/events-and-logs.md index a291c2e7ddf..51736319f22 100644 --- a/docs/private-networks/concepts/events-and-logs.md +++ b/docs/private-networks/concepts/events-and-logs.md @@ -1 +1 @@ -{!global/concepts/events-and-logs.md!} \ No newline at end of file +{!global/concepts/events-and-logs.md!} diff --git a/docs/private-networks/concepts/genesis-file.md b/docs/private-networks/concepts/genesis-file.md index 6f044282802..de48beefd4c 100644 --- a/docs/private-networks/concepts/genesis-file.md +++ b/docs/private-networks/concepts/genesis-file.md @@ -1 +1 @@ -{!global/concepts/genesis-file.md!} \ No newline at end of file +{!global/concepts/genesis-file.md!} diff --git a/docs/private-networks/concepts/network-and-chain-id.md b/docs/private-networks/concepts/network-and-chain-id.md index 25bb556d75e..14ecebd8bae 100644 --- a/docs/private-networks/concepts/network-and-chain-id.md +++ b/docs/private-networks/concepts/network-and-chain-id.md @@ -1 +1 @@ -{!global/concepts/network-and-chain-id.md!} \ No newline at end of file +{!global/concepts/network-and-chain-id.md!} diff --git a/docs/private-networks/concepts/node-keys.md b/docs/private-networks/concepts/node-keys.md index f90433346c5..388d7e79372 100644 --- a/docs/private-networks/concepts/node-keys.md +++ b/docs/private-networks/concepts/node-keys.md @@ -1 +1 @@ -{!global/concepts/node-keys.md!} \ No newline at end of file +{!global/concepts/node-keys.md!} diff --git a/docs/private-networks/how-to/configure/configuration-file.md b/docs/private-networks/how-to/configure/configuration-file.md index 75f8acf64f4..3044fcc5def 100644 --- a/docs/private-networks/how-to/configure/configuration-file.md +++ b/docs/private-networks/how-to/configure/configuration-file.md @@ -1 +1 @@ -{!global/how-to/configure/configuration-file.md!} \ No newline at end of file +{!global/how-to/configure/configuration-file.md!} diff --git a/docs/private-networks/how-to/configure/mining.md b/docs/private-networks/how-to/configure/mining.md index 07e3ced951a..954ed3c2220 100644 --- a/docs/private-networks/how-to/configure/mining.md +++ b/docs/private-networks/how-to/configure/mining.md @@ -1 +1 @@ -{!global/how-to/configure/mining.md!} \ No newline at end of file +{!global/how-to/configure/mining.md!} diff --git a/docs/private-networks/how-to/configure/pass-jvm-options.md b/docs/private-networks/how-to/configure/pass-jvm-options.md index 01d40b1172b..265c1da5451 100644 --- a/docs/private-networks/how-to/configure/pass-jvm-options.md +++ b/docs/private-networks/how-to/configure/pass-jvm-options.md @@ -1 +1 @@ -{!global/how-to/configure/pass-jvm-options.md!} \ No newline at end of file +{!global/how-to/configure/pass-jvm-options.md!} diff --git a/docs/private-networks/how-to/connect/configure-ports.md b/docs/private-networks/how-to/connect/configure-ports.md index e46c57ff546..e57aaf532d7 100644 --- a/docs/private-networks/how-to/connect/configure-ports.md +++ b/docs/private-networks/how-to/connect/configure-ports.md @@ -1 +1 @@ -{!global/how-to/connect/configure-ports.md!} \ No newline at end of file +{!global/how-to/connect/configure-ports.md!} diff --git a/docs/private-networks/how-to/connect/manage-peers.md b/docs/private-networks/how-to/connect/manage-peers.md index 9b75b0c5d8a..07f15b7b028 100644 --- a/docs/private-networks/how-to/connect/manage-peers.md +++ b/docs/private-networks/how-to/connect/manage-peers.md @@ -1 +1 @@ -{!global/how-to/connect/manage-peers.md!} \ No newline at end of file +{!global/how-to/connect/manage-peers.md!} diff --git a/docs/private-networks/how-to/connect/specify-nat.md b/docs/private-networks/how-to/connect/specify-nat.md index a2eec6bd294..dfa9996af11 100644 --- a/docs/private-networks/how-to/connect/specify-nat.md +++ b/docs/private-networks/how-to/connect/specify-nat.md @@ -1 +1 @@ -{!global/how-to/connect/specify-nat.md!} \ No newline at end of file +{!global/how-to/connect/specify-nat.md!} diff --git a/docs/private-networks/how-to/connect/static-nodes.md b/docs/private-networks/how-to/connect/static-nodes.md index 47a82f28477..19c150d81b7 100644 --- a/docs/private-networks/how-to/connect/static-nodes.md +++ b/docs/private-networks/how-to/connect/static-nodes.md @@ -1 +1 @@ -{!global/how-to/connect/static-nodes.md!} \ No newline at end of file +{!global/how-to/connect/static-nodes.md!} diff --git a/docs/private-networks/how-to/develop/client-libraries.md b/docs/private-networks/how-to/develop/client-libraries.md index aeee06418f1..5342720df65 100644 --- a/docs/private-networks/how-to/develop/client-libraries.md +++ b/docs/private-networks/how-to/develop/client-libraries.md @@ -1 +1 @@ -{!global/how-to/develop/client-libraries.md!} \ No newline at end of file +{!global/how-to/develop/client-libraries.md!} diff --git a/docs/private-networks/how-to/develop/truffle.md b/docs/private-networks/how-to/develop/truffle.md index 7d63cd97f6e..a3602128ea6 100644 --- a/docs/private-networks/how-to/develop/truffle.md +++ b/docs/private-networks/how-to/develop/truffle.md @@ -1 +1 @@ -{!global/how-to/develop/truffle.md!} \ No newline at end of file +{!global/how-to/develop/truffle.md!} diff --git a/docs/private-networks/how-to/monitor/index.md b/docs/private-networks/how-to/monitor/index.md index 3e492a8f52d..7617ba6dd90 100644 --- a/docs/private-networks/how-to/monitor/index.md +++ b/docs/private-networks/how-to/monitor/index.md @@ -1 +1 @@ -{!global/how-to/monitor/index.md!} \ No newline at end of file +{!global/how-to/monitor/index.md!} diff --git a/docs/private-networks/how-to/monitor/logging.md b/docs/private-networks/how-to/monitor/logging.md index 0f0670dd9d7..96bf41c09fe 100644 --- a/docs/private-networks/how-to/monitor/logging.md +++ b/docs/private-networks/how-to/monitor/logging.md @@ -1 +1 @@ -{!global/how-to/monitor/logging.md!} \ No newline at end of file +{!global/how-to/monitor/logging.md!} diff --git a/docs/private-networks/how-to/monitor/metrics.md b/docs/private-networks/how-to/monitor/metrics.md index c2a59fb7148..8f0c31fb8cc 100644 --- a/docs/private-networks/how-to/monitor/metrics.md +++ b/docs/private-networks/how-to/monitor/metrics.md @@ -1 +1 @@ -{!global/how-to/monitor/metrics.md!} \ No newline at end of file +{!global/how-to/monitor/metrics.md!} diff --git a/docs/private-networks/how-to/send-transactions/index.md b/docs/private-networks/how-to/send-transactions/index.md new file mode 100644 index 00000000000..96a3531cf51 --- /dev/null +++ b/docs/private-networks/how-to/send-transactions/index.md @@ -0,0 +1 @@ +{!global/how-to/send-transactions.md!} diff --git a/docs/private-networks/how-to/troubleshoot/evm-tool.md b/docs/private-networks/how-to/troubleshoot/evm-tool.md index fc0a8cdb349..dc41144a672 100644 --- a/docs/private-networks/how-to/troubleshoot/evm-tool.md +++ b/docs/private-networks/how-to/troubleshoot/evm-tool.md @@ -1 +1 @@ -{!global/how-to/troubleshoot/evm-tool.md!} \ No newline at end of file +{!global/how-to/troubleshoot/evm-tool.md!} diff --git a/docs/private-networks/how-to/troubleshoot/java-flight-recorder.md b/docs/private-networks/how-to/troubleshoot/java-flight-recorder.md index 552c107f915..81244b48cbf 100644 --- a/docs/private-networks/how-to/troubleshoot/java-flight-recorder.md +++ b/docs/private-networks/how-to/troubleshoot/java-flight-recorder.md @@ -1 +1 @@ -{!global/how-to/troubleshoot/java-flight-recorder.md!} \ No newline at end of file +{!global/how-to/troubleshoot/java-flight-recorder.md!} diff --git a/docs/private-networks/how-to/troubleshoot/trace-transactions.md b/docs/private-networks/how-to/troubleshoot/trace-transactions.md index 2d86f10b8cb..8835801e7df 100644 --- a/docs/private-networks/how-to/troubleshoot/trace-transactions.md +++ b/docs/private-networks/how-to/troubleshoot/trace-transactions.md @@ -1 +1 @@ -{!global/how-to/troubleshoot/trace-transactions.md!} \ No newline at end of file +{!global/how-to/troubleshoot/trace-transactions.md!} diff --git a/docs/private-networks/how-to/upgrade/node.md b/docs/private-networks/how-to/upgrade/node.md index 7d9db9bf437..d157bdb0342 100644 --- a/docs/private-networks/how-to/upgrade/node.md +++ b/docs/private-networks/how-to/upgrade/node.md @@ -1 +1 @@ -{!global/how-to/upgrade/node.md!} \ No newline at end of file +{!global/how-to/upgrade/node.md!} diff --git a/docs/private-networks/how-to/use-besu-api/access-logs.md b/docs/private-networks/how-to/use-besu-api/access-logs.md new file mode 100644 index 00000000000..9a5fea40aed --- /dev/null +++ b/docs/private-networks/how-to/use-besu-api/access-logs.md @@ -0,0 +1 @@ +{!global/how-to/use-besu-api/access-logs.md!} diff --git a/docs/private-networks/how-to/use-besu-api/authenticate.md b/docs/private-networks/how-to/use-besu-api/authenticate.md new file mode 100644 index 00000000000..a8d44937651 --- /dev/null +++ b/docs/private-networks/how-to/use-besu-api/authenticate.md @@ -0,0 +1 @@ +{!global/how-to/use-besu-api/authenticate.md!} diff --git a/docs/private-networks/how-to/use-besu-api/graphql.md b/docs/private-networks/how-to/use-besu-api/graphql.md new file mode 100644 index 00000000000..9fd4baaa9b5 --- /dev/null +++ b/docs/private-networks/how-to/use-besu-api/graphql.md @@ -0,0 +1 @@ +{!global/how-to/use-besu-api/graphql.md!} diff --git a/docs/private-networks/how-to/use-besu-api/index.md b/docs/private-networks/how-to/use-besu-api/index.md new file mode 100644 index 00000000000..f7dda280a5f --- /dev/null +++ b/docs/private-networks/how-to/use-besu-api/index.md @@ -0,0 +1 @@ +{!global/how-to/use-besu-api/index.md!} diff --git a/docs/private-networks/how-to/use-besu-api/json-rpc.md b/docs/private-networks/how-to/use-besu-api/json-rpc.md new file mode 100644 index 00000000000..7e5fea5e55c --- /dev/null +++ b/docs/private-networks/how-to/use-besu-api/json-rpc.md @@ -0,0 +1 @@ +{!global/how-to/use-besu-api/json-rpc.md!} diff --git a/docs/private-networks/how-to/use-besu-api/rpc-pubsub.md b/docs/private-networks/how-to/use-besu-api/rpc-pubsub.md new file mode 100644 index 00000000000..fda54f88734 --- /dev/null +++ b/docs/private-networks/how-to/use-besu-api/rpc-pubsub.md @@ -0,0 +1 @@ +{!global/how-to/use-besu-api/rpc-pubsub.md!} diff --git a/docs/private-networks/reference/api/index.md b/docs/private-networks/reference/api/index.md new file mode 100644 index 00000000000..98925d7d548 --- /dev/null +++ b/docs/private-networks/reference/api/index.md @@ -0,0 +1 @@ +{!global/reference/api/index.md!} diff --git a/docs/private-networks/reference/api/objects.md b/docs/private-networks/reference/api/objects.md new file mode 100644 index 00000000000..9f19335583f --- /dev/null +++ b/docs/private-networks/reference/api/objects.md @@ -0,0 +1 @@ +{!global/reference/api/objects.md!} diff --git a/docs/private-networks/reference/cli/options.md b/docs/private-networks/reference/cli/options.md new file mode 100644 index 00000000000..c9f014da406 --- /dev/null +++ b/docs/private-networks/reference/cli/options.md @@ -0,0 +1 @@ +{!global/reference/cli/options.md!} diff --git a/docs/private-networks/reference/cli/subcommands.md b/docs/private-networks/reference/cli/subcommands.md new file mode 100644 index 00000000000..8b3bba39ebe --- /dev/null +++ b/docs/private-networks/reference/cli/subcommands.md @@ -0,0 +1 @@ +{!global/reference/cli/subcommands.md!} diff --git a/docs/private-networks/reference/disclosure.md b/docs/private-networks/reference/disclosure.md new file mode 100644 index 00000000000..2b3e8710985 --- /dev/null +++ b/docs/private-networks/reference/disclosure.md @@ -0,0 +1 @@ +{!global/reference/disclosure.md!} diff --git a/docs/private-networks/reference/evm-tool.md b/docs/private-networks/reference/evm-tool.md new file mode 100644 index 00000000000..37560ee6349 --- /dev/null +++ b/docs/private-networks/reference/evm-tool.md @@ -0,0 +1 @@ +{!global/reference/evm-tool.md!} diff --git a/docs/private-networks/reference/genesis-items.md b/docs/private-networks/reference/genesis-items.md new file mode 100644 index 00000000000..c19fa7018b2 --- /dev/null +++ b/docs/private-networks/reference/genesis-items.md @@ -0,0 +1 @@ +{!global/reference/genesis-items.md!} diff --git a/docs/private-networks/reference/projects-using-besu.md b/docs/private-networks/reference/projects-using-besu.md new file mode 100644 index 00000000000..3c77731158a --- /dev/null +++ b/docs/private-networks/reference/projects-using-besu.md @@ -0,0 +1 @@ +{!global/reference/projects-using-besu.md!} diff --git a/docs/private-networks/reference/trace-types.md b/docs/private-networks/reference/trace-types.md new file mode 100644 index 00000000000..56c97baf60d --- /dev/null +++ b/docs/private-networks/reference/trace-types.md @@ -0,0 +1 @@ +{!global/reference/trace-types.md!} diff --git a/docs/public-networks/concepts/events-and-logs.md b/docs/public-networks/concepts/events-and-logs.md index a291c2e7ddf..51736319f22 100644 --- a/docs/public-networks/concepts/events-and-logs.md +++ b/docs/public-networks/concepts/events-and-logs.md @@ -1 +1 @@ -{!global/concepts/events-and-logs.md!} \ No newline at end of file +{!global/concepts/events-and-logs.md!} diff --git a/docs/public-networks/concepts/genesis-file.md b/docs/public-networks/concepts/genesis-file.md index 6f044282802..de48beefd4c 100644 --- a/docs/public-networks/concepts/genesis-file.md +++ b/docs/public-networks/concepts/genesis-file.md @@ -1 +1 @@ -{!global/concepts/genesis-file.md!} \ No newline at end of file +{!global/concepts/genesis-file.md!} diff --git a/docs/public-networks/concepts/network-and-chain-id.md b/docs/public-networks/concepts/network-and-chain-id.md index 25bb556d75e..14ecebd8bae 100644 --- a/docs/public-networks/concepts/network-and-chain-id.md +++ b/docs/public-networks/concepts/network-and-chain-id.md @@ -1 +1 @@ -{!global/concepts/network-and-chain-id.md!} \ No newline at end of file +{!global/concepts/network-and-chain-id.md!} diff --git a/docs/public-networks/concepts/node-keys.md b/docs/public-networks/concepts/node-keys.md index f90433346c5..388d7e79372 100644 --- a/docs/public-networks/concepts/node-keys.md +++ b/docs/public-networks/concepts/node-keys.md @@ -1 +1 @@ -{!global/concepts/node-keys.md!} \ No newline at end of file +{!global/concepts/node-keys.md!} diff --git a/docs/public-networks/how-to/configuration-file.md b/docs/public-networks/how-to/configuration-file.md index 75f8acf64f4..3044fcc5def 100644 --- a/docs/public-networks/how-to/configuration-file.md +++ b/docs/public-networks/how-to/configuration-file.md @@ -1 +1 @@ -{!global/how-to/configure/configuration-file.md!} \ No newline at end of file +{!global/how-to/configure/configuration-file.md!} diff --git a/docs/public-networks/how-to/connect/configure-ports.md b/docs/public-networks/how-to/connect/configure-ports.md index e46c57ff546..e57aaf532d7 100644 --- a/docs/public-networks/how-to/connect/configure-ports.md +++ b/docs/public-networks/how-to/connect/configure-ports.md @@ -1 +1 @@ -{!global/how-to/connect/configure-ports.md!} \ No newline at end of file +{!global/how-to/connect/configure-ports.md!} diff --git a/docs/public-networks/how-to/connect/manage-peers.md b/docs/public-networks/how-to/connect/manage-peers.md index 9b75b0c5d8a..07f15b7b028 100644 --- a/docs/public-networks/how-to/connect/manage-peers.md +++ b/docs/public-networks/how-to/connect/manage-peers.md @@ -1 +1 @@ -{!global/how-to/connect/manage-peers.md!} \ No newline at end of file +{!global/how-to/connect/manage-peers.md!} diff --git a/docs/public-networks/how-to/connect/specify-nat.md b/docs/public-networks/how-to/connect/specify-nat.md index a2eec6bd294..dfa9996af11 100644 --- a/docs/public-networks/how-to/connect/specify-nat.md +++ b/docs/public-networks/how-to/connect/specify-nat.md @@ -1 +1 @@ -{!global/how-to/connect/specify-nat.md!} \ No newline at end of file +{!global/how-to/connect/specify-nat.md!} diff --git a/docs/public-networks/how-to/connect/static-nodes.md b/docs/public-networks/how-to/connect/static-nodes.md index 47a82f28477..19c150d81b7 100644 --- a/docs/public-networks/how-to/connect/static-nodes.md +++ b/docs/public-networks/how-to/connect/static-nodes.md @@ -1 +1 @@ -{!global/how-to/connect/static-nodes.md!} \ No newline at end of file +{!global/how-to/connect/static-nodes.md!} diff --git a/docs/public-networks/how-to/develop/client-libraries.md b/docs/public-networks/how-to/develop/client-libraries.md index aeee06418f1..5342720df65 100644 --- a/docs/public-networks/how-to/develop/client-libraries.md +++ b/docs/public-networks/how-to/develop/client-libraries.md @@ -1 +1 @@ -{!global/how-to/develop/client-libraries.md!} \ No newline at end of file +{!global/how-to/develop/client-libraries.md!} diff --git a/docs/public-networks/how-to/develop/truffle.md b/docs/public-networks/how-to/develop/truffle.md index 7d63cd97f6e..a3602128ea6 100644 --- a/docs/public-networks/how-to/develop/truffle.md +++ b/docs/public-networks/how-to/develop/truffle.md @@ -1 +1 @@ -{!global/how-to/develop/truffle.md!} \ No newline at end of file +{!global/how-to/develop/truffle.md!} diff --git a/docs/public-networks/how-to/monitor/index.md b/docs/public-networks/how-to/monitor/index.md index 3e492a8f52d..7617ba6dd90 100644 --- a/docs/public-networks/how-to/monitor/index.md +++ b/docs/public-networks/how-to/monitor/index.md @@ -1 +1 @@ -{!global/how-to/monitor/index.md!} \ No newline at end of file +{!global/how-to/monitor/index.md!} diff --git a/docs/public-networks/how-to/monitor/logging.md b/docs/public-networks/how-to/monitor/logging.md index 0f0670dd9d7..96bf41c09fe 100644 --- a/docs/public-networks/how-to/monitor/logging.md +++ b/docs/public-networks/how-to/monitor/logging.md @@ -1 +1 @@ -{!global/how-to/monitor/logging.md!} \ No newline at end of file +{!global/how-to/monitor/logging.md!} diff --git a/docs/public-networks/how-to/monitor/metrics.md b/docs/public-networks/how-to/monitor/metrics.md index c2a59fb7148..8f0c31fb8cc 100644 --- a/docs/public-networks/how-to/monitor/metrics.md +++ b/docs/public-networks/how-to/monitor/metrics.md @@ -1 +1 @@ -{!global/how-to/monitor/metrics.md!} \ No newline at end of file +{!global/how-to/monitor/metrics.md!} diff --git a/docs/public-networks/how-to/node.md b/docs/public-networks/how-to/node.md index 7d9db9bf437..d157bdb0342 100644 --- a/docs/public-networks/how-to/node.md +++ b/docs/public-networks/how-to/node.md @@ -1 +1 @@ -{!global/how-to/upgrade/node.md!} \ No newline at end of file +{!global/how-to/upgrade/node.md!} diff --git a/docs/public-networks/how-to/pass-jvm-options.md b/docs/public-networks/how-to/pass-jvm-options.md index 01d40b1172b..265c1da5451 100644 --- a/docs/public-networks/how-to/pass-jvm-options.md +++ b/docs/public-networks/how-to/pass-jvm-options.md @@ -1 +1 @@ -{!global/how-to/configure/pass-jvm-options.md!} \ No newline at end of file +{!global/how-to/configure/pass-jvm-options.md!} diff --git a/docs/public-networks/how-to/send-transactions.md b/docs/public-networks/how-to/send-transactions.md new file mode 100644 index 00000000000..96a3531cf51 --- /dev/null +++ b/docs/public-networks/how-to/send-transactions.md @@ -0,0 +1 @@ +{!global/how-to/send-transactions.md!} diff --git a/docs/public-networks/how-to/troubleshoot/evm-tool.md b/docs/public-networks/how-to/troubleshoot/evm-tool.md index fc0a8cdb349..dc41144a672 100644 --- a/docs/public-networks/how-to/troubleshoot/evm-tool.md +++ b/docs/public-networks/how-to/troubleshoot/evm-tool.md @@ -1 +1 @@ -{!global/how-to/troubleshoot/evm-tool.md!} \ No newline at end of file +{!global/how-to/troubleshoot/evm-tool.md!} diff --git a/docs/public-networks/how-to/troubleshoot/java-flight-recorder.md b/docs/public-networks/how-to/troubleshoot/java-flight-recorder.md index 552c107f915..81244b48cbf 100644 --- a/docs/public-networks/how-to/troubleshoot/java-flight-recorder.md +++ b/docs/public-networks/how-to/troubleshoot/java-flight-recorder.md @@ -1 +1 @@ -{!global/how-to/troubleshoot/java-flight-recorder.md!} \ No newline at end of file +{!global/how-to/troubleshoot/java-flight-recorder.md!} diff --git a/docs/public-networks/how-to/troubleshoot/trace-transactions.md b/docs/public-networks/how-to/troubleshoot/trace-transactions.md index 2d86f10b8cb..8835801e7df 100644 --- a/docs/public-networks/how-to/troubleshoot/trace-transactions.md +++ b/docs/public-networks/how-to/troubleshoot/trace-transactions.md @@ -1 +1 @@ -{!global/how-to/troubleshoot/trace-transactions.md!} \ No newline at end of file +{!global/how-to/troubleshoot/trace-transactions.md!} diff --git a/docs/public-networks/how-to/use-besu-api/access-logs.md b/docs/public-networks/how-to/use-besu-api/access-logs.md new file mode 100644 index 00000000000..9a5fea40aed --- /dev/null +++ b/docs/public-networks/how-to/use-besu-api/access-logs.md @@ -0,0 +1 @@ +{!global/how-to/use-besu-api/access-logs.md!} diff --git a/docs/public-networks/how-to/use-besu-api/authenticate.md b/docs/public-networks/how-to/use-besu-api/authenticate.md new file mode 100644 index 00000000000..a8d44937651 --- /dev/null +++ b/docs/public-networks/how-to/use-besu-api/authenticate.md @@ -0,0 +1 @@ +{!global/how-to/use-besu-api/authenticate.md!} diff --git a/docs/public-networks/how-to/use-besu-api/graphql.md b/docs/public-networks/how-to/use-besu-api/graphql.md new file mode 100644 index 00000000000..9fd4baaa9b5 --- /dev/null +++ b/docs/public-networks/how-to/use-besu-api/graphql.md @@ -0,0 +1 @@ +{!global/how-to/use-besu-api/graphql.md!} diff --git a/docs/public-networks/how-to/use-besu-api/index.md b/docs/public-networks/how-to/use-besu-api/index.md new file mode 100644 index 00000000000..f7dda280a5f --- /dev/null +++ b/docs/public-networks/how-to/use-besu-api/index.md @@ -0,0 +1 @@ +{!global/how-to/use-besu-api/index.md!} diff --git a/docs/public-networks/how-to/use-besu-api/json-rpc.md b/docs/public-networks/how-to/use-besu-api/json-rpc.md new file mode 100644 index 00000000000..7e5fea5e55c --- /dev/null +++ b/docs/public-networks/how-to/use-besu-api/json-rpc.md @@ -0,0 +1 @@ +{!global/how-to/use-besu-api/json-rpc.md!} diff --git a/docs/public-networks/how-to/use-besu-api/rpc-pubsub.md b/docs/public-networks/how-to/use-besu-api/rpc-pubsub.md new file mode 100644 index 00000000000..fda54f88734 --- /dev/null +++ b/docs/public-networks/how-to/use-besu-api/rpc-pubsub.md @@ -0,0 +1 @@ +{!global/how-to/use-besu-api/rpc-pubsub.md!} diff --git a/docs/public-networks/how-to/use-pow/mining.md b/docs/public-networks/how-to/use-pow/mining.md index 07e3ced951a..954ed3c2220 100644 --- a/docs/public-networks/how-to/use-pow/mining.md +++ b/docs/public-networks/how-to/use-pow/mining.md @@ -1 +1 @@ -{!global/how-to/configure/mining.md!} \ No newline at end of file +{!global/how-to/configure/mining.md!} diff --git a/docs/public-networks/reference/api/index.md b/docs/public-networks/reference/api/index.md new file mode 100644 index 00000000000..98925d7d548 --- /dev/null +++ b/docs/public-networks/reference/api/index.md @@ -0,0 +1 @@ +{!global/reference/api/index.md!} diff --git a/docs/public-networks/reference/api/objects.md b/docs/public-networks/reference/api/objects.md new file mode 100644 index 00000000000..9f19335583f --- /dev/null +++ b/docs/public-networks/reference/api/objects.md @@ -0,0 +1 @@ +{!global/reference/api/objects.md!} diff --git a/docs/public-networks/reference/cli/options.md b/docs/public-networks/reference/cli/options.md new file mode 100644 index 00000000000..c9f014da406 --- /dev/null +++ b/docs/public-networks/reference/cli/options.md @@ -0,0 +1 @@ +{!global/reference/cli/options.md!} diff --git a/docs/public-networks/reference/cli/subcommands.md b/docs/public-networks/reference/cli/subcommands.md new file mode 100644 index 00000000000..8b3bba39ebe --- /dev/null +++ b/docs/public-networks/reference/cli/subcommands.md @@ -0,0 +1 @@ +{!global/reference/cli/subcommands.md!} diff --git a/docs/public-networks/reference/disclosure.md b/docs/public-networks/reference/disclosure.md new file mode 100644 index 00000000000..2b3e8710985 --- /dev/null +++ b/docs/public-networks/reference/disclosure.md @@ -0,0 +1 @@ +{!global/reference/disclosure.md!} diff --git a/docs/public-networks/reference/evm-tool.md b/docs/public-networks/reference/evm-tool.md new file mode 100644 index 00000000000..37560ee6349 --- /dev/null +++ b/docs/public-networks/reference/evm-tool.md @@ -0,0 +1 @@ +{!global/reference/evm-tool.md!} diff --git a/docs/public-networks/reference/genesis-items.md b/docs/public-networks/reference/genesis-items.md new file mode 100644 index 00000000000..c19fa7018b2 --- /dev/null +++ b/docs/public-networks/reference/genesis-items.md @@ -0,0 +1 @@ +{!global/reference/genesis-items.md!} diff --git a/docs/public-networks/reference/projects-using-besu.md b/docs/public-networks/reference/projects-using-besu.md new file mode 100644 index 00000000000..3c77731158a --- /dev/null +++ b/docs/public-networks/reference/projects-using-besu.md @@ -0,0 +1 @@ +{!global/reference/projects-using-besu.md!} diff --git a/docs/public-networks/reference/trace-types.md b/docs/public-networks/reference/trace-types.md new file mode 100644 index 00000000000..56c97baf60d --- /dev/null +++ b/docs/public-networks/reference/trace-types.md @@ -0,0 +1 @@ +{!global/reference/trace-types.md!} From 25cbb73e1c8b9590e80d71a534505c16e43725c3 Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Tue, 19 Jul 2022 22:16:49 -0700 Subject: [PATCH 17/31] mkdocs changes Signed-off-by: Alexandra Tran --- mkdocs.yml | 104 ++++++++++++++++++++++++++--------------------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 4e7fffb1f1b..83dc9d7935c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -73,14 +73,14 @@ nav: - How to: - Prepare for The Merge: public-networks/how-to/prepare-for-the-merge.md - Use the Besu API: - - Index: how-to/use-besu-api/index.md - - Use JSON-RPC over HTTP, WS, and IPC: how-to/use-besu-api/json-rpc.md - - Use RPC Pub/Sub over WS: how-to/use-besu-api/rpc-pubsub.md - - Use GraphQL over HTTP: how-to/use-besu-api/graphql.md - - Authenticate JSON-RPC requests: how-to/use-besu-api/authenticate.md - - Access logs using JSON-RPC: how-to/use-besu-api/access-logs.md + - Index: public-networks/how-to/use-besu-api/index.md + - Use JSON-RPC over HTTP, WS, and IPC: public-networks/how-to/use-besu-api/json-rpc.md + - Use RPC Pub/Sub over WS: public-networks/how-to/use-besu-api/rpc-pubsub.md + - Use GraphQL over HTTP: public-networks/how-to/use-besu-api/graphql.md + - Authenticate JSON-RPC requests: public-networks/how-to/use-besu-api/authenticate.md + - Access logs using JSON-RPC: public-networks/how-to/use-besu-api/access-logs.md - Use the Engine API: public-networks/how-to/use-engine-api.md - - Create and send transactions: how-to/send-transactions.md + - Create and send transactions: public-networks/how-to/send-transactions.md - Connect to a network: - Sync Besu: public-networks/how-to/connect/sync-node.md - Configure static nodes: public-networks/how-to/connect/static-nodes.md @@ -114,19 +114,19 @@ nav: - Run Besu and Teku on the Merge testnet: public-networks/tutorials/merge-testnet.md - Reference: - Besu command line: - - Options: reference/cli/options.md - - Subcommands: reference/cli/subcommands.md + - Options: public-networks/reference/cli/options.md + - Subcommands: public-networks/reference/cli/subcommands.md - Besu API: - - Index: reference/api/index.md - - Objects: reference/api/objects.md + - Index: public-networks/reference/api/index.md + - Objects: public-networks/reference/api/objects.md - Engine API: - Index: public-networks/reference/engine-api/index.md - Objects: public-networks/reference/engine-api/objects.md - - Genesis file items: reference/genesis-items.md - - EVM tool options: reference/evm-tool.md - - Transaction trace types: reference/trace-types.md - - Projects using Besu: reference/projects-using-besu.md - - Security disclosure policy: reference/disclosure.md + - Genesis file items: public-networks/reference/genesis-items.md + - EVM tool options: public-networks/reference/evm-tool.md + - Transaction trace types: public-networks/reference/trace-types.md + - Projects using Besu: public-networks/reference/projects-using-besu.md + - Security disclosure policy: public-networks/reference/disclosure.md - Private networks: - Index: private-networks/index.md - Get started: @@ -156,14 +156,14 @@ nav: - Pass JVM options: private-networks/how-to/configure/pass-jvm-options.md - Mining: private-networks/how-to/configure/mining.md - Use the Besu API: - - Index: how-to/use-besu-api/index.md - - Use JSON-RPC over HTTP, WS, and IPC: how-to/use-besu-api/json-rpc.md - - Use RPC Pub/Sub over WS: how-to/use-besu-api/rpc-pubsub.md - - Use GraphQL over HTTP: how-to/use-besu-api/graphql.md - - Authenticate JSON-RPC requests: how-to/use-besu-api/authenticate.md - - Access logs using JSON-RPC: how-to/use-besu-api/access-logs.md + - Index: private-networks/how-to/use-besu-api/index.md + - Use JSON-RPC over HTTP, WS, and IPC: private-networks/how-to/use-besu-api/json-rpc.md + - Use RPC Pub/Sub over WS: private-networks/how-to/use-besu-api/rpc-pubsub.md + - Use GraphQL over HTTP: private-networks/how-to/use-besu-api/graphql.md + - Authenticate JSON-RPC requests: private-networks/how-to/use-besu-api/authenticate.md + - Access logs using JSON-RPC: private-networks/how-to/use-besu-api/access-logs.md - Create and send transactions: - - Index: how-to/send-transactions.md + - Index: private-networks/how-to/send-transactions/index.md - Create and send private transactions: private-networks/how-to/send-transactions/private-transactions.md - Send concurrent private transactions: private-networks/how-to/send-transactions/concurrent-private-transactions.md - Include revert reason: private-networks/how-to/send-transactions/revert-reason.md @@ -264,17 +264,17 @@ nav: - Deploy using Microsoft Azure: private-networks/tutorials/azure.md - Reference: - Besu command line: - - Options: reference/cli/options.md - - Subcommands: reference/cli/subcommands.md + - Options: private-networks/reference/cli/options.md + - Subcommands: private-networks/reference/cli/subcommands.md - Besu API: - - Index: reference/api/index.md - - Objects: reference/api/objects.md - - Genesis file items: reference/genesis-items.md + - Index: private-networks/reference/api/index.md + - Objects: private-networks/reference/api/objects.md + - Genesis file items: private-networks/reference/genesis-items.md - Accounts for testing: private-networks/reference/accounts-for-testing.md - - EVM tool options: reference/evm-tool.md - - Transaction trace types: reference/trace-types.md - - Projects using Besu: reference/projects-using-besu.md - - Security disclosure policy: reference/disclosure.md + - EVM tool options: private-networks/reference/evm-tool.md + - Transaction trace types: private-networks/reference/trace-types.md + - Projects using Besu: private-networks/reference/projects-using-besu.md + - Security disclosure policy: private-networks/reference/disclosure.md markdown_extensions: - toc: @@ -331,12 +331,12 @@ plugins: HowTo/Get-Started/Install-Binaries.md: public-networks/get-started/install/binary-distribution.md HowTo/Get-Started/Build-from-source.md: public-networks/get-started/install/index.md HowTo/Get-Started/Run-Docker-Image.md: public-networks/get-started/install/run-docker-image.md - HowTo/Deploy/High-Availability.md: how-to/configure/Configure-HA/High-Availability.md - HowTo/Deploy/Monitoring-Performance.md: how-to/monitor/metrics.md + HowTo/Deploy/High-Availability.md: global/how-to/configure/Configure-HA/High-Availability.md + HowTo/Deploy/Monitoring-Performance.md: public-networks/how-to/monitor/metrics.md HowTo/Upgrade/Upgrade-Network.md: public-networks/how-to/node.md HowTo/Find-and-Connect/Using-UPnP.md: public-networks/how-to/connect/specify-nat.md HowTo/Use-Privacy/Run-Orion-With-Besu.md: private-networks/how-to/use-privacy/tessera.md - Concepts/Transactions/Trace-Types.md: reference/trace-types.md + Concepts/Transactions/Trace-Types.md: public-networks/reference/trace-types.md HowTo/Develop-Dapps/Use-web3js.md: public-networks/how-to/develop/client-libraries.md Concepts/Client-Libraries.md: public-networks/how-to/develop/client-libraries.md Concepts/Privacy/Onchain-PrivacyGroups.md: private-networks/concepts/privacy/flexible-privacy.md @@ -366,15 +366,15 @@ plugins: HowTo/Get-Started/Installation-Options/Run-Docker-Image.md: public-networks/get-started/install/run-docker-image.md HowTo/Get-Started/Starting-node.md: public-networks/get-started/start-node.md HowTo/Upgrade/Prepare-for-The-Merge.md: public-networks/how-to/prepare-for-the-merge.md - HowTo/Interact/APIs/API.md: how-to/use-besu-api/index.md - HowTo/Interact/APIs/Using-JSON-RPC-API.md: how-to/use-besu-api/json-rpc.md - HowTo/Interact/APIs/RPC-PubSub.md: how-to/use-besu-api/rpc-pubsub.md - HowTo/Interact/APIs/GraphQL.md: how-to/use-besu-api/graphql.md - HowTo/Interact/APIs/Authentication.md: how-to/use-besu-api/authenticate.md + HowTo/Interact/APIs/API.md: public-networks/how-to/use-besu-api/index.md + HowTo/Interact/APIs/Using-JSON-RPC-API.md: public-networks/how-to/use-besu-api/json-rpc.md + HowTo/Interact/APIs/RPC-PubSub.md: public-networks/how-to/use-besu-api/rpc-pubsub.md + HowTo/Interact/APIs/GraphQL.md: public-networks/how-to/use-besu-api/graphql.md + HowTo/Interact/APIs/Authentication.md: public-networks/how-to/use-besu-api/authenticate.md HowTo/Interact/APIs/Engine-API.md: public-networks/how-to/use-engine-api.md - HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.md: how-to/use-besu-api/access-logs.md - HowTo/Send-Transactions/Transactions.md: how-to/send-transactions.md - HowTo/Send-Transactions/Account-Management.md: how-to/send-transactions.md + HowTo/Interact/Filters/Accessing-Logs-Using-JSON-RPC.md: public-networks/how-to/use-besu-api/access-logs.md + HowTo/Send-Transactions/Transactions.md: public-networks/how-to/send-transactions.md + HowTo/Send-Transactions/Account-Management.md: public-networks/how-to/send-transactions.md HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md: private-networks/how-to/send-transactions/private-transactions.md HowTo/Send-Transactions/Concurrent-Private-Transactions.md: private-networks/how-to/send-transactions/concurrent-private-transactions.md HowTo/Send-Transactions/Revert-Reason.md: private-networks/how-to/send-transactions/revert-reason.md @@ -405,17 +405,17 @@ plugins: Concepts/Node-Keys.md: public-networks/concepts/node-keys.md Concepts/Data-Storage-Formats.md: public-networks/concepts/data-storage-formats.md Tutorials/Merge-Testnet.md: public-networks/tutorials/merge-testnet.md - Reference/CLI/CLI-Syntax.md: reference/cli/options.md - Reference/CLI/CLI-Subcommands.md: reference/cli/subcommands.md - Reference/API-Methods.md: reference/api/index.md - Reference/API-Objects.md: reference/api/objects.md + Reference/CLI/CLI-Syntax.md: public-networks/reference/cli/options.md + Reference/CLI/CLI-Subcommands.md: public-networks/reference/cli/subcommands.md + Reference/API-Methods.md: public-networks/reference/api/index.md + Reference/API-Objects.md: public-networks/reference/api/objects.md Reference/Engine-API-Methods.md: public-networks/reference/engine-api/index.md Reference/Engine-API-Objects.md: public-networks/reference/engine-api/objects.md - Reference/Config-Items.md: reference/genesis-items.md - Reference/Evm-Tool.md: reference/evm-tool.md - Reference/Trace-Types.md: reference/trace-types.md - Reference/Projects-Using-Besu.md: reference/projects-using-besu.md - Reference/Responsible-Disclosure.md: reference/disclosure.md + Reference/Config-Items.md: public-networks/reference/genesis-items.md + Reference/Evm-Tool.md: public-networks/reference/evm-tool.md + Reference/Trace-Types.md: public-networks/reference/trace-types.md + Reference/Projects-Using-Besu.md: public-networks/reference/projects-using-besu.md + Reference/Responsible-Disclosure.md: public-networks/reference/disclosure.md HowTo/Configure/Consensus-Protocols/Clique.md: private-networks/how-to/configure/consensus/clique.md HowTo/Configure/Consensus-Protocols/IBFT.md: private-networks/how-to/configure/consensus/ibft.md HowTo/Configure/Consensus-Protocols/QBFT.md: private-networks/how-to/configure/consensus/qbft.md From 585c5662d5afba6858f843baa7861964f49b57da Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Tue, 19 Jul 2022 22:59:39 -0700 Subject: [PATCH 18/31] Some link fixes and content updates Signed-off-by: Alexandra Tran --- docs/index.md | 6 +++--- docs/private-networks/concepts/privacy/index.md | 2 +- .../concepts/privacy/multi-tenancy.md | 2 +- docs/private-networks/get-started/start-node.md | 15 +++++++-------- docs/private-networks/how-to/backup.md | 6 +++--- .../how-to/configure/consensus/clique.md | 2 +- .../how-to/configure/consensus/qbft.md | 2 +- .../how-to/configure/contracts.md | 2 +- .../how-to/configure/validators.md | 4 ++-- docs/private-networks/how-to/connect/bootnodes.md | 6 +++--- docs/private-networks/how-to/monitor/splunk.md | 4 ++-- .../send-transactions/private-transactions.md | 2 +- .../how-to/use-privacy/goquorum-compatible.md | 2 +- docs/private-networks/index.md | 5 +++-- docs/private-networks/tutorials/clique.md | 8 ++++---- docs/private-networks/tutorials/ethash.md | 12 ++++++------ docs/private-networks/tutorials/ibft/index.md | 2 +- .../tutorials/permissioning/index.md | 2 +- docs/private-networks/tutorials/qbft.md | 2 +- docs/private-networks/tutorials/quickstart.md | 6 +++--- docs/public-networks/get-started/start-node.md | 15 +++++++-------- .../get-started/system-requirements.md | 4 ++-- docs/public-networks/how-to/connect/sync-node.md | 2 +- docs/public-networks/index.md | 2 +- docs/public-networks/tutorials/merge-testnet.md | 2 +- mkdocs.yml | 2 +- 26 files changed, 59 insertions(+), 60 deletions(-) diff --git a/docs/index.md b/docs/index.md index 5779b1fcf03..8abb0c6ee2c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -23,8 +23,8 @@ It runs on: ## What can you do with Besu? -Besu includes a [command line interface](global/reference/cli/options.md) and -[JSON-RPC API](global/how-to/use-besu-api/index.md) for running, maintaining, debugging, and monitoring +Besu includes a [command line interface](public-networks/reference/cli/options.md) and +[JSON-RPC API](public-networks/how-to/use-besu-api/index.md) for running, maintaining, debugging, and monitoring nodes in an Ethereum network. You can use the API via RPC over HTTP or via WebSocket. Besu also supports Pub/Sub. The API supports typical Ethereum functionalities such as: @@ -39,7 +39,7 @@ use cases, using tools such as [Truffle](http://truffleframework.com/), [Remix](https://github.com/ethereum/remix), and [web3j](https://web3j.io/). The client supports common JSON-RPC API methods such as `eth`, `net`, `web3`, `debug`, and `miner`. -Besu doesn't support [key management](global/how-to/send-transactions.md#use-wallets-for-key-management) inside the +Besu doesn't support [key management](public-networks/how-to/send-transactions.md) inside the client. You can use [EthSigner](http://docs.ethsigner.consensys.net/en/latest/) with Besu to access your key store and sign transactions. diff --git a/docs/private-networks/concepts/privacy/index.md b/docs/private-networks/concepts/privacy/index.md index d20d3e8bf10..e6759313aab 100644 --- a/docs/private-networks/concepts/privacy/index.md +++ b/docs/private-networks/concepts/privacy/index.md @@ -80,4 +80,4 @@ occur. [highly available and run in a separate instance to Besu]: ../../how-to/use-privacy/tessera.md -[pruning]: ../../../global/concepts/Pruning.md +[pruning]: ../../../public-networks/concepts/data-storage-formats.md diff --git a/docs/private-networks/concepts/privacy/multi-tenancy.md b/docs/private-networks/concepts/privacy/multi-tenancy.md index f65a42b5ba2..07db32ace11 100644 --- a/docs/private-networks/concepts/privacy/multi-tenancy.md +++ b/docs/private-networks/concepts/privacy/multi-tenancy.md @@ -40,4 +40,4 @@ JSON-RPC requests, and the tenant has access to the requested privacy data. Private data is isolated and each tenant uses a JSON Web Token (JWT) for authentication. You can -[create the JWT either externally or internally](../../../global/how-to/use-besu-api/authenticate.md). +[create the JWT either externally or internally](../../how-to/use-besu-api/authenticate.md). diff --git a/docs/private-networks/get-started/start-node.md b/docs/private-networks/get-started/start-node.md index a5246b9d269..4218e44697b 100644 --- a/docs/private-networks/get-started/start-node.md +++ b/docs/private-networks/get-started/start-node.md @@ -2,18 +2,17 @@ description: Starting Hyperledger Besu --- -# Starting Hyperledger Besu +# Start Hyperledger Besu -You can use Besu nodes for varying purposes, as described in the [Overview](../../index.md). Nodes -can connect to the Ethereum Mainnet, public testnets such as Ropsten, or private networks. +Nodes can connect to the Ethereum Mainnet, public testnets such as Ropsten, or private networks. -Use the [`besu`](../../global/reference/cli/options.md) command with the required command line options +Use the [`besu`](../reference/cli/options.md) command with the required command line options to start a node. Alternatively, use the [launcher](#besu-launcher) to start Besu interactively with the most common options. ## Prerequisites -[Besu Installed](../../global/get-started/install/binary-distribution.md) +[Besu installed](install/binary-distribution.md) ## Local block data @@ -62,7 +61,7 @@ by starting Besu with [`--data-storage-format=BONSAI`](../../global/reference/cl If you started Besu with the [`--rpc-http-enabled`](../../global/reference/cli/options.md#rpc-http-enabled) option, use -[cURL](https://curl.haxx.se/) to call [JSON-RPC API methods](../../global/reference/api/index.md) to +[cURL](https://curl.haxx.se/) to call [JSON-RPC API methods](../reference/api/index.md) to confirm the node is running. !!!example @@ -101,7 +100,7 @@ To run a node that mines blocks at a rate suitable for testing purposes: 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](../../global/how-to/configure/configuration-file.md) +You can also use the following [configuration file](../how-to/configure/configuration-file.md) on the command line to start a node with the same options as above: ```toml @@ -192,7 +191,7 @@ besu --rpc-http-enabled ## Besu launcher Use the Besu launcher to interactively configure and start a node with the most common options. The -launcher asks a series of questions and generates a [configuration file](../../global/how-to/configure/configuration-file.md). +launcher asks a series of questions and generates a [configuration file](../how-to/configure/configuration-file.md). To run the Besu launcher: diff --git a/docs/private-networks/how-to/backup.md b/docs/private-networks/how-to/backup.md index e393409fba9..2a625f21f7f 100644 --- a/docs/private-networks/how-to/backup.md +++ b/docs/private-networks/how-to/backup.md @@ -17,12 +17,12 @@ file under source control. If installed locally, the default data location is the Besu installation directory. We recommend mounting a -[separate volume to store data](../../global/get-started/install/run-docker-image.md#starting-besu). Use the +[separate volume to store data](../get-started/install/run-docker-image.md). Use the [`--data-path`](../../global/reference/cli/options.md#data-path) command line option to pass the path to Besu. The default data location is the Besu installation directory, or `/opt/besu/database` if using the -[Besu Docker image](../../global/get-started/install/run-docker-image.md). +[Besu Docker image](../get-started/install/run-docker-image.md). Having some data reduces the time to synchronize a new node. You can perform periodic backups of the data directory and send the data to your preferred backup mechanism. For example, `cron` job and @@ -52,4 +52,4 @@ The process for finding peers after restarting is the same as for [finding peers after upgrading and restarting]. -[finding peers after upgrading and restarting]: ../../global/how-to/upgrade/node.md#finding-peers-on-restarting +[finding peers after upgrading and restarting]: ../how-to/upgrade/node.md diff --git a/docs/private-networks/how-to/configure/consensus/clique.md b/docs/private-networks/how-to/configure/consensus/clique.md index b21e3e9f89c..91cfe67c2b9 100644 --- a/docs/private-networks/how-to/configure/consensus/clique.md +++ b/docs/private-networks/how-to/configure/consensus/clique.md @@ -23,7 +23,7 @@ You can [create a private network using Clique](../../../tutorials/clique.md). ## Genesis file -To use Clique in a private network, Besu requires a Clique [genesis file](../../../../global/concepts/genesis-file.md). When connecting to Rinkeby, +To use Clique in a private network, Besu requires a Clique [genesis file](../../../concepts/genesis-file.md). When connecting to Rinkeby, Besu uses the [`rinkeby.json`](https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/config/src/main/resources/rinkeby.json) genesis file in the `/besu/config/src/main/resources` directory. diff --git a/docs/private-networks/how-to/configure/consensus/qbft.md b/docs/private-networks/how-to/configure/consensus/qbft.md index f61d6d6bb8c..751af40b4c7 100644 --- a/docs/private-networks/how-to/configure/consensus/qbft.md +++ b/docs/private-networks/how-to/configure/consensus/qbft.md @@ -28,7 +28,7 @@ You can [create a private network using QBFT](../../../tutorials/qbft.md). ## Genesis file -To use QBFT, define a [genesis file](../../../../global/concepts/genesis-file.md) that contains the QBFT properties. +To use QBFT, define a [genesis file](../../../concepts/genesis-file.md) that contains the QBFT properties. The genesis file differs depending on the [validator management method](#add-and-remove-validators) you intend to use. diff --git a/docs/private-networks/how-to/configure/contracts.md b/docs/private-networks/how-to/configure/contracts.md index f8ce990414a..5f8e982b790 100644 --- a/docs/private-networks/how-to/configure/contracts.md +++ b/docs/private-networks/how-to/configure/contracts.md @@ -4,7 +4,7 @@ description: Pre-deploying contracts in the genesis file # Pre-deploying contracts in the genesis file -To pre-deploy contracts when starting Besu, specify the contract code in the [genesis file](../../../global/concepts/genesis-file.md). +To pre-deploy contracts when starting Besu, specify the contract code in the [genesis file](../../concepts/genesis-file.md). !!! example "Contract code in the genesis file" diff --git a/docs/private-networks/how-to/configure/validators.md b/docs/private-networks/how-to/configure/validators.md index 9ee32d275a7..93512ec68a1 100644 --- a/docs/private-networks/how-to/configure/validators.md +++ b/docs/private-networks/how-to/configure/validators.md @@ -6,7 +6,7 @@ description: Configuring validators in production networks As when [configuring bootnodes](../connect/bootnodes.md): -1. Create the [node key pair](../../../global/concepts/node-keys.md) (that is, the private and public key) +1. Create the [node key pair](../../concepts/node-keys.md) (that is, the private and public key) before starting the validator. 1. When creating validators in the cloud (for example, AWS or Azure), attempt to assign static IP addresses to them. If your network is: @@ -38,4 +38,4 @@ If you remove a validator that is also a bootnode, ensure there are enough remai the network. -[vote validators in or out of the validator pool]: consensus/ibft.md#adding-and-removing-validators +[vote validators in or out of the validator pool]: consensus/ibft.md#add-and-remove-validators diff --git a/docs/private-networks/how-to/connect/bootnodes.md b/docs/private-networks/how-to/connect/bootnodes.md index 999fc8b84c3..07d161532e1 100644 --- a/docs/private-networks/how-to/connect/bootnodes.md +++ b/docs/private-networks/how-to/connect/bootnodes.md @@ -27,7 +27,7 @@ In production networks, [configure two or more nodes as bootnodes](#configure-bo ## Specify a bootnode -To start a node, specify a bootnode [enode](../../../global/concepts/node-keys.md) for P2P discovery, +To start a node, specify a bootnode [enode](../../concepts/node-keys.md) for P2P discovery, using the [`--bootnodes`](../../../global/reference/cli/options.md#bootnodes) option. !!! example @@ -58,7 +58,7 @@ itself. To ensure a bootnode enode doesn't change when recovering from a complete bootnode failure: -1. Create the [node key pair](../../../global/concepts/node-keys.md) (that is, the private and public key) +1. Create the [node key pair](../../concepts/node-keys.md) (that is, the private and public key) before starting the bootnode. 1. When creating bootnodes in the cloud (for example, AWS and Azure), attempt to assign a static IP address to them. If your network is: @@ -85,5 +85,5 @@ command line option for each node to include the new bootnodes. When adding bootnodes, you don't need to restart running nodes. By updating the [`--bootnodes`](../../../global/reference/cli/options.md#bootnodes) option, the next time you restart the -nodes (for example, when [upgrading](../../../global/how-to/upgrade/node.md)), the nodes connect to the new +nodes (for example, when [upgrading](../../how-to/upgrade/node.md)), the nodes connect to the new bootnodes. diff --git a/docs/private-networks/how-to/monitor/splunk.md b/docs/private-networks/how-to/monitor/splunk.md index bf4752d2d79..2bdedcc796d 100644 --- a/docs/private-networks/how-to/monitor/splunk.md +++ b/docs/private-networks/how-to/monitor/splunk.md @@ -68,7 +68,7 @@ Docker Compose environment provided by Splunk. ### Requirements - [Docker](https://docs.docker.com/compose/install/) -- [Besu 1.4.4](https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/CHANGELOG.md#144) or later [installed](../../../global/get-started/install/binary-distribution.md) +- [Besu 1.4.4](https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/CHANGELOG.md#144) or later [installed](../../get-started/install/binary-distribution.md) !!! important @@ -150,7 +150,7 @@ Docker Compose environment provided by Splunk. ### Requirements - [Splunk Enterprise license](https://www.splunk.com/) -- [Besu 1.4.4](https://github.com/hyperledger/besu/blob/master/CHANGELOG.md#144) or later [installed](../../../global/get-started/install/binary-distribution.md) +- [Besu 1.4.4](https://github.com/hyperledger/besu/blob/master/CHANGELOG.md#144) or later [installed](../../get-started/install/binary-distribution.md) ### Steps diff --git a/docs/private-networks/how-to/send-transactions/private-transactions.md b/docs/private-networks/how-to/send-transactions/private-transactions.md index fc7e4ed8ab4..9b8315f9375 100644 --- a/docs/private-networks/how-to/send-transactions/private-transactions.md +++ b/docs/private-networks/how-to/send-transactions/private-transactions.md @@ -58,7 +58,7 @@ Use the value returned by address of the [privacy precompiled contract](../../concepts/privacy/private-transactions/processing.md), in the `to` field of the call. -By using the [public Ethereum transaction](../../../global/how-to/send-transactions.md), +By using the [public Ethereum transaction](../../how-to/send-transactions/index.md), [`eth_sendRawTransaction`](../../../global/reference/api/index.md#eth_sendrawtransaction), you are signing and submitting the PMT yourself instead of having it signed by the Besu node, giving you greater control over the PMT. diff --git a/docs/private-networks/how-to/use-privacy/goquorum-compatible.md b/docs/private-networks/how-to/use-privacy/goquorum-compatible.md index 6b8e77f8656..a04a4dbb710 100644 --- a/docs/private-networks/how-to/use-privacy/goquorum-compatible.md +++ b/docs/private-networks/how-to/use-privacy/goquorum-compatible.md @@ -10,7 +10,7 @@ Besu and [GoQuorum clients] using the Tessera private transaction manager. This mode requires both networks to run an interoperable consensus algorithm such as [QBFT] to work. To run your Besu nodes in GoQuorum-compatible privacy mode, add the `isQuorum:true` flag to your -[genesis file](../../../global/concepts/genesis-file.md). +[genesis file](../../concepts/genesis-file.md). While in GoQuorum-compatible privacy mode and using Tessera, disable [`orion` mode](https://docs.tessera.consensys.net/en/stable/HowTo/Configure/Orion-Mode/) by removing `"mode": "orion",` from the [Tessera configuration file](../../tutorials/privacy/multi-tenancy.md#3-update-the-tessera-configuration-file). diff --git a/docs/private-networks/index.md b/docs/private-networks/index.md index e4aeb788587..874740321a4 100644 --- a/docs/private-networks/index.md +++ b/docs/private-networks/index.md @@ -8,13 +8,14 @@ You can use Besu to develop enterprise applications requiring secure, high-perfo processing in a private network. A private network is a network not connected to Ethereum Mainnet or an Ethereum testnet. -Private networks typically use a different [chain ID](../global/concepts/network-and-chain-id.md) and +Private networks typically use a different [chain ID](concepts/network-and-chain-id.md) and proof of authority consensus ([QBFT](how-to/configure/consensus/qbft.md), [IBFT 2.0](how-to/configure/consensus/ibft.md), or [Clique](how-to/configure/consensus/clique.md)). You can also [create a local development network](tutorials/ethash.md) using proof of work (Ethash). -Besu supports enterprise features including [privacy](concepts/privacy) and [permissioning](concepts/permissioning). +Besu supports enterprise features including [privacy](concepts/privacy/index.md) and +[permissioning](concepts/permissioning/index.md). Get started with the [Developer Quickstart](tutorials/quickstart.md) to rapidly generate local blockchain networks. diff --git a/docs/private-networks/tutorials/clique.md b/docs/private-networks/tutorials/clique.md index 088979ebd12..72507285fc6 100644 --- a/docs/private-networks/tutorials/clique.md +++ b/docs/private-networks/tutorials/clique.md @@ -14,7 +14,7 @@ A private network provides a configurable network for testing. This private netw ## Prerequisites -* [Hyperledger Besu](../../global/get-started/install/binary-distribution.md) +* [Hyperledger Besu](../get-started/install/binary-distribution.md) * [Curl (or similar webservice client)](https://curl.haxx.se/download.html). ## Steps @@ -118,7 +118,7 @@ Copy the following genesis definition to a file called `cliqueGenesis.json` and This ensures you are using the most up-to-date protocol and have access to the most recent opcodes. In `extraData`, replace `` with the -[address for Node-1](#2-get-address-for-node-1), excluding the 0x prefix. +[address for Node-1](#2-get-the-address-for-node-1), excluding the 0x prefix. !!! example @@ -221,8 +221,8 @@ The command line specifies: [`--rpc-http-port`](../../global/reference/cli/options.md#rpc-http-port) option. * The data directory for Node-3 using the [`--data-path`](../../global/reference/cli/options.md#data-path) option. -* The bootnode as for [Node-2](#6-start-node-2) -* Other options as for [Node-1](#5-start-first-node-as-bootnode). +* The bootnode as for [Node-2](#5-start-node-2). +* Other options as for [Node-1](#4-start-the-first-node-as-the-bootnode). ### 7. Confirm the private network is working diff --git a/docs/private-networks/tutorials/ethash.md b/docs/private-networks/tutorials/ethash.md index 6137d3d9666..8fad43d85a7 100644 --- a/docs/private-networks/tutorials/ethash.md +++ b/docs/private-networks/tutorials/ethash.md @@ -17,7 +17,7 @@ public testnets. ## Prerequisites -* [Hyperledger Besu](../../global/get-started/install/binary-distribution.md) +* [Hyperledger Besu](../get-started/install/binary-distribution.md) * [Curl (or similar webservice client)](https://curl.haxx.se/download.html). ## Steps @@ -27,7 +27,7 @@ Listed on the right-hand side of the page are the steps to create a private netw ### 1. Create directories Each node requires a data directory for the blockchain data. When the node starts, Besu saves the -[node key](../../global/concepts/node-keys.md) in this directory. +[node key](../concepts/node-keys.md) in this directory. Create directories for your private network, each of the three nodes, and a data directory for each node: @@ -49,7 +49,7 @@ blockchain). The genesis file includes entries for configuring the blockchain, s difficulty and initial accounts and balances. All nodes in a network must use the same genesis file. The -[network ID](../../global/concepts/network-and-chain-id.md) defaults to the `chainID` in the genesis +[network ID](../concepts/network-and-chain-id.md) defaults to the `chainID` in the genesis file. The `fixeddifficulty` enables fast block mining. Copy the following genesis definition to a file called `privateNetworkGenesis.json` and save it in @@ -212,12 +212,12 @@ Import accounts to MetaMask and send transactions as described in the Besu doesn't support [private key management](../../how-to/send-transactions.md). Send transactions using `eth_sendRawTransaction` to -[send ether or, deploy or invoke contracts](../../global/how-to/send-transactions.md). +[send ether or, deploy or invoke contracts](../how-to/send-transactions/index.md). -Use the [JSON-RPC API](../../global/how-to/use-besu-api/json-rpc.md). +Use the [JSON-RPC API](../how-to/use-besu-api/json-rpc.md). Start a node with the [`--rpc-ws-enabled`](../../global/reference/cli/options.md#rpc-ws-enabled) option -and use the [RPC Pub/Sub API](../../global/how-to/use-besu-api/rpc-pubsub.md). +and use the [RPC Pub/Sub API](../how-to/use-besu-api/rpc-pubsub.md). ## Stop the nodes diff --git a/docs/private-networks/tutorials/ibft/index.md b/docs/private-networks/tutorials/ibft/index.md index 61fe75fef29..73f8d90934f 100644 --- a/docs/private-networks/tutorials/ibft/index.md +++ b/docs/private-networks/tutorials/ibft/index.md @@ -17,7 +17,7 @@ A private network provides a configurable network for testing. This private netw ## Prerequisites -* [Hyperledger Besu](../../../global/get-started/install/binary-distribution.md) +* [Hyperledger Besu](../../get-started/install/binary-distribution.md) * [Curl (or similar webservice client)](https://curl.haxx.se/download.html). ## Steps diff --git a/docs/private-networks/tutorials/permissioning/index.md b/docs/private-networks/tutorials/permissioning/index.md index 8ba46e11dff..d7e30a2b096 100644 --- a/docs/private-networks/tutorials/permissioning/index.md +++ b/docs/private-networks/tutorials/permissioning/index.md @@ -14,7 +14,7 @@ uses the [IBFT 2.0 proof of authority consensus protocol]. ## Prerequisites -- [Hyperledger Besu](../../../global/get-started/install/binary-distribution.md) +- [Hyperledger Besu](../../get-started/install/binary-distribution.md) - [curl (or similar Web service client)](https://curl.haxx.se/download.html) ## Steps diff --git a/docs/private-networks/tutorials/qbft.md b/docs/private-networks/tutorials/qbft.md index edce0e11f33..ff0c6aa424e 100644 --- a/docs/private-networks/tutorials/qbft.md +++ b/docs/private-networks/tutorials/qbft.md @@ -21,7 +21,7 @@ steps in the [example smart contract repository]. ## Prerequisites -* [Hyperledger Besu](../../global/get-started/install/binary-distribution.md) +* [Hyperledger Besu](../get-started/install/binary-distribution.md) * [Curl (or similar webservice client)](https://curl.haxx.se/download.html). ## Steps diff --git a/docs/private-networks/tutorials/quickstart.md b/docs/private-networks/tutorials/quickstart.md index d4db096c1a6..b11e16e9aee 100644 --- a/docs/private-networks/tutorials/quickstart.md +++ b/docs/private-networks/tutorials/quickstart.md @@ -92,10 +92,10 @@ When execution is successfully finished, the process lists the available service - 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](../../global/how-to/monitor/metrics.md). + [Read more about metrics](../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](../../global/how-to/monitor/metrics.md). + [Read more about metrics](../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). @@ -135,7 +135,7 @@ You can directly access these tools from your browser at the addresses displayed - [Grafana dashboard](http://localhost:3000/d/XE4V0WGZz/besu-overview?orgId=1&refresh=10s&from=now-30m&to=now&var-system=All) For more details on how to configure and use these tools for your own nodes, see the -[performances monitoring documentation](../../global/how-to/monitor/metrics.md), +[performances monitoring documentation](../how-to/monitor/metrics.md), [Prometheus documentation](https://prometheus.io/docs/introduction/overview/) and [Grafana documentation](https://grafana.com/docs/). diff --git a/docs/public-networks/get-started/start-node.md b/docs/public-networks/get-started/start-node.md index 9f1d0704207..63852c2d2e8 100644 --- a/docs/public-networks/get-started/start-node.md +++ b/docs/public-networks/get-started/start-node.md @@ -2,18 +2,17 @@ description: Starting Hyperledger Besu --- -# Starting Hyperledger Besu +# Start Hyperledger Besu -You can use Besu nodes for varying purposes, as described in the [Overview](../../index.md). Nodes -can connect to the Ethereum Mainnet, public testnets such as Ropsten, or private networks. +Nodes can connect to the Ethereum Mainnet, public testnets such as Ropsten, or private networks. -Use the [`besu`](../../global/reference/cli/options.md) command with the required command line options +Use the [`besu`](../reference/cli/options.md) command with the required command line options to start a node. Alternatively, use the [launcher](#besu-launcher) to start Besu interactively with the most common options. ## Prerequisites -[Besu Installed](../../global/get-started/install/binary-distribution.md) +[Besu installed](install/binary-distribution.md) ## Local block data @@ -62,7 +61,7 @@ by starting Besu with [`--data-storage-format=BONSAI`](../../global/reference/cl If you started Besu with the [`--rpc-http-enabled`](../../global/reference/cli/options.md#rpc-http-enabled) option, use -[cURL](https://curl.haxx.se/) to call [JSON-RPC API methods](../../global/reference/api/index.md) to +[cURL](https://curl.haxx.se/) to call [JSON-RPC API methods](../reference/api/index.md) to confirm the node is running. !!!example @@ -101,7 +100,7 @@ To run a node that mines blocks at a rate suitable for testing purposes: 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](../../global/how-to/configure/configuration-file.md) +You can also use the following [configuration file](../how-to/configuration-file.md) on the command line to start a node with the same options as above: ```toml @@ -200,7 +199,7 @@ besu --rpc-http-enabled ## Besu launcher Use the Besu launcher to interactively configure and start a node with the most common options. The -launcher asks a series of questions and generates a [configuration file](../../global/how-to/configure/configuration-file.md). +launcher asks a series of questions and generates a [configuration file](../how-to/configuration-file.md). To run the Besu launcher: diff --git a/docs/public-networks/get-started/system-requirements.md b/docs/public-networks/get-started/system-requirements.md index 59ec2fd520d..e1495bfb0eb 100644 --- a/docs/public-networks/get-started/system-requirements.md +++ b/docs/public-networks/get-started/system-requirements.md @@ -6,7 +6,7 @@ description: System requirements to sync and run Besu # System requirements for public networks Determine public network system requirements by checking CPU and disk space requirements using -[Prometheus](../../global/how-to/monitor/metrics.md#monitor-node-performance-using-prometheus). +[Prometheus](../how-to/monitor/metrics.md). Grafana provides a [sample dashboard](https://grafana.com/grafana/dashboards/10273) for Besu. !!! tip @@ -24,7 +24,7 @@ to the chain head. Monitor your system to determine your actual JVM memory needs ## Disk space [Fast synchronization](../../global/reference/cli/options.md#sync-mode) with -[pruning](../../global/concepts/Pruning.md) enabled requires approximately 750 GB of disk space. +[pruning](../concepts/data-storage-formats.md) enabled requires approximately 750 GB of disk space. [Full synchronization](../../global/reference/cli/options.md#sync-mode) requires approximately 3 TB. ## Disk type diff --git a/docs/public-networks/how-to/connect/sync-node.md b/docs/public-networks/how-to/connect/sync-node.md index ace859a5ca5..0fc8bb80041 100644 --- a/docs/public-networks/how-to/connect/sync-node.md +++ b/docs/public-networks/how-to/connect/sync-node.md @@ -108,7 +108,7 @@ 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](../../../global/concepts/genesis-file.md). +file](../../concepts/genesis-file.md). You can configure a checkpoint in the genesis file by specifying the block hash, number, and total difficulty as in the following example. diff --git a/docs/public-networks/index.md b/docs/public-networks/index.md index 45fa2a56b2a..9954271be9b 100644 --- a/docs/public-networks/index.md +++ b/docs/public-networks/index.md @@ -7,4 +7,4 @@ description: Public networks overview Besu serves as an [execution client](concepts/the-merge.md) on public proof-of-stake Ethereum networks such as Ethereum Mainnet, Ropsten, Goerli, Sepolia, and the Merge testnet. -You can also run Besu using proof of work on [Ethereum Classic](../global/how-to/configure/mining.md). +You can also run Besu using proof of work on [Ethereum Classic](how-to/use-pow/mining.md). diff --git a/docs/public-networks/tutorials/merge-testnet.md b/docs/public-networks/tutorials/merge-testnet.md index 98587e27cd6..e7ed2d93710 100644 --- a/docs/public-networks/tutorials/merge-testnet.md +++ b/docs/public-networks/tutorials/merge-testnet.md @@ -11,7 +11,7 @@ as a [consensus client](../concepts/the-merge.md#consensus-clients) on the ## 1. Install Besu and Teku -Install [Besu](../../global/get-started/install/binary-distribution.md) and +Install [Besu](../get-started/install/binary-distribution.md) and [Teku](https://docs.teku.consensys.net/en/stable/HowTo/Get-Started/Installation-Options/Install-Binaries/). Ensure you meet the prerequisites for the installation option you use. diff --git a/mkdocs.yml b/mkdocs.yml index 83dc9d7935c..1d483077821 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -331,7 +331,7 @@ plugins: HowTo/Get-Started/Install-Binaries.md: public-networks/get-started/install/binary-distribution.md HowTo/Get-Started/Build-from-source.md: public-networks/get-started/install/index.md HowTo/Get-Started/Run-Docker-Image.md: public-networks/get-started/install/run-docker-image.md - HowTo/Deploy/High-Availability.md: global/how-to/configure/Configure-HA/High-Availability.md + # HowTo/Deploy/High-Availability.md: global/how-to/configure/Configure-HA/High-Availability.md HowTo/Deploy/Monitoring-Performance.md: public-networks/how-to/monitor/metrics.md HowTo/Upgrade/Upgrade-Network.md: public-networks/how-to/node.md HowTo/Find-and-Connect/Using-UPnP.md: public-networks/how-to/connect/specify-nat.md From 3b0e720fcf1dae77cfe15f8fdf488f7537ba4d1c Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Tue, 19 Jul 2022 23:00:00 -0700 Subject: [PATCH 19/31] more link fixes Signed-off-by: Alexandra Tran --- docs/private-networks/get-started/system-requirements.md | 6 +++--- docs/private-networks/how-to/configure/consensus/ibft.md | 2 +- docs/public-networks/how-to/use-engine-api.md | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/private-networks/get-started/system-requirements.md b/docs/private-networks/get-started/system-requirements.md index 13d64936261..3df9ac5462f 100644 --- a/docs/private-networks/get-started/system-requirements.md +++ b/docs/private-networks/get-started/system-requirements.md @@ -10,8 +10,8 @@ Private network system requirements depend on many factors, including: * Size of the world state for the network. * Number of transactions submitted to the network. * [Block gas limit](../../global/reference/genesis-items.md#genesis-block-parameters). -* Number and complexity of [JSON-RPC](../../global/how-to/use-besu-api/json-rpc.md), - [PubSub](../../global/how-to/use-besu-api/rpc-pubsub.md), or [GraphQL](../../global/how-to/use-besu-api/graphql.md) queries +* Number and complexity of [JSON-RPC](../how-to/use-besu-api/json-rpc.md), + [PubSub](../how-to/use-besu-api/rpc-pubsub.md), or [GraphQL](../how-to/use-besu-api/graphql.md) queries handled by the node. Participation in private networks is typically restricted in some way, so the volume of traffic is @@ -20,7 +20,7 @@ much lower than on Mainnet, resulting in lower system requirements. ## Determining system requirements To determine system requirements, check CPU and disk space requirements using -[Prometheus](../../global/how-to/monitor/metrics.md#monitor-node-performance-using-prometheus). Grafana provides a +[Prometheus](../how-to/monitor/metrics.md). Grafana provides a [sample dashboard](https://grafana.com/grafana/dashboards/10273) for Besu. ## Java Virtual Machine size diff --git a/docs/private-networks/how-to/configure/consensus/ibft.md b/docs/private-networks/how-to/configure/consensus/ibft.md index b0bc25a2b2f..76337805013 100644 --- a/docs/private-networks/how-to/configure/consensus/ibft.md +++ b/docs/private-networks/how-to/configure/consensus/ibft.md @@ -29,7 +29,7 @@ You can [create a private network using IBFT](../../../tutorials/ibft/index.md). ## Genesis file -To use IBFT 2.0, Besu requires an IBFT 2.0 [genesis file](../../../../global/concepts/genesis-file.md). The genesis file defines properties +To use IBFT 2.0, Besu requires an IBFT 2.0 [genesis file](../../../concepts/genesis-file.md). The genesis file defines properties specific to IBFT 2.0. !!! example "Example IBFT 2.0 genesis file" diff --git a/docs/public-networks/how-to/use-engine-api.md b/docs/public-networks/how-to/use-engine-api.md index 9467dd481ad..924a00f2c76 100644 --- a/docs/public-networks/how-to/use-engine-api.md +++ b/docs/public-networks/how-to/use-engine-api.md @@ -5,7 +5,7 @@ description: How to enable and use the Engine API # Use the Engine API After [The Merge](../concepts/the-merge.md), consensus and execution clients communicate with each other using the Engine API. -These [API methods](../reference/engine-api/index.md) are a separate subsection of the [JSON-RPC API](../../global/how-to/use-besu-api/index.md). +These [API methods](../reference/engine-api/index.md) are a separate subsection of the [JSON-RPC API](../how-to/use-besu-api/index.md). ## Configure the Engine API @@ -51,7 +51,7 @@ Specify "*" for `--engine-host-allowlist` to effectively disable host protection ## Authentication -By default, [authentication](../../global/how-to/use-besu-api/authenticate.md) for the Engine API is enabled. +By default, [authentication](../how-to/use-besu-api/authenticate.md) for the Engine API is enabled. To disable, set the [`--engine-jwt-disabled`](../../global/reference/cli/options.md#engine-jwt-disabled) option to `true`. !!! warning From 30df4ce4b958e92045c7db6e7c6572bf19f167c6 Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Sat, 23 Jul 2022 14:49:36 -0700 Subject: [PATCH 20/31] restructure #3 - no variables Signed-off-by: Alexandra Tran --- docs/global/concepts/Network-vs-Node.md | 8 +- docs/global/concepts/Pruning.md | 4 +- docs/global/concepts/events-and-logs.md | 212 - docs/global/concepts/genesis-file.md | 48 - docs/global/concepts/network-and-chain-id.md | 77 - docs/global/concepts/node-keys.md | 127 - .../get-started/install/Build-from-source.md | 16 - .../install/binary-distribution.md | 83 - docs/global/get-started/install/index.md | 17 - .../get-started/install/run-docker-image.md | 138 - .../Configure-HA/High-Availability.md | 36 +- .../Configure-HA/Sample-Configuration.md | 4 +- .../how-to/configure/configuration-file.md | 65 - docs/global/how-to/configure/mining.md | 92 - .../how-to/configure/pass-jvm-options.md | 21 - docs/global/how-to/connect/configure-ports.md | 61 - docs/global/how-to/connect/manage-peers.md | 90 - docs/global/how-to/connect/specify-nat.md | 105 - docs/global/how-to/connect/static-nodes.md | 76 - .../global/how-to/develop/client-libraries.md | 26 - docs/global/how-to/develop/truffle.md | 58 - docs/global/how-to/monitor/index.md | 14 - docs/global/how-to/monitor/logging.md | 81 - docs/global/how-to/monitor/metrics.md | 305 - docs/global/how-to/send-transactions.md | 76 - .../how-to/troubleshoot/Troubleshooting.md | 26 +- docs/global/how-to/troubleshoot/evm-tool.md | 79 - .../troubleshoot/java-flight-recorder.md | 33 - .../how-to/troubleshoot/trace-transactions.md | 48 - .../global/how-to/use-besu-api/access-logs.md | 220 - .../how-to/use-besu-api/authenticate.md | 280 - docs/global/how-to/use-besu-api/graphql.md | 98 - docs/global/how-to/use-besu-api/index.md | 109 - docs/global/how-to/use-besu-api/json-rpc.md | 271 - docs/global/how-to/use-besu-api/rpc-pubsub.md | 488 - docs/global/reference/api/index.md | 8134 ----------------- docs/global/reference/api/objects.md | 309 - docs/global/reference/cli/options.md | 3959 -------- docs/global/reference/cli/subcommands.md | 345 - docs/global/reference/disclosure.md | 13 - docs/global/reference/evm-tool.md | 375 - docs/global/reference/genesis-items.md | 153 - docs/global/reference/projects-using-besu.md | 11 - docs/global/reference/trace-types.md | 172 - .../concepts/events-and-logs.md | 1 - .../private-networks/concepts/genesis-file.md | 1 - docs/private-networks/concepts/index.md | 19 + .../concepts/network-and-chain-id.md | 1 - docs/private-networks/concepts/node-keys.md | 1 - .../concepts/permissioning/onchain.md | 4 +- .../concepts/privacy/flexible-privacy.md | 16 +- .../concepts/privacy/multi-tenancy.md | 2 +- .../concepts/privacy/plugin.md | 4 +- .../concepts/privacy/privacy-groups.md | 2 +- .../privacy/private-transactions/index.md | 12 +- .../private-transactions/processing.md | 6 +- .../install/binary-distribution.md | 84 +- .../get-started/install/index.md | 30 +- .../get-started/install/run-docker-image.md | 139 +- .../get-started/start-node.md | 20 +- .../get-started/system-requirements.md | 10 +- docs/private-networks/how-to/backup.md | 4 +- .../{connect => configure}/bootnodes.md | 22 +- .../how-to/configure/configuration-file.md | 1 - .../add-validators-without-voting.md | 4 +- .../how-to/configure/consensus/clique.md | 30 +- .../how-to/configure/consensus/ibft.md | 38 +- .../how-to/configure/consensus/qbft.md | 36 +- .../how-to/configure/contracts.md | 2 +- .../how-to/configure/curves.md | 2 +- .../how-to/configure/free-gas.md | 6 +- .../how-to/configure/mining.md | 1 - .../how-to/configure/pass-jvm-options.md | 1 - .../how-to/configure/tls/client-and-server.md | 24 +- .../how-to/configure/validators.md | 6 +- .../how-to/connect/configure-ports.md | 1 - .../how-to/connect/manage-peers.md | 1 - .../how-to/connect/specify-nat.md | 1 - .../how-to/connect/static-nodes.md | 1 - .../how-to/deploy/ethstats.md | 4 +- .../how-to/develop/client-libraries.md | 1 - .../how-to/develop/truffle.md | 1 - docs/private-networks/how-to/index.md | 33 + docs/private-networks/how-to/monitor/index.md | 20 +- .../how-to/monitor/logging.md | 1 - .../how-to/monitor/metrics.md | 1 - .../how-to/monitor/opentelemetry.md | 8 +- .../concurrent-private-transactions.md | 10 +- .../how-to/send-transactions/index.md | 15 +- .../send-transactions/private-transactions.md | 24 +- .../how-to/send-transactions/revert-reason.md | 24 +- .../how-to/troubleshoot/evm-tool.md | 1 - .../troubleshoot/java-flight-recorder.md | 1 - .../how-to/troubleshoot/trace-transactions.md | 1 - .../{upgrade/protocol.md => upgrade.md} | 8 +- docs/private-networks/how-to/upgrade/node.md | 1 - .../how-to/use-besu-api/access-logs.md | 1 - .../how-to/use-besu-api/authenticate.md | 1 - .../how-to/use-besu-api/graphql.md | 1 - .../how-to/use-besu-api/index.md | 1 - .../how-to/use-besu-api/json-rpc.md | 1 - .../how-to/use-besu-api/rpc-pubsub.md | 1 - .../how-to/use-permissioning/local.md | 48 +- .../how-to/use-permissioning/onchain.md | 6 +- .../access-private-transactions.md | 8 +- .../how-to/use-privacy/besu-extended.md | 14 +- .../how-to/use-privacy/eea-compliant.md | 10 +- .../how-to/use-privacy/flexible.md | 8 +- .../how-to/use-privacy/goquorum-compatible.md | 2 +- .../use-privacy/performance-best-practices.md | 2 +- .../how-to/use-privacy/privacy-groups.md | 6 +- .../how-to/use-privacy/sign-pmts.md | 4 +- .../how-to/use-privacy/web3js-quorum.md | 4 +- docs/private-networks/index.md | 2 +- .../reference/accounts-for-testing.md | 4 +- docs/private-networks/reference/api/index.md | 2160 ++++- .../private-networks/reference/api/objects.md | 57 +- .../private-networks/reference/cli/options.md | 641 +- .../reference/cli/subcommands.md | 140 +- docs/private-networks/reference/disclosure.md | 1 - docs/private-networks/reference/evm-tool.md | 1 - .../reference/genesis-items.md | 1 - docs/private-networks/reference/index.md | 22 + .../reference/projects-using-besu.md | 1 - .../private-networks/reference/trace-types.md | 1 - docs/private-networks/tutorials/clique.md | 30 +- .../tutorials/contracts/index.md | 36 +- docs/private-networks/tutorials/ethash.md | 32 +- docs/private-networks/tutorials/ibft/index.md | 38 +- .../tutorials/ibft/validators.md | 16 +- .../tutorials/kubernetes/nat-manager.md | 14 +- .../tutorials/permissioning/index.md | 48 +- .../tutorials/permissioning/onchain.md | 38 +- .../tutorials/privacy/index.md | 18 +- .../tutorials/privacy/multi-tenancy.md | 22 +- .../tutorials/privacy/quickstart.md | 2 +- .../tutorials/privacy/web3js-quorum.md | 2 +- docs/private-networks/tutorials/qbft.md | 36 +- docs/private-networks/tutorials/quickstart.md | 20 +- .../concepts/data-storage-formats.md | 4 +- .../concepts/events-and-logs.md | 213 +- docs/public-networks/concepts/genesis-file.md | 49 +- .../concepts/network-and-chain-id.md | 78 +- docs/public-networks/concepts/node-keys.md | 128 +- .../concepts/transactions/pool.md} | 6 +- .../concepts/transactions/types.md} | 0 .../concepts/transactions/validation.md} | 0 .../install/binary-distribution.md | 84 +- .../get-started/install/index.md | 23 +- .../get-started/install/run-docker-image.md | 139 +- .../public-networks/get-started/start-node.md | 16 +- .../get-started/system-requirements.md | 4 +- .../how-to/configuration-file.md | 66 +- .../how-to/connect/configure-ports.md | 62 +- .../how-to/connect/manage-peers.md | 91 +- .../how-to/connect/specify-nat.md | 106 +- .../how-to/connect/static-nodes.md | 77 +- .../how-to/connect/sync-node.md | 14 +- .../how-to/develop/client-libraries.md | 27 +- .../public-networks/how-to/develop/truffle.md | 59 +- docs/public-networks/how-to/monitor/index.md | 15 +- .../public-networks/how-to/monitor/logging.md | 82 +- .../public-networks/how-to/monitor/metrics.md | 306 +- docs/public-networks/how-to/node.md | 1 - .../how-to/pass-jvm-options.md | 22 +- .../how-to/prepare-for-the-merge.md | 4 +- .../how-to/send-transactions.md | 77 +- .../how-to/troubleshoot/evm-tool.md | 80 +- .../troubleshoot/java-flight-recorder.md | 34 +- .../how-to/troubleshoot/trace-transactions.md | 49 +- .../how-to/upgrade-node.md} | 4 +- .../how-to/use-besu-api/access-logs.md | 221 +- .../how-to/use-besu-api/authenticate.md | 281 +- .../how-to/use-besu-api/graphql.md | 99 +- .../how-to/use-besu-api/index.md | 110 +- .../how-to/use-besu-api/json-rpc.md | 272 +- .../how-to/use-besu-api/jwt.png | Bin .../how-to/use-besu-api/rpc-pubsub.md | 489 +- docs/public-networks/how-to/use-engine-api.md | 12 +- docs/public-networks/how-to/use-pow/mining.md | 93 +- docs/public-networks/reference/api/index.md | 6001 +++++++++++- docs/public-networks/reference/api/objects.md | 274 +- docs/public-networks/reference/cli/options.md | 3373 ++++++- .../reference/cli/subcommands.md | 244 +- docs/public-networks/reference/disclosure.md | 14 +- .../reference/engine-api/objects.md | 2 +- docs/public-networks/reference/evm-tool.md | 376 +- .../reference/genesis-items.md | 154 +- .../reference/projects-using-besu.md | 12 +- docs/public-networks/reference/trace-types.md | 173 +- .../reference/web3js-quorum.md | 0 .../tutorials/merge-testnet.md | 12 +- mkdocs.navigation.yml | 54 +- mkdocs.redirects.yml | 15 +- 194 files changed, 17868 insertions(+), 17484 deletions(-) delete mode 100644 docs/global/concepts/events-and-logs.md delete mode 100644 docs/global/concepts/genesis-file.md delete mode 100644 docs/global/concepts/network-and-chain-id.md delete mode 100644 docs/global/concepts/node-keys.md delete mode 100644 docs/global/get-started/install/Build-from-source.md delete mode 100644 docs/global/get-started/install/binary-distribution.md delete mode 100644 docs/global/get-started/install/index.md delete mode 100644 docs/global/get-started/install/run-docker-image.md delete mode 100644 docs/global/how-to/configure/configuration-file.md delete mode 100644 docs/global/how-to/configure/mining.md delete mode 100644 docs/global/how-to/configure/pass-jvm-options.md delete mode 100644 docs/global/how-to/connect/configure-ports.md delete mode 100644 docs/global/how-to/connect/manage-peers.md delete mode 100644 docs/global/how-to/connect/specify-nat.md delete mode 100644 docs/global/how-to/connect/static-nodes.md delete mode 100644 docs/global/how-to/develop/client-libraries.md delete mode 100644 docs/global/how-to/develop/truffle.md delete mode 100644 docs/global/how-to/monitor/index.md delete mode 100644 docs/global/how-to/monitor/logging.md delete mode 100644 docs/global/how-to/monitor/metrics.md delete mode 100644 docs/global/how-to/send-transactions.md delete mode 100644 docs/global/how-to/troubleshoot/evm-tool.md delete mode 100644 docs/global/how-to/troubleshoot/java-flight-recorder.md delete mode 100644 docs/global/how-to/troubleshoot/trace-transactions.md delete mode 100644 docs/global/how-to/use-besu-api/access-logs.md delete mode 100644 docs/global/how-to/use-besu-api/authenticate.md delete mode 100644 docs/global/how-to/use-besu-api/graphql.md delete mode 100644 docs/global/how-to/use-besu-api/index.md delete mode 100644 docs/global/how-to/use-besu-api/json-rpc.md delete mode 100644 docs/global/how-to/use-besu-api/rpc-pubsub.md delete mode 100644 docs/global/reference/api/index.md delete mode 100644 docs/global/reference/api/objects.md delete mode 100644 docs/global/reference/cli/options.md delete mode 100644 docs/global/reference/cli/subcommands.md delete mode 100644 docs/global/reference/disclosure.md delete mode 100644 docs/global/reference/evm-tool.md delete mode 100644 docs/global/reference/genesis-items.md delete mode 100644 docs/global/reference/projects-using-besu.md delete mode 100644 docs/global/reference/trace-types.md delete mode 100644 docs/private-networks/concepts/events-and-logs.md delete mode 100644 docs/private-networks/concepts/genesis-file.md create mode 100644 docs/private-networks/concepts/index.md delete mode 100644 docs/private-networks/concepts/network-and-chain-id.md delete mode 100644 docs/private-networks/concepts/node-keys.md rename docs/private-networks/how-to/{connect => configure}/bootnodes.md (77%) delete mode 100644 docs/private-networks/how-to/configure/configuration-file.md delete mode 100644 docs/private-networks/how-to/configure/mining.md delete mode 100644 docs/private-networks/how-to/configure/pass-jvm-options.md delete mode 100644 docs/private-networks/how-to/connect/configure-ports.md delete mode 100644 docs/private-networks/how-to/connect/manage-peers.md delete mode 100644 docs/private-networks/how-to/connect/specify-nat.md delete mode 100644 docs/private-networks/how-to/connect/static-nodes.md delete mode 100644 docs/private-networks/how-to/develop/client-libraries.md delete mode 100644 docs/private-networks/how-to/develop/truffle.md create mode 100644 docs/private-networks/how-to/index.md delete mode 100644 docs/private-networks/how-to/monitor/logging.md delete mode 100644 docs/private-networks/how-to/monitor/metrics.md delete mode 100644 docs/private-networks/how-to/troubleshoot/evm-tool.md delete mode 100644 docs/private-networks/how-to/troubleshoot/java-flight-recorder.md delete mode 100644 docs/private-networks/how-to/troubleshoot/trace-transactions.md rename docs/private-networks/how-to/{upgrade/protocol.md => upgrade.md} (82%) delete mode 100644 docs/private-networks/how-to/upgrade/node.md delete mode 100644 docs/private-networks/how-to/use-besu-api/access-logs.md delete mode 100644 docs/private-networks/how-to/use-besu-api/authenticate.md delete mode 100644 docs/private-networks/how-to/use-besu-api/graphql.md delete mode 100644 docs/private-networks/how-to/use-besu-api/index.md delete mode 100644 docs/private-networks/how-to/use-besu-api/json-rpc.md delete mode 100644 docs/private-networks/how-to/use-besu-api/rpc-pubsub.md delete mode 100644 docs/private-networks/reference/disclosure.md delete mode 100644 docs/private-networks/reference/evm-tool.md delete mode 100644 docs/private-networks/reference/genesis-items.md create mode 100644 docs/private-networks/reference/index.md delete mode 100644 docs/private-networks/reference/projects-using-besu.md delete mode 100644 docs/private-networks/reference/trace-types.md rename docs/{global/concepts/Transactions/Transaction-Pool.md => public-networks/concepts/transactions/pool.md} (93%) rename docs/{global/concepts/Transactions/Transaction-Types.md => public-networks/concepts/transactions/types.md} (100%) rename docs/{global/concepts/Transactions/Transaction-Validation.md => public-networks/concepts/transactions/validation.md} (100%) delete mode 100644 docs/public-networks/how-to/node.md rename docs/{global/how-to/upgrade/node.md => public-networks/how-to/upgrade-node.md} (96%) rename docs/{global => public-networks}/how-to/use-besu-api/jwt.png (100%) rename docs/{global => public-networks}/reference/web3js-quorum.md (100%) diff --git a/docs/global/concepts/Network-vs-Node.md b/docs/global/concepts/Network-vs-Node.md index dd107ac418c..82d160995cf 100644 --- a/docs/global/concepts/Network-vs-Node.md +++ b/docs/global/concepts/Network-vs-Node.md @@ -6,11 +6,11 @@ description: Configuring Besu at the network level compared to the node level You can configure Besu at the network level and the node level. -Specify network-wide settings in the [genesis file](../reference/genesis-items.md). For example, +Specify network-wide settings in the [genesis file](../../public-networks/reference/genesis-items.md). For example, include `evmStackSize` or specify the [consensus mechanism](../../private-networks/how-to/configure/consensus/index.md). Specify node settings on the command line or in the -[node configuration file](../how-to/configure/configuration-file.md). For example, enable -[JSON-RPC API methods](../reference/api/index.md) or specify the -[data directory](../reference/cli/options.md#data-path) for the node. +[node configuration file](../../public-networks/how-to/configuration-file.md). For example, enable +[JSON-RPC API methods](../../public-networks/reference/api/index.md) or specify the +[data directory](../../public-networks/reference/cli/options.md#data-path) for the node. diff --git a/docs/global/concepts/Pruning.md b/docs/global/concepts/Pruning.md index 0a222ef4511..fa26c392511 100644 --- a/docs/global/concepts/Pruning.md +++ b/docs/global/concepts/Pruning.md @@ -5,10 +5,10 @@ description: Pruning concept information. # Pruning In Besu, pruning reduces the storage required by removing state trie nodes that are unreachable -from [recent blocks](../reference/cli/options.md#pruning-blocks-retained). +from [recent blocks](../../public-networks/reference/cli/options.md#pruning-blocks-retained). Pruning is disabled by default, and can be enabled with the -[`--pruning-enabled`](../reference/cli/options.md#pruning-enabled) command line option. +[`--pruning-enabled`](../../public-networks/reference/cli/options.md#pruning-enabled) command line option. !!! Important diff --git a/docs/global/concepts/events-and-logs.md b/docs/global/concepts/events-and-logs.md deleted file mode 100644 index 02288456601..00000000000 --- a/docs/global/concepts/events-and-logs.md +++ /dev/null @@ -1,212 +0,0 @@ ---- -description: Hyperledger Besu events and logs ---- - -# 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). - -!!! example - - A log entry for an event with one indexed parameter: - - ```json - { - "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. - -!!! example - - 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); - } - } - ``` - -!!! example - - 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. - -!!! example - - 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. - -!!! example - - 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. - -!!! example - - 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/docs/global/concepts/genesis-file.md b/docs/global/concepts/genesis-file.md deleted file mode 100644 index e2cf8adedec..00000000000 --- a/docs/global/concepts/genesis-file.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -description: Configuring a network using the genesis file ---- - -# 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, Rinkeby) 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. - -!!! example "Example IBFT 2.0 genesis file" - - ```json - { - "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/docs/global/concepts/network-and-chain-id.md b/docs/global/concepts/network-and-chain-id.md deleted file mode 100644 index 8c69773390b..00000000000 --- a/docs/global/concepts/network-and-chain-id.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -description: Besu network ID and chain ID implementation ---- - -# 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. - -!!! example "Chain ID in the genesis file" - - ```json - { - "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 | -| `ropsten` | ETH | 3 | 3 | Test | -| `rinkeby` | ETH | 4 | 4 | Test | -| `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 | -| `kotti` | ETC | 6 | 6 | Test | -| `astor` | ETC | 212 | 212 | Test | - -## 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). - -!!! important - - 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/docs/global/concepts/node-keys.md b/docs/global/concepts/node-keys.md deleted file mode 100644 index 7546f182710..00000000000 --- a/docs/global/concepts/node-keys.md +++ /dev/null @@ -1,127 +0,0 @@ ---- -description: Private and public key, and node address used to identify nodes ---- - -# 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. - -## Specifying 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`. - -!!! example - - ```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 [`perm_addNodesToAllowlist`](../reference/api/index.md#perm_addnodestoallowlist) method specify nodes by -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`. - -!!! example - - 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 - -!!! warning - - Enode URL domain name support is an experimental 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 Besu's `--Xdns-enabled` experimental command line option. - -!!! example "Example enode URL using a domain name" - - ```bash - 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 experimental 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/docs/global/get-started/install/Build-from-source.md b/docs/global/get-started/install/Build-from-source.md deleted file mode 100644 index ddfaa052581..00000000000 --- a/docs/global/get-started/install/Build-from-source.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -description: Install or Hyperledger Besu from source ---- - -# 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/docs/global/get-started/install/binary-distribution.md b/docs/global/get-started/install/binary-distribution.md deleted file mode 100644 index 1fc1f78dd87..00000000000 --- a/docs/global/get-started/install/binary-distribution.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -description: Install or upgrade Hyperledger Besu from binary distribution ---- - -# Install binary distribution - -## MacOS with Homebrew - -### Prerequisites - -* [Homebrew](https://brew.sh/) -* Java JDK - -!!!important - - Hyperledger Besu supports: - - * MacOS High Sierra 10.13 or later versions. - * Java 11+. - We recommend using at least Java 17 because that will be the minimum requirement in the next Besu version series. - 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 - - If you've upgraded your MacOS version between installing and upgrading Besu, when running `brew upgrade - hyperledger/besu/besu` you may be prompted to reinstall command line tools with `xcode-select --install`. - -!!! note - - 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](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. - -### 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/docs/global/get-started/install/index.md b/docs/global/get-started/install/index.md deleted file mode 100644 index 8cfdb34f919..00000000000 --- a/docs/global/get-started/install/index.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Installation options -description: Options for getting started with Hyperledger Besu ---- - -# Options for getting started - -## New to Hyperledger Besu? - -Get started with the [Developer Quickstart](../../../private-networks/tutorials/quickstart.md). -Use the quickstart to rapidly generate local blockchain networks. - -## Installation options - -* [Docker image](run-docker-image.md) -* [Binaries](binary-distribution.md) -* [Build from source](Build-from-source.md) diff --git a/docs/global/get-started/install/run-docker-image.md b/docs/global/get-started/install/run-docker-image.md deleted file mode 100644 index 02833bf336d..00000000000 --- a/docs/global/get-started/install/run-docker-image.md +++ /dev/null @@ -1,138 +0,0 @@ ---- -description: Run Hyperledger Besu using the official docker image ---- - -# 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 - -!!! important - - The Docker image does not 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). - -!!! example - - 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 - -!!! important - - 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#besu-environment-variables) with the -Docker image instead of the command line options. - -!!! example - - ```bash - docker run -p 30303:30303 -p 8545:8545 -e BESU_RPC_HTTP_ENABLED=true -e BESU_NETWORK=goerli hyperledger/besu:latest - ``` - -### Run a node for testing - -To run a node that mines blocks at a rate suitable for testing purposes with WebSockets 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 Rinkeby testnet - -To run a node on Rinkeby: - -```bash -docker run -p 30303:30303 --mount type=bind,source=/,target=/var/lib/besu hyperledger/besu:latest --network=rinkeby --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/docs/global/how-to/configure/Configure-HA/High-Availability.md b/docs/global/how-to/configure/Configure-HA/High-Availability.md index 4a20bfaef74..acdf56fc23c 100644 --- a/docs/global/how-to/configure/Configure-HA/High-Availability.md +++ b/docs/global/how-to/configure/Configure-HA/High-Availability.md @@ -5,8 +5,8 @@ description: Hyperledger Besu high availability # High availability of JSON-RPC and RPC Pub/Sub APIs To enable high availability to the -[RPC Pub/Sub API over WebSockets](../../use-besu-api/rpc-pubsub.md) or the -[JSON-RPC API](../../use-besu-api/json-rpc.md), run and synchronize more than one +[RPC Pub/Sub API over WebSockets](../../../../public-networks/how-to/use-besu-api/rpc-pubsub.md) or the +[JSON-RPC API](../../../../public-networks/how-to/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. @@ -30,7 +30,7 @@ Use a load balancer to distribute requests across nodes in the cluster that are ## Determining when a node is ready Use the -[readiness endpoint](../../use-besu-api/json-rpc.md#readiness-and-liveness-endpoints) to +[readiness endpoint](../../../../public-networks/how-to/use-besu-api/json-rpc.md#readiness-and-liveness-endpoints) to determine when a node is ready. !!! note @@ -41,13 +41,13 @@ determine when a node is ready. ## Transaction nonces Besu obtains the nonce for the next transaction using -[`eth_getTransactionCount`](../../../reference/api/index.md#eth_gettransactioncount). The nonce +[`eth_getTransactionCount`](../../../../public-networks/reference/api/index.md#eth_gettransactioncount). The nonce depends on the transactions in the -[transaction pool](../../../concepts/Transactions/Transaction-Pool.md). If sending -[`eth_getTransactionCount`](../../../reference/api/index.md#eth_gettransactioncount) and -[`eth_sendRawTransaction`](../../../reference/api/index.md#eth_sendrawtransaction) requests for a +[transaction pool](../../../../public-networks/concepts/transactions/pool.md). If sending +[`eth_getTransactionCount`](../../../../public-networks/reference/api/index.md#eth_gettransactioncount) and +[`eth_sendRawTransaction`](../../../../public-networks/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 +[`eth_getTransactionCount`](../../../../public-networks/reference/api/index.md#eth_gettransactioncount) results might be incorrect. !!! note @@ -69,14 +69,14 @@ To get correct nonces when distributing requests across a cluster, either: 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). +* [RPC Pub/Sub over WebSockets](../../../../public-networks/how-to/use-besu-api/rpc-pubsub.md). +* [Filters over HTTP](../../../../public-networks/how-to/use-besu-api/access-logs.md). -We recommend using [RPC Pub/Sub over WebSockets](../../use-besu-api/rpc-pubsub.md) because +We recommend using [RPC Pub/Sub over WebSockets](../../../../public-networks/how-to/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 +If using [filters over HTTP](../../../../public-networks/how-to/use-besu-api/access-logs.md), configure the load balancer in sticky mode to associate the subscription with a specific node. ## Recovering from dropped subscriptions @@ -88,7 +88,7 @@ Dropped subscriptions can occur because of: 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#subscribing): +[subscription type](../../../../public-networks/how-to/use-besu-api/rpc-pubsub.md#subscribing): * [`newHeads`](#new-headers) * [`logs`](#logs) @@ -100,17 +100,17 @@ node. To recover dropped messages, create another subscription and follow the pr 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). +[`eth_getBlockByNumber`](../../../../public-networks/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). +the current chain head, use [`eth_getLogs`](../../../../public-networks/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). +[`txpool_besuTransactions`](../../../../public-networks/reference/api/index.md#txpool_besutransactions). !!! note @@ -119,7 +119,7 @@ To request all pending transactions for the new node, use ### Dropped pending transactions To request all pending transactions for the new node, use -[`txpool_besuTransactions`](../../../reference/api/index.md#txpool_besutransactions). +[`txpool_besuTransactions`](../../../../public-networks/reference/api/index.md#txpool_besutransactions). !!! note @@ -128,4 +128,4 @@ To request all pending transactions for the new node, use ### 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). +node, use [`eth_syncing`](../../../../public-networks/reference/api/index.md#eth_syncing). diff --git a/docs/global/how-to/configure/Configure-HA/Sample-Configuration.md b/docs/global/how-to/configure/Configure-HA/Sample-Configuration.md index 762c668d95e..7c8ec23d91d 100644 --- a/docs/global/how-to/configure/Configure-HA/Sample-Configuration.md +++ b/docs/global/how-to/configure/Configure-HA/Sample-Configuration.md @@ -8,7 +8,7 @@ description: Sample load balancers 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 +[liveness endpoint](../../../../public-networks/how-to/use-besu-api/json-rpc.md#readiness-and-liveness-endpoints) for health checks. For finer grain control, use the Application Load Balancer: @@ -17,7 +17,7 @@ For finer grain control, use the Application Load Balancer: * 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) + [liveness endpoint](../../../../public-networks/how-to/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). diff --git a/docs/global/how-to/configure/configuration-file.md b/docs/global/how-to/configure/configuration-file.md deleted file mode 100644 index 35deff24008..00000000000 --- a/docs/global/how-to/configure/configuration-file.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -description: Using the Hyperledger Besu configuration file ---- - -# Using the Hyperledger Besu configuration file - -To specify command line options in a file, use a TOML configuration file. - -Save the configuration file and reuse it across node startups. To specify the configuration file, -use the [`--config-file`](../../reference/cli/options.md#config-file) option. - -To override an option specified in the configuration file, either specify the same option on the -command line or as an -[environment variable](../../reference/cli/options.md#specifying-options). For options -specified in more than one place, the order of precedence is command line, environment variable, -configuration file. - -## 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. - -!!!tip - - The [command line reference](../../reference/cli/options.md) includes configuration file - examples for each option. - -!!!example "Sample TOML configuration file" - - ```toml - # 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" - ``` - -!!!example "Starting Besu with a configuration file" - - ```bash - besu --config-file=/home/me/me_node/config.toml - ``` diff --git a/docs/global/how-to/configure/mining.md b/docs/global/how-to/configure/mining.md deleted file mode 100644 index d81da8583a5..00000000000 --- a/docs/global/how-to/configure/mining.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -description: Using Hyperledger Besu for PoW CPU mining ---- - -# Mining - -Hyperledger Besu supports CPU and GPU mining, which are configured using command line options. - -GPU mining support testing 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. - -## 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. - -## Hyperledger Besu mined blocks - -Hyperledger 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` diff --git a/docs/global/how-to/configure/pass-jvm-options.md b/docs/global/how-to/configure/pass-jvm-options.md deleted file mode 100644 index 3b72034ee97..00000000000 --- a/docs/global/how-to/configure/pass-jvm-options.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -description: Passing Java virtual machine JVM options to Hyperledger Besu at runtime ---- - -# Passing JVM options - -To perform tasks such as attaching a debugger or configuring the garbage collector, pass 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. - -!!! example - - ```bash - BESU_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 \ - besu --network=rinkeby - ``` diff --git a/docs/global/how-to/connect/configure-ports.md b/docs/global/how-to/connect/configure-ports.md deleted file mode 100644 index 152dc8d35f3..00000000000 --- a/docs/global/how-to/connect/configure-ports.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -description: To enable communication you must expose Hyperledger Besu ports appropriately ---- - -# Configuring 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](../../../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). - -!!! 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#monitor-node-performance-using-prometheus), 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/docs/global/how-to/connect/manage-peers.md b/docs/global/how-to/connect/manage-peers.md deleted file mode 100644 index 91be9096127..00000000000 --- a/docs/global/how-to/connect/manage-peers.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -description: Managing Hyperledger Besu peers ---- - -# 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. - -We recommend [using bootnodes](../../../private-networks/how-to/connect/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#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. - -!!! example "Sample log output" - - ```bash - 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. diff --git a/docs/global/how-to/connect/specify-nat.md b/docs/global/how-to/connect/specify-nat.md deleted file mode 100644 index a04f37ab17e..00000000000 --- a/docs/global/how-to/connect/specify-nat.md +++ /dev/null @@ -1,105 +0,0 @@ ---- -description: Configuring NAT with Hyperledger Besu ---- - -# Configuring NAT - -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. - -!!! example - 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. - -!!! important - - 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. - -!!! important - - 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/docs/global/how-to/connect/static-nodes.md b/docs/global/how-to/connect/static-nodes.md deleted file mode 100644 index 3ca1b160050..00000000000 --- a/docs/global/how-to/connect/static-nodes.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -description: Configuring static nodes ---- - -# Static nodes - -Static nodes are a configured set of trusted nodes. Static nodes are exempt from -[maximum peer](manage-peers.md#limiting-peers) and -[remote connection](manage-peers.md#limiting-remote-connections) limits. - -Besu attempts to maintain connections with static nodes by periodically initiating a connection to -any unconnected static node. - -!!! tip - - Bootnodes and static nodes are parallel methods for finding peers. Depending on your use case, - you can use only bootnodes, only static nodes, or both bootnodes and statics nodes. For - example, you run multiple nodes on Mainnet (discovery using bootnodes), but want to ensure your - nodes are always connected (using static nodes). - - To find peers, configure one or more [bootnodes](../../private-networks/how-to/connect/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). - -!!! example - - ```json - [ - "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/docs/global/how-to/develop/client-libraries.md b/docs/global/how-to/develop/client-libraries.md deleted file mode 100644 index 32a2ee191af..00000000000 --- a/docs/global/how-to/develop/client-libraries.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -description: Hyperledger Besu client libraries ---- - -# 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](../../../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/docs/global/how-to/develop/truffle.md b/docs/global/how-to/develop/truffle.md deleted file mode 100644 index 997dbd03ae1..00000000000 --- a/docs/global/how-to/develop/truffle.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -description: Using Hyperledger Besu with Truffle ---- - -# Using Hyperledger Besu with Truffle - -Developing for Hyperledger Besu using Truffle is the same as developing for public Ethereum -networks using Truffle. Truffle supports Besu with the only difference being Besu does not support -private key management. To use Besu with Truffle, you must configure a Truffle wallet. - -## Install a Truffle wallet - -To install a Truffle wallet: - -```bash -npm install --save @truffle/hdwallet-provider -``` - -!!!note - - With Truffle 5, you must use a Web3 1.0 enabled wallet or the Truffle tasks hang. - -### Update the Truffle configuration file - -To add the wallet provider, update the `truffle-config.js` file in the project directory. Replace: - -* `` with the JSON-RPC endpoint (IP address and port) of a Besu node. -* `` with the private key of an Ethereum account containing Ether. - -```javascript -const PrivateKeyProvider = require("@truffle/hdwallet-provider"); -const privateKey = ""; -const privateKeyProvider = new PrivateKeyProvider(privateKey, ""); - -module.exports = { - // See - // for more about customizing your Truffle configuration! - networks: { - besuWallet: { - provider: privateKeyProvider, - network_id: "*" - }, - } -}; -``` - -### Start a Besu node - -Start a Besu node with JSON-RPC enabled on the endpoint specified in the Truffle configuration -file. - -### Deploy a contract - -To deploy a contract onto the Besu network: - -```bash -truffle migrate --network besuWallet -``` diff --git a/docs/global/how-to/monitor/index.md b/docs/global/how-to/monitor/index.md deleted file mode 100644 index 1e35e1750d5..00000000000 --- a/docs/global/how-to/monitor/index.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -description: Monitoring using metrics and logging ---- - -# Monitoring - -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/docs/global/how-to/monitor/logging.md b/docs/global/how-to/monitor/logging.md deleted file mode 100644 index 04d19c60ed1..00000000000 --- a/docs/global/how-to/monitor/logging.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -description: Hyperledger Besu log level setting and log formatting -path: blob/master/besu/src/main/resources/ -source: log4j2.xml ---- - -# 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. - -!!! example "debug.xml" - - ```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. - -!!! example - - To set the debug logging and start Besu connected to the Rinkeby testnet: - - ```bash - LOG4J_CONFIGURATION_FILE=./debug.xml besu --network=rinkeby - ``` - -### 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/docs/global/how-to/monitor/metrics.md b/docs/global/how-to/monitor/metrics.md deleted file mode 100644 index 923e3875b08..00000000000 --- a/docs/global/how-to/monitor/metrics.md +++ /dev/null @@ -1,305 +0,0 @@ ---- -description: Monitoring and metrics ---- - -# 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 Grafana dashboard](https://grafana.com/dashboards/10273). - -The Besu example networks have [monitoring with Prometheus and Grafana configured]. - -!!! example - - 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. - -## Setting up and running 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: - - !!! example - - === "Fragment to insert in prometheus.yml" - - ```yml - - job_name: besu - scrape_interval: 15s - scrape_timeout: 10s - metrics_path: /metrics - scheme: http - static_configs: - - targets: - - localhost:9545 - ``` - - === "Full prometheus.yml example" - - ```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. - -1. 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: - - === "Syntax" - - ```bash - besu --network=dev --miner-enabled --miner-coinbase --rpc-http-cors-origins="all" --rpc-http-enabled --metrics-enabled - ``` - - === "Example" - - ```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. - - !!! important - - 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` - has to be in `--host-allowlist`. - -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). - - !!! tip - - Use a log ingestion tool, such as Logstash, to parse the logs and alert you to configured anomalies. - -## Running 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 Pushgateway](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: - - === "Syntax" - - ```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 - ``` - - === "Example" - - ```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"}`. - -## Metrics list - -The following table lists available metrics. -Each metric starts with a metric category prefix. -Metrics specific to Besu use the `besu_` prefix, followed by another metric category. -Metric categories can be enabled using the [`metrics-category`](../../reference/cli/options.md#metrics-category) command line option. -If a metric has a JSON-RPC equivalent, it is included in the definition column. - -| Name | Metric type | Definition | -| --- | --- | --- | -| `besu_blockchain_chain_head_gas_limit` | Gauge | Block gas limit of the current chain head block | -| `besu_blockchain_chain_head_gas_used` | Gauge | Gas used by the current chain head block | -| `besu_blockchain_chain_head_ommer_count` | Gauge | Number of uncles in the current chain head block (JSON-RPC equivalent: [`eth_getUncleCountByBlockHash`](../../reference/api/index.md#eth_getunclecountbyblockhash) or [`eth_getUncleCountByBlockNumber`](../../reference/api/index.md#eth_getunclecountbyblocknumber)) | -| `besu_blockchain_chain_head_timestamp` | Gauge | Timestamp from the current chain head | -| `besu_blockchain_chain_head_transaction_count` | Gauge | Number of transactions in the current chain head block (JSON-RPC equivalent: [`eth_getBlockTransactionCountByHash`](../../reference/api/index.md#eth_getblocktransactioncountbyhash) or [`eth_getBlockTransactionCountByNumber`](../../reference/api/index.md#eth_getblocktransactioncountbynumber)) | -| `besu_blockchain_difficulty_total` | Gauge | Difficulty of the chain head (JSON-RPC equivalent: `difficulty` of [`admin_peers`](../../reference/api/index.md#admin_peers)) | -| `besu_executors_ethscheduler_computation_active_threads_current` | Gauge | Current number of threads executing computation tasks | -| `besu_executors_ethscheduler_computation_completed_tasks_total` | Gauge | Total number of computation tasks executed | -| `besu_executors_ethscheduler_computation_pool_size_current` | Gauge | Current number of threads in the computation thread pool | -| `besu_executors_ethscheduler_computation_queue_length_current` | Gauge | Current number of computation tasks awaiting execution | -| `besu_executors_ethscheduler_computation_rejected_tasks_total` | Counter | Total number of tasks rejected by this computation executor | -| `besu_executors_ethscheduler_computation_submitted_tasks_total` | Gauge | Total number of computation tasks submitted | -| `besu_executors_ethscheduler_timer_active_threads_current` | Gauge | Current number of threads executing timer tasks | -| `besu_executors_ethscheduler_timer_completed_tasks_total` | Gauge | Total number of timer tasks executed | -| `besu_executors_ethscheduler_timer_pool_size_current` | Gauge | Current number of threads in the timer thread pool | -| `besu_executors_ethscheduler_timer_queue_length_current` | Gauge | Current number of timer tasks awaiting execution | -| `besu_executors_ethscheduler_timer_rejected_tasks_total` | Counter | Total number of tasks rejected by this timer executor | -| `besu_executors_ethscheduler_timer_submitted_tasks_total` | Gauge | Total number of timer tasks submitted | -| `besu_executors_ethscheduler_workers_active_threads_current` | Gauge | Current number of threads executing worker tasks | -| `besu_executors_ethscheduler_workers_completed_tasks_total` | Gauge | Total number of worker tasks executed | -| `besu_executors_ethscheduler_workers_pool_size_current` | Gauge | Current number of threads in the worker thread pool | -| `besu_executors_ethscheduler_workers_queue_length_current` | Gauge | Current number of worker tasks awaiting execution | -| `besu_executors_ethscheduler_workers_rejected_tasks_total` | Counter | Total number of tasks rejected by this worker executor | -| `besu_executors_ethscheduler_workers_submitted_tasks_total` | Gauge | Total number of worker tasks submitted | -| `besu_network_discovery_inflight_interactions_current` | Gauge | Current number of inflight discovery interactions | -| `besu_network_discovery_interaction_count` | Counter | Total number of discovery interactions initiated | -| `besu_network_discovery_interaction_retry_count` | Counter | Total number of interaction retries performed | -| `besu_network_discovery_messages_inbound` | Counter | Total number of P2P discovery messages received | -| `besu_network_discovery_messages_outbound` | Counter | Total number of P2P discovery messages sent | -| `besu_network_netty_boss_pending_tasks` | Gauge | Number of pending tasks in Netty boss event loop | -| `besu_network_netty_workers_pending_tasks` | Gauge | Number of pending tasks in Netty workers event loop | -| `besu_network_p2p_messages_inbound` | Counter | Total number of P2P messages received | -| `besu_network_vertx_eventloop_pending_tasks` | Gauge | Number of pending tasks in Vertx event loop | -| `besu_network_vertx_worker_pool_completed_total` | Counter | Total number of tasks completed by Vertx worker pool | -| `besu_network_vertx_worker_pool_rejected_total` | Counter | Total number of tasks rejected by Vertx worker pool | -| `besu_network_vertx_worker_pool_submitted_total` | Counter | Total number of tasks submitted to Vertx worker pool | -| `besu_peers_connected_total` | Counter | Total number of peers connected | -| `besu_peers_disconnected_total` | Counter | Total number of peers disconnected | -| `besu_peers_pending_peer_requests_current` | Gauge | Current number of peer requests pending because peers are busy | -| `besu_pruner_mark_time_duration` | Gauge | Cumulative number of seconds spent marking the state trie across all pruning cycles | -| `besu_pruner_mark_operations_total` | Counter | Total number of mark operations performed | -| `besu_pruner_marked_nodes_total` | Counter | Total number of nodes marked as in use | -| `besu_pruner_sweep_operations_total` | Counter | Total number of sweep operations performed | -| `besu_pruner_swept_nodes_total` | Counter | Total number of unused nodes removed | -| `besu_stratum_connections` | Counter | Number of connections over time | -| `besu_stratum_difficulty` | Gauge | Current mining difficulty | -| `besu_stratum_disconnections` | Counter | Number of disconnections over time | -| `besu_stratum_miners` | Gauge | Number of connected miners | -| `besu_synchronizer_chain_download_pipeline_processed_total` | Counter | Number of entries processed by each chain download pipeline stage | -| `besu_synchronizer_chain_download_pipeline_restarts` | Counter | Number of times chain download pipeline has been restarted | -| `besu_synchronizer_fast_sync_pivot_block_current` | Gauge | The current fast sync pivot block | -| `besu_synchronizer_fast_sync_pivot_block_selected_count` | Counter | Number of times a fast sync pivot block has been selected | -| `besu_synchronizer_fast_sync_validation_mode` | Counter | Number of blocks validated using light vs full validation during fast sync | -| `besu_synchronizer_in_sync` | Gauge | Whether or not the local node has caught up to the best known peer (1 or 0) | -| `besu_synchronizer_task` | Summary | Internal processing tasks | -| `besu_synchronizer_world_state_completed_requests_total` | Counter | Total number of node data requests completed as part of fast sync world state download | -| `besu_synchronizer_world_state_existing_nodes_total` | Counter | Total number of node data requests completed using existing data | -| `besu_synchronizer_world_state_inflight_requests_current` | Gauge | Number of in progress requests for world state data | -| `besu_synchronizer_world_state_node_requests_since_last_progress_current` | Gauge | Number of world state requests made since the last time new data was returned | -| `besu_synchronizer_world_state_pending_requests_cache_size` | Gauge | Pending request cache size for fast sync world state download | -| `besu_synchronizer_world_state_pending_requests_current` | Gauge | Number of pending requests for fast sync world state download | -| `besu_synchronizer_world_state_pipeline_processed_total` | Counter | Number of entries processed by each world state download pipeline stage | -| `besu_synchronizer_world_state_retried_requests_total` | Counter | Total number of node data requests repeated as part of fast sync world state download | -| `besu_transaction_pool_pending_transactions_messages_skipped_total` | Counter | Total number of pending transactions messages skipped by the processor | -| `besu_transaction_pool_transactions` | Gauge | Current size of the transaction pool (JSON-RPC equivalent: result number of [`txpool_besuTransactions`](../../reference/api/index.md#txpool_besutransactions)) | -| `besu_transaction_pool_transactions_added_total` | Counter | Count of transactions added to the transaction pool | -| `besu_transaction_pool_transactions_messages_skipped_total` | Counter | Total number of transactions messages skipped by the processor. | -| `ethereum_best_known_block_number` | Gauge | Estimated highest block available (JSON-RPC equivalent: `highestBlock` of [`eth_syncing`](../../reference/api/index.md#eth_syncing), or [`eth_blockNumber`](../../reference/api/index.md#eth_blocknumber) if not syncing) | -| `ethereum_blockchain_height` | Gauge | Current height of the canonical chain (JSON-RPC equivalent: [`eth_blockNumber`](../../reference/api/index.md#eth_blocknumber)) | -| `ethereum_peer_count` | Gauge | Current number of peers connected (JSON-RPC equivalent: [`net_peerCount`](../../reference/api/index.md#net_peercount)) | -| `ethereum_peer_limit` | Gauge | Maximum number of peers this node allows to connect | -| `jvm_buffer_pool_capacity_bytes` | Gauge | Bytes capacity of a given JVM buffer pool | -| `jvm_buffer_pool_used_buffers` | Gauge | Used buffers of a given JVM buffer pool | -| `jvm_buffer_pool_used_bytes` | Gauge | Used bytes of a given JVM buffer pool | -| `jvm_classes_loaded` | Gauge | Current number of classes loaded in the JVM | -| `jvm_classes_loaded_total` | Counter | Total number of classes loaded since the JVM started execution | -| `jvm_classes_unloaded_total` | Counter | Total number of classes unloaded since the JVM started execution | -| `jvm_gc_collection_seconds` | Summary | Seconds spent in a given JVM garbage collector | -| `jvm_memory_bytes_committed` | Gauge | Committed bytes of a given JVM memory area | -| `jvm_memory_bytes_init` | Gauge | Initial bytes of a given JVM memory area | -| `jvm_memory_bytes_max` | Gauge | Maximum bytes of a given JVM memory area | -| `jvm_memory_bytes_used` | Gauge | Used bytes of a given JVM memory area | -| `jvm_memory_pool_bytes_committed` | Gauge | Committed bytes of a given JVM memory pool | -| `jvm_memory_pool_bytes_init` | Gauge | Initial bytes of a given JVM memory pool | -| `jvm_memory_pool_bytes_max` | Gauge | Maximum bytes of a given JVM memory pool | -| `jvm_memory_pool_bytes_used` | Gauge | Used bytes of a given JVM memory pool | -| `jvm_threads_current` | Gauge | Current thread count of a JVM | -| `jvm_threads_daemon` | Gauge | Daemon thread count of a JVM | -| `jvm_threads_deadlocked` | Gauge | Cycles of JVM threads in deadlock waiting to acquire object monitors or ownable synchronizers | -| `jvm_threads_deadlocked_monitor` | Gauge | Cycles of JVM threads in deadlock waiting to acquire object monitors | -| `jvm_threads_peak` | Gauge | Peak thread count of a JVM | -| `jvm_threads_started_total` | Counter | Started thread count of a JVM | -| `jvm_threads_state` | Gauge | Current count of threads by state | -| `process_cpu_seconds_total` | Counter | Total user and system CPU time spent in seconds | -| `process_max_fds` | Gauge | Maximum number of open file descriptors | -| `process_open_fds` | Gauge | Number of open file descriptors | -| `process_start_time_seconds` | Gauge | Start time of the process since Unix epoch in seconds | - -!!! important - - * The `ethereum_best_known_block_number` metric always has a value. When the - [`eth_syncing` JSON-RPC method](../../reference/api/index.md#eth_syncing) returns - false, the current chain height displays. - * Although the `ethereum_peer_limit` metric does not have a JSON-RPC equivalent, the - [`max peers` command line option](../../reference/cli/options.md#max-peers) sets the - maximum number of P2P connections that can be established. - - -[monitoring with Prometheus and Grafana configured]: ../../../private-networks/tutorials/quickstart.md#monitor-nodes-with-prometheus-and-grafana diff --git a/docs/global/how-to/send-transactions.md b/docs/global/how-to/send-transactions.md deleted file mode 100644 index 96725e477b6..00000000000 --- a/docs/global/how-to/send-transactions.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -description: Some use cases of creating transactions on a Hyperledger Besu network ---- - -# 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. - -!!! warning "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 [EthSigner](https://docs.ethsigner.consensys.net/) to isolate your private keys - and sign transactions with - [`eth_sendTransaction`](https://docs.ethsigner.consensys.net/Using-EthSigner/Using-EthSigner/#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: - -* [EthSigner](http://docs.ethsigner.consensys.net/en/latest/) 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. - -!!! tip - - [EthSigner](http://docs.ethsigner.consensys.net/en/latest/) implements - [`eth_sendTransaction`](http://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/#eth_sendtransaction) - and [`eea_sendTransaction`](http://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/#eea_sendtransaction). diff --git a/docs/global/how-to/troubleshoot/Troubleshooting.md b/docs/global/how-to/troubleshoot/Troubleshooting.md index 2eca9dd4264..5addf583bb5 100644 --- a/docs/global/how-to/troubleshoot/Troubleshooting.md +++ b/docs/global/how-to/troubleshoot/Troubleshooting.md @@ -10,12 +10,12 @@ If Hyperledger Besu is not working as expected, here are some things to check or 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 +[`--data-path`](../../../public-networks/reference/cli/options.md#data-path) option to specify a different data directory. ## Invalid block header -If a `TimeStampMoreRecentThanParent | Invalid block header` error occurs, the [genesis file](../../concepts/genesis-file.md) of the new node is specifying a higher +If a `TimeStampMoreRecentThanParent | Invalid block header` error occurs, the [genesis file](../../../public-networks/concepts/genesis-file.md) of the new node is specifying a higher [`blockperiodseconds`](../../../private-networks/how-to/configure/consensus/ibft.md#block-time) than the imported chain. The imported chain makes new blocks faster than the genesis file allows and Besu rejects them with this error. This error most often occurs when importing chains from older versions of Besu. @@ -35,20 +35,20 @@ or [existing QBFT](../../../private-networks/how-to/configure/consensus/qbft.md# ## Host not authorized If a `Host not authorized` error occurs when attempting to access the JSON-RPC API, ensure -[`--host-allowlist`](../../reference/cli/options.md#host-allowlist) includes the host you are +[`--host-allowlist`](../../../public-networks/reference/cli/options.md#host-allowlist) includes the host you are sending the RPC from, or `*`. ## Peers fail to connect If nodes are not communicating, ensure the -[required ports are open](../connect/configure-ports.md). +[required ports are open](../../../public-networks/how-to/connect/configure-ports.md). If your nodes are running in AWS, check you have appropriate `SecurityGroups` to allow access to the required ports. -Check that the [enode URLs](../../concepts/node-keys.md#enode-url) specified for -[bootnodes](../../../private-networks/how-to/connect/bootnodes.md) or -[static nodes](../connect/static-nodes.md) match the enode URLs displayed when starting the +Check that the [enode URLs](../../../public-networks/concepts/node-keys.md#enode-url) specified for +[bootnodes](../../../private-networks/how-to/configure/bootnodes.md) or +[static nodes](../../../public-networks/how-to/connect/static-nodes.md) match the enode URLs displayed when starting the remote nodes. ## Mining @@ -68,7 +68,7 @@ On non-mining nodes, log messages indicate importing blocks. ``` To confirm the block number is increasing, use the -[`eth_blockNumber`](../../reference/api/index.md#eth_blocknumber) JSON-RPC API method. +[`eth_blockNumber`](../../../public-networks/reference/api/index.md#eth_blocknumber) JSON-RPC API method. If there is no block creating 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 @@ -77,14 +77,14 @@ addresses in the genesis file match running nodes. ## Transactions are not mined If you add a transaction to the -[transaction pool](../../concepts/Transactions/Transaction-Pool.md) and the transaction hash +[transaction pool](../../../public-networks/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`](../../../public-networks/reference/cli/options.md#min-gas-price) option on mining nodes. If the +`gasPrice` on a [transaction](../../../public-networks/how-to/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. +[`--min-gas-price`](../../../public-networks/reference/cli/options.md#min-gas-price) to zero. ## Genesis milestone @@ -101,7 +101,7 @@ hyphens. ## Logging Restart Besu with the command line option -[`--logging=TRACE`](../../reference/cli/options.md#logging) and look at the log files. +[`--logging=TRACE`](../../../public-networks/reference/cli/options.md#logging) and look at the log files. ## Pending State Nodes not decreasing for a full node in Grafana diff --git a/docs/global/how-to/troubleshoot/evm-tool.md b/docs/global/how-to/troubleshoot/evm-tool.md deleted file mode 100644 index 4950024cf57..00000000000 --- a/docs/global/how-to/troubleshoot/evm-tool.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -description: Hyperledger Besu EVM tool ---- - -# 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. - -## Getting the EVM tool - -The Besu EVM tool does not have a standard zip file distribution. To use, you need to either -build from the source repository or use a pre-published docker image. - -### Building 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/evm -``` - -### Executing 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, starting with 1.5.3. The `develop` tag - is the current main branch code that will go into a future release version of Besu. - -## EVM tool run options - -The first mode of the EVM tool runs an arbitrary EVM and is invoked without an extra command. [Command -line options](../../reference/evm-tool.md) specify the code and other contextual information. - -The EVM tool also has a [`state-test` subcommand](../../reference/evm-tool.md#state-test-options) -that allows the [Ethereum state tests](https://github.com/ethereum/tests/tree/develop/GeneralStateTests) to be evaluated. -Most of the options from EVM execution do not apply. - -=== "Syntax" - - ```bash - evm state-test --nomemory - ``` - -=== "CLI example" - - ```bash - evm state-test stExample/add11.json --nomemory - ``` -=== "Docker example" - - ```bash - docker run --rm -v ${PWD}:/opt/referencetests hyperledger/besu-evmtool:develop state-test /opt/referencetests/GeneralStateTests/stExample/add11.json - ``` - -The [EVM tool reference](../../reference/evm-tool.md) provides more information on both modes. diff --git a/docs/global/how-to/troubleshoot/java-flight-recorder.md b/docs/global/how-to/troubleshoot/java-flight-recorder.md deleted file mode 100644 index 45a8559f32b..00000000000 --- a/docs/global/how-to/troubleshoot/java-flight-recorder.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -description: Using Java Flight Recorder with Hyperledger Besu ---- - -# 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. - -## Enabling 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). - -!!! warning - - 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/docs/global/how-to/troubleshoot/trace-transactions.md b/docs/global/how-to/troubleshoot/trace-transactions.md deleted file mode 100644 index 5530af84b09..00000000000 --- a/docs/global/how-to/troubleshoot/trace-transactions.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -description: How to trace transactions ---- - -# 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 different diagnostic options when tracing calls or transactions. -The options are [`trace`, `vmTrace`, or `stateDiff`](../../reference/trace-types.md). - -To use the ad-hoc tracing APIs, the requested block or transaction must be within the -number of [blocks retained](../../reference/cli/options.md#pruning-blocks-retained) with [pruning enabled](../../reference/cli/options.md#pruning-enabled) -(by default, 1024). - -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 -(that is, synchronized without pruning or fast sync) or the -requested block or transaction must be within the -number of [blocks retained](../../reference/cli/options.md#pruning-blocks-retained) with [pruning enabled](../../reference/cli/options.md#pruning-enabled) -(by default, 1024). - -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/docs/global/how-to/use-besu-api/access-logs.md b/docs/global/how-to/use-besu-api/access-logs.md deleted file mode 100644 index e293033f07d..00000000000 --- a/docs/global/how-to/use-besu-api/access-logs.md +++ /dev/null @@ -1,220 +0,0 @@ ---- -description: Accessing logs using the Hyperledger Besu API ---- - -# 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). - -!!! example - - 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). - -!!! example - - 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). - -!!! example - - 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. - -!!! example - - ```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. - -!!! example - - 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/docs/global/how-to/use-besu-api/authenticate.md b/docs/global/how-to/use-besu-api/authenticate.md deleted file mode 100644 index 72e4bd60b94..00000000000 --- a/docs/global/how-to/use-besu-api/authenticate.md +++ /dev/null @@ -1,280 +0,0 @@ ---- -description: Hyperledger Besu authentication and authorization for JSON-RPC ---- - -# Authentication and authorization for 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). - -!!! note - Using JSON-RPC authentication and authorization with [MetaMask](https://metamask.io/) is not supported. - -!!! important - 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. - -!!! example "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). - -!!! example "Password hash subcommand" - - === "Command" - - ```bash - besu password hash --password=MyPassword - ``` - - === "Hash output" - - ```text - $2a$10$L3Xb5G/AJOsEK5SuOn9uzOhpCCfuVWTajc5hwWerY6N5xBM/xlrMK - ``` - -### 2. Enable authentication - -To require authentication for the JSON-RPC API, use 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) -options. - -To specify the [credentials file](#1-create-the-credentials-file), use the -[`--rpc-http-authentication-credentials-file`](../../reference/cli/options.md#rpc-http-authentication-credentials-file) -and [`--rpc-ws-authentication-credentials-file`](../../reference/cli/options.md#rpc-ws-authentication-credentials-file) -options. - -### 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. - -!!! example - - === "Generate a token for HTTP" - - ```bash - curl -X POST --data '{"username":"username1","password":"MyPassword"}' /login - ``` - - === "Example for HTTP" - - ```bash - curl -X POST --data '{"username":"username1","password":"MyPassword"}' http://localhost:8545/login - ``` - - === "Generate a token for WS" - - ```bash - curl -X POST --data '{"username":"username1","password":"MyPassword"}' /login - ``` - - === "Example for WS" - - ```bash - curl -X POST --data '{"username":"username1","password":"MyPassword"}' http://localhost:8546/login - ``` - - === "JSON result" - - ```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. - -!!! important - 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`. - -Besu default is `RS256`. - -!!! example "Example of key generation using OpenSSL" - - === "`RS256` RSA Keys" - - 1. Generate the private key: - - ```bash - openssl genrsa -out privateRSAKey.pem 2048 - ``` - - 1. Generate the public key: - - ```bash - openssl rsa -pubout -in privateRSAKey.pem -pubout -out publicRSAKey.pem - ``` - - === "`ES256` `secp256r1` ECDSA Keys" - - 1. Generate the private key: - - ```bash - openssl ecparam -name secp256r1 -genkey -out privateECDSAKey.pem - ``` - - 1. Generate the public key: - - ```bash - openssl ec -in privateECDSAKey.pem -pubout -out publicECDSAKey.pem - ``` - -!!! critical "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 - [harware](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 you nodes 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. - -!!! 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). - -!!! example "JWT generation example" - - === "Example JSON Payload" - - ```json - { - "permissions": ["*:*"], - "privacyPublicKey": "2UKH3VJThkOoKskrLFpwoxCnnRARyobV1bEdgseFHTs=", - "exp": 1600899999002 - } - ``` - - === "Example JWT result" - - ![eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwZXJtaXNzaW9ucyI6Iio6KiIsInByaXZhY3lQdWJsaWNLZXkiOiIyVUtIM1ZKVGhrT29Lc2tyTEZwd294Q25uUkFSeW9iVjFiRWRnc2VGSFRzPSIsImV4cCI6IjE2MDA4OTk5OTkwMDIiLCJpYXQiOjE2MzkxNTc2Mjd9.FGf-FmfDQlIPCRDGmNnsHZWlwrUr69d7AIDqQrIrUrSJLiwGpR3NCUhVHIDMpQvDHQYf-sFMZTYvZGrvztYRuBKWMbTfIZKN74onzNJbFIPBVQuUX2HMXmI4VQ3UFB11LShiUJHKLna13qdbqfbgJIO3HetxJhJQxTiwtixfHwyPXl-Nx8HbQy_AWH58lLAUeaoLzN7QIA9kborthBpvfK9C7Sv1lXT1cdCDC4oRKBoiMg2RWFZtGtxFsnWyloangwbhCB6Bc_elqY5nd9WkF4ix95xsP_HgBcouy1sDw6jxn5_LveX53H8owczVWP6S1e6hv6hq2fs6YkSntKMK2g](jwt.png){: style='width:15rem' } - -### 3. Enable authentication - -To require authentication for the JSON-RPC API, use 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) -options. - -To specify the JWT provider's public key file to use with the externally created JWT, use 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) -options. - -## 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. - -## Using 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. - -!!! example - - === "cURL Request with authentication placeholders" - - ```bash - curl -X POST -H 'Authorization: Bearer ' -d '{"jsonrpc":"2.0","method":"","params":[],"id":1}' - ``` - - === "cURL Request with authentication" - - ```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/docs/global/how-to/use-besu-api/graphql.md b/docs/global/how-to/use-besu-api/graphql.md deleted file mode 100644 index 44759c17baa..00000000000 --- a/docs/global/how-to/use-besu-api/graphql.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -description: How to access the Hyperledger Besu API using GraphQL ---- - -# 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. - -!!! example - - 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 - ``` - -## 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](../../../images/GraphiQL.png) - -## Pending - -`transactionCount` and `transactions` supports the Pending query. - -!!! important - - Besu does not execute pending transactions so results from `account`, `call`, and `estimateGas` - for Pending do not reflect pending transactions. - -!!! example - - === "Pending transaction count" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{ "query": "{pending {transactionCount}}"}' http://localhost:8547/graphql - ``` - - === "Result" - - ```bash - { - "data" : { - "pending" : { - "transactionCount" : 2 - } - } - } - ``` - -!!! example - - === "Pending transactions" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{ "query": "{pending {transactions{hash}}}"}' http://localhost:8547/graphql - ``` - - === "Result" - - ```bash - { - "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/docs/global/how-to/use-besu-api/index.md b/docs/global/how-to/use-besu-api/index.md deleted file mode 100644 index f8cac7c3663..00000000000 --- a/docs/global/how-to/use-besu-api/index.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -description: Hyperledger Besu API ---- - -# 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). - -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 experimental 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 experimental 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`. - -!!! important - - This isn't a permissioning feature. - If you want 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. - -!!! example - - ```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/docs/global/how-to/use-besu-api/json-rpc.md b/docs/global/how-to/use-besu-api/json-rpc.md deleted file mode 100644 index c863094bd69..00000000000 --- a/docs/global/how-to/use-besu-api/json-rpc.md +++ /dev/null @@ -1,271 +0,0 @@ ---- -description: How to access the Hyperledger Besu API using JSON-RPC ---- - -# JSON-RPC over HTTP, WebSocket, and IPC - -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 experimental option. - ---8<-- "global/Postman.md" - -## 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: - -!!! example - - === "HTTP endpoint" - - ```bash - geth attach http://localhost:8545 - ``` - - === "IPC endpoint" - - ```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. - -!!! example - - ```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). - -!!! example - - === "Syntax" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","id":,"method":"","params":[]}' - ``` - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","id":"1","method":"eth_blockNumber","params":[]}' http://127.0.0.1:8555 - ``` - - === "JSON result" - - ```json - { - "jsonrpc":"2.0", - "id":"1", - "result":"0x60e" - } - ``` - -You can use `curl` to make multiple RPC requests over HTTP at the same time. -Send the requests as an array, and receive an array of responses. - -!!! example - - === "curl HTTP request" - - ```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 result" - - ```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. - -!!! Example - - === "Syntax" - - ```bash - {"jsonrpc":"2.0","id":,"method":"","params":[]} - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","id":"1","method":"eth_blockNumber","params":[]} - ``` - - === "JSON result" - - ```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. - -!!! example - - === "wscat WS request" - - ```bash - [{"jsonrpc":"2.0","id":"1","method":"eth_blockNumber","params":[]}, {"jsonrpc":"2.0","id":"2","method":"admin_peers","params":[]}] - ``` - - === "JSON result" - - ```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. - -=== "Readiness endpoint" - - ```bash - http:///readiness - ``` - -=== "curl request example" - - ```bash - curl -v 'http://localhost:8545/readiness' - ``` - -=== "Query parameters example" - - ```bash - curl -v 'http://localhost:8545/readiness?minPeers=0&maxBlocksBehind=10' - ``` - -### Liveness - -The liveness check requires the JSON-RPC server to be up. - -=== "Liveness endpoint" - - ```bash - http:///liveness - ``` - -=== "curl request example" - - ```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 experimental 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 the following values: - -* `blockNumber` : `quantity` - The block number, specified in hexadecimal or decimal. 0 represents - the genesis block. -* `earliest` : `tag` - The earliest (genesis) block. -* `latest` : `tag` - The last block mined. -* `pending` : `tag` - The last block mined plus pending transactions. Use only with - [`eth_getTransactionCount`](../../reference/api/index.md#eth_gettransactioncount). -* `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. - -!!! note - - If [synchronizing in FAST mode](../../reference/cli/options.md#sync-mode), most - historical world state data is unavailable. Any methods attempting to access unavailable world - state data return `null`. diff --git a/docs/global/how-to/use-besu-api/rpc-pubsub.md b/docs/global/how-to/use-besu-api/rpc-pubsub.md deleted file mode 100644 index e8124afe1db..00000000000 --- a/docs/global/how-to/use-besu-api/rpc-pubsub.md +++ /dev/null @@ -1,488 +0,0 @@ ---- -description: Using RPC Pub/Sub with Hyperledger Besu WebSockets ---- - -# 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). - -!!!important - - 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. - -### Using 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. - -!!!example - - 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. - -## Subscribing - -Use `eth_subscribe` to create subscriptions for the following event types: - -* [New headers](#new-headers) -* [Logs](#logs) -* [Pending transactions](#pending-transactions) -* [Dropped transactions](#dropped-transactions) -* [Synchronizing](#synchronizing) - -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. - -!!!example - - 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). - -!!!example "Public logs" - - === "All logs" - - ```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"}]} - ``` - - === "Result" - - ```json - {"jsonrpc":"2.0","id":1,"result":"0x2"} - ``` - - === "Notification" - - ```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"] - } - } - } - ``` - -!!!example "Private logs" - - === "All logs for privacy group" - - ```json - {"id": 1, "method": "priv_subscribe", "params": ["4sSv8eqB6/0lV9I0tBGUhPjjHtLEf3z0eeMc8Lokkyo=", "logs",{}]} - ``` - - === "Specific address and topic" - - ```json - {"id": 1, "method": "priv_subscribe", "params": ["4sSv8eqB6/0lV9I0tBGUhPjjHtLEf3z0eeMc8Lokkyo=", "logs", {"address": "0x8320fe7702b96808f7bbc0d4a888ed1468216cfd", "topics": ["0xd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902"]}]} - ``` - - === "Result" - - ```json - {"jsonrpc":"2.0","id":1,"result":"0x1"} - ``` - - === "Notification" - - ```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. - -!!!example "Transaction hashes" - - 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" - } - } - ``` - -!!!example "Transaction details" - - 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. - -!!!example - - 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`. - -!!!example - - 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 - } - } - ``` - -## Unsubscribing - -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. - -!!!example - - To unsubscribe from a subsciption 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/docs/global/reference/api/index.md b/docs/global/reference/api/index.md deleted file mode 100644 index f7941b853e5..00000000000 --- a/docs/global/reference/api/index.md +++ /dev/null @@ -1,8134 +0,0 @@ ---- -description: Hyperledger Besu JSON-RPC API methods reference ---- - -# Hyperledger Besu API methods - -!!! attention - - * 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. - * Except for the examples made on the Ropsten network, the example requests are made against - private networks. Depending on network configuration and activity, your example results might - be different. - ---8<-- "global/Postman.md" - -## `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) - -!!! example - - === "curl HTTP request" - - ```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 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"admin_addPeer","params":["enode://f59c0ab603377b6ec88b89d5bb41b98fc385030ab1e4b03752db6f7dab364559d92c757c13116ae6408d2d33f0138e7812eb8b696b2a22fe3332c4b5127b22a3@127.0.0.1:30304"],"id":1} - ``` - - === "JSON result" - - ```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` - -!!! example - - The following example changes the debug level for specified classes to `DEBUG`. - - === "curl HTTP request" - - ```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 - ``` - - === "wscat WS request" - - ```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 result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "Success" - } - ``` - - The following example changes the debug level of all logs to `WARN`. - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"admin_changeLogLevel","params":["WARN"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"admin_changeLogLevel","params":["WARN"], "id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{jsonrpc":"2.0","method":"admin_generateLogBloomCache", "params":["0x0", "0x10000"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"admin_generateLogBloomCache", "params":["0x0", "0x10000"], "id":1} - ``` - - === "JSON result" - - ```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* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -* `toBlock`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -You can skip a parameter by using an empty string, `""`. -If you specify: - -* No parameters, the call removes cache files for all blocks. - -* Only `fromBlock`, the call removes cache files for the specified block. - -* Only `toBlock`, the call removes cache files from the genesis block to the specified block. - -#### Returns - -`result`: *object* - `Cache Removed` status or `error`. - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"admin_logsRemoveCache","params":["1", "100"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"admin_logsRemoveCache","params":["1", "100"], "id":1} - ``` - - === "JSON result" - - ```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` - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"admin_logsRepairCache","params":["1200"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"admin_logsRepairCache","params":["1200"], "id":1} - ``` - - === "JSON result" - - ```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). - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"admin_nodeInfo","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"admin_nodeInfo","params":[],"id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"admin_peers","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"admin_peers","params":[],"id":1} - ``` - - === "JSON result" - - ```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) - -!!! example - - === "curl HTTP request" - - ```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 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"admin_removePeer","params":["enode://f59c0ab603377b6ec88b89d5bb41b98fc385030ab1e4b03752db6f7dab364559d92c757c13116ae6408d2d33f0138e7812eb8b696b2a22fe3332c4b5127b22a3@127.0.0.1:30304"],"id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": true - } - ``` - -## `CLIQUE` methods - -The `CLIQUE` API methods provide access to the [Clique](../../../private-networks/how-to/configure/consensus/clique.md) consensus engine. - -!!! note - - The `CLIQUE` API methods are not enabled by default for JSON-RPC. To enable the `CLIQUE` API - methods use the [`--rpc-http-api`](../cli/options.md#rpc-http-api) or - [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) options. - -### `clique_discard` - -Discards a proposal to [add or remove a signer with the specified address]. - -#### Parameters - -`address`: *string* - 20-byte address of proposed signer - -#### Returns - -`result`: *boolean* - indicates if the proposal is discarded - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"clique_discard","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"clique_discard","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73"], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 1, - "result" : true - } - ``` - -### `clique_getSigners` - -Lists [signers for the specified block]. - -#### Parameters - -`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -#### Returns - -`result`: *array* of *string* - list of 20-byte addresses of signers - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"clique_getSigners","params":["latest"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"clique_getSigners","params":["latest"], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 1, - "result" : [ "0x42eb768f2244c8811c63729a21a3569731535f06", "0x7ffc57839b00206d1ad20c69a1981b489f772031", "0xb279182d99e65703f0076e4812653aab85fca0f0" ] - } - ``` - -### `clique_getSignerMetrics` - -Provides the following validator metrics for the specified range: - -* Number of blocks from each validator - -* Block number of the last block proposed by each validator (if any proposed in the specified - range) - -* All validators present in the last block - -#### Parameters - -* `fromBlockNumber`: *string* - integer representing a block number or the string tag `earliest`, as described -in [Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -* `toBlockNumber`: *string* - integer representing a block number or one of the string tags `latest` or -`pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -If you specify: - -* No parameters, the call provides metrics for the last 100 blocks, or all blocks if there are less - than 100 blocks. - -* Only the first parameter, the call provides metrics for all blocks from the block specified to - the latest block. - -#### Returns - -`result`: *array* of *objects* - list of validator objects - -!!! note - - The proposer of the genesis block has address `0x0000000000000000000000000000000000000000`. - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"clique_getSignerMetrics","params":["1", "100"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"clique_getSignerMetrics","params":["1", "100"], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": [ - { - "address": "0x7ffc57839b00206d1ad20c69a1981b489f772031", - "proposedBlockCount": "0x21", - "lastProposedBlockNumber": "0x61" - }, - { - "address": "0x42eb768f2244c8811c63729a21a3569731535f06", - "proposedBlockCount": "0x21", - "lastProposedBlockNumber": "0x63" - }, - { - "address": "0xb279182d99e65703f0076e4812653aab85fca0f0", - "proposedBlockCount": "0x21", - "lastProposedBlockNumber": "0x62" - } - ] - } - ``` - -### `clique_getSignersAtHash` - -Lists signers for the specified block. - -#### Parameters - -`hash`: *string* - 32-byte block hash - -#### Returns - -`result`: *array* of *string* - list of 20-byte addresses of signers - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"clique_getSignersAtHash","params":["0x98b2ddb5106b03649d2d337d42154702796438b3c74fd25a5782940e84237a48"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"clique_getSignersAtHash","params":["0x98b2ddb5106b03649d2d337d42154702796438b3c74fd25a5782940e84237a48"], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 1, - "result" : [ "0x42eb768f2244c8811c63729a21a3569731535f06", "0x7ffc57839b00206d1ad20c69a1981b489f772031", "0xb279182d99e65703f0076e4812653aab85fca0f0" ] - } - ``` - -### `clique_proposals` - -Returns -[current proposals](../../../private-networks/how-to/configure/consensus/clique.md#adding-and-removing-signers). - -#### Parameters - -None - -#### Returns - -`result`: *map* of *strings* to *booleans* - map of account addresses to corresponding boolean values indicating the -proposal for each account (if `true`, the proposal is to add a signer; if `false`, the proposal is to -remove a signer.) - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"clique_proposals","params":[], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"clique_proposals","params":[], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": { - "0x42eb768f2244c8811c63729a21a3569731535f07": false, - "0x12eb759f2222d7711c63729a45c3585731521d01": true - } - } - ``` - -### `clique_propose` - -Proposes to [add or remove a signer with the specified address]. - -#### Parameters - -* `address`: *string* - 20-byte address - -* `proposal`: *boolean* - `true` to propose adding signer or `false` to propose removing signer - -#### Returns - -`result`: *boolean* - `true` - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"clique_propose","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73", true], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"clique_propose","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73", true], "id":1} - ``` - - === "JSON result" - - ```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/). -We recommend using the [`TRACE` API](#trace-methods) for production use over the `DEBUG` API. - -!!! 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 - -!!! example - - This example uses an externally owned account address for the `address` parameter. - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"debug_accountAt","params":["0xc8df1f061abb4d0c107b2b1a794ade8780b3120e681f723fe55a7be586d95ba6", 0, "0xbcde5374fce5edbc8e2a8697c15331677e6ebf0b"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"debug_accountAt","params":["0xc8df1f061abb4d0c107b2b1a794ade8780b3120e681f723fe55a7be586d95ba6", 0, "0xbcde5374fce5edbc8e2a8697c15331677e6ebf0b"],"id":1} - ``` - - === "JSON result" - - ```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. - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"debug_accountAt","params":["0x2b76b3a2fc44c0e21ea183d06c846353279a7acf12abcc6fb9d5e8fb14ae2f8c", 0, "0x0e0d2c8f7794e82164f11798276a188147fbd415"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"debug_accountAt","params":["0x2b76b3a2fc44c0e21ea183d06c846353279a7acf12abcc6fb9d5e8fb14ae2f8c", 0, "0x0e0d2c8f7794e82164f11798276a188147fbd415"],"id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"debug_accountRange","params":["12345", 0, "0", 5],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"debug_accountRange","params":["12345", 0, "0", 5],"id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"debug_batchSendRawTransaction","params":["0xf868808203e882520894627306090abab3a6e1400e9345bc60c78a8bef57872386f26fc10000801ba0ac74ecfa0e9b85785f042c143ead4780931234cc9a032fce99fab1f45e0d90faa02fd17e8eb433d4ca47727653232045d4f81322619c0852d3fe8ddcfcedb66a43","0x416","0xf868018203e882520894627306090abab3a6e1400e9345bc60c78a8bef57872386f26fc10000801ca0b24ea1bee8fe36984c36acbf80979a4509f23fc17141851e08d505c0df158aa0a00472a05903d4cd7a811bd4d5c59cc105d93f5943f3393f253e92e65fc36e7ce0","0xf868808203e882520894627306090abab3a6e1400e9345bc60c78a8bef5787470de4df820000801ca0f7936b4de04792e3c65095cfbfd1399d231368f5f05f877588c0c8509f6c98c9a01834004dead527c8da1396eede42e1c60e41f38a77c2fd13a6e495479c729b99"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"debug_batchSendRawTransaction","params":["0xf868808203e882520894627306090abab3a6e1400e9345bc60c78a8bef57872386f26fc10000801ba0ac74ecfa0e9b85785f042c143ead4780931234cc9a032fce99fab1f45e0d90faa02fd17e8eb433d4ca47727653232045d4f81322619c0852d3fe8ddcfcedb66a43","0x416","0xf868018203e882520894627306090abab3a6e1400e9345bc60c78a8bef57872386f26fc10000801ca0b24ea1bee8fe36984c36acbf80979a4509f23fc17141851e08d505c0df158aa0a00472a05903d4cd7a811bd4d5c59cc105d93f5943f3393f253e92e65fc36e7ce0","0xf868808203e882520894627306090abab3a6e1400e9345bc60c78a8bef5787470de4df820000801ca0f7936b4de04792e3c65095cfbfd1399d231368f5f05f877588c0c8509f6c98c9a01834004dead527c8da1396eede42e1c60e41f38a77c2fd13a6e495479c729b99"],"id":1} - ``` - - === "JSON result" - - ```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) - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"debug_getBadBlocks","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"debug_getBadBlocks","params":[],"id":1} - ``` - - === "JSON result" - - ```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_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 - -!!! example - - === "curl HTTP request" - - ```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 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"debug_standardTraceBlockToFile","params":["0x2dc0b6c43144e314a86777b4bd4f987c0790a6a0b21560671d221ed81a23f2dc", { - "txHash": "0x4ff04c4aec9517721179c8dd435f47fbbfc2ed26cd4926845ab687420d5580a6", "disableMemory": false}], "id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"debug_standardTraceBadBlockToFile","params":["0x53741e9e94791466d117c5f9e41a2ed1de3f73d39920c621dfc2f294e7779baa"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"debug_standardTraceBadBlockToFile","params":["0x53741e9e94791466d117c5f9e41a2ed1de3f73d39920c621dfc2f294e7779baa"], "id":1} - ``` - - === "JSON result" - - ```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). - -!!! example - - === "curl HTTP request" - - ```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 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"debug_storageRangeAt","params":["0x2b76b3a2fc44c0e21ea183d06c846353279a7acf12abcc6fb9d5e8fb14ae2f8c",0,"0x0e0d2c8f7794e82164f11798276a188147fbd415","0x0000000000000000000000000000000000000000000000000000000000000000",1], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": { - "storage": { - "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563": { - "key": null, - "value": "0x0000000000000000000000000000000000000000000000000000000000000001" - } - }, - "nextKey": "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6" - } - } - ``` - -### `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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"debug_metrics","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"debug_metrics","params":[],"id":1} - ``` - - === "JSON result" - - ```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_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) - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceTransaction","params":["0x2cc6c94c21685b7e0f8ddabf277a5ccf98db157c62619cde8baea696a74ed18e",{"disableStorage":true}],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"debug_traceTransaction","params":["0x2cc6c94c21685b7e0f8ddabf277a5ccf98db157c62619cde8baea696a74ed18e",{"disableStorage":true}],"id":1} - ``` - - === "JSON result" - - ```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) - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceBlock","params":["0xf90277f90208a05a41d0e66b4120775176c09fcf39e7c0520517a13d2b57b18d33d342df038bfca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e6a7a1d47ff21b6321162aea7c6cb457d5476bcaa00e0df2706b0a4fb8bd08c9246d472abbe850af446405d9eba1db41db18b4a169a04513310fcb9f6f616972a3b948dc5d547f280849a87ebb5af0191f98b87be598a0fe2bf2a941abf41d72637e5b91750332a30283efd40c424dc522b77e6f0ed8c4b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000860153886c1bbd82b44382520b8252088455c426598b657468706f6f6c2e6f7267a0b48c515a9dde8d346c3337ea520aa995a4738bb595495506125449c1149d6cf488ba4f8ecd18aab215f869f86780862d79883d2000825208945df9b87991262f6ba471f09758cde1c0fc1de734827a69801ca088ff6cf0fefd94db46111149ae4bfc179e9b94721fffd821d38d16464b3f71d0a045e0aff800961cfce805daef7016b9b675c137a6a41a548f7b60a3484c06a33ac0"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"debug_traceBlock","params":["0xf90277f90208a05a41d0e66b4120775176c09fcf39e7c0520517a13d2b57b18d33d342df038bfca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e6a7a1d47ff21b6321162aea7c6cb457d5476bcaa00e0df2706b0a4fb8bd08c9246d472abbe850af446405d9eba1db41db18b4a169a04513310fcb9f6f616972a3b948dc5d547f280849a87ebb5af0191f98b87be598a0fe2bf2a941abf41d72637e5b91750332a30283efd40c424dc522b77e6f0ed8c4b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000860153886c1bbd82b44382520b8252088455c426598b657468706f6f6c2e6f7267a0b48c515a9dde8d346c3337ea520aa995a4738bb595495506125449c1149d6cf488ba4f8ecd18aab215f869f86780862d79883d2000825208945df9b87991262f6ba471f09758cde1c0fc1de734827a69801ca088ff6cf0fefd94db46111149ae4bfc179e9b94721fffd821d38d16464b3f71d0a045e0aff800961cfce805daef7016b9b675c137a6a41a548f7b60a3484c06a33ac0"],"id":1} - ``` - - === "JSON result" - - ```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) - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceBlockByHash","params":["0xaceb3b2c9b25b0589230873921eb894b28722011b8df63977145517d754875a5"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"debug_traceBlockByHash","params":["0xaceb3b2c9b25b0589230873921eb894b28722011b8df63977145517d754875a5"], "id":1} - ``` - - === "JSON result" - - ```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* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -* `options`: *object* - request options object with the following fields (all optional and default to `false`): - - * `disableStorage`: *boolean* - `true` disables storage capture. - - * `disableMemory`: *boolean* - `true` disables memory capture. - - * `disableStack` : *boolean* - `true` disables stack capture. - -#### Returns - -`result`: *array* of *objects* - list of [trace objects](objects.md#trace-object) - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceBlockByNumber","params":["0x7224",{"disableStorage":true}], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"debug_traceBlockByNumber","params":["0x7224",{"disableStorage":true}], "id":1} - ``` - - === "JSON result" - - ```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 - } - ] - } - ] - } - ``` - -## `EEA` methods - -The `EEA` API methods provide functionality for [private transactions](../../../private-networks/concepts/privacy/private-transactions/index.md) and -[privacy groups](../../../private-networks/concepts/privacy/privacy-groups.md). - -!!! note - - The `EEA` API methods are not enabled by default for JSON-RPC. To enable the `EEA` API methods, - use the [`--rpc-http-api`](../cli/options.md#rpc-http-api) or - [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) options. - -### `eea_sendRawTransaction` - -Distributes the -[private transaction](../../../private-networks/how-to/send-transactions/private-transactions.md), -generates the [privacy marker transaction](../../../private-networks/concepts/privacy/private-transactions/processing.md) -and submits it to the transaction pool, and returns the transaction hash of the -[privacy marker transaction](../../../private-networks/concepts/privacy/private-transactions/processing.md). - -The signed transaction passed as an input parameter includes the `privateFrom`, -[`privateFor` or `privacyGroupId`](../../../private-networks/how-to/send-transactions/private-transactions.md#eea-compliant-or-besu-extended-privacy), -and `restriction` fields. - -The `gas` and `gasPrice` are used by the [privacy marker transaction](../../../private-networks/concepts/privacy/private-transactions/processing.md) -not the private transaction itself. - -To avoid exposing your private key, create signed transactions offline and send the signed -transaction data using `eea_sendRawTransaction`. - -!!! important - - For production systems requiring private transactions, use a network with a consensus mechanism - supporting transaction finality to make sure the private state does not become inconsistent - with the chain. For example, [IBFT 2.0](../../private-networks/how-to/configure/consensus/ibft.md) - and [QBFT](../../private-networks/how-to/configure/consensus/qbft.md) provide the required finality. - - Using private transactions with [pruning](../../public-networks/how-to/connect/sync-node.md) or - [fast sync](../cli/options.md#sync-mode) is not supported. - - Besu doesn't implement - [`eea_sendTransaction`](../../how-to/send-transactions.md). - - [EthSigner](https://docs.ethsigner.consensys.net/en/latest/) provides transaction signing and - implements [`eea_sendTransaction`](https://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/#eea_sendtransaction). - -#### Parameters - -`transaction`: *string* - signed RLP-encoded private transaction - -#### Returns - -`result`: *string* - 32-byte transaction hash of the -[Privacy Marker Transaction](../../../private-networks/concepts/privacy/private-transactions/processing.md) - -!!! tip - - If creating a contract, use [priv_getTransactionReceipt](#priv_gettransactionreceipt) to - retrieve the contract address after the transaction is finalized. - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eea_sendRawTransaction","params": ["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"eea_sendRawTransaction","params": ["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"], "id":1} - ``` - - === "JSON result" - - ```json - { - "id":1, - "jsonrpc": "2.0", - "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331" - } - ``` - -## `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 - [EthSigner](http://docs.ethsigner.consensys.net/en/latest/) with Besu. - -#### Parameters - -None - -#### Returns - -`result`: *array* of *strings* - list of 20-byte account addresses owned by the client - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":53}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":53} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 53, - "result" : [ ] - } - ``` - -### `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 - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":51}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":51} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 51, - "result" : "0x2377" - } - ``` - - === "curl GraphQL" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block{number}}"}' http://localhost:8547/graphql - ``` - - === "GraphQL" - - ```bash - { - block { - number - } - } - ``` - - === "GraphQL result" - - ```bash - { - "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`. - -If revert reason is enabled with [`--revert-reason-enabled`](../cli/options.md#revert-reason-enabled), -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) - -`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -!!! note - - By default, `eth_call` does not fail if the sender account has an insufficient balance. - This is done by setting the balance of the account to a large amount of ether. - To enforce balance rules, set the [`strict` parameter](objects.md#transaction-call-object) in the transaction call object to `true`. - -#### Returns - -`result`: *string* - return value of the executed contract - -!!! example - - === "curl HTTP" - - ```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 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13","value":"0x1"}, "latest"],"id":53} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 53, - "result": "0x" - } - ``` - - === "curl GraphQL" - - ```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 - ``` - - === "GraphQL" - - ```bash - { - block { - number - call(data: {from: "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", to: "0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13", data: "0x12a7b914"}) { - data - status - } - } - } - ``` - - === "GraphQL result" - - ```json - { - "data" : { - "block" : { - "number" : 17449, - "call" : { - "data" : "0x", - "status" : 1 - } - } - } - } - ``` - -!!! example "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. - - === "curl HTTP" - - ```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 result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":51}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":51} - ``` - - === "JSON result" - - ```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: - -!!!example - - ```bash - besu --miner-coinbase="0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" --rpc-http-enabled - ``` - -#### Parameters - -None - -#### Returns - -`result`: *string* - coinbase address - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":53}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":53} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 53, - "result" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" - } - ``` - -### `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. - -If revert reason is enabled with [`--revert-reason-enabled`](../cli/options.md#revert-reason-enabled), -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 - -!!! example "Example of cost estimate of a value transaction" - - The following example returns an estimate of 21000 wei (`0x5208`) for the transaction. - - === "curl HTTP" - - ```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 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_estimateGas","params":[{"from":"0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73","to":"0x44Aa93095D6749A706051658B970b941c72c1D53","value":"0x1"}],"id":53} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 53, - "result" : "0x5208" - } - ``` - - === "curl GraphQL" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block{estimateGas (data: {from :\"0x6295ee1b4f6dd65047762f924ecd367c17eabf8f\", to :\"0x8888f1f195afa192cfee860698584c030f4c9db1\"})}}"}' http://localhost:8547/graphql - ``` - - === "GraphQL" - - ```bash - { - block { - estimateGas(data: {from: "0x6295ee1b4f6dd65047762f924ecd367c17eabf8f", to: "0x8888f1f195afa192cfee860698584c030f4c9db1"}) - } - } - ``` - - === "GraphQL result" - - ```bash - { - "data" : { - "block" : { - "estimateGas" : 21000 - } - } - } - ``` - -!!! example "Example of cost estimate of deploying a simple storage smart contract" - - The following example request estimates the cost of deploying a simple storage smart contract to - the network. The data field contains the hash of the compiled contract you want to deploy. (You can - get the compiled contract hash from your IDE, for example, **Remix > Compile tab > details > - WEB3DEPLOY**.) The result is 113355 wei. - - === "curl HTTP request" - - ```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 result" - - ```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. - -#### Parameters - -* `blockCount`: *integer* - 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. - -* `newestBlock`: *string* - Integer representing the highest number block of the requested range or one of the string tags `latest`, - `earliest`, or `pending`, as described in - [Block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter). - -#### Returns - -`result`: *object* - [Fee history results object](objects.md#fee-history-results-object). - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_feeHistory","params":[2, "latest"],"id":28}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_feeHistory","params":[2, "latest"],"id":28} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 28, - "result" : { - "oldestBlock" : "0x53cbe6", - "baseFeePerGas" : ["0x7", "0x7", "0x7" ] - "gasUsedRatio" : [ 0.0011536265162931602, 0.10653990633315608 ] - } - } - ``` - -### `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 - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":53}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":53} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 53, - "result" : "0x3e8" - } - ``` - - === "curl GraphQL" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{ "query": "{gasPrice}"}' http://localhost:8547/graphql - ``` - - === "GraphQL" - - ```bash - { - gasPrice - } - ``` - - === "GraphQL result" - - ```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`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -#### Returns - -`result`: *string* - current balance, in Wei, as a hexadecimal value - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "latest"],"id":53}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_getBalance","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "latest"],"id":53} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 53, - "result" : "0x1cfe56f3795885980000" - } - ``` - - === "curl GraphQL" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{ "query": "{ account ( address: \"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73\") { balance } }"}' http://localhost:8547/graphql - ``` - - === "GraphQL" - - ```bash - { - account(address: "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73") { - balance - } - } - ``` - - === "GraphQL result" - - ```bash - { - "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 - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xd5f1812548be429cbdc6376b29611fc49e06f1359758c4ceaaa3b393e2239f9c", false],"id":53}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xd5f1812548be429cbdc6376b29611fc49e06f1359758c4ceaaa3b393e2239f9c", false],"id":53} - ``` - - === "JSON result" - - ```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" - } - } - ``` - - === "curl GraphQL" - - ```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 - ``` - - === "GraphQL" - - ```bash - { - block(hash: "0xb0efed1fc9326fee967cb2d845d4ebe57c5350a0670c8e86f8052dea6f219f92") { - number - transactions { - hash - } - timestamp - difficulty - totalDifficulty - gasUsed - gasLimit - hash - nonce - ommerCount - logsBloom - mixHash - ommerHash - extraData - stateRoot - receiptsRoot - transactionCount - transactionsRoot - } - } - ``` - - === "GraphQL result" - - ```bash - { - "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* - 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) - -* `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. - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x68B3", true],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x68B3", true],"id":1} - ``` - - === "JSON result" - - ```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" - } - } - ``` - - === "curl GraphQL" - - ```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 - ``` - - === "GraphQL" - - ```bash - { - 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 - } - } - } - ``` - - === "GraphQL result" - - ```bash - { - "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_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 - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":53}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":53} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 53, - "result" : null - } - ``` - - === "curl GraphQL" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block(hash:\"0xe455c14f757b0b9b67774baad1be1c180a4c1657df52259dbb685bf375408097\"){transactionCount}}"}' http://localhost:8547/graphql - ``` - - === "GraphQL" - - ```bash - { - block(hash: "0xe455c14f757b0b9b67774baad1be1c180a4c1657df52259dbb685bf375408097") { - transactionCount - } - } - ``` - - === "GraphQL result" - - ```bash - { - "data" : { - "block" : { - "transactionCount" : 1 - } - } - } - ``` - -### `eth_getBlockTransactionCountByNumber` - -Returns the number of transactions in a block matching the specified block number. - -#### Parameters - -`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -#### Returns - -`result`: *string* - integer representing the number of transactions in the specified block, -or `null` if no matching block number is found - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0xe8"],"id":51}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0xe8"],"id":51} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 51, - "result" : "0x8" - } - ``` - - === "curl GraphQL" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block(number:232){transactionCount}}"}' http://localhost:8547/graphql - ``` - - === "GraphQL" - - ```bash - { - block(number: 232) { - transactionCount - } - } - ``` - - === "GraphQL result" - - ```bash - { - "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`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -#### Returns - -`result`: *data* - code stored at the specified address - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xa50a51c09a5c451c52bb714527e1974b686d8e77", "latest"],"id":53}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_getCode","params":["0xa50a51c09a5c451c52bb714527e1974b686d8e77", "latest"],"id":53} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 53, - "result": "0x60806040526004361060485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633fa4f2458114604d57806355241077146071575b600080fd5b348015605857600080fd5b50605f6088565b60408051918252519081900360200190f35b348015607c57600080fd5b506086600435608e565b005b60005481565b60008190556040805182815290517f199cd93e851e4c78c437891155e2112093f8f15394aa89dab09e38d6ca0727879181900360200190a1505600a165627a7a723058209d8929142720a69bde2ab3bfa2da6217674b984899b62753979743c0470a2ea70029" - } - ``` - - === "curl GraphQL" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{"query": "{account(address: \"0xa50a51c09a5c451c52bb714527e1974b686d8e77\"){ code }}"}' http://localhost:8547/graphql - ``` - - === "GraphQL" - - ```bash - { - account(address: "0xa50a51c09a5c451c52bb714527e1974b686d8e77") { - code - } - } - ``` - - === "GraphQL result" - - ```bash - { - "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). - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0xf8bf5598d9e04fbe84523d42640b9b0e"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0xf8bf5598d9e04fbe84523d42640b9b0e"],"id":1} - ``` - - === "JSON result" - - ```json - - Example result from a filter created with `eth_newBlockFilter`: - { - "jsonrpc": "2.0", - "id": 1, - "result": [ - "0xda2bfe44bf85394f0d6aa702b5af89ae50ae22c0928c18b8903d9269abe17e0b", - "0x88cd3a37306db1306f01f7a0e5b25a9df52719ad2f87b0f88ee0e6753ed4a812", - "0x4d4c731fe129ff32b425e6060d433d3fde278b565bbd1fd624d5a804a34f8786" - ] - } - - Example result from a filter created with `eth_newPendingTransactionFilter`: - { - "jsonrpc": "2.0", - "id": 1, - "result": [ - "0x1e977049b6db09362da09491bee3949d9362080ce3f4fc19721196d508580d46", - "0xa3abc4b9a4e497fd58dc59cdff52e9bb5609136bcd499e760798aa92802769be" - ] - } - - 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) - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x5ace5de3985749b6a1b2b0d3f3e1fb69"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x5ace5de3985749b6a1b2b0d3f3e1fb69"],"id":1} - ``` - - === "JSON result" - - ```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. - -!!! attention - - Using `eth_getLogs` to get the logs from a large range of blocks, especially an entire chain from - its genesis block, can cause Besu to hang and never return a response. - We recommend splitting one large query into multiple ones for better performance. - -#### Parameters - -`filterOptions`: *object* - [filter options object](objects.md#filter-options-object) - -#### Returns - -`result`: *array* of *objects* - list of [log objects](objects.md#log-object) - -!!! example - - === "curl HTTP" - - ```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 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_getLogs","params":[{"fromBlock":"earliest", "toBlock":"latest", "address": "0x2e1f232a9439c3d459fceca0beef13acc8259dd8", "topics":[]}], "id":1} - ``` - - === "JSON result" - - ```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" ] - } ] - } - ``` - - === "curl GraphQL" - - ```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 - ``` - - === "GraphQL" - - ```bash - { - logs(filter: {fromBlock: 1486000, toBlock: 1486010, addresses: ["0x7ef66b77759e12caf3ddb3e4aff524e577c59d8d"], topics: [["0x8a22ee899102a366ac8ad0495127319cb1ff2403cfae855f83a89cda1266674d"]]}) { - index - topics - data - account { - address - } - transaction { - hash - } - } - } - ``` - - === "GraphQL result" - - ```bash - { - "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) - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method": "eth_getMinerDataByBlockHash","params": ["0xbf137c3a7a1ebdfac21252765e5d7f40d115c2757e4a4abee929be88c624fdb7"],"id": 1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method": "eth_getMinerDataByBlockHash","params": ["0xbf137c3a7a1ebdfac21252765e5d7f40d115c2757e4a4abee929be88c624fdb7"],"id": 1} - ``` - - === "JSON result" - - ```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* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -#### Returns - -`result`: *object* - [miner data object](objects.md#miner-data-object) - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method": "eth_getMinerDataByBlockNumber","params": ["0x7689D2"],"id": 1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method": "eth_getMinerDataByBlockNumber","params": ["0x7689D2"],"id": 1} - ``` - - === "JSON result" - - ```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`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -#### 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` - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method": "eth_getProof","params": [ - "0a8156e7ee392d885d10eaa86afd0e323afdcd95", ["0x0000000000000000000000000000000000000000000000000000000000000347"], "latest"],"id": 1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method": "eth_getProof","params": [ - "0a8156e7ee392d885d10eaa86afd0e323afdcd95", ["0x0000000000000000000000000000000000000000000000000000000000000347"], "latest"],"id": 1} - ``` - - === "JSON result" - - ```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_getQuorumPayload` - -When using [GoQuorum-compatible privacy](../../../private-networks/how-to/use-privacy/goquorum-compatible.md), returns the -[unencrypted payload from Tessera](https://docs.tessera.consensys.net/Concepts/Transaction-manager/#private-transaction-flow). - -#### Parameters - -`id`: *string* - the generated SHA3-512 hash of the encrypted payload from Tessera, in hex (the `input` value in the transaction) - -#### Returns - -`result`: *string* - unencrypted transaction payload in hex - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST http://127.0.0.1:22000 --data '{"jsonrpc":"2.0","method":"eth_getQuorumPayload","params":["0x5e902fa2af51b186468df6ffc21fd2c26235f4959bf900fc48c17dc1774d86d046c0e466230225845ddf2cf98f23ede5221c935aac27476e77b16604024bade0"],"id":67}' - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method": "eth_getQuorumPayload","params": ["0x5e902fa2af51b186468df6ffc21fd2c26235f4959bf900fc48c17dc1774d86d046c0e466230225845ddf2cf98f23ede5221c935aac27476e77b16604024bade0"],"id": 67} - ``` - - === "JSON result" - - ```json - { - "jsonrpc":"2.0", - "id":67, - "result":"0x6060604052341561000f57600080fd5b604051602080610149833981016040528080519060200190919050505b806000819055505b505b610104806100456000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632a1afcd914605157806360fe47b11460775780636d4ce63c146097575b600080fd5b3415605b57600080fd5b606160bd565b6040518082815260200191505060405180910390f35b3415608157600080fd5b6095600480803590602001909190505060c3565b005b341560a157600080fd5b60a760ce565b6040518082815260200191505060405180910390f35b60005481565b806000819055505b50565b6000805490505b905600a165627a7a72305820d5851baab720bba574474de3d09dbeaabc674a15f4dd93b974908476542c23f00029000000000000000000000000000000000000000000000000000000000000002a" - } - ``` - -### `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`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -#### Returns - -`result` : *string* - value at the specified storage position - -!!! example - - Calculating the correct position depends on the storage you want to retrieve. - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method": "eth_getStorageAt","params": ["0x‭3B3F3E‬","0x0","latest"],"id": 53}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method": "eth_getStorageAt","params": ["0x‭3B3F3E‬","0x0","latest"],"id": 53} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 53, - "result" : "0x0000000000000000000000000000000000000000000000000000000000000000" - } - ``` - - === "curl GraphQL" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{ "query": "{account(address: \"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73\") {storage(slot: \"0x04\")}}"}' http://localhost:8547/graphql - ``` - - === "GraphQL" - - ```bash - { - account(address: "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73") { - storage(slot: "0x04") - } - } - ``` - - === "GraphQL result" - - ```bash - { - "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 - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0xbf137c3a7a1ebdfac21252765e5d7f40d115c2757e4a4abee929be88c624fdb7", "0x2"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0xbf137c3a7a1ebdfac21252765e5d7f40d115c2757e4a4abee929be88c624fdb7", "0x2"], "id":1} - ``` - - === "JSON result" - - ```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", - "publicKey": "0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33d8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3", - "raw": "0xf86401018304cb2f946295ee1b4f6dd65047762f924ecd367c17eabf8f0a8412a7b9141ba0ed2e0f715eccaab4362c19c1cf35ad8031ab1cabe71ada3fe8b269fe9d726712a06691074f289f826d23c92808ae363959eb958fb7a91fc721875ece4958114c65", - "to" : "0xcfdc98ec7f01dab1b67b36373524ce0208dc3953", - "transactionIndex" : "0x2", - "value" : "0x0", - "v" : "0x2a", - "r" : "0xa2d2b1021e1428740a7c67af3c05fe3160481889b25b921108ac0ac2c3d5d40a", - "s" : "0x63186d2aaefe188748bfb4b46fb9493cbc2b53cf36169e8501a5bc0ed941b484" - } - } - ``` - - === "curl GraphQL" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{"query": "{ block(hash: \"0x9270651f9c6fa36232c379d0ecf69b519383aa275815a65f1e03114346668f69\") { transactionAt(index: 0) {block{hash} hash } } }"}' http://localhost:8547/graphql - ``` - - === "GraphQL" - - ```bash - { - block(hash: "0x9270651f9c6fa36232c379d0ecf69b519383aa275815a65f1e03114346668f69") { - transactionAt(index: 0) { - block { - hash - } - hash - } - } - } - ``` - - === "GraphQL result" - - ```bash - { - "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* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -`index`: *string* - transaction index position - -#### Returns - -`result`: *object* - [transaction object](objects.md#transaction-object), or `null` when there is no -transaction - -!!! example - - 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. - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["82990", "0x2"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["82990", "0x2"], "id":1} - ``` - - === "JSON result" - - ```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", - "publicKey": "0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33d8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3", - "raw": "0xf86401018304cb2f946295ee1b4f6dd65047762f924ecd367c17eabf8f0a8412a7b9141ba0ed2e0f715eccaab4362c19c1cf35ad8031ab1cabe71ada3fe8b269fe9d726712a06691074f289f826d23c92808ae363959eb958fb7a91fc721875ece4958114c65", - "to" : "0xcfdc98ec7f01dab1b67b36373524ce0208dc3953", - "transactionIndex" : "0x2", - "value" : "0x0", - "v" : "0x2a", - "r" : "0xa2d2b1021e1428740a7c67af3c05fe3160481889b25b921108ac0ac2c3d5d40a", - "s" : "0x63186d2aaefe188748bfb4b46fb9493cbc2b53cf36169e8501a5bc0ed941b484" - } - } - ``` - - === "curl GraphQL" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{"query": "{block(number:20303) {transactionAt(index: 0) {block{hash} hash}}}"}' http://localhost:8547/graphql - ``` - - === "GraphQL" - - ```bash - { - block(number: 20303) { - transactionAt(index: 0) { - block { - hash - } - hash - } - } - } - ``` - - === "GraphQL result" - - ```bash - { - "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 - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0xa52be92809541220ee0aaaede6047d9a6c5d0cd96a517c854d944ee70a0ebb44"],"id":53}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0xa52be92809541220ee0aaaede6047d9a6c5d0cd96a517c854d944ee70a0ebb44"],"id":53} - ``` - - === "JSON result" - - ```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", - "publicKey": "0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33d8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3", - "raw": "0xf8641d018304cb2f946295ee1b4f6dd65047762f924ecd367c17eabf8f0a84e8beef5b1ca011232cac2f935ab8dd5d5972438fde90e05d0dd620860b42886e7d54dc5c4a0ca03dd467b5faa6e5a0f3c22a5396fefa5b03f07d8114d8434e0e1493736aad8d0e", - "to" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", - "transactionIndex" : "0x0", - "value" : "0x4e1003b28d9280000", - "v" : "0xfe7", - "r" : "0x84caf09aefbd5e539295acc67217563438a4efb224879b6855f56857fa2037d3", - "s" : "0x5e863be3829812c81439f0ae9d8ecb832b531d651fb234c848d1bf45e62be8b9" - } - } - ``` - - === "curl GraphQL" - - ```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 - ``` - - === "GraphQL" - - ```bash - { - transaction(hash: "0x03d80b9ca0a71435399a268609d6d7896f7155d2147cc22b780672bcb59b170d") { - block { - hash - } - gas - gasPrice - hash - nonce - value - from { - address - } - to { - address - } - status - } - } - ``` - - === "GraphQL result" - - ```bash - { - "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`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, 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 - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0xc94770007dda54cF92009BFF0dE90c06F603a09f","latest"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0xc94770007dda54cF92009BFF0dE90c06F603a09f","latest"],"id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 1, - "result" : "0x1" - } - ``` - - === "curl GraphQL" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{ "query": "{ account (address:\"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73\"){transactionCount}}"}' http://localhost:8547/graphql - ``` - - === "GraphQL" - - ```bash - { - account(address: "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73") { - transactionCount - } - } - ``` - - === "GraphQL result" - - ```bash - { - "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 - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x504ce587a65bdbdb6414a0c6c16d86a04dd79bfcc4f2950eec9634b30ce5370f"],"id":53}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x504ce587a65bdbdb6414a0c6c16d86a04dd79bfcc4f2950eec9634b30ce5370f"],"id":53} - ``` - - === "JSON result" - - ```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" - } - } - ``` - - === "curl GraphQL" - - ```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 - ``` - - === "GraphQL" - - ```bash - { - transaction(hash: "0x5f5366af89e8777d5ae62a1af94a0876bdccbc22417bed0aff361eefa3e37f86") { - block { - hash - logsBloom - } - hash - createdContract { - address - } - cumulativeGasUsed - gas - gasUsed - logs { - topics - } - from { - address - } - to { - address - } - index - } - } - ``` - - === "GraphQL result" - - ```bash - { - "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. - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0xc48fb64230a82f65a08e7280bd8745e7fea87bc7c206309dee32209fe9a985f7", "0x0"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0xc48fb64230a82f65a08e7280bd8745e7fea87bc7c206309dee32209fe9a985f7", "0x0"],"id":1} - ``` - - === "JSON result" - - ```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":[] - } - } - ``` - - === "curl GraphQL" - - ```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 - ``` - - === "GraphQL" - - ```bash - { - block(hash: "0xc48fb64230a82f65a08e7280bd8745e7fea87bc7c206309dee32209fe9a985f7") { - ommerAt(index: 0) { - difficulty - extraData - gasLimit - gasUsed - hash - logsBloom - mixHash - nonce - number - receiptsRoot - stateRoot - timestamp - totalDifficulty - transactionsRoot - } - } - } - ``` - - === "GraphQL result" - - ```bash - { - "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* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -* `uncleIndex`: *string* - index of the uncle - -#### Returns - -`result`: *object* - [block object](objects.md#block-object) - -!!! note - - Uncles do not contain individual transactions. - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockNumberAndIndex","params":["0x7689D2", "0x0"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_getUncleByBlockNumberAndIndex","params":["0x7689D2", "0x0"],"id":1} - ``` - - === "JSON result" - - ```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":[] - } - } - ``` - - === "curl GraphQL" - - ```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 - ``` - - === "GraphQL" - - ```bash - { - block(number: 2587) { - ommerAt(index: 0) { - difficulty - extraData - gasLimit - gasUsed - hash - logsBloom - mixHash - nonce - number - receiptsRoot - stateRoot - timestamp - totalDifficulty - transactionsRoot - } - } - } - ``` - - === "GraphQL result" - - ```bash - { - "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 - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 1, - "result" : 0x0 - } - ``` - - === "curl GraphQL" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block(hash:\"0x65c08d792e4192b9ece6b6f2390da7da464208b22d88490be8add9373917b426\"){ommerCount}}"}' http://localhost:8547/graphql - ``` - - === "GraphQL" - - ```bash - { - block(hash: "0x65c08d792e4192b9ece6b6f2390da7da464208b22d88490be8add9373917b426") { - ommerCount - } - } - ``` - - === "GraphQL result" - - ```bash - { - "data" : { - "block" : { - "ommerCount" : 2 - } - } - } - ``` - -### `eth_getUncleCountByBlockNumber` - -Returns the number of uncles in a block matching the specified block number. - -#### Parameters - -`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -#### Returns - -`result`: *string* - integer representing the number of uncles in the specified block - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber","params":["0xe8"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber","params":["0xe8"],"id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 1, - "result" : "0x1" - } - ``` - - === "curl GraphQL" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block(number:\"0x59fd\"){ommerCount}}"}' http://localhost:8547/graphql - ``` - - === "GraphQL" - - ```bash - { - block(number: "0x59fd") { - ommerCount - } - } - ``` - - === "GraphQL result" - - ```bash - { - "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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getWork","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"eth_getWork","params":[],"id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_mining","params":[],"id":53}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"eth_mining","params":[],"id":53} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```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 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"eth_newFilter","params":[{"fromBlock":"earliest", "toBlock":"latest", "topics":[]}],"id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "0x443d6a77c4964707a8554c92f7e4debd" - } - ``` - -### `eth_protocolVersion` - -Returns current Ethereum protocol version. - -#### Parameters - -None - -#### Returns - -`result`: *string* - Ethereum protocol version - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "0x3f" - } - ``` - - === "curl GraphQL" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{ "query": "{protocolVersion}"}' http://localhost:8547/graphql - ``` - - === "GraphQL" - - ```bash - { - protocolVersion - } - ``` - - === "GraphQL result" - - ```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`. - -!!! important - - Besu doesn't implement [`eth_sendTransaction`](../../how-to/send-transactions.md). - - [EthSigner](https://docs.ethsigner.consensys.net/) provides transaction signing and implements - [`eth_sendTransaction`](https://docs.ethsigner.consensys.net/Using-EthSigner/Using-EthSigner/#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 - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"],"id":1} - ``` - - === "JSON result" - - ```json - { - "id":1, - "jsonrpc": "2.0", - "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331" - } - ``` - - === "curl GraphQL" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{ "query": "mutation {sendRawTransaction(data: \"0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833\")}"}' http://localhost:8547/graphql - ``` - - === "GraphQL" - - ```bash - mutation { - sendRawTransaction(data: "0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833") - } - ``` - - === "GraphQL result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitHashrate", "params":["0x0000000000000000000000000000000000000000000000000000000000500000", "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0", "method":"eth_submitHashrate", "params":["0x0000000000000000000000000000000000000000000000000000000000500000", "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c"],"id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitWork", "params":["0x0000000000000001", "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "0xD1GE5700000000000000000000000000D1GE5700000000000000000000000000"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0", "method":"eth_submitWork", "params":["0x0000000000000001", "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "0xD1GE5700000000000000000000000000D1GE5700000000000000000000000000"],"id":73} - ``` - - === "JSON result" - - ```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.) - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":51}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":51} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 51, - "result" : { - "startingBlock" : "0x0", - "currentBlock" : "0x1518", - "highestBlock" : "0x9567a3", - "pulledStates" : "0x203ca", - "knownStates" : "0x200636" - } - } - ``` - - === "curl GraphQL" - - ```bash - curl -X POST -H "Content-Type: application/json" --data '{ "query": "{syncing{startingBlock currentBlock highestBlock pulledStates knownStates}}"}' http://localhost:8547/graphql - ``` - - === "GraphQL" - - ```bash - { - syncing { - startingBlock - currentBlock - highestBlock - pulledStates - knownStates - } - } - ``` - - === "GraphQL result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0x70355a0b574b437eaa19fe95adfedc0a"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0x70355a0b574b437eaa19fe95adfedc0a"],"id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 1, - "result" : true - } - ``` - -## `IBFT` 2.0 methods - -The `IBFT` API methods provide access to the [IBFT 2.0](../../../private-networks/how-to/configure/consensus/ibft.md) consensus engine. - -!!! note - - The `IBFT` API methods are not enabled by default for JSON-RPC. To enable the `IBFT` API - methods, use the [`--rpc-http-api`](../cli/options.md#rpc-http-api) or - [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) options. - -### `ibft_discardValidatorVote` - -Discards a proposal to [add or remove a validator] with the specified address. - -#### Parameters - -`address`: *string* - 20-byte address of proposed validator - -#### Returns - -`result`: *boolean* - indicates if the proposal is discarded - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_discardValidatorVote","params":["0xef1bfb6a12794615c9b0b5a21e6741f01e570185"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"ibft_discardValidatorVote","params":["0xef1bfb6a12794615c9b0b5a21e6741f01e570185"], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 1, - "result" : true - } - ``` - -### `ibft_getPendingVotes` - -Returns [votes](../../../private-networks/how-to/configure/consensus/ibft.md#adding-and-removing-validators) cast in the current -[epoch](../../../private-networks/how-to/configure/consensus/ibft.md#genesis-file). - -#### Parameters - -None - -#### Returns - -`result`: *map* of *strings* to *booleans* - map of account addresses to corresponding boolean values indicating the -vote for each account; if `true`, the vote is to add a validator. If `false`, the proposal is to -remove a validator. - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_getPendingVotes","params":[], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"ibft_getPendingVotes","params":[], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": { - "0xef1bfb6a12794615c9b0b5a21e6741f01e570185": true, - "0x42d4287eac8078828cf5f3486cfe601a275a49a5": true - } - } - ``` - -### `ibft_getSignerMetrics` - -Provides the following validator metrics for the specified range: - -* Number of blocks from each validator - -* Block number of the last block proposed by each validator (if any proposed in the specified - range) - -* All validators present in the last block of the range - -#### Parameters - -* `fromBlockNumber`: *string* - integer representing a block number or the string tag `earliest` as described -in [Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -* `toBlockNumber`: *string* - integer representing a block number or one of the string tags `latest` or -`pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -If you specify: - -* No parameters, the call provides metrics for the last 100 blocks, or all blocks if there are less - than 100 blocks. - -* Only the first parameter, the call provides metrics for all blocks from the block specified to - the latest block. - -#### Returns - -`result`: *array* of *objects* - list of validator objects - -!!! note - - The proposer of the genesis block has address `0x0000000000000000000000000000000000000000`. - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_getSignerMetrics","params":["1", "100"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"ibft_getSignerMetrics","params":["1", "100"], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": [ - { - "address": "0x7ffc57839b00206d1ad20c69a1981b489f772031", - "proposedBlockCount": "0x21", - "lastProposedBlockNumber": "0x61" - }, - { - "address": "0x42eb768f2244c8811c63729a21a3569731535f06", - "proposedBlockCount": "0x21", - "lastProposedBlockNumber": "0x63" - }, - { - "address": "0xb279182d99e65703f0076e4812653aab85fca0f0", - "proposedBlockCount": "0x21", - "lastProposedBlockNumber": "0x62" - } - ] - } - ``` - -### `ibft_getValidatorsByBlockHash` - -Lists the validators defined in the specified block. - -#### Parameters - -`block`: *string* - 32-byte block hash - -#### Returns - -`result`: *array* of *strings* - list of validator addresses - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_getValidatorsByBlockHash","params":["0xbae7d3feafd743343b9a4c578cab5e5d65eb735f6855fb845c00cab356331256"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"ibft_getValidatorsByBlockHash","params":["0xbae7d3feafd743343b9a4c578cab5e5d65eb735f6855fb845c00cab356331256"], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": [ - "0x42d4287eac8078828cf5f3486cfe601a275a49a5", - "0xb1b2bc9582d2901afdc579f528a35ca41403fa85", - "0xef1bfb6a12794615c9b0b5a21e6741f01e570185" - ] - } - ``` - -### `ibft_getValidatorsByBlockNumber` - -Lists the validators defined in the specified block. - -#### Parameters - -* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -#### Returns - -`result`: *array* of *strings* - list of validator addresses - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_getValidatorsByBlockNumber","params":["latest"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"ibft_getValidatorsByBlockNumber","params":["latest"], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": [ - "0x42d4287eac8078828cf5f3486cfe601a275a49a5", - "0xb1b2bc9582d2901afdc579f528a35ca41403fa85", - "0xef1bfb6a12794615c9b0b5a21e6741f01e570185" - ] - } - ``` - -### `ibft_proposeValidatorVote` - -Proposes to [add or remove a validator] with the specified address. - -#### Parameters - -* `address`: *string* - account address - -* `proposal`: *boolean* - `true` to propose adding validator or `false` to propose removing validator - -#### Returns - -`result`: *boolean* - `true` - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_proposeValidatorVote","params":["42d4287eac8078828cf5f3486cfe601a275a49a5",true], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"ibft_proposeValidatorVote","params":["42d4287eac8078828cf5f3486cfe601a275a49a5",true], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 1, - "result" : true - } - ``` - -## `MINER` methods - -The `MINER` API methods allow you to control the node’s mining operation. - -!!! note - - The `MINER` API methods are not enabled by default for JSON-RPC. To enable the `MINER` API - methods, use the [`--rpc-http-api`](../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` - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"miner_changeTargetGasLimit","params":[800000], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"miner_changeTargetGasLimit","params":[800000], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 1, - "result" : "Success" - } - ``` - -### `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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"miner_setCoinbase","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"miner_setCoinbase","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73"],"id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"miner_start","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"miner_start","params":[],"id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"miner_stop","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"miner_stop","params":[],"id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"net_enode","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"net_enode","params":[],"id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":53}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"net_listening","params":[],"id":53} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":53}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":53} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"net_services","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"net_services","params":[],"id":1} - ``` - - === "JSON result" - - ```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 | -| `3` | ETH | Ropsten | PoS test network | -| `4` | ETH | Rinkeby | PoA test network using Clique | -| `5` | ETH | Goerli | PoA test network using Clique | -| `2018` | ETH | Dev | PoW development network | -| `1` | ETC | Classic | Main Ethereum Classic network | -| `7` | ETC | Mordor | PoW test network | -| `6` | ETC | Kotti | PoA test network using Clique | -| `212` | ETC | Astor | 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`. - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":53}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"net_version","params":[],"id":53} - ``` - - === "JSON result for Mainnet" - - ```json - { - "jsonrpc" : "2.0", - "id" : 51, - "result" : "1" - } - ``` - - === "JSON result for Ropsten" - - ```json - { - "jsonrpc" : "2.0", - "id" : 53, - "result" : "3" - } - ``` - -## `PERM` (Permissioning) methods - -The `PERM` API methods provide permissioning functionality. -Use these methods for [local permissioning](../../../private-networks/how-to/use-permissioning/local.md) only. - -!!! important - - The `PERM` API methods are not enabled by default for JSON-RPC. To enable the `PERM` API - methods, use the [`--rpc-http-api`](../cli/options.md#rpc-http-api) or - [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) CLI options. - -### `perm_addAccountsToAllowlist` - -Adds accounts (participants) to the -[accounts permission list](../../../private-networks/how-to/use-permissioning/local.md#account-permissioning). - -#### Parameters - -`addresses`: *array* of *strings* - list of account addresses - -!!! note - - The parameters list contains a list which is why the account addresses are enclosed by double - square brackets. - -#### Returns - -`result`: *string* - `Success` or `error` (errors include attempting to add accounts already on the -allowlist and including invalid account addresses.) - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"perm_addAccountsToAllowlist","params":[["0xb9b81ee349c3807e46bc71aa2632203c5b462032", "0xb9b81ee349c3807e46bc71aa2632203c5b462034"]], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"perm_addAccountsToAllowlist","params":[["0xb9b81ee349c3807e46bc71aa2632203c5b462032", "0xb9b81ee349c3807e46bc71aa2632203c5b462034"]], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "Success" - } - ``` - -### `perm_addNodesToAllowlist` - -Adds nodes to the -[nodes allowlist](../../../private-networks/how-to/use-permissioning/local.md#node-allowlisting). - -To use domain names in enode URLs, ensure you [enable DNS support](../../concepts/node-keys.md#domain-name-support) to -avoid receiving a `request contains an invalid node` error. - -!!! warning - - Enode URL domain name support is an experimental feature. - -#### Parameters - -`enodes`: *array* of *strings* - list of [enode URLs](../../concepts/node-keys.md#enode-url) - -!!! note - - The parameters list contains a list which is why the enode URLs are enclosed by double - square brackets. - -#### Returns - -`result`: *string* - `Success` or `error`; errors include attempting to add nodes already on the allowlist or -including invalid enode URLs. - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"perm_addNodesToAllowlist","params":[["enode://7e4ef30e9ec683f26ad76ffca5b5148fa7a6575f4cfad4eb0f52f9c3d8335f4a9b6f9e66fcc73ef95ed7a2a52784d4f372e7750ac8ae0b544309a5b391a23dd7@127.0.0.1:30303","enode://2feb33b3c6c4a8f77d84a5ce44954e83e5f163e7a65f7f7a7fec499ceb0ddd76a46ef635408c513d64c076470eac86b7f2c8ae4fcd112cb28ce82c0d64ec2c94@127.0.0.1:30304"]], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"perm_addNodesToAllowlist","params":[["enode://7e4ef30e9ec683f26ad76ffca5b5148fa7a6575f4cfad4eb0f52f9c3d8335f4a9b6f9e66fcc73ef95ed7a2a52784d4f372e7750ac8ae0b544309a5b391a23dd7@127.0.0.1:30303","enode://2feb33b3c6c4a8f77d84a5ce44954e83e5f163e7a65f7f7a7fec499ceb0ddd76a46ef635408c513d64c076470eac86b7f2c8ae4fcd112cb28ce82c0d64ec2c94@127.0.0.1:30304"]], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "Success" - } - ``` - -### `perm_getAccountsAllowlist` - -Lists accounts (participants) in the -[accounts permissions list](../../../private-networks/how-to/use-permissioning/local.md#account-permissioning). - -#### Parameters - -None - -#### Returns - -`result`: *array* of *strings* - list of accounts (participants) in the accounts allowlist - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"perm_getAccountsAllowlist","params":[], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"perm_getAccountsAllowlist","params":[], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": [ - "0x0000000000000000000000000000000000000009", - "0xb9b81ee349c3807e46bc71aa2632203c5b462033" - ] - } - ``` - -### `perm_getNodesAllowlist` - -Lists nodes in the -[nodes allowlist](../../../private-networks/how-to/use-permissioning/local.md#node-allowlisting). - -#### Parameters - -None - -#### Returns - -`result`: *array* of *strings* - [enode URLs](../../concepts/node-keys.md#enode-url) of nodes in the nodes allowlist - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"perm_getNodesAllowlist","params":[], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"perm_getNodesAllowlist","params":[], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": [ - "enode://7b61d5ee4b44335873e6912cb5dd3e3877c860ba21417c9b9ef1f7e500a82213737d4b269046d0669fb2299a234ca03443f25fe5f706b693b3669e5c92478ade@127.0.0.1:30305", - "enode://2feb33b3c6c4a8f77d84a5ce44954e83e5f163e7a65f7f7a7fec499ceb0ddd76a46ef635408c513d64c076470eac86b7f2c8ae4fcd112cb28ce82c0d64ec2c94@127.0.0.1:30304" - ] - } - ``` - -### `perm_reloadPermissionsFromFile` - -Reloads the accounts and nodes allowlists from the [permissions configuration file]. - -#### Parameters - -None - -#### Returns - -`result`: *string* - `Success`, or `error` if the permissions configuration file is not valid - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"perm_reloadPermissionsFromFile","params":[], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"perm_reloadPermissionsFromFile","params":[], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "Success" - } - ``` - -### `perm_removeAccountsFromAllowlist` - -Removes accounts (participants) from the -[accounts permissions list](../../../private-networks/how-to/use-permissioning/local.md#account-permissioning). - -#### Parameters - -`addresses`: *array* of *strings* - list of account addresses - -!!! note - - The parameters list contains a list which is why the account addresses are enclosed by double - square brackets. - -#### Returns - -`result`: *string* - `Success` or `error` (errors include attempting to remove accounts not on the allowlist -and including invalid account addresses.) - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"perm_removeAccountsFromAllowlist","params":[["0xb9b81ee349c3807e46bc71aa2632203c5b462032", "0xb9b81ee349c3807e46bc71aa2632203c5b462034"]], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"perm_removeAccountsFromAllowlist","params":[["0xb9b81ee349c3807e46bc71aa2632203c5b462032", "0xb9b81ee349c3807e46bc71aa2632203c5b462034"]], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "Success" - } - ``` - -### `perm_removeNodesFromAllowlist` - -Removes nodes from the -[nodes allowlist](../../../private-networks/how-to/use-permissioning/local.md#node-allowlisting). - -#### Parameters - -`enodes`: *array* of *strings* - list of [enode URLs](../../concepts/node-keys.md#enode-url) - -!!! note - - The parameters list contains a list which is why the enode URLs are enclosed by double square - brackets. - -#### Returns - -`result`: *string* - `Success` or `error` (errors include attempting to remove nodes not on the allowlist -and including invalid enode URLs.) - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"perm_removeNodesFromAllowlist","params":[["enode://7e4ef30e9ec683f26ad76ffca5b5148fa7a6575f4cfad4eb0f52f9c3d8335f4a9b6f9e66fcc73ef95ed7a2a52784d4f372e7750ac8ae0b544309a5b391a23dd7@127.0.0.1:30303","enode://2feb33b3c6c4a8f77d84a5ce44954e83e5f163e7a65f7f7a7fec499ceb0ddd76a46ef635408c513d64c076470eac86b7f2c8ae4fcd112cb28ce82c0d64ec2c94@127.0.0.1:30304"]], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"perm_removeNodesFromAllowlist","params":[["enode://7e4ef30e9ec683f26ad76ffca5b5148fa7a6575f4cfad4eb0f52f9c3d8335f4a9b6f9e66fcc73ef95ed7a2a52784d4f372e7750ac8ae0b544309a5b391a23dd7@127.0.0.1:30303","enode://2feb33b3c6c4a8f77d84a5ce44954e83e5f163e7a65f7f7a7fec499ceb0ddd76a46ef635408c513d64c076470eac86b7f2c8ae4fcd112cb28ce82c0d64ec2c94@127.0.0.1:30304"]], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "Success" - } - ``` - -## `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` - -!!! example - - === "curl HTTP request" - - ```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 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"plugins_reloadPluginConfig","params":["tech.pegasys.plus.plugin.kafka.KafkaPlugin"],"id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "Success" - } - ``` - -## `PRIV` methods - -The `PRIV` API methods provide functionality for [private transactions](../../../private-networks/concepts/privacy/private-transactions/index.md) and -[privacy groups](../../../private-networks/concepts/privacy/privacy-groups.md). - -!!! note - - The `PRIV` API methods are not enabled by default for JSON-RPC. To enable the `PRIV` API - methods, use the [`--rpc-http-api`](../cli/options.md#rpc-http-api) or - [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) options. - -### `priv_call` - -Invokes a private contract function locally and does not change the privacy group state. - -For private contracts, `priv_call` is the same as [`eth_call`](#eth_call) for public contracts. - -#### Parameters - -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../../private-networks/concepts/privacy/privacy-groups.md) - -* `call`: *object* - [transaction call object](objects.md#transaction-call-object) - -* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -#### Returns - -`result`: *data* - return value of the executed contract - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"priv_call","params":["tb8NVyQqZnHNegf/3mYsyB+HEud4SPWn90rz3GoskRw=", {"to":"0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13","data": "0x3fa4f245"}, "latest"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"priv_call","params":["tb8NVyQqZnHNegf/3mYsyB+HEud4SPWn90rz3GoskRw=", {"to":"0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13","data": "0x3fa4f245"}, "latest"],"id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "0x0000000000000000000000000000000000000000000000000000000000000001" - } - ``` - - === "curl GraphQL" - - ```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 - ``` - - === "GraphQL" - - ```bash - { - block { - number - call(data: {from: "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", to: "0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13", data: "0x12a7b914"}) { - data - status - } - } - } - ``` - - === "GraphQL result" - - ```json - { - "data" : { - "block" : { - "number" : 17449, - "call" : { - "data" : "0x", - "status" : 1 - } - } - } - } - ``` - -### `priv_createPrivacyGroup` - -Creates a group of nodes, specified by their [Tessera](https://docs.tessera.consensys.net/) public key. - -#### Parameters - -`options`: *object* - request options object with the following fields: - -* `addresses`: *array* of *strings* - list of nodes specified by - [Tessera](https://docs.tessera.consensys.net/) public keys - -* `name`: *string* - (optional) privacy group name - -* `description`: *string* - (optional) privacy group description - -#### Returns - -`result`: *string* - privacy group ID - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method": "priv_createPrivacyGroup", "params": [{"addresses":["sTZpbQhcOfd9ZaFDnC00e/N2Ofv9p4/ZTBbEeVtXJ3E=","quhb1pQPGN1w8ZSZSyiIfncEAlVY/M/rauSyQ5wVMRE="],"name":"Group A","description":"Description Group A"}],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method": "priv_createPrivacyGroup", "params": [{"addresses":["sTZpbQhcOfd9ZaFDnC00e/N2Ofv9p4/ZTBbEeVtXJ3E=","quhb1pQPGN1w8ZSZSyiIfncEAlVY/M/rauSyQ5wVMRE="],"name":"Group A","description":"Description Group A"}],"id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "ewuTVoc5nlvWMwTFdRRK/wvV0dcyQo/Pauvx5bNEbTk=" - } - ``` - -### `priv_debugGetStateRoot` - -Returns the state root of the specified privacy group at the specified block. - -#### Parameters - -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../../private-networks/concepts/privacy/privacy-groups.md) - -* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -#### Returns - -`result`: *string* - 32-byte state root - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"priv_debugGetStateRoot","params":["xJdxvWOEmrs2MCkKWlgArTzWIXFfU/tmVxI3EKssVTk=","latest"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"priv_debugGetStateRoot","params":["xJdxvWOEmrs2MCkKWlgArTzWIXFfU/tmVxI3EKssVTk=","latest"],"id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 1, - "result" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421" - } - - ``` - -### `priv_deletePrivacyGroup` - -Deletes the specified privacy group. - -#### Parameters - -`privacyGroupId`: *string* - privacy group ID - -#### Returns - -`result`: *string* - deleted privacy group ID - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"priv_deletePrivacyGroup","params":["ewuTVoc5nlvWMwTFdRRK/wvV0dcyQo/Pauvx5bNEbTk="],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"priv_deletePrivacyGroup","params":["ewuTVoc5nlvWMwTFdRRK/wvV0dcyQo/Pauvx5bNEbTk="],"id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 53, - "result": "ewuTVoc5nlvWMwTFdRRK/wvV0dcyQo/Pauvx5bNEbTk=" - } - ``` - -### `priv_distributeRawTransaction` - -Distributes a signed, RLP encoded -[private transaction](../../../private-networks/how-to/send-transactions/private-transactions.md). - -!!! tip - - If you want to sign the [privacy marker transaction](../../private-networks/how-to/use-privacy/sign-pmts.md) - outside of Besu, use [`priv_distributeRawTransaction`](../../private-networks/how-to/send-transactions/private-transactions.md#priv_distributerawtransaction) - instead of [`eea_sendRawTransaction`](#eea_sendrawtransaction). - -#### Parameters - -`transaction`: *string* - signed RLP-encoded private transaction - -#### Returns - -`result`: *string* - 32-byte enclave key (the enclave key is a pointer to the private transaction in -[Tessera](https://docs.tessera.consensys.net/).) - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"priv_distributeRawTransaction","params": ["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"priv_distributeRawTransaction","params": ["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "0xfd0d90ab824574abc19c0776ca0210e764561d0ef6d621f2bbbea316eccfe56b" - } - ``` - -### `priv_findPrivacyGroup` - -Returns a list of privacy groups containing only the listed members. For example, if the listed -members are A and B, a privacy group containing A, B, and C is not returned. - -#### Parameters - -`members`: *array* of *strings* - members specified by [Tessera](https://docs.tessera.consensys.net/) public keys - -#### Returns - -`result`: *array* of *objects* - privacy group objects containing only the specified members; privacy groups are -[EEA-compliant](../../../private-networks/concepts/privacy/privacy-groups.md#enterprise-ethereum-alliance-privacy) -or [Besu-extended](../../../private-networks/concepts/privacy/privacy-groups.md#besu-extended-privacy) with types: - -* `LEGACY` for EEA-compliant groups. - -* `PANTHEON` for Besu-extended groups. - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc": "2.0","method": "priv_findPrivacyGroup","params": [["negmDcN2P4ODpqn/6WkJ02zT/0w0bjhGpkZ8UP6vARk=", "g59BmTeJIn7HIcnq8VQWgyh/pDbvbt2eyP0Ii60aDDw="]],"id": 1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc": "2.0","method": "priv_findPrivacyGroup","params": [["negmDcN2P4ODpqn/6WkJ02zT/0w0bjhGpkZ8UP6vARk=", "g59BmTeJIn7HIcnq8VQWgyh/pDbvbt2eyP0Ii60aDDw="]],"id": 1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": [ - { - "privacyGroupId": "GpK3ErNO0xF27T0sevgkJ3+4qk9Z+E3HtXYxcKIBKX8=", - "name": "Group B", - "description": "Description of Group B", - "type": "PANTHEON", - "members": [ - "negmDcN2P4ODpqn/6WkJ02zT/0w0bjhGpkZ8UP6vARk=", - "g59BmTeJIn7HIcnq8VQWgyh/pDbvbt2eyP0Ii60aDDw=" - ] - } - ] - } - ``` - -### `priv_getCode` - -Returns the code of the private smart contract at the specified address. Compiled smart contract code -is stored as a hexadecimal value. - -#### Parameters - -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../../private-networks/concepts/privacy/privacy-groups.md) - -* `address`: *string* - 20-byte contract address - -* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, -or `pending`, as described in [Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -#### Returns - -`result`: *data* - code stored at the specified address - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getCode","params":["1lJxSIP4JOp6uRn9wYsPeWwqoOP1c4nPQjylB4FExUA=", "0xeaf1c1bd00ef0bec5e39fba81740f1c5d05aa201", "latest"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"priv_getCode","params":["1lJxSIP4JOp6uRn9wYsPeWwqoOP1c4nPQjylB4FExUA=", "0xeaf1c1bd00ef0bec5e39fba81740f1c5d05aa201", "latest"],"id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "0x60806040526004361060485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633fa4f2458114604d57806355241077146071575b600080fd5b348015605857600080fd5b50605f6088565b60408051918252519081900360200190f35b348015607c57600080fd5b506086600435608e565b005b60005481565b60008190556040805182815290517f199cd93e851e4c78c437891155e2112093f8f15394aa89dab09e38d6ca0727879181900360200190a1505600a165627a7a723058209d8929142720a69bde2ab3bfa2da6217674b984899b62753979743c0470a2ea70029" - } - ``` - -### `priv_getEeaTransactionCount` - -Returns the private transaction count for the specified account and -[group of sender and recipients]. - -!!! important - - If sending more than one transaction to be mined in the same block (that is, you are not - waiting for the transaction receipt), you must calculate the private transaction nonce outside - Besu instead of using `priv_getEeaTransactionCount`. - -#### Parameters - -* `address`: *string* - account address - -* `sender`: *string* - base64-encoded Tessera address of the sender - -* `recipients`: *array* of *strings* - base64-encoded Tessera addresses of recipients - -#### Returns - -`result`: *string* - integer representing the number of private transactions sent from the address to the -specified group of sender and recipients - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getEeaTransactionCount","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "GGilEkXLaQ9yhhtbpBT03Me9iYa7U/mWXxrJhnbl1XY=", ["KkOjNLmCI6r+mICrC6l+XuEDjFEzQllaMQMpWLl4y1s=","eLb69r4K8/9WviwlfDiZ4jf97P9czyS3DkKu0QYGLjg="]], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"priv_getEeaTransactionCount","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "GGilEkXLaQ9yhhtbpBT03Me9iYa7U/mWXxrJhnbl1XY=", ["KkOjNLmCI6r+mICrC6l+XuEDjFEzQllaMQMpWLl4y1s=","eLb69r4K8/9WviwlfDiZ4jf97P9czyS3DkKu0QYGLjg="]], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "0x1" - } - ``` - -### `priv_getFilterChanges` - -Polls the specified filter for a private contract and returns an array of changes that have occurred -since the last poll. - -Filters for private contracts can only be created by [`priv_newFilter`](#priv_newfilter) so unlike -[`eth_getFilterChanges`](#eth_getfilterchanges), `priv_getFilterChanges` always returns an array -of log objects or an empty list. - -#### Parameters - -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../../private-networks/concepts/privacy/privacy-groups.md) - -* `filterId`: *string* - filter ID - -#### Returns - -`result`: *array* of *objects* - list of [log objects](objects.md#log-object), or an empty list if nothing has -changed since the last poll - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc": "2.0","method": "priv_getFilterChanges","params": ["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc": "2.0","method": "priv_getFilterChanges","params": ["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": [ - { - "logIndex": "0x0", - "removed": false, - "blockNumber": "0x4d0", - "blockHash": "0x1c8200667a869e99b945374c37277b5ee7a7ae67943e13c82563381387553dbb", - "transactionHash": "0xb1966b9b372ba68952f48f3a3e78f036f5ae82ceca2de972a782d07fb88f6d88", - "transactionIndex": "0x0", - "address": "0x991cc548c154b2953cc48c02f782e1314097dfbb", - "data": "0x", - "topics": [ - "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410", - "0x0000000000000000000000000000000000000000000000000000000000000002" - ] - } - ] - } - ``` - -### `priv_getFilterLogs` - -Returns an array of [logs](../../concepts/events-and-logs.md) for the specified filter for a private -contract. - -For private contracts, `priv_getFilterLogs` is the same as [`eth_getFilterLogs`](#eth_getfilterlogs) -for public contracts except there is no [automatic log bloom caching](../cli/options.md#auto-log-bloom-caching-enabled) -for private contracts. - -!!! note - - `priv_getFilterLogs` is only used for filters created with [`priv_newFilter`](#priv_newfilter). - To specify a filter object and get logs without creating a filter, use [`priv_getLogs`](#priv_getlogs). - -#### Parameters - -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../../private-networks/concepts/privacy/privacy-groups.md) - -* `filterId`: *string* - filter ID - -#### Returns - -`result`: *array* of *objects* - list of [log objects](objects.md#log-object) - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc": "2.0","method": "priv_getFilterLogs","params":["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc": "2.0","method": "priv_getFilterLogs","params":["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": [ - { - "logIndex": "0x0", - "removed": false, - "blockNumber": "0x493", - "blockHash": "0xd9cb3a852e1e02c95f035a2e32d57f82c10cab61faa3e8f5c010adf979bb4786", - "transactionHash": "0x78866dc51fdf189d8cca74f6a8fe54f172348fbd2163bbe80fa8b106cfc7deb4", - "transactionIndex": "0x0", - "address": "0x991cc548c154b2953cc48c02f782e1314097dfbb", - "data": "0x", - "topics": [ - "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410", - "0x0000000000000000000000000000000000000000000000000000000000000001" - ] - }, - { - "logIndex": "0x0", - "removed": false, - "blockNumber": "0x4d0", - "blockHash": "0x1c8200667a869e99b945374c37277b5ee7a7ae67943e13c82563381387553dbb", - "transactionHash": "0xb1966b9b372ba68952f48f3a3e78f036f5ae82ceca2de972a782d07fb88f6d88", - "transactionIndex": "0x0", - "address": "0x991cc548c154b2953cc48c02f782e1314097dfbb", - "data": "0x", - "topics": [ - "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410", - "0x0000000000000000000000000000000000000000000000000000000000000002" - ] - } - ] - } - ``` - -### `priv_getLogs` - -Returns an array of [logs](../../concepts/events-and-logs.md) matching a specified filter object. - -For private contracts, `priv_getLogs` is the same as [`eth_getLogs`](#eth_getlogs) for public contracts -except there is no [automatic log bloom caching](../cli/options.md#auto-log-bloom-caching-enabled) -for private contracts. - -#### Parameters - -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../../private-networks/concepts/privacy/privacy-groups.md) - -* `filterOptions`: *object* - [filter options object](objects.md#filter-options-object) - -#### Returns - -`result`: *array* of *objects* - list of [log objects](objects.md#log-object) - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc": "2.0","method": "priv_getLogs","params":["vGy/TZgO6y8VPMVeJAQ99MF1NaTf5ohA3TFfzoEF71k=",{"fromBlock": "earliest","toBlock": "latest","addresses": ["0x630c507ff633312087dc33c513b66276abcd2fc3"],"topics": ["0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410"]}],"id": 1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc": "2.0","method": "priv_getLogs","params":["vGy/TZgO6y8VPMVeJAQ99MF1NaTf5ohA3TFfzoEF71k=",{"fromBlock": "earliest","toBlock": "latest","addresses": ["0x630c507ff633312087dc33c513b66276abcd2fc3"],"topics": ["0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410"]}],"id": 1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": [ - { - "logIndex": "0x0", - "removed": false, - "blockNumber": "0x342", - "blockHash": "0xf5954f068fa2f2f7741281e8c753a8e92047e27ab3c4971836d2c89fab86d92b", - "transactionHash": "0xa9ba5cffde9d4ad8997c5c4352d5d49eeea0e9def8a4ea69991b8837c49d4e4f", - "transactionIndex": "0x0", - "address": "0x630c507ff633312087dc33c513b66276abcd2fc3", - "data": "0x", - "topics": [ - "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410", - "0x0000000000000000000000000000000000000000000000000000000000000001" - ] - }, - { - "logIndex": "0x0", - "removed": false, - "blockNumber": "0x383", - "blockHash": "0x91b73a47d53e3a88d62ed091a89a4be7557ad91b552e7ff7d86bf78977d5d45d", - "transactionHash": "0xc2a185faf00e87434e55b7f70cc4c38be354c2128b4b96b5f5def0b54a2173ec", - "transactionIndex": "0x0", - "address": "0x630c507ff633312087dc33c513b66276abcd2fc3", - "data": "0x", - "topics": [ - "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410", - "0x0000000000000000000000000000000000000000000000000000000000000002" - ] - } - ] - } - ``` - -### `priv_getPrivacyPrecompileAddress` - -Returns the address of the -[privacy precompiled contract](../../../private-networks/concepts/privacy/private-transactions/processing.md). -The address -is derived and based on the value of the -[`privacy-flexible-groups-enabled`](../cli/options.md#privacy-flexible-groups-enabled) option. - -#### Parameters - -None - -#### Returns - -`result`: *string* - address of the privacy precompile - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getPrivacyPrecompileAddress","params":[], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"priv_getPrivacyPrecompileAddress","params":[], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "0x000000000000000000000000000000000000007e" - } - ``` - -### `priv_getPrivateTransaction` - -Returns the private transaction if you are a participant, otherwise, `null`. - -#### Parameters - -`transaction`: *string* - transaction hash returned by [`eea_sendRawTransaction`](#eea_sendrawtransaction) or -[`eea_sendTransaction`](https://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/#eea_sendtransaction). - -#### Returns - -`result`: *object* - [private transaction object](objects.md#private-transaction-object), or `null` if not -a participant in the private transaction - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getPrivateTransaction","params":["0x623c4ce5275a87b91f4f1c521012d39ca19311c787bde405490f4c0426a71498"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"priv_getPrivateTransaction","params":["0x623c4ce5275a87b91f4f1c521012d39ca19311c787bde405490f4c0426a71498"], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": { - "from": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", - "gas": "0x2dc6c0", - "gasPrice": "0x0", - "hash": "0x623c4ce5275a87b91f4f1c521012d39ca19311c787bde405490f4c0426a71498", - "input": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610221806100606000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633fa4f2451461005c5780636057361d1461008757806367e404ce146100b4575b600080fd5b34801561006857600080fd5b5061007161010b565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b506100b260048036038101908080359060200190929190505050610115565b005b3480156100c057600080fd5b506100c96101cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600254905090565b7fc9db20adedc6cf2b5d25252b101ab03e124902a73fcb12b753f3d1aaa2d8f9f53382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a18060028190555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058208efaf938851fb2d235f8bf9a9685f149129a30fe0f4b20a6c1885dc02f639eba0029", - "nonce": "0x0", - "to": null, - "value": "0x0", - "v": "0xfe8", - "r": "0x654a6a9663ca70bb13e27cca14b3777cc92da184e19a151cdeef2ccbbd5c6405", - "s": "0x5dd4667b020c8a5af7ae28d4c3126f8dcb1187f49dcf0de9d7a39b1651892eef", - "privateFrom": "negmDcN2P4ODpqn/6WkJ02zT/0w0bjhGpkZ8UP6vARk=", - "privateFor": [ - "g59BmTeJIn7HIcnq8VQWgyh/pDbvbt2eyP0Ii60aDDw=" - ], - "restriction": "restricted" - } - } - ``` - -### `priv_getTransactionCount` - -Returns the private transaction count for specified account and privacy group. - -!!! important - - If sending more than one transaction to be mined in the same block (that is, you are not - waiting for the transaction receipt), you must calculate the private transaction nonce outside - Besu instead of using `priv_getTransactionCount`. - -#### Parameters - -* `address`: *string* - account address - -* `privacyGroupId`: *string* - privacy group ID - -#### Returns - -`result`: *string* - integer representing the number of private transactions sent from the address to the -specified privacy group - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getTransactionCount","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "kAbelwaVW7okoEn1+okO+AbA4Hhz/7DaCOWVQz9nx5M="], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"priv_getTransactionCount","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "kAbelwaVW7okoEn1+okO+AbA4Hhz/7DaCOWVQz9nx5M="], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "0x1" - } - ``` - -### `priv_getTransactionReceipt` - -Returns information about the private transaction after mining the transaction. Receipts for -pending transactions are not available. - -#### Parameters - -`transaction`: *string* - 32-byte hash of a transaction - -#### Returns - -`result`: *object* - [private Transaction receipt object](objects.md#private-transaction-receipt-object), -or `null` if no receipt found - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getTransactionReceipt","params":["0xf3ab9693ad92e277bf785e1772f29fb1864904bbbe87b0470455ddb082caab9d"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"priv_getTransactionReceipt","params":["0xf3ab9693ad92e277bf785e1772f29fb1864904bbbe87b0470455ddb082caab9d"],"id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": { - "blockHash": "0xe7212a92cfb9b06addc80dec2a0dfae9ea94fd344efeb157c41e12994fcad60a", - "blockNumber": "0x50", - "contractAddress": "0x493b76031593402e24e16faa81f677b58e2d53f3", - "from": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", - "logs": [], - "to": "0xf17f52151ebef6c7334fad080c5704d77216b732", - "transactionHash": "0x36219e92b5f53d4150aa9ef7d2d793118cced523de6724100da5b534e3ceb4b8", - "transactionIndex": "0x0", - "output": "0x6080604052600436106049576000357c010000000000000000000000000000000000000000000 - 0000000000000900463ffffffff1680633fa4f24514604e57806355241077146076575b600080fd5b3480156059 - 57600080fd5b50606060a0565b6040518082815260200191505060405180910390f35b348015608157600080fd5b - 50609e6004803603810190808035906020019092919050505060a6565b005b60005481565b8060008190555050560 - 0a165627a7a723058202bdbba2e694dba8fff33d9d0976df580f57bff0a40e25a46c398f8063b4c00360029", - "commitmentHash": "0x79b9e6b0856db398ad7dc208f15b1d38c0c0b0c5f99e4a443a2c5a85510e96a5", - "status": "0x1", - "privateFrom": "negmDcN2P4ODpqn/6WkJ02zT/0w0bjhGpkZ8UP6vARk=", - "privacyGroupId": "cD636RZlcqVSpoxT/ExbkWQfBO7kPAZO0QlWHErNSL8=", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - } - } - ``` - -### `priv_newFilter` - -Creates a [log filter](../../concepts/events-and-logs.md) for a private contract. To poll for logs associated with the -created filter, use [`priv_getFilterChanges`](#priv_getfilterchanges). To get all logs associated with -the filter, use [`priv_getFilterLogs`](#priv_getfilterlogs). - -For private contracts, `priv_newFilter` is the same as [`eth_newFilter`](#eth_newfilter) -for public contracts. - -#### Parameters - -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../../private-networks/concepts/privacy/privacy-groups.md) - -* `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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc": "2.0","method": "priv_newFilter","params": ["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=",{"fromBlock": "earliest","toBlock": "latest","addresses": ["0x991cc548c154b2953cc48c02f782e1314097dfbb"],"topics": ["0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410"]}],"id": 1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc": "2.0","method": "priv_newFilter","params": ["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=",{"fromBlock": "earliest","toBlock": "latest","addresses": ["0x991cc548c154b2953cc48c02f782e1314097dfbb"],"topics": ["0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410"]}],"id": 1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": "0x4a35b92809d73f4f53a2355d62125442" - } - ``` - -### `priv_uninstallFilter` - -Uninstalls a filter for a private contract with the specified ID. When a filter is no longer required, -call this method. - -Filters time out when not requested by [`priv_getFilterChanges`](#priv_getfilterchanges) or [`priv_getFilterLogs`](#priv_getfilterlogs) for 10 -minutes. - -For private contracts, `priv_uninstallFilter` is the same as [`eth_uninstallFilter`](#eth_uninstallfilter) -for public contracts. - -#### Parameters - -* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../../private-networks/concepts/privacy/privacy-groups.md) - -* `filterId`: *string* - filter ID - -#### Returns - -`result`: *boolean* - indicates if the filter is successfully uninstalled - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc": "2.0","method": "priv_uninstallFilter","params":["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc": "2.0","method": "priv_uninstallFilter","params":["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": true - } - ``` - -## `QBFT` methods - -The `QBFT` API methods provide access to the [QBFT](../../../private-networks/how-to/configure/consensus/qbft.md) consensus engine. - -!!! note - - The `QBFT` API methods are not enabled by default for JSON-RPC. To enable the `QBFT` API - methods, use the [`--rpc-http-api`](../cli/options.md#rpc-http-api) or - [`--rpc-ws-api`](../cli/options.md#rpc-ws-api) options. - -### `qbft_discardValidatorVote` - -Discards a proposal to -[add or remove a validator](../../../private-networks/how-to/configure/consensus/qbft.md#adding-and-removing-validators) with the specified address. - -#### Parameters - -`address`: *string* - 20-byte address of proposed validator - -#### Returns - -`result`: *boolean* - indicates if the proposal is discarded - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_discardValidatorVote","params":["0xef1bfb6a12794615c9b0b5a21e6741f01e570185"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"qbft_discardValidatorVote","params":["0xef1bfb6a12794615c9b0b5a21e6741f01e570185"], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 1, - "result" : true - } - ``` - -### `qbft_getPendingVotes` - -Returns [votes](../../../private-networks/how-to/configure/consensus/qbft.md#adding-and-removing-validators) cast in the current -[epoch](../../../private-networks/how-to/configure/consensus/qbft.md#genesis-file). - -#### Parameters - -None - -#### Returns - -`result`: *map* of *strings* to *booleans* - map of account addresses to corresponding boolean values indicating the -vote for each account; if `true`, the vote is to add a validator. If `false`, the proposal is to -remove a validator. - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_getPendingVotes","params":[], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"qbft_getPendingVotes","params":[], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": { - "0xef1bfb6a12794615c9b0b5a21e6741f01e570185": true, - "0x42d4287eac8078828cf5f3486cfe601a275a49a5": true - } - } - ``` - -### `qbft_getSignerMetrics` - -Provides the following validator metrics for the specified range: - -* Number of blocks from each validator - -* Block number of the last block proposed by each validator (if any proposed in the specified - range) - -* All validators present in the last block of the range - -#### Parameters - -* `fromBlockNumber`: *string* - integer representing a block number or the string tag `earliest` as described -in [Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -* `toBlockNumber`: *string* - integer representing a block number or one of the string tags `latest` or -`pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -If you specify: - -* No parameters, the call provides metrics for the last 100 blocks, or all blocks if there are less - than 100 blocks. - -* Only the first parameter, the call provides metrics for all blocks from the block specified to - the latest block. - -#### Returns - -`result`: *array* of *objects* - list of validator objects - -!!! note - - The proposer of the genesis block has address `0x0000000000000000000000000000000000000000`. - -!!! example - - === "curl HTTP" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_getSignerMetrics","params":["1", "100"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS" - - ```bash - {"jsonrpc":"2.0","method":"qbft_getSignerMetrics","params":["1", "100"], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": [ - { - "address": "0x7ffc57839b00206d1ad20c69a1981b489f772031", - "proposedBlockCount": "0x21", - "lastProposedBlockNumber": "0x61" - }, - { - "address": "0x42eb768f2244c8811c63729a21a3569731535f06", - "proposedBlockCount": "0x21", - "lastProposedBlockNumber": "0x63" - }, - { - "address": "0xb279182d99e65703f0076e4812653aab85fca0f0", - "proposedBlockCount": "0x21", - "lastProposedBlockNumber": "0x62" - } - ] - } - ``` - -### `qbft_getValidatorsByBlockHash` - -Lists the validators defined in the specified block. - -#### Parameters - -`block`: *string* - 32-byte block hash - -#### Returns - -`result`: *array* of *strings* - list of validator addresses - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockHash","params":["0xbae7d3feafd743343b9a4c578cab5e5d65eb735f6855fb845c00cab356331256"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockHash","params":["0xbae7d3feafd743343b9a4c578cab5e5d65eb735f6855fb845c00cab356331256"], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": [ - "0x42d4287eac8078828cf5f3486cfe601a275a49a5", - "0xb1b2bc9582d2901afdc579f528a35ca41403fa85", - "0xef1bfb6a12794615c9b0b5a21e6741f01e570185" - ] - } - ``` - -### `qbft_getValidatorsByBlockNumber` - -Lists the validators defined in the specified block. - -#### Parameters - -* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -#### Returns - -`result`: *array* of *strings* - list of validator addresses - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockNumber","params":["latest"], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockNumber","params":["latest"], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc": "2.0", - "id": 1, - "result": [ - "0x42d4287eac8078828cf5f3486cfe601a275a49a5", - "0xb1b2bc9582d2901afdc579f528a35ca41403fa85", - "0xef1bfb6a12794615c9b0b5a21e6741f01e570185" - ] - } - ``` - -### `qbft_proposeValidatorVote` - -Proposes to -[add or remove a validator](../../../private-networks/how-to/configure/consensus/qbft.md#adding-and-removing-validators) with the specified address. - -#### Parameters - -* `address`: *string* - account address - -* `proposal`: *boolean* - `true` to propose adding validator or `false` to propose removing validator - -#### Returns - -`result`: *boolean* - `true` - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_proposeValidatorVote","params":["42d4287eac8078828cf5f3486cfe601a275a49a5",true], "id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"qbft_proposeValidatorVote","params":["42d4287eac8078828cf5f3486cfe601a275a49a5",true], "id":1} - ``` - - === "JSON result" - - ```json - { - "jsonrpc" : "2.0", - "id" : 1, - "result" : true - } - ``` - -## `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. - -!!! important - - Your node must be an archive node (that is, synchronized without pruning or fast sync) or the - requested block must be within the number of [blocks retained](../cli/options.md#pruning-blocks-retained) - with [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). - -#### Parameters - -`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -#### 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). - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"trace_block","params":["0x6"],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"trace_block","params":["0x6"],"id":1} - ``` - - === "JSON result" - - ```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. - -!!! important - - The requested transaction must be contained in a block within the number of - [blocks retained](../cli/options.md#pruning-blocks-retained) with [pruning enabled](../cli/options.md#pruning-enabled) - (by default, 1024). - -#### Parameters - -* `call`: *object* - [transaction call object](objects.md#transaction-call-object) - -* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -* `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 - -!!! example - - === "curl HTTP request" - - ```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 - ``` - - === "wscat WS request" - - ```bash - {"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 result" - - ```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. - -!!! important - - The requested block must be within the number of [blocks retained](../cli/options.md#pruning-blocks-retained) - with [pruning enabled](../cli/options.md#pruning-enabled) - (by default, 1024). - -#### 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* - integer representing a block number or one of the string tags `latest`, - `earliest`, or `pending`, as described in - [Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -#### Returns - -`result`: *array* of *objects* - list of [calls to other contracts](../trace-types.md#trace) containing -one object per call, in transaction execution order - -!!! example - - === "curl HTTP request" - - ```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 - ``` - - === "wscat WS request" - - ```bash - {"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 result" - - ```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. - -!!! important - - Your node must be an archive node (that is, synchronized without pruning or fast sync) or the - requested block must be within the number of [blocks retained](../cli/options.md#pruning-blocks-retained) - with [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). - -#### 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 - -!!! example - - === "curl HTTP request" - - ```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 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"trace_filter","params":[{"fromBlock":"0x1","toBlock":"0x21","after":2,"count":2,"fromAddress":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"]}],"id":415} - ``` - - === "JSON result" - - ```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 trace at given position. - -!!! important - - Your node must be an archive node (that is, synchronized without pruning or fast sync) or the - requested transaction must be contained in a block within - the number of [blocks retained](../cli/options.md#pruning-blocks-retained) with - [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). - -#### 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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"trace_get","params":["0x17104ac9d3312d8c136b7f44d4b8b47852618065ebfa534bd2d3b5ef218ca1f3",["0x0"]],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"trace_get","params":["0x17104ac9d3312d8c136b7f44d4b8b47852618065ebfa534bd2d3b5ef218ca1f3",["0x0"]],"id":1} - ``` - - === "JSON result" - - ```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. - -!!! important - - The requested transaction must be contained in a block within - the number of [blocks retained](../cli/options.md#pruning-blocks-retained) with - [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). - -#### 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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"trace_rawTransaction","params":["0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",["trace"]],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"trace_rawTransaction","params":["0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",["trace"]],"id":1} - ``` - - === "JSON result" - - ```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. - -!!! important - - The requested block must be within the number of [blocks retained](../cli/options.md#pruning-blocks-retained) - with [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). - -#### Parameters - -* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, -`earliest`, or `pending`, as described in -[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) - -* `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). - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc": "2.0", "method": "trace_replayBlockTransactions","params": ["0x12",["trace","vmTrace","stateDiff"]],"id": 1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc": "2.0", "method": "trace_replayBlockTransactions","params": ["0x12",["trace","vmTrace","stateDiff"]],"id": 1} - ``` - - === "JSON result" - - ```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. - -!!! important - - Your node must be an archive node (that is, synchronized without pruning or fast sync) or the - requested transaction must be contained in a block within - the number of [blocks retained](../cli/options.md#pruning-blocks-retained) with - [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). - -#### 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). - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc": "2.0", "method": "trace_transaction","params": ["0x4c253746668dca6ac3f7b9bc18248b558a95b5fc881d140872c2dff984d344a7"],"id": 1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc": "2.0", "method": "trace_transaction","params": ["0x4c253746668dca6ac3f7b9bc18248b558a95b5fc881d140872c2dff984d344a7"],"id": 1} - ``` - - === "JSON result" - - ```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) - -!!! example - - === "curl HTTP request" - - ```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 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"txpool_besuPendingTransactions","params":[2,{"from":{"eq":"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"},"gas":{"lt":"0x5209"},"nonce":{"gt":"0x1"}}],"id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"txpool_besuStatistics","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"txpool_besuStatistics","params":[],"id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"txpool_besuTransactions","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"txpool_besuTransactions","params":[],"id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":1} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c00"],"id":53}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c00"],"id":53} - ``` - - === "JSON result" - - ```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 - -!!! example - - === "curl HTTP request" - - ```bash - curl -X POST --data '{"jsonrpc":"2.0","method":"rpc_modules","params":[],"id":1}' http://127.0.0.1:8545 - ``` - - === "wscat WS request" - - ```bash - {"jsonrpc":"2.0","method":"rpc_modules","params":[],"id":1} - ``` - - === "JSON result" - - ```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 -[add or remove a signer with the specified address]: ../../../private-networks/how-to/configure/consensus/clique.md#add-and-remove-signers -[signers for the specified block]: ../../../private-networks/how-to/configure/consensus/clique.md#adding-and-removing-signers -[add or remove a validator]: ../../../private-networks/how-to/configure/consensus/ibft.md#add-and-remove-validators -[permissions configuration file]: ../../../private-networks/how-to/use-permissioning/local.md#permissions-configuration-file -[group of sender and recipients]: ../../../private-networks/concepts/privacy/privacy-groups.md#enterprise-ethereum-alliance-privacy - -*[EEA]: Enterprise Ethereum Alliance diff --git a/docs/global/reference/api/objects.md b/docs/global/reference/api/objects.md deleted file mode 100644 index e819b3962d5..00000000000 --- a/docs/global/reference/api/objects.md +++ /dev/null @@ -1,309 +0,0 @@ ---- -description: Hyperledger Besu API objects reference ---- - -# Hyperledger Besu API objects - -The following objects are parameters for or returned by Besu API methods. - -## 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. | -| **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 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/Transaction-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). | -| **gasUsedRatio** | Array | Array of block gas used ratios. These are calculated as the ratio of `gasUsed` and `gasLimit`. | - -## Filter options object - -Parameter for [`eth_newFilter`](index.md#eth_newfilter), -[`eth_getLogs`](index.md#eth_getlogs), and [`priv_getLogs`](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`](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/Transaction-Types.md#access_list-transactions) and may be used in [`EIP1559` transactions](../../concepts/Transactions/Transaction-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/Transaction-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/Transaction-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/Transaction-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/Transaction-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. | - -## Private transaction object - -Returned by [`priv_getPrivateTransaction`](index.md#priv_getprivatetransaction). - -| Key | Type | Value | -|-----|:----:|-------| -| **from** | Data, 20 bytes | Address of the sender. | -| **gas** | Quantity | Gas provided by the sender. | -| **gasPrice** | Quantity | Gas price, in Wei, provided by the sender. | -| **input** | Data | The data to create or invoke a contract. | -| **nonce** | Quantity | Number of transactions made by the sender to the privacy group before this one. | -| **to** | Data, 20 bytes | `null` if a contract creation transaction, otherwise, the contract address. | -| **value** | Quantity | `null` because private transactions cannot transfer Ether. | -| **v** | Quantity | ECDSA Recovery ID. | -| **r** | Data, 32 bytes | ECDSA signature r. | -| **s** | Data, 32 bytes | ECDSA signature s. | -| **privateFrom** | Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) public key of the sender. | -| **privateFor** | Array of Data, 32 bytes each | [Tessera](https://docs.tessera.consensys.net/) public keys of recipients. Not returned if using `privacyGroupId` to [send the transaction](../../../private-networks/concepts/privacy/privacy-groups.md#privacy-types). | -| **privacyGroupId** | Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) privacy group ID of recipients. Not returned if using `privateFor` to [send the transaction](../../../private-networks/concepts/privacy/privacy-groups.md#privacy-types). | -| **restriction** | String | Must be [`restricted`](../../../private-networks/concepts/privacy/private-transactions/index.md). | - -## 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), and -[`debug_traceTransaction`](index.md#debug_tracetransaction). - -| 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/Transaction-Types.md#access_list-transactions) and may be used in [`EIP1559` transactions](../../concepts/Transactions/Transaction-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/Transaction-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/Transaction-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/Transaction-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. | -| **publicKey** | Data, 64 bytes | Public key of the sender. | -| **raw** | Data | This signed transaction in Recursive Length Prefix (RLP) encoded form. | -| **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/Transaction-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) 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/Transaction-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/Transaction-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/Transaction-Types.md#eip1559-transactions). If used, must specify `maxPriorityFeePerGas`. | -| **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). | -| **strict** | Tag | If `true`, checks that the `from` account’s ether balance is sufficient to cover the transaction and gas fee. If `false`, the `gasPrice` and `baseFee` are set to zero, in order to simulate a transaction without enforcing a balance check. The default is `false`. | - -## 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/Transaction-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/Transaction-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). | - -!!!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. | - -## Private transaction receipt object - -Returned by [`priv_getTransactionReceipt`](index.md#priv_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 a contract creation transaction, otherwise, `null`. A failed contract creation transaction still produces a contract address value. | -| **from** | Data, 20 bytes | Address of the sender. | -| **logs** | Array | Array of [log objects](#log-object) generated by this private transaction. | -| **to** | Data, 20 bytes | Address of the receiver, if sending ether, otherwise, null. | -| **transactionIndex** | Quantity, Integer | Index position of transaction in the block. | -| **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). | -| **output** | Data | RLP-encoded return value of a contract call if a value returns, otherwise, `null`. | -| **commitmentHash** | Data, 32 bytes | Hash of the privacy marker transaction. | -| **status** | Quantity | Either `0x1` (success) or `0x0` (failure). | -| **privateFrom** | Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) public key of the sender. | -| **privateFor** or **privacyGroupId** | Array or Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) public keys or privacy group ID of the recipients. | -| **logsBloom** | Data, 256 bytes | Bloom filter for light clients to quickly retrieve related logs. | diff --git a/docs/global/reference/cli/options.md b/docs/global/reference/cli/options.md deleted file mode 100644 index debfadc81bf..00000000000 --- a/docs/global/reference/cli/options.md +++ /dev/null @@ -1,3959 +0,0 @@ ---- -description: Hyperledger Besu command line interface reference ---- - -# Hyperledger Besu command line - -This reference describes the syntax of the Hyperledger Besu Command Line Interface (CLI) options. - -## Specifying 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/configure/configuration-file.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 -``` - -## Options - -### `api-gas-price-blocks` - -=== "Syntax" - - ```bash - --api-gas-price-blocks= - ``` - -=== "Example" - - ```bash - --api-gas-price-blocks=50 - ``` - -=== "Environment variable" - - ```bash - BESU_API_GAS_PRICE_BLOCKS=50 - ``` - -=== "Example configuration file" - - ```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` - -=== "Syntax" - - ```bash - --api-gas-price-max= - ``` - -=== "Example" - - ```bash - --api-gas-price-max=20000 - ``` - -=== "Environment variable" - - ```bash - BESU_API_GAS_PRICE_MAX=20000 - ``` - -=== "Example configuration file" - - ```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` - -=== "Syntax" - - ```bash - --api-gas-price-percentile= - ``` - -=== "Example" - - ```bash - --api-gas-price-percentile=75 - ``` - -=== "Environment variable" - - ```bash - BESU_API_GAS_PRICE_PERCENTILE=75 - ``` - -=== "Example configuration file" - - ```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` - -=== "Syntax" - - ```bash - ---auto-log-bloom-caching-enabled[=] - ``` - -=== "Example" - - ```bash - --auto-log-bloom-caching-enabled=false - ``` - -=== "Environment variable" - - ```bash - BESU_AUTO_LOG_BLOOM_CACHING_ENABLED=false - ``` - -=== "Example configuration file" - - ```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` - -=== "Syntax" - - ```bash - --banned-node-ids=[,...]... - ``` - -=== "Example" - - ```bash - --banned-node-ids=0xc35c3...d615f,0xf42c13...fc456 - ``` - -=== "Environment variable" - - ```bash - BESU_BANNED_NODE_IDS=0xc35c3...d615f,0xf42c13...fc456 - ``` - -=== "Configuration file" - - ```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. - -### `bonsai-maximum-back-layers-to-load` - -=== "Syntax" - - ```bash - --bonsai-maximum-back-layers-to-load=256 - ``` - -=== "Example" - - ```bash - --bonsai-maximum-back-layers-to-load=256 - ``` - -=== "Environment variable" - - ```bash - BESU_BONSAI_MAXIMUM_BACK_LAYERS_TO_LOAD=256 - ``` - -=== "Example configuration file" - - ```bash - bonsai-maximum-back-layers-to-load=256 - ``` - -When using [Bonsai Tries](../../../public-networks/concepts/data-storage-formats.md#bonsai-tries), the -[maximum number of layers back](../../../public-networks/concepts/data-storage-formats.md#accessing-data) Bonsai can go to reconstruct a -historical state. -The default is 512. - -### `bootnodes` - -=== "Syntax" - - ```bash - --bootnodes[=[,...]...] - ``` - -=== "Example" - - ```bash - --bootnodes=enode://c35c3...d615f@1.2.3.4:30303,enode://f42c13...fc456@1.2.3.5:30303 - ``` - -=== "Environment variable" - - ```bash - BESU_BOOTNODES=enode://c35c3...d615f@1.2.3.4:30303,enode://f42c13...fc456@1.2.3.5:30303 - ``` - -=== "Example configuration file" - - ```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/connect/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` - -=== "Syntax" - - ```bash - --color-enabled[=] - ``` - -=== "Example" - - ```bash - --color-enabled=false - ``` - -=== "Environment variable" - - ```bash - BESU_COLOR_ENABLED=false - ``` - -=== "Example configuration file" - - ```bash - color-enabled=false - ``` - -Enables or disables color output to console. -The default is `true`. - -### `compatibility-eth64-forkid-enabled` - -=== "Syntax" - - ```bash - --compatibility-eth64-forkid-enabled[=] - ``` - -=== "Example" - - ```bash - --compatibility-eth64-forkid-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_COMPATIBILITY_ETH64_FORKID_ENABLED=true - ``` - -=== "Example configuration file" - - ```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` - -=== "Syntax" - - ```bash - --config-file= - ``` - -=== "Example" - - ```bash - --config-file=/home/me/me_node/config.toml - ``` - -=== "Environment variable" - - ```bash - BESU_CONFIG_FILE=/home/me/me_node/config.toml - ``` - -The path to the [TOML configuration file](../../how-to/configure/configuration-file.md). -The default is `none`. - -### `data-path` - -=== "Syntax" - - ```bash - --data-path= - ``` - -=== "Example" - - ```bash - --data-path=/home/me/me_node - ``` - -=== "Environment variable" - - ```bash - BESU_DATA_PATH=/home/me/me_node - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --data-storage-format= - ``` - -=== "Example" - - ```bash - --data-storage-format=BONSAI - ``` - -=== "Environment variable" - - ```bash - BESU_DATA_STORAGE_FORMAT=BONSAI - ``` - -=== "Configuration file" - - ```bash - data-storage-format="BONSAI" - ``` - -The [data storage format](../../../public-networks/concepts/data-storage-formats.md) to use. -Set to `BONSAI` for Bonsai Tries or `FOREST` for Forest of Tries. -The default is `FOREST`. - -### `discovery-dns-url` - -=== "Syntax" - - ```bash - --discovery-dns-url= - ``` - -=== "Environment variable" - - ```bash - BESU_DISCOVERY_DNS_URL=enrtree://AM5FCQLWIZX2QFPNJAP7VUERCCRNGRHWZG3YYHIUV7BVDQ5FDPRT2@nodes.example.org - ``` - -=== "Example configuration file" - - ```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` - -=== "Syntax" - - ```bash - --discovery-enabled[=] - ``` - -=== "Example" - - ```bash - --discovery-enabled=false - ``` - -=== "Environment variable" - - ```bash - BESU_DISCOVERY_ENABLED=false - ``` - -=== "Example configuration file" - - ```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 - [experimental option](#xhelp) `--Xp2p-dns-discovery-server=`. - -### `engine-host-allowlist` - -=== "Syntax" - - ```bash - --engine-host-allowlist=[,...]... or "*" - ``` - -=== "Example" - - ```bash - --engine-host-allowlist=localhost,127.0.0.1 - ``` - -=== "Environment variable" - - ```bash - BESU_ENGINE_HOST_ALLOWLIST=localhost,127.0.0.1 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --engine-jwt-disabled[=] - ``` - -=== "Example" - - ```bash - --engine-jwt-disabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_ENGINE_JWT_DISABLED=true - ``` - -=== "Configuration file" - - ```bash - engine-jwt-disabled=true - ``` -Disables or enables [authentication](../../../public-networks/how-to/use-engine-api.md#authentication) for Engine APIs. -The default is `false` (authentication is enabled by default). - -### `engine-jwt-secret` - -=== "Syntax" - - ```bash - --engine-jwt-secret= - ``` - -=== "Example" - - ```bash - --engine-jwt-secret=jwt.hex - ``` - -=== "Environment variable" - - ```bash - BESU_ENGINE_JWT_SECRET="publicKey.pem" - ``` - -=== "Configuration file" - - ```bash - engine-jwt-secret="jwt.hex" - ``` - -Shared secret used to authenticate [consensus clients](../../../public-networks/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](../../../public-networks/tutorials/merge-testnet.md#prerequisites). - -### `engine-rpc-port` - -=== "Syntax" - - ```bash - --engine-rpc-port= - ``` - -=== "Example" - - ```bash - --engine-rpc-port=8551 - ``` - -=== "Environment variable" - - ```bash - BESU_ENGINE_RPC_PORT=8551 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --ethstats= - ``` - -=== "Example" - - ```bash - --ethstats=Dev-Node-1:secret@127.0.0.1:3001 - ``` - -=== "Environment variable" - - ```bash - BESU_ETHSTATS=Dev-Node-1:secret@127.0.0.1:3001 - ``` - -=== "Configuration file" - - ```bash - ethstats="Dev-Node-1:secret@127.0.0.1:3001" - ``` - -Reporting URL of an [Ethstats](../../../private-networks/how-to/deploy/ethstats.md) server. - -### `ethstats-contact` - -=== "Syntax" - - ```bash - --ethstats-contact= - ``` - -=== "Example" - - ```bash - --ethstats-contact=contact@mail.com - ``` - -=== "Environment variable" - - ```bash - BESU_ETHSTATS_CONTACT=contact@mail.com - ``` - -=== "Configuration file" - - ```bash - ethstats-contact="contact@mail.com" - ``` - -Contact email address to send to the Ethstats server specified by [`--ethstats`](#ethstats). - -!!! note - - A server must be specified by `--ethstats` in order to use this option. - -### `fast-sync-min-peers` - -=== "Syntax" - - ```bash - --fast-sync-min-peers= - ``` - -=== "Example" - - ```bash - --fast-sync-min-peers=8 - ``` - -=== "Environment variable" - - ```bash - BESU_FAST_SYNC_MIN_PEERS=8 - ``` - -=== "Example configuration file" - - ```bash - fast-sync-min-peers=8 - ``` - -The minimum number of peers required before starting [fast synchronization](../../../public-networks/how-to/connect/sync-node.md#run-a-full-node). -The default is 5. - -!!! note - - If synchronizing in `FAST` mode, most historical world state data is unavailable. Any methods - attempting to access unavailable world state data return `null`. - -### `genesis-file` - -Use the genesis file to create a custom network. - -!!!tip - - To use a public Ethereum network such as Rinkeby, use the [`--network`](#network) option. The - network option defines the genesis file for public networks. - -=== "Syntax" - - ```bash - --genesis-file= - ``` - -=== "Example" - - ```bash - --genesis-file=/home/me/me_node/customGenesisFile.json - ``` - -=== "Environment variable" - - ```bash - BESU_GENESIS_FILE=/home/me/me_node/customGenesisFile.json - ``` - -=== "Configuration file" - - ```bash - genesis-file="/home/me/me_node/customGenesisFile.json" - ``` - -The path to the genesis file. - -!!!important - - You cannot use the [`--genesis-file`](#genesis-file) and [`--network`](#network) options at the - same time. - -### `graphql-http-cors-origins` - -=== "Syntax" - - ```bash - --graphql-http-cors-origins= - ``` - -=== "Example" - - ```bash - --graphql-http-cors-origins="http://medomain.com","https://meotherdomain.com" - ``` - -=== "Environment variable" - - ```bash - BESU_GRAPHQL_HTTP_CORS_ORIGINS="http://medomain.com","https://meotherdomain.com" - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - ---graphql-http-enabled[=] - ``` - -=== "Example" - - ```bash - --graphql-http-enabled - ``` - -=== "Environment variable" - - ```bash - BESU_GRAPHQL_HTTP_ENABLED=true - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --graphql-http-host= - ``` - -=== "Example" - - ```bash - # to listen on all interfaces - --graphql-http-host=0.0.0.0 - ``` - -=== "Environment variable" - - ```bash - # to listen on all interfaces - BESU_GRAPHQL_HTTP_HOST=0.0.0.0 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --graphql-http-port= - ``` - -=== "Example" - - ```bash - # to listen on port 6175 - --graphql-http-port=6175 - ``` - -=== "Environment variable" - - ```bash - # to listen on port 6175 - BESU_GRAPHQL_HTTP_PORT=6175 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - -h, --help - ``` - -Show the help message and exit. - -### `host-allowlist` - -=== "Syntax" - - ```bash - --host-allowlist=[,...]... or "*" - ``` - -=== "Example" - - ```bash - --host-allowlist=medomain.com,meotherdomain.com - ``` - -=== "Environment variable" - - ```bash - BESU_HOST_ALLOWLIST=medomain.com,meotherdomain.com - ``` - -=== "Configuration file" - - ```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`. - -!!! important - - This isn't a permissioning feature. - If you want 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` - -=== "Syntax" - - ```bash - --identity= - ``` - -=== "Example" - - ```bash - --identity=MyNode - ``` - -=== "Environment variable" - - ```bash - BESU_IDENTITY=MyNode - ``` - -=== "Configuration file" - - ```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`. - -### `key-value-storage` - -=== "Syntax" - - ```bash - --key-value-storage= - ``` - -=== "Example" - - ```bash - --key-value-storage=rocksdb - ``` - -=== "Environment variable" - - ```bash - BESU_KEY_VALUE_STORAGE=rocksdb - ``` - -=== "Configuration file" - - ```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. - -### `logging` - -=== "Syntax" - - ```bash - -l, --logging= - ``` - -=== "Example" - - ```bash - --logging=DEBUG - ``` - -=== "Environment variable" - - ```bash - BESU_LOGGING=DEBUG - ``` - -=== "Example configuration file" - - ```bash - logging="DEBUG" - ``` - -Sets logging verbosity. Log levels are `OFF`, `FATAL`, `ERROR`, `WARN`, `INFO`, `DEBUG`, `TRACE`, -`ALL`. The default is `INFO`. - -### `max-peers` - -=== "Syntax" - - ```bash - --max-peers= - ``` - -=== "Example" - - ```bash - --max-peers=42 - ``` - -=== "Environment variable" - - ```bash - BESU_MAX_PEERS=42 - ``` - -=== "Configuration file" - - ```bash - max-peers=42 - ``` - -The maximum number of P2P connections you can establish. The default is 25. - -### `metrics-category` - -=== "Syntax" - - ```bash - --metrics-category=[,metrics-category...]... - ``` - -=== "Example" - - ```bash - --metrics-category=BLOCKCHAIN,PEERS,PROCESS - ``` - -=== "Environment variable" - - ```bash - BESU_METRICS_CATEGORY=BLOCKCHAIN,PEERS,PROCESS - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - ---metrics-enabled[=] - ``` - -=== "Example" - - ```bash - --metrics-enabled - ``` - -=== "Environment variable" - - ```bash - BESU_METRICS_ENABLED=true - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --metrics-host= - ``` - -=== "Example" - - ```bash - --metrics-host=127.0.0.1 - ``` - -=== "Environment variable" - - ```bash - BESU_METRICS_HOST=127.0.0.1 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --metrics-port= - ``` - -=== "Example" - - ```bash - --metrics-port=6174 - ``` - -=== "Environment variable" - - ```bash - BESU_METRICS_PORT=6174 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --metrics-protocol= - ``` - -=== "Example" - - ```bash - --metrics-protocol=OPENTELEMETRY - ``` - -=== "Environment variable" - - ```bash - BESU_METRICS_PROTOCOL=OPENTELEMETRY - ``` - -=== "Configuration file" - - ```bash - metrics-protocol="OPENTELEMETRY" - ``` - -Metrics protocol to use: `PROMETHEUS`, `OPENTELEMETRY`, or `NONE`. -The default is `PROMETHEUS`. - -### `metrics-push-enabled` - -=== "Syntax" - - ```bash - --metrics-push-enabled[=] - ``` - -=== "Example" - - ```bash - --metrics-push-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_METRICS_PUSH_ENABLED=true - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --metrics-push-host= - ``` - -=== "Example" - - ```bash - --metrics-push-host=127.0.0.1 - ``` - -=== "Environment variable" - - ```bash - BESU_METRICS_PUSH_HOST=127.0.0.1 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --metrics-push-interval= - ``` - -=== "Example" - - ```bash - --metrics-push-interval=30 - ``` - -=== "Environment variable" - - ```bash - BESU_METRICS_PUSH_INTERVAL=30 - ``` - -=== "Configuration file" - - ```bash - metrics-push-interval=30 - ``` - -The interval, in seconds, to push metrics when in `push` mode. The default is 15. - -### `metrics-push-port` - -=== "Syntax" - - ```bash - --metrics-push-port= - ``` - -=== "Example" - - ```bash - --metrics-push-port=6174 - ``` - -=== "Environment variable" - - ```bash - BESU_METRICS_PUSH_PORT=6174 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --metrics-push-prometheus-job= - ``` - -=== "Example" - - ```bash - --metrics-push-prometheus-job="my-custom-job" - ``` - -=== "Environment variable" - - ```bash - BESU_METRICS_PUSH_PROMETHEUS_JOB="my-custom-job" - ``` - -=== "Configuration file" - - ```bash - metrics-push-prometheus-job="my-custom-job" - ``` - -The job name when in `push` mode. The default is `besu-client`. - -### `min-block-occupancy-ratio` - -=== "Syntax" - - ```bash - --min-block-occupancy-ratio= - ``` - -=== "Example" - - ```bash - --min-block-occupancy-ratio=0.5 - ``` - -=== "Environment variable" - - ```bash - BESU_MIN_BLOCK_OCCUPANCY_RATIO=0.5 - ``` - -=== "Configuration file" - - ```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. - -### `miner-coinbase` - -=== "Syntax" - - ```bash - --miner-coinbase= - ``` - -=== "Example" - - ```bash - --miner-coinbase=fe3b557e8fb62b89f4916b721be55ceb828dbd73 - ``` - -=== "Environment variable" - - ```bash - BESU_MINER_COINBASE=fe3b557e8fb62b89f4916b721be55ceb828dbd73 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --miner-enabled[=] - ``` - -=== "Example" - - ```bash - --miner-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_MINER_ENABLED=true - ``` - -=== "Configuration file" - - ```bash - miner-enabled=true - ``` - -Enables or disables mining when you start the node. -The default is `false`. - -### `miner-extra-data` - -=== "Syntax" - - ```bash - --miner-extra-data= - ``` - -=== "Example" - - ```bash - --miner-extra-data=0x444F4E27542050414E4943202120484F444C2C20484F444C2C20484F444C2021 - ``` - -=== "Environment variable" - - ```bash - BESU_MINER_EXTRA_DATA=0x444F4E27542050414E4943202120484F444C2C20484F444C2C20484F444C2021 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --miner-stratum-enabled - ``` - -=== "Environment variable" - - ```bash - BESU_MINER_STRATUM_ENABLED=true - ``` - -=== "Configuration file" - - ```bash - miner-stratum-enabled=true - ``` - -Enables a node to perform stratum mining. -The default is `false`. - -### `miner-stratum-host` - -=== "Syntax" - - ```bash - --miner-stratum-host= - ``` - -=== "Example" - - ```bash - --miner-stratum-host=192.168.1.132 - ``` - -=== "Environment variable" - - ```bash - BESU_MINER_STRATUM_HOST=192.168.1.132 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --miner-stratum-port= - ``` - -=== "Example" - - ```bash - --miner-stratum-port=8010 - ``` - -=== "Environment variable" - - ```bash - BESU_MINER_STRATUM_PORT=8010 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --min-gas-price= - ``` - -=== "Example" - - ```bash - --min-gas-price=1337 - ``` - -=== "Environment variable" - - ```bash - BESU_MIN_GAS_PRICE=1337 - ``` - -=== "Configuration file" - - ```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. - -!!! important - 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). - -### `nat-method` - -=== "Syntax" - - ```bash - --nat-method=UPNP - ``` - -=== "Example configuration file" - - ```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. - -!!!notes - - 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` - -=== "Syntax" - - ```bash - --network= - ``` - -=== "Example" - - ```bash - --network=rinkeby - ``` - -=== "Environment variable" - - ```bash - BESU_NETWORK=rinkeby - ``` - -=== "Configuration file" - - ```bash - network="rinkeby" - ``` - -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 | -| `kiln` | ETH | Test | [FAST](#sync-mode) | A PoS network similar to the main Ethereum network post-[Merge](../../../public-networks/concepts/the-merge.md) | -| `ropsten` | ETH | Test | [FAST](#sync-mode) | A PoS network similar to the main Ethereum network post-[Merge](../../../public-networks/concepts/the-merge.md) | -| `rinkeby` | ETH | Test | [FAST](#sync-mode) | A PoA network using Clique | -| `goerli` | ETH | Test | [FAST](#sync-mode) | A PoA network using Clique | -| `sepolia` | ETH | Test | [FAST](#sync-mode) | A PoW 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 | -| `kotti` | ETC | Test | [FAST](#sync-mode) | A PoA network using Clique | -| `astor` | ETC | Test | [FAST](#sync-mode) | A PoW network | - -!!!tip - - Values are case insensitive, so either `mainnet` or `MAINNET` works. - -!!!important - - You cannot use the [`--network`](#network) and [`--genesis-file`](#genesis-file) options at the - same time. - -### `network-id` - -=== "Syntax" - - ```bash - --network-id= - ``` - -=== "Example" - - ```bash - --network-id=8675309 - ``` - -=== "Environment variable" - - ```bash - BESU_NETWORK_ID=8675309 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --node-private-key-file= - ``` - -=== "Example" - - ```bash - --node-private-key-file=/home/me/me_node/myPrivateKey - ``` - -=== "Environment variable" - - ```bash - BESU_NODE_PRIVATE_KEY_FILE=/home/me/me_node/myPrivateKey - ``` - -=== "Configuration file" - - ```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. - -!!!attention - - The private key is not encrypted. - -This option is ignored if [`--security-module`](#security-module) is set to -a non-default value. - -### `p2p-enabled` - -=== "Syntax" - - ```bash - --p2p-enabled[=] - ``` - -=== "Example" - - ```bash - --p2p-enabled=false - ``` - -=== "Environment variable" - - ```bash - BESU_P2P_ENABLED=false - ``` - -=== "Configuration file" - - ```bash - p2p-enabled=false - ``` - -Enables or disables all P2P communication. -The default is `true`. - -### `p2p-host` - -=== "Syntax" - - ```bash - --p2p-host= - ``` - -=== "Example" - - ```bash - # to listen on all interfaces - --p2p-host=0.0.0.0 - ``` - -=== "Environment variable" - - ```bash - # to listen on all interfaces - BESU_P2P_HOST=0.0.0.0 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --p2p-interface= - ``` - -=== "Example" - - ```bash - --p2p-interface=192.168.1.132 - ``` - -=== "Environment variable" - - ```bash - BESU_P2P_INTERFACE=192.168.1.132 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --p2p-port= - ``` - -=== "Example" - - ```bash - # to listen on port 1789 - --p2p-port=1789 - ``` - -=== "Environment variable" - - ```bash - # to listen on port 1789 - BESU_P2P_PORT=1789 - ``` - -=== "Configuration file" - - ```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). - -### `permissions-accounts-config-file` - -=== "Syntax" - - ```bash - --permissions-accounts-config-file= - ``` - -=== "Example" - - ```bash - --permissions-accounts-config-file=/home/me/me_configFiles/myPermissionsFile - ``` - -=== "Environment variable" - - ```bash - BESU_PERMISSIONS_ACCOUNTS_CONFIG_FILE=/home/me/me_configFiles/myPermissionsFile - ``` - -=== "Configuration file" - - ```bash - permissions-accounts-config-file="/home/me/me_configFiles/myPermissionsFile" - ``` - -The [accounts permissions configuration file]. The default is the `permissions_config.toml` file in -the [data directory](#data-path). - -!!! tip - - `--permissions-accounts-config-file` and - [`--permissions-nodes-config-file`](#permissions-nodes-config-file) can use the same file. - -### `permissions-accounts-config-file-enabled` - -=== "Syntax" - - ```bash - --permissions-accounts-config-file-enabled[=] - ``` - -=== "Example" - - ```bash - --permissions-accounts-config-file-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_PERMISSIONS_ACCOUNTS_CONFIG_FILE_ENABLED=true - ``` - -=== "Configuration file" - - ```bash - permissions-accounts-config-file-enabled=true - ``` - -Enables or disables file-based account level permissions. The default is `false`. - -### `permissions-accounts-contract-address` - -=== "Syntax" - - ```bash - --permissions-accounts-contract-address= - ``` - -=== "Example" - - ```bash - --permissions-accounts-contract-address=xyz - ``` - -=== "Environment variable" - - ```bash - BESU_PERMISSIONS_ACCOUNTS_CONTRACT_ADDRESS=xyz - ``` - -=== "Configuration file" - - ```bash - permissions-accounts-contract-address=xyz - ``` - -The contract address for -[onchain account permissioning](../../../private-networks/concepts/permissioning/onchain.md). - -### `permissions-accounts-contract-enabled` - -=== "Syntax" - - ```bash - --permissions-accounts-contract-enabled[=] - ``` - -=== "Example" - - ```bash - --permissions-accounts-contract-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_PERMISSIONS_ACCOUNTS_CONTRACT_ENABLED=true - ``` - -=== "Configuration file" - - ```bash - permissions-accounts-contract-enabled=true - ``` - -Enables or disables contract-based -[onchain account permissioning](../../../private-networks/concepts/permissioning/onchain.md). The default -is `false`. - -### `permissions-nodes-config-file` - -=== "Syntax" - - ```bash - --permissions-nodes-config-file= - ``` - -=== "Example" - - ```bash - --permissions-nodes-config-file=/home/me/me_configFiles/myPermissionsFile - ``` - -=== "Environment variable" - - ```bash - BESU_PERMISSIONS_NODES_CONFIG_FILE=/home/me/me_configFiles/myPermissionsFile - ``` - -=== "Configuration file" - - ```bash - permissions-nodes-config-file="/home/me/me_configFiles/myPermissionsFile" - ``` - -The [nodes permissions configuration file]. The default is the `permissions_config.toml` file in -the [data directory](#data-path). - -!!! tip - - `--permissions-nodes-config-file` and - [`--permissions-accounts-config-file`](#permissions-accounts-config-file) can use the same - file. - -### `permissions-nodes-config-file-enabled` - -=== "Syntax" - - ```bash - --permissions-nodes-config-file-enabled[=] - ``` - -=== "Example" - - ```bash - --permissions-nodes-config-file-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_PERMISSIONS_NODES_CONFIG_FILE_ENABLED=true - ``` - -=== "Configuration file" - - ```bash - permissions-nodes-config-file-enabled=true - ``` - -Enables or disables file-based node level permissions. The default is `false`. - -### `permissions-nodes-contract-address` - -=== "Syntax" - - ```bash - --permissions-nodes-contract-address= - ``` - -=== "Example" - - ```bash - --permissions-nodes-contract-address=xyz - ``` - -=== "Environment variable" - - ```bash - BESU_PERMISSIONS_NODES_CONTRACT_ADDRESS=xyz - ``` - -=== "Configuration file" - - ```bash - permissions-nodes-contract-address=xyz - ``` - -The contract address for -[onchain node permissioning](../../../private-networks/concepts/permissioning/onchain.md). - -### `permissions-nodes-contract-enabled` - -=== "Syntax" - - ```bash - --permissions-nodes-contract-enabled[=] - ``` - -=== "Example" - - ```bash - --permissions-nodes-contract-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_PERMISSIONS_NODES_CONTRACT_ENABLED=true - ``` - -=== "Configuration file" - - ```bash - permissions-nodes-contract-enabled=true - ``` - -Enables or disables contract-based -[onchain node permissioning](../../../private-networks/concepts/permissioning/onchain.md). The default is -`false`. - -### `permissions-nodes-contract-version` - -=== "Syntax" - - ```bash - --permissions-nodes-contract-version= - ``` - -=== "Example" - - ```bash - --permissions-nodes-contract-version=2 - ``` - -=== "Environment variable" - - ```bash - BESU_PERMISSIONS_NODES_CONTRACT_VERSION=2 - ``` - -=== "Configuration file" - - ```bash - permissions-nodes-contract-version=2 - ``` - -Version of the EEA [node permissioning interface](../../../private-networks/how-to/use-permissioning/onchain.md#specify-the-permissioning-contract-interface-version). -The default is 1. - -### `privacy-enabled` - -=== "Syntax" - - ```bash - --privacy-enabled[=] - ``` - -=== "Example" - - ```bash - --privacy-enabled=false - ``` - -=== "Environment variable" - - ```bash - BESU_PRIVACY_ENABLED=false - ``` - -=== "Configuration file" - - ```bash - privacy-enabled=false - ``` - -Enables or disables [private transactions](../../../private-networks/concepts/privacy/index.md). The default -is `false`. - -!!! important - - Using private transactions with [pruning](../../public-networks/concepts/data-storage-formats.md) - or [fast sync](#sync-mode) is not supported. - -### `privacy-marker-transaction-signing-key-file` - -=== "Syntax" - - ```bash - --privacy-marker-transaction-signing-key-file= - ``` - -=== "Example" - - ```bash - --privacy-marker-transaction-signing-key-file=/home/me/me_node/myPrivateKey - ``` - -=== "Environment variable" - - ```bash - BESU_PRIVACY_MARKER_TRANSACTION_SIGNING_KEY_FILE=/home/me/me_node/myPrivateKey - ``` - -=== "Configuration file" - - ```bash - privacy-marker-transaction-signing-key-file="/home/me/me_node/myPrivateKey" - ``` - -`` is the name of the private key file used to -[sign privacy marker transactions](../../../private-networks/how-to/use-privacy/sign-pmts.md). - -!!! note - - This can be the same file used by [`--node-private-key-file`](#node-private-key-file), or a - different key file to identify who signed the privacy marker transaction. - -You must specify this option if you're using: - -* a privacy network where you pay gas. Also, the associated account must contain adequate funds. -* [account permissioning] and privacy. You must include the corresponding public key in the - accounts allowlist. - -If you do not specify this option (for example, in a free gas network), Besu signs each transaction -with a different randomly generated key. - -### `privacy-multi-tenancy-enabled` - -=== "Syntax" - - ```bash - --privacy-multi-tenancy-enabled[=] - ``` - -=== "Example" - - ```bash - --privacy-multi-tenancy-enabled=false - ``` - -=== "Environment variable" - - ```bash - BESU_PRIVACY_MULTI_TENANCY_ENABLED=false - ``` - -=== "Configuration file" - - ```bash - privacy-multi-tenancy-enabled=false - ``` - -Enables or disables [multi-tenancy](../../../private-networks/concepts/privacy/multi-tenancy.md) for private -transactions. The default is `false`. - -### `privacy-flexible-groups-enabled` - -=== "Syntax" - - ```bash - --privacy-flexible-groups-enabled[=] - ``` - -=== "Example" - - ```bash - --privacy-flexible-groups-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_PRIVACY_FLEXIBLE_GROUPS_ENABLED=true - ``` - -=== "Configuration file" - - ```bash - privacy-flexible-groups-enabled=true - ``` - -Enables or disables [flexible privacy groups](../../../private-networks/concepts/privacy/flexible-privacy.md). The default is `false`. - -Deprecated syntax for this option is `--privacy-onchain-groups-enabled`. - -### `privacy-public-key-file` - -=== "Syntax" - - ```bash - --privacy-public-key-file= - ``` - -=== "Example" - - ```bash - --privacy-public-key-file=Tessera/nodeKey.pub - ``` - -=== "Environment variable" - - ```bash - BESU_PRIVACY_PUBLIC_KEY_FILE=Tessera/nodeKey.pub - ``` - -=== "Configuration file" - - ```bash - privacy-public-key-file="Tessera/nodeKey.pub" - ``` - -The [public key of the Tessera node](https://docs.tessera.consensys.net/). - -!!! important - - You cannot specify `privacy-public-key-file` when - [`--privacy-multi-tenancy-enabled`](#privacy-multi-tenancy-enabled) is `true` - -### `privacy-tls-enabled` - -=== "Syntax" - - ```bash - --privacy-tls-enabled[=] - ``` - -=== "Example" - - ```bash - --privacy-tls-enabled=false - ``` - -=== "Environment variable" - - ```bash - BESU_PRIVACY_TLS_ENABLED=false - ``` - -=== "Configuration file" - - ```bash - privacy-tls-enabled=false - ``` - -Enables or disables [TLS on communication with the Private Transaction Manager]. The default is -false. - -### `privacy-tls-keystore-file` - -=== "Syntax" - - ```bash - --privacy-tls-keystore-file= - ``` - -=== "Example" - - ```bash - --privacy--keystore-file=/home/me/me_node/key - ``` - -=== "Environment variable" - - ```bash - BESU_PRIVACY_TLS_KEYSTORE_FILE=/home/me/me_node/key - ``` - -=== "Configuration file" - - ```bash - privacy-tls-keystore-file="/home/me/me_node/key" - ``` - -The keystore file (in PKCS #12 format) containing the private key and the certificate presented -during authentication. - -You must specify `privacy-tls-keystore-file` if [`--privacy-tls-enabled`](#privacy-tls-enabled) is -`true`. - -### `privacy-tls-keystore-password-file` - -=== "Syntax" - - ```bash - --privacy-tls-keystore-password-file= - ``` - -=== "Example" - - ```bash - --privacy-tls-keystore-password-file=/home/me/me_node/password - ``` - -=== "Environment variable" - - ```bash - BESU_PRIVACY_TLS_KEYSTORE_PASSWORD_FILE=/home/me/me_node/password - ``` - -=== "Configuration file" - - ```bash - privacy-tls-keystore-password-file="/home/me/me_node/password" - ``` - -The path to the file containing the password to decrypt the keystore. - -### `privacy-tls-known-enclave-file` - -=== "Syntax" - - ```bash - --privacy-tls-known-enclave-file= - ``` - -=== "Example" - - ```bash - --privacy-tls-known-enclave-file=/home/me/me_node/knownEnclave - ``` - -=== "Environment variable" - - ```bash - BESU_PRIVACY_TLS_KNOWN_ENCLAVE_FILE=/home/me/me_node/knownEnclave - ``` - -=== "Configuration file" - - ```bash - privacy-tls-known-enclave-file="/home/me/me_node/knownEnclave" - ``` - -The path to the file containing the hostnames, ports, and SHA256 certificate fingerprints of the -[authorized privacy enclave](../../../private-networks/how-to/configure/tls/client-and-server.md#create-the-known-servers-file). - -### `privacy-url` - -=== "Syntax" - - ```bash - --privacy-url= - ``` - -=== "Example" - - ```bash - --privacy-url=http://127.0.0.1:8888 - ``` - -=== "Environment variable" - - ```bash - BESU_PRIVACY_URL=http://127.0.0.1:8888 - ``` - -=== "Configuration file" - - ```bash - privacy-url="http://127.0.0.1:8888" - ``` - -The URL on which the -[Tessera node](../../../private-networks/tutorials/privacy/index.md#3-create-tessera-configuration-files) is -running. - -### `pruning-block-confirmations` - -=== "Syntax" - - ```bash - --pruning-block-confirmations= - ``` - -=== "Example" - - ```bash - --pruning-block-confirmations=5 - ``` - -=== "Environment variable" - - ```bash - BESU_PRUNING_BLOCK_CONFIRMATIONS=5 - ``` - -=== "Configuration file" - - ```bash - pruning-block-confirmations=5 - ``` - -The minimum number of confirmations on a block before marking of newly-stored or in-use state trie -nodes that cannot be pruned. The default is 10. - -!!! important - Using pruning with [private transactions](../../../private-networks/concepts/privacy/index.md) is not - supported. - -### `pruning-blocks-retained` - -=== "Syntax" - - ```bash - --pruning-blocks-retained= - ``` - -=== "Example" - - ```bash - --pruning-blocks-retained=10000 - ``` - -=== "Environment variable" - - ```bash - BESU_PRUNING_BLOCKS_RETAINED=10000 - ``` - -=== "Configuration file" - - ```bash - pruning-blocks-retained=10000 - ``` - -The minimum number of recent blocks to keep the entire world state for. The default is 1024. - -!!! important - Using pruning with [private transactions](../../../private-networks/concepts/privacy/index.md) is not - supported. - -### `pruning-enabled` - -=== "Syntax" - - ```bash - --pruning-enabled - ``` - -=== "Example" - - ```bash - --pruning-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_PRUNING_ENABLED=true - ``` - -=== "Configuration file" - - ```bash - pruning-enabled=true - ``` - -Enables [pruning](../../concepts/Pruning.md) to reduce storage required for the world state. -The default is `false`. - -!!! important - - Using pruning with [private transactions](../../private-networks/concepts/privacy/index.md) isn't - supported. - -!!! Important - - Pruning is being deprecated for [Bonsai Tries](../../public-networks/concepts/data-storage-formats.md#bonsai-tries) - and is currently not being updated. - -### `random-peer-priority-enabled` - -=== "Syntax" - - ```bash - --random-peer-priority-enabled[=] - ``` - -=== "Example" - - ```bash - --random-peer-priority-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_RANDOM_PEER_PRIORITY_ENABLED=true - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --remote-connections-limit-enabled[=] - ``` - -=== "Example" - - ```bash - --remote-connections-limit-enabled=false - ``` - -=== "Environment variable" - - ```bash - BESU_REMOTE_CONNECTIONS_LIMIT_ENABLED=false - ``` - -=== "Configuration file" - - ```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. - -!!! important - - 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` - -=== "Syntax" - - ```bash - --remote-connections-max-percentage= - ``` - -=== "Example" - - ```bash - --remote-connections-max-percentage=25 - ``` - -=== "Environment variable" - - ```bash - BESU_REMOTE_CONNECTIONS_MAX_PERCENTAGE=25 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --reorg-logging-threshold= - ``` - -=== "Example" - - ```bash - --reorg-logging-threshold=3 - ``` - -=== "Environment variable" - - ```bash - BESU_REORG_LOGGING_THRESHOLD=3 - ``` - -=== "Configuration file" - - ```bash - reorg-logging-threshold=3 - ``` - -Minimum depth of chain reorganizations to log. The default is 6. - -### `required-block` - -=== "Syntax" - - ```bash - --required-block, --required-blocks[=BLOCK=HASH[,BLOCK=HASH...]...] - ``` - -=== "Example" - - ```bash - --required-block=6485846=0x43f0cd1e5b1f9c4d5cda26c240b59ee4f1b510d0a185aa8fd476d091b0097a80 - ``` - -=== "Environment variable" - - ```bash - BESU_REQUIRED_BLOCK=6485846=0x43f0cd1e5b1f9c4d5cda26c240b59ee4f1b510d0a185aa8fd476d091b0097a80 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --revert-reason-enabled[=] - ``` - -=== "Example" - - ```bash - --revert-reason-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_REVERT_REASON_ENABLED=true - ``` - -=== "Configuration file" - - ```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 do not recommend enabling - revert reason when connected to public Ethereum networks. - -### `rpc-http-api` - -=== "Syntax" - - ```bash - --rpc-http-api=[,...]... - ``` - -=== "Example" - - ```bash - --rpc-http-api=ETH,NET,WEB3 - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_API=ETH,NET,WEB3 - ``` - -=== "Configuration file" - - ```bash - rpc-http-api=["ETH","NET","WEB3"] - ``` - -A comma-separated list of APIs to enable on the HTTP JSON-RPC 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-authentication-credentials-file` - -=== "Syntax" - - ```bash - --rpc-http-authentication-credentials-file= - ``` - -=== "Example" - - ```bash - --rpc-http-authentication-credentials-file=/home/me/me_node/auth.toml - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_AUTHENTICATION_CREDENTIALS_FILE=/home/me/me_node/auth.toml - ``` - -=== "Configuration file" - - ```bash - rpc-http-authentication-credentials-file="/home/me/me_node/auth.toml" - ``` - -The [credentials file](../../how-to/use-besu-api/authenticate.md#credentials-file) for JSON-RPC -API [authentication](../../how-to/use-besu-api/authenticate.md). - -### `rpc-http-authentication-enabled` - -=== "Syntax" - - ```bash - --rpc-http-authentication-enabled[=] - ``` - -=== "Example" - - ```bash - --rpc-http-authentication-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_AUTHENTICATION_ENABLED=true - ``` - -=== "Configuration file" - - ```bash - rpc-http-authentication-enabled=true - ``` - -Enables or disables [authentication](../../how-to/use-besu-api/authenticate.md) for the HTTP JSON-RPC -service. - -### `rpc-http-authentication-jwt-public-key-file` - -=== "Syntax" - - ```bash - --rpc-http-authentication-jwt-public-key-file= - ``` - -=== "Example" - - ```bash - --rpc-http-authentication-jwt-public-key-file=publicKey.pem - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_AUTHENTICATION_JWT_PUBLIC_KEY_FILE="publicKey.pem" - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --rpc-http-cors-origins=[,...]... or all or "*" - ``` - -=== "Example" - - ```bash - - $# You can allow one or more domains with a comma-separated list. - - --rpc-http-cors-origins=http://medomain.com,https://meotherdomain.com - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_CORS_ORIGINS=http://medomain.com,https://meotherdomain.com - ``` - -=== "Configuration file" - - ```bash - rpc-http-cors-origins=["http://medomain.com","https://meotherdomain.com"] - ``` - -=== "Remix example" - - ```bash - - $# The following allows Remix to interact with your Besu node. - - --rpc-http-cors-origins=http://remix.ethereum.org - ``` - -A 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` - -=== "Syntax" - - ```bash - --rpc-http-enabled[=] - ``` - -=== "Example" - - ```bash - --rpc-http-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_ENABLED=true - ``` - -=== "Configuration file" - - ```bash - rpc-http-enabled=true - ``` - -Enables or disables the HTTP JSON-RPC service. -The default is `false`. - -### `rpc-http-host` - -=== "Syntax" - - ```bash - --rpc-http-host= - ``` - -=== "Example" - - ```bash - # to listen on all interfaces - --rpc-http-host=0.0.0.0 - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_HOST=0.0.0.0 - ``` - -=== "Configuration file" - - ```bash - rpc-http-host="0.0.0.0" - ``` - -The host on which HTTP JSON-RPC 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` - -=== "Syntax" - - ```bash - --rpc-http-max-active-connections= - ``` - -=== "Example" - - ```bash - --rpc-http-max-active-connections=100 - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_MAX_ACTIVE_CONNECTIONS=100 - ``` - -=== "Configuration file" - - ```toml - rpc-http-max-active-connections=100 - ``` - -The maximum number of allowed HTTP JSON-RPC connections. Once this limit is reached, incoming connections are rejected. The default is 80. - -### `rpc-http-port` - -=== "Syntax" - - ```bash - --rpc-http-port= - ``` - -=== "Example" - - ```bash - # to listen on port 3435 - --rpc-http-port=3435 - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_PORT=3435 - ``` - -=== "Configuration file" - - ```bash - rpc-http-port="3435" - ``` - -The port (TCP) on which HTTP JSON-RPC listens. The default is `8545`. You must -[expose ports appropriately](../../how-to/connect/configure-ports.md). - -### `rpc-http-tls-ca-clients-enabled` - -=== "Syntax" - - ```bash - --rpc-http-tls-ca-clients-enabled[=] - ``` - -=== "Example" - - ```bash - --rpc-http-tls-ca-clients-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_TLS_CA_CLIENTS_ENABLED=true - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --rpc-http-tls-client-auth-enabled[=] - ``` - -=== "Example" - - ```bash - --rpc-http-tls-client-auth-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_TLS_CLIENT_AUTH_ENABLED=true - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --rpc-http-tls-cipher-suite=[, ...] - ``` - -=== "Example" - - ```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 - ``` - -=== "Environment variable" - - ```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 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --rpc-http-tls-enabled[=] - ``` - -=== "Example" - - ```bash - --rpc-http-tls-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_TLS_ENABLED=true - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --rpc-http-tls-keystore-file= - ``` - -=== "Example" - - ```bash - --rpc-http-tls-keystore-file=/home/me/me_node/keystore.pfx - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_TLS_KEYSTORE_FILE=/home/me/me_node/keystore.pfx - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --rpc-http-tls-keystore-password-file= - ``` - -=== "Example" - - ```bash - --rpc-http-tls-keystore-password-file=/home/me/me_node/password - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_TLS_KEYSTORE_PASSWORD_FILE=/home/me/me_node/password - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --rpc-http-tls-known-clients-file= - ``` - -=== "Example" - - ```bash - --rpc-http-tls-known-clients-file=/home/me/me_node/knownClients - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_TLS_KNOWN_CLIENTS_FILE=/home/me/me_node/knownClients - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --rpc-http-tls-protocol=[, ...] - ``` - -=== "Example" - - ```bash - --rpc-http-tls-protocol=TLSv1.3,TLSv1.2 - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_TLS_PROTOCOL=TLSv1.3,TLSv1.2 - ``` - -=== "Configuration file" - - ```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-tx-feecap` - -=== "Syntax" - - ```bash - --rpc-tx-feecap= - ``` - -=== "Example" - - ```bash - --rpc-tx-feecap=1200000000000000000 - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_TX_FEECAP=1200000000000000000 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --rpc-ws-api=[,...]... - ``` - -=== "Example" - - ```bash - --rpc-ws-api=ETH,NET,WEB3 - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_WS_API=ETH,NET,WEB3 - ``` - -=== "Configuration file" - - ```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-authentication-credentials-file` - -=== "Syntax" - - ```bash - --rpc-ws-authentication-credentials-file= - ``` - -=== "Example" - - ```bash - --rpc-ws-authentication-credentials-file=/home/me/me_node/auth.toml - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_WS_AUTHENTICATION_CREDENTIALS_FILE=/home/me/me_node/auth.toml - ``` - -=== "Configuration file" - - ```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#credentials-file) -for JSON-RPC API [authentication](../../how-to/use-besu-api/authenticate.md). - -### `rpc-ws-authentication-enabled` - -=== "Syntax" - - ```bash - --rpc-ws-authentication-enabled[=] - ``` - -=== "Example" - - ```bash - --rpc-ws-authentication-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_WS_AUTHENTICATION_ENABLED=true - ``` - -=== "Configuration file" - - ```bash - rpc-ws-authentication-enabled=true - ``` - -Enables or disables [authentication](../../how-to/use-besu-api/authenticate.md) for the WebSocket JSON-RPC -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-public-key-file` - -=== "Syntax" - - ```bash - --rpc-http-authentication-jwt-public-key-file= - ``` - -=== "Example" - - ```bash - --rpc-http-authentication-jwt-public-key-file=publicKey.pem - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_HTTP_AUTHENTICATION-JWT-PUBLIC-KEY-FILE="publicKey.pem" - ``` - -=== "Configuration file" - - ```bash - rpc-http-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` - -=== "Syntax" - - ```bash - --rpc-ws-enabled[=] - ``` - -=== "Example" - - ```bash - --rpc-ws-enabled=true - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_WS_ENABLED=true - ``` - -=== "Configuration file" - - ```bash - rpc-ws-enabled=true - ``` - -Enables or disables the WebSocket JSON-RPC service. The default is `false`. - -### `rpc-ws-host` - -=== "Syntax" - - ```bash - --rpc-ws-host= - ``` - -=== "Example" - - ```bash - # to listen on all interfaces - --rpc-ws-host=0.0.0.0 - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_WS_HOST=0.0.0.0 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --rpc-ws-max-active-connections= - ``` - -=== "Example" - - ```bash - --rpc-ws-max-active-connections=100 - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_WS_MAX_ACTIVE_CONNECTIONS=100 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --rpc-ws-max-frame-size= - ``` - -=== "Example" - - ```bash - --rpc-ws-max-frame-size=65536 - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_WS_MAX_FRAME_SIZE=65536 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --rpc-ws-port= - ``` - -=== "Example" - - ```bash - # to listen on port 6174 - --rpc-ws-port=6174 - ``` - -=== "Environment variable" - - ```bash - BESU_RPC_WS_PORT=6174 - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --security-module= - ``` - -=== "Example" - - ```bash - --security-module=security_module - ``` - -=== "Environment variable" - - ```bash - BESU_SECURITY_MODULE=security_module - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --static-nodes-file= - ``` - -=== "Example" - - ```bash - --static-nodes-file=~/besudata/static-nodes.json - ``` - -=== "Environment variable" - - ```bash - BESU_STATIC_NODES_FILE=~/besudata/static-nodes.json - ``` - -=== "Configuration file" - - ```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` - -=== "Syntax" - - ```bash - --strict-tx-replay-protection-enabled[=] - ``` - -=== "Example" - - ```bash - --strict-tx-replay-protection-enabled=false - ``` - -=== "Environment variable" - - ```bash - STRICT_TX_REPLAY_PROTECTION_ENABLED=false - ``` - -=== "Configuration file" - - ```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-mode` - -=== "Syntax" - - ```bash - --sync-mode=X_SNAP - ``` - -=== "Example" - - ```bash - --sync-mode=X_SNAP - ``` - -=== "Environment variable" - - ```bash - BESU_SYNC_MODE=X_SNAP - ``` - -=== "Configuration file" - - ```bash - sync-mode="X_SNAP" - ``` - -The synchronization mode. -Use `FAST` for [fast sync](../../../public-networks/how-to/connect/sync-node.md#fast-synchronization), `FULL` for -[full sync](../../../public-networks/how-to/connect/sync-node.md#run-an-archive-node), `X_SNAP` for -[snap sync](../../../public-networks/how-to/connect/sync-node.md#snap-synchronization), and `X_CHECKPOINT` for -[checkpoint sync](../../../public-networks/how-to/connect/sync-node.md#checkpoint-synchronization). - -* 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 `FAST` when using the [`--network`](#network) option with named networks, except for the `dev` - development network. - `FAST` is also the default if running Besu on the default network (Ethereum Mainnet) by specifying neither - [network](#network) nor [genesis file](#genesis-file). - -!!! important - - Snap sync and checkpoint sync are experimental features. - - We recommend using snap sync over fast sync even in certain production environments (for example, staking), because - snap sync can be faster by several days. - If your snap sync completes successfully, you have the correct world state. - -### `target-gas-limit` - -=== "Syntax" - - ```bash - --target-gas-limit= - ``` - -=== "Example" - - ```bash - --target-gas-limit=8000000 - ``` - -=== "Environment variable" - - ```bash - BESU_TARGET_GAS_LIMIT=8000000 - ``` - -=== "Configuration file" - - ```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-max-size` - -=== "Syntax" - - ```bash - --tx-pool-max-size= - ``` - -=== "Example" - - ```bash - --tx-pool-max-size=2000 - ``` - -=== "Environment variable" - - ```bash - BESU_TX_POOL_MAX_SIZE=2000 - ``` - -=== "Configuration file" - - ```bash - tx-pool-max-size="2000" - ``` - -The maximum number of transactions kept in the transaction pool. The default is 4096. - -### `tx-pool-hashes-max-size` - -=== "Syntax" - - ```bash - --tx-pool-hashes-max-size= - ``` - -=== "Example" - - ```bash - --tx-pool-hashes-max-size=2000 - ``` - -=== "Environment variable" - - ```bash - BESU_TX_POOL_HASHES_MAX_SIZE=2000 - ``` - -=== "Configuration file" - - ```bash - tx-pool-hashes-max-size="2000" - ``` - -!!! important - - `tx-pool-hashes-max-size` is deprecated. The option will be removed in a future release. - -The maximum number of transaction hashes kept in the transaction pool. The default is 4096. - -### `tx-pool-price-bump` - -=== "Syntax" - - ```bash - --tx-pool-price-bump= - ``` - -=== "Example" - - ```bash - --tx-pool-price-bump=25 - ``` - -=== "Environment variable" - - ```bash - BESU_TX_POOL_PRICE_BUMP=25 - ``` - -=== "Configuration file" - - ```bash - tx-pool-price-bump=25 - ``` - -The price bump percentage to replace an existing transaction. The default is 10. - -### `tx-pool-retention-hours` - -=== "Syntax" - - ```bash - --tx-pool-retention-hours= - ``` - -=== "Example" - - ```bash - --tx-pool-retention-hours=5 - ``` - -=== "Environment variable" - - ```bash - BESU_TX_POOL_RETENTION_HOURS=5 - ``` - -=== "Configuration file" - - ```bash - tx-pool-retention-hours=5 - ``` - -The maximum period, in hours, to hold pending transactions in the transaction pool. The default is -13. - -### `Xhelp` - -=== "Syntax" - - ```bash - -X, --Xhelp - ``` - -Displays the experimental options and their descriptions, and exit. - -!!! warning - - The displayed options are unstable and may change between releases. - -### `version` - -=== "Syntax" - - ```bash - -V, --version - ``` - -Prints version information and exit. - - -[push gateway integration]: ../../how-to/monitor/metrics.md#running-prometheus-with-besu-in-push-mode -[accounts permissions configuration file]: ../../../private-networks/how-to/use-permissioning/local.md#permissions-configuration-file -[nodes permissions configuration file]: ../../../private-networks/how-to/use-permissioning/local.md#permissions-configuration-file -[account permissioning]: ../../../private-networks/concepts/permissioning/index.md#account-permissioning -[TLS on communication with the Private Transaction Manager]: ../../../private-networks/concepts/privacy/index.md#private-transaction-manager -[JWT provider's public key file]: ../../how-to/use-besu-api/authenticate.md#jwt-public-key-authentication -[plugin]: ../Plugin-API-Interfaces.md diff --git a/docs/global/reference/cli/subcommands.md b/docs/global/reference/cli/subcommands.md deleted file mode 100644 index 022cb947097..00000000000 --- a/docs/global/reference/cli/subcommands.md +++ /dev/null @@ -1,345 +0,0 @@ ---- -description: Hyperledger Besu command line interface subcommands ---- - -# Subcommands - -This reference describes the syntax of the Hyperledger Besu Command Line Interface (CLI) subcommands. - -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` - -=== "Syntax" - - ```bash - besu blocks import [--skip-pow-validation-enabled] [--start-block=] [--end-block=] --from= - ``` - -=== "Example" - - ```bash - besu blocks import --skip-pow-validation-enabled --start-block=100 --end-block=300 --from=/home/me/me_project/mainnet.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 will be imported. - -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` - -=== "Syntax" - - ```bash - besu blocks export [--start-block=] [--end-block=] --to= - ``` - -=== "Example" - - ```bash - besu --network=rinkeby --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. - -## `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` - -=== "Syntax" - - ```bash - besu public-key export [--node-private-key-file=] [--to=] [--ec-curve=] - ``` - -=== "Example (to standard output)" - - ```bash - besu --data-path= public-key export --node-private-key-file=/home/me/me_node/myPrivateKey --ec-curve=secp256k1 - ``` - -=== "Example (to file)" - - ```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` - -=== "Syntax" - - ```bash - besu public-key export-address [--node-private-key-file=] [--to=] [--ec-curve=] - ``` - -=== "Example (to standard output)" - - ```bash - besu --data-path= public-key export-address --node-private-key-file=/home/me/me_node/myPrivateKey --ec-curve=secp256k1 - ``` - -=== "Example (to file)" - - ```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`. - -## `password` - -Provides password related actions. - -### `hash` - -=== "Syntax" - - ```bash - besu password hash --password= - ``` - -=== "Example" - - ```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). - -## `operator` - -Provides operator actions. - -### `generate-blockchain-config` - -=== "Syntax" - - ```bash - besu operator generate-blockchain-config --config-file= --to= [--genesis-file-name=] [--private-key-file-name=] [--public-key-file-name=] - ``` - -=== "Example" - - ```bash - besu operator generate-blockchain-config --config-file=config.json --to=myNetworkFiles - ``` -Generates an -[IBFT 2.0](../../../private-networks/tutorials/ibft/index.md) or -[QBFT](../../../private-networks/tutorials/qbft.md) genesis file. - -The configuration file has two nested JSON nodes. The first is the `genesis` property defining the -[IBFT 2.0](../../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) or -[QBFT](../../../private-networks/how-to/configure/consensus/qbft.md#genesis-file) genesis file, except for -the `extraData` string. The second is the `blockchain` property defining the number of key pairs to -generate. - -### `generate-log-bloom-cache` - -=== "Syntax" - - ```bash - besu operator generate-log-bloom-cache [--start-block=] [--end-block=] - ``` - -=== "Example" - - ```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. - -## `rlp` - -Provides RLP related actions. - -### `encode` - -=== "Syntax" - - ```bash - besu rlp encode [--from=] [--to=] [--type=] - ``` - -=== "File example" - - ```bash - besu rlp encode --from=ibft_extra_data.json --to=extra_data_for_ibft_genesis.txt --type=IBFT_EXTRA_DATA - ``` - -=== "Standard input/output example" - - ```bash - cat extra_data.json | besu rlp encode > rlp.txt - ``` - -Encodes the RLP hexadecimal string for use in a IBFT 2.0 or QBFT genesis file. The default type is -`IBFT_EXTRA_DATA`. - -Supported types are: - -* `IBFT_EXTRA_DATA` - The [IBFT 2.0 genesis file](../../../private-networks/how-to/configure/consensus/ibft.md#genesis-file) includes -the `IBFT_EXTRA_DATA` type in the [`extraData`](../../../private-networks/how-to/configure/consensus/ibft.md#extra-data) property. - -* `QBFT_EXTRA_DATA` - The [QBFT genesis file](../../../private-networks/how-to/configure/consensus/qbft.md#genesis-file) includes - the `QBFT_EXTRA_DATA` type in the [`extraData`](../../../private-networks/how-to/configure/consensus/qbft.md#extra-data) property. - -???+ summary "IBFT 2.0 extra data" - - To generate the RLP encoded `extraData` string, specify a JSON input that is an array of - validator addresses in ascending order. - - ??? tip "JSON Schema for IBFT_EXTRA_DATA" - Use the following JSON Schema to validate that your JSON data is well formed. To validate - your JSON content, use an online validation tool, such as - https://www.jsonschemavalidator.net/. - - ```json - { - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "http://org.hyperledger.besu/cli_rlp_ibft_extra_data.json", - "type": "array", - "definitions": {}, - "title": "IBFT extra data", - "description":"JSON format used as input to generate an IBFT extra data RLP string", - "items": { - "$id": "#/address", - "type": "string", - "title": "Validator address", - "description":"The validator node address", - "default": "", - "examples": [ - "be068f726a13c8d46c44be6ce9d275600e1735a4", - "5ff6f4b66a46a2b2310a6f3a93aaddc0d9a1c193" - ], - "pattern":"^([0-9a-f]{40})$" - } - } - ``` - - !!!example "Example IBFT_EXTRA_DATA encoding" - - === "JSON Input" - - ```json - [ - "be068f726a13c8d46c44be6ce9d275600e1735a4", - "5ff6f4b66a46a2b2310a6f3a93aaddc0d9a1c193" - ] - ``` - - === "RLP Output" - - ``` - 0xf853a00000000000000000000000000000000000000000000000000000000000000000ea94be068f726a13c8d46c44be6ce9d275600e1735a4945ff6f4b66a46a2b2310a6f3a93aaddc0d9a1c193808400000000c0 - ``` - -## `retesteth` - -=== "Syntax" - - ```bash - besu retesteth [--data-path=] [--rpc-http-host=] [--rpc-http-port=] [-l=] [--host-allowlist=[,…]… or * or all] - ``` - -=== "Example" - - ```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) - -## `validate-config` - -=== "Syntax" - - ```bash - besu validate-config --config-file - ``` - -=== "Example" - - ```bash - besu validate-config --config-file ../besu-local-nodes/config/besu/besu1.conf - ``` - -Performs basic syntax validation of the specified -[TOML configuration file](../../how-to/configure/configuration-file.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/docs/global/reference/disclosure.md b/docs/global/reference/disclosure.md deleted file mode 100644 index cc512df4dc1..00000000000 --- a/docs/global/reference/disclosure.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -description: Hyperledger Besu responsible disclosure statement ---- - -# 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/docs/global/reference/evm-tool.md b/docs/global/reference/evm-tool.md deleted file mode 100644 index b5f22bdacfc..00000000000 --- a/docs/global/reference/evm-tool.md +++ /dev/null @@ -1,375 +0,0 @@ ---- -description: Hyperledger Besu EVM tool reference ---- - -# EVM tool reference - -Options for running: - -* [Arbitrary EVM programs](#run-options) -* [Ethereum State Tests](#state-test-options). - -## Run options - -The first mode of the EVM tool runs an arbitrary EVM and is invoked without an extra command. Command Line -Options specify the code and other contextual information. - -### `code` - -=== "Syntax" - - ```bash - --code= - ``` - -=== "Example" - - ```bash - --code=5B600080808060045AFA50600056 - ``` - -The code to be executed, in compiled hex code form. - -No default value: execution fails if this is not set. - -### `gas` - -=== "Syntax" - - ```bash - --gas= - ``` - -=== "Example" - - ```bash - --gas=100000000 - ``` - -Amount of gas to make available to the EVM. The default value is 10 Billion, an incredibly large number -unlikely to be seen in any production blockchain. - -### `price` - -=== "Syntax" - - ```bash - --price= - ``` - -=== "Example" - - ```bash - --price=10 - ``` - -Price of gas in GWei. -The default is zero. -If set to a non-zero value, the sender account must have enough value to cover the gas fees. - -### `sender` - -=== "Syntax" - - ```bash - --sender=
- ``` - -=== "Example" - - ```bash - --sender=0xfe3b557e8fb62b89f4916b721be55ceb828dbd73 - ``` - -The account the invocation is sent from. -The specified account must exist in the world state, which unless specified by `--genesis` -or `--prestate` is the set of [accounts used for testing](../../private-networks/reference/accounts-for-testing.md). - -### `receiver` - -=== "Syntax" - - ```bash - --receiver=
- ``` - -=== "Example" - - ```bash - --receiver=0x588108d3eab34e94484d7cda5a1d31804ca96fe7 - ``` - -The account the invocation is sent to. -The specified account does not need to exist. - -### `input` - -=== "Syntax" - - ```bash - --input= - ``` - -=== "Example" - - ```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` - -=== "Syntax" - - ```bash - --value= - ``` - -=== "Example" - - ```bash - --value=1000000000000000000 - ``` - -The value of Ether 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` - -=== "Syntax" - - ```bash - --json= - ``` - -=== "Example" - - ```bash - --json=true - ``` - -Provide an operation-by-operation trace of the command in JSON when set to true. - -### `nomemory` - -=== "Syntax" - - ```bash - --nomemory= - ``` - -=== "Example" - - ```bash - --nomemory=true - ``` - -By default, when tracing operations the memory is traced for each operation. -For memory heavy scripts, setting this option may reduce the volume of JSON output. - -### `genesis` - -=== "Syntax" - - ```bash - --genesis= - ``` - -=== "Example" - - ```bash - --genesis=/opt/besu/genesis.json - ``` - -The Besu Genesis file to use when evaluating the EVM. -Most useful are the `alloc` items that set up accounts and their stored memory states. -For a complete description of this file see [Genesis file items](genesis-items.md). - -`--prestate` is a deprecated alternative option name. - -### `chain` - -=== "Syntax" - - ```bash - --chain= - ``` - -=== "Example" - - ```bash - --chain=goerli - ``` - -The well-known network genesis file to use when evaluating the EVM. -These values are an alternative to the `--genesis` option for well known networks. - -### `repeat` - -=== "Syntax" - - ```bash - --repeat= - ``` - -=== "Example" - - ```bash - --repeat=1000 - ``` - -Number of times to repeat the contract before gathering timing information. -This is useful when benchmarking EVM operations. - -### `revert-reason-enabled` - -=== "Syntax" - - ```bash - --revert-reason-enabled= - ``` - -=== "Example" - - ```bash - --revert-reason-enabled=true - ``` - -If enabled, the JSON tracing includes the reason included in `REVERT` operations. - -### `key-value-storage` - -=== "Syntax" - - ```bash - --key-value-storage= - ``` - -=== "Example" - - ```bash - --key-value-storage=rocksdb - ``` - -Kind of key value storage to use. - -Occasionally it may be useful to execute isolated EVM calls in context of an actual world state. -The default is `memory`, which executes the call only in context of the world provided by `--genesis` -or `--network` at block zero. -When set to `rocksdb` and combined with `--data-path`, `--block-number`, and `--genesis` a Besu -node that is not currently running can be used to provide the appropriate world state for a transaction. -Useful when evaluating consensus failures. - -### `data-path` - -=== "Syntax" - - ```bash - --data-path= - ``` - -=== "Example" - - ```bash - --data-path=/opt/besu/data - ``` - -When using `rocksdb` for `key-value-storage`, specifies the location of the database on disk. - -### `block-number` - -=== "Syntax" - - ```bash - --block-number= - ``` - -=== "Example" - - ```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 -specific world state when running with `rocksdb` for `key-value-storage`. - -## State test options - -The `state-test` subcommand allows the [Ethereum state tests](https://github.com/ethereum/tests/tree/develop/GeneralStateTests) to be evaluated. -Most of the options from EVM execution do not apply. - -### Applicable options - -#### `json` - -=== "Syntax" - - ```bash - --json= - ``` - -=== "Example" - - ```bash - --json=true - ``` - -Provide an operation by operation trace of the command in JSON when set to true. -Set to `true` for EVMLab Fuzzing. -Whether or not `json` is set, a summary JSON object is printed to standard output for each -state test executed. - -#### `nomemory` - -=== "Syntax" - - ```bash - --nomemory= - ``` - -=== "Example" - - ```bash - --nomemory=true - ``` - -By default, when tracing operations the memory is traced for each operation. -For memory heavy scripts, setting this option to `true` may reduce the volume of JSON output. - -### Using 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. - -=== "Docker example" - - ```bash - docker run --rm -v ${PWD}:/opt/referencetests hyperledger/besu-evmtool:develop --json state-test /opt/referencetests/GeneralStateTests/stExample/add11.json - ``` - -=== "CLI example" - - ```bash - evm --json state-test stExample/add11.json - ``` - -### Using 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. - -=== "Docker example" - - ```bash - docker run --rm -i hyperledger/besu-evmtool:develop --json state-test < stExample/add11.json - ``` - -=== "CLI example" - - ```bash - evm --json state-test < stExample/add11.json - ``` diff --git a/docs/global/reference/genesis-items.md b/docs/global/reference/genesis-items.md deleted file mode 100644 index 344ba6d5d6f..00000000000 --- a/docs/global/reference/genesis-items.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -description: Configuration items specified in the Hyperledger Besu genesis file ---- - -# 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`. | -| `isQuorum` | Set to `true` to allow [interoperable private transactions] between Hyperledger Besu and [GoQuorum clients] using the Tessera private transaction manager. | -| `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. | - -## 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). | - -## 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. - -!!! example "Ethereum Mainnet milestone blocks" - - ```json - { - "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, - ... - }, - } - ``` - -In private networks, the milestone block defines the protocol version for the network. - -!!! example "Private network milestone block" - - ```json - { - "config": { - ... - "berlinBlock": 0, - ... - }, - } - ``` - -!!! note - - We recommend specifying the latest milestone block for private networks. - It is implied this includes the preceding milestones. - This ensures you are using 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. - -!!! example - - ```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. - -!!! example - - ```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" - } - } - } - ``` - - -[GoQuorum clients]: https://consensys.net/docs/goquorum/en/stable/ -[interoperable private transactions]: ../../private-networks/how-to/use-privacy/goquorum-compatible.md diff --git a/docs/global/reference/projects-using-besu.md b/docs/global/reference/projects-using-besu.md deleted file mode 100644 index aa52e076bfa..00000000000 --- a/docs/global/reference/projects-using-besu.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -description: Projects using Besu. ---- - -# Projects using Besu - -## Block explorers - -- [BlockScout](https://github.com/blockscout/blockscout#readme) is a Besu-compatible blockchain explorer for inspecting - and analyzing Ethereum-based blockchains. - See the [project documentation](https://docs.blockscout.com/) for setup instructions. diff --git a/docs/global/reference/trace-types.md b/docs/global/reference/trace-types.md deleted file mode 100644 index 7b3a093a924..00000000000 --- a/docs/global/reference/trace-types.md +++ /dev/null @@ -1,172 +0,0 @@ ---- -description: Transaction trace types ---- - -# 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. - -!!!example "`trace` example" - - ```json - "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. - -!!!example "`vmTrace` example" - - ```json - "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. - -!!!example "`stateDiff` example" - - ```json - "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/docs/private-networks/concepts/events-and-logs.md b/docs/private-networks/concepts/events-and-logs.md deleted file mode 100644 index 51736319f22..00000000000 --- a/docs/private-networks/concepts/events-and-logs.md +++ /dev/null @@ -1 +0,0 @@ -{!global/concepts/events-and-logs.md!} diff --git a/docs/private-networks/concepts/genesis-file.md b/docs/private-networks/concepts/genesis-file.md deleted file mode 100644 index de48beefd4c..00000000000 --- a/docs/private-networks/concepts/genesis-file.md +++ /dev/null @@ -1 +0,0 @@ -{!global/concepts/genesis-file.md!} diff --git a/docs/private-networks/concepts/index.md b/docs/private-networks/concepts/index.md new file mode 100644 index 00000000000..d026f5c2fa1 --- /dev/null +++ b/docs/private-networks/concepts/index.md @@ -0,0 +1,19 @@ +--- +description: private networks concepts overview +--- + +# Concepts + +This section provides background information and context about private network features. + +The following features are shared with [public networks](../../public-networks/index.md) and the +content can be found in the public networks section: + +- Transactions: + - [Transaction types](../../public-networks/concepts/transactions/types.md) + - [Transaction pool](../../public-networks/concepts/transactions/pool.md) + - [Transaction validation](../../public-networks/concepts/transactions/validation.md) +- [Network ID and chain ID](../../public-networks/concepts/network-and-chain-id.md) +- [Events and logs](../../public-networks/concepts/events-and-logs.md) +- [Genesis file](../../public-networks/concepts/genesis-file.md) +- [Node keys](../../public-networks/concepts/node-keys.md) diff --git a/docs/private-networks/concepts/network-and-chain-id.md b/docs/private-networks/concepts/network-and-chain-id.md deleted file mode 100644 index 14ecebd8bae..00000000000 --- a/docs/private-networks/concepts/network-and-chain-id.md +++ /dev/null @@ -1 +0,0 @@ -{!global/concepts/network-and-chain-id.md!} diff --git a/docs/private-networks/concepts/node-keys.md b/docs/private-networks/concepts/node-keys.md deleted file mode 100644 index 388d7e79372..00000000000 --- a/docs/private-networks/concepts/node-keys.md +++ /dev/null @@ -1 +0,0 @@ -{!global/concepts/node-keys.md!} diff --git a/docs/private-networks/concepts/permissioning/onchain.md b/docs/private-networks/concepts/permissioning/onchain.md index ae74815af4e..5fb83b591c3 100644 --- a/docs/private-networks/concepts/permissioning/onchain.md +++ b/docs/private-networks/concepts/permissioning/onchain.md @@ -81,7 +81,7 @@ Permissioning implements three allowlists: ## Bootnodes -When a node joins the network, the node connects to the [bootnodes](../../how-to/connect/bootnodes.md) until it +When a node joins the network, the node connects to the [bootnodes](../../how-to/configure/bootnodes.md) until it synchronizes to the chain head, regardless of node permissions. After synchronization, the Account Rules and Node Rules smart contracts apply the permissioning rules. @@ -94,5 +94,5 @@ bootnodes to rediscover peers. [permissioning management dapp]: ../../how-to/use-permissioning/onchain.md#deploy-the-permissioning-management-dapp -[`--privacy-marker-transaction-signing-key-file`]: ../../../global/reference/cli/options.md#privacy-marker-transaction-signing-key-file +[`--privacy-marker-transaction-signing-key-file`]: ../../../public-networks/reference/cli/options.md#privacy-marker-transaction-signing-key-file [specify the permissioning contract interface]: ../../how-to/use-permissioning/onchain.md#specify-the-permissioning-contract-interface-version diff --git a/docs/private-networks/concepts/privacy/flexible-privacy.md b/docs/private-networks/concepts/privacy/flexible-privacy.md index 9b2e71e6cc7..ce8377f9b7b 100644 --- a/docs/private-networks/concepts/privacy/flexible-privacy.md +++ b/docs/private-networks/concepts/privacy/flexible-privacy.md @@ -80,23 +80,23 @@ but later removed from, Besu allows the user access to the following functionali group: - Private transactions using `priv_getTransaction` and private transaction receipts using - [`priv_getTransactionReceipt`](../../../global/reference/api/index.md#priv_gettransactionreceipt) from blocks up to (and + [`priv_getTransactionReceipt`](../../../public-networks/reference/api/index.md#priv_gettransactionreceipt) from blocks up to (and including) the removal block. - + !!! note A removed group member may have access to some private transactions after the removal PMT in the same block. - -- Using [`priv_call`](../../../global/reference/api/index.md#priv_call) on blocks up to (and including) the removal block. - -- Private logs using [`priv_getLogs`](../../../global/reference/api/index.md#priv_getlogs) for blocks up to (and including) the + +- Using [`priv_call`](../../../public-networks/reference/api/index.md#priv_call) on blocks up to (and including) the removal block. + +- Private logs using [`priv_getLogs`](../../../public-networks/reference/api/index.md#priv_getlogs) for blocks up to (and including) the removal block. When the `toBlock` is greater than the removal block, `priv_getLogs` still returns logs up to the removal block. - + !!! note When a user is removed from a privacy group, any [log filters](../../HowTo/Interact/Filters#filters-for-private-contracts) they've created are also removed and can't be accessed. A user can only create and access filters for a privacy group they are currently a member of. -All other [`PRIV` API methods](../../../global/reference/api/index.md#priv-methods) fail for the removed group member. +All other [`PRIV` API methods](../../../public-networks/reference/api/index.md#priv-methods) fail for the removed group member. diff --git a/docs/private-networks/concepts/privacy/multi-tenancy.md b/docs/private-networks/concepts/privacy/multi-tenancy.md index 07db32ace11..52c892a2a0d 100644 --- a/docs/private-networks/concepts/privacy/multi-tenancy.md +++ b/docs/private-networks/concepts/privacy/multi-tenancy.md @@ -40,4 +40,4 @@ JSON-RPC requests, and the tenant has access to the requested privacy data. Private data is isolated and each tenant uses a JSON Web Token (JWT) for authentication. You can -[create the JWT either externally or internally](../../how-to/use-besu-api/authenticate.md). +[create the JWT either externally or internally](../../../public-networks/how-to/use-besu-api/authenticate.md). diff --git a/docs/private-networks/concepts/privacy/plugin.md b/docs/private-networks/concepts/privacy/plugin.md index 335249f87bb..99a7541abf4 100644 --- a/docs/private-networks/concepts/privacy/plugin.md +++ b/docs/private-networks/concepts/privacy/plugin.md @@ -29,7 +29,7 @@ for the PMT is. ### Sending transactions -When submitting a private transaction using [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction), +When submitting a private transaction using [`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction), the signed transaction must be sent to `0x000000000000000000000000000000000000007a` to indicate which [privacy precompiled contract](private-transactions/processing.md) is being used. @@ -48,7 +48,7 @@ The transaction flow is as follows: The process of mining transactions happens in reverse to sending transactions. 1. The Mainnet transaction processor processes the PMT in the same way as - any other public transaction. On nodes containing the [privacy precompile contract](../../../global/reference/api/index.md#priv_getprivacyprecompileaddress) + any other public transaction. On nodes containing the [privacy precompile contract](../../../public-networks/reference/api/index.md#priv_getprivacyprecompileaddress) specified in the `to` attribute of the PMT, the Mainnet transaction processor passes the PMT to the privacy precompile contract. !!! note diff --git a/docs/private-networks/concepts/privacy/privacy-groups.md b/docs/private-networks/concepts/privacy/privacy-groups.md index 1d8cbd3ea13..6d76d9315f4 100644 --- a/docs/private-networks/concepts/privacy/privacy-groups.md +++ b/docs/private-networks/concepts/privacy/privacy-groups.md @@ -83,7 +83,7 @@ provided by Tessera. ### Besu-extended privacy The Besu-extended privacy implementation creates a privacy group using -[`priv_createPrivacyGroup`](../../../global/reference/api/index.md#priv_createprivacygroup) with private +[`priv_createPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_createprivacygroup) with private transactions sent to the privacy group ID. !!! example diff --git a/docs/private-networks/concepts/privacy/private-transactions/index.md b/docs/private-networks/concepts/privacy/private-transactions/index.md index 74bc1ae8d5e..9acf48239ef 100644 --- a/docs/private-networks/concepts/privacy/private-transactions/index.md +++ b/docs/private-networks/concepts/privacy/private-transactions/index.md @@ -42,7 +42,7 @@ You can [create and send private transactions](../../../how-to/send-transactions Besu and Tessera nodes both have public/private key pairs identifying them. A Besu node sending a private transaction to a Tessera node signs the transaction with the Besu node private key. The `privateFrom` and `privateFor` parameters specified in the RLP-encoded transaction string for -[`eea_sendRawTransaction`](../../../../global/reference/api/index.md#eea_sendrawtransaction) are the public keys of the Tessera +[`eea_sendRawTransaction`](../../../../public-networks/reference/api/index.md#eea_sendrawtransaction) are the public keys of the Tessera nodes sending and receiving the transaction. !!! important @@ -68,11 +68,11 @@ That is, the nonce for account A for privacy group ABC is different to the nonce ### Private nonce validation -Unlike public transactions, private transactions are not submitted to the [transaction pool](../../../../global/concepts/Transactions/Transaction-Pool.md). +Unlike public transactions, private transactions are not submitted to the [transaction pool](../../../../public-networks/concepts/transactions/pool.md). The private transaction is distributed directly to the participants in the transaction, and the PMT is submitted to the transaction pool. -Unlike [public transaction nonces](../../../../global/concepts/Transactions/Transaction-Validation.md), private transaction nonces aren't +Unlike [public transaction nonces](../../../../public-networks/concepts/transactions/validation.md), private transaction nonces aren't validated when the private transaction is submitted. If a private transaction has an incorrect nonce, the PMT is still valid and is added to a block. However, in this scenario, the private transaction execution fails when [processing the PMT](processing.md) @@ -83,7 +83,7 @@ The following private transaction flow illustrates when nonce validation occurs: 1. Submit a private transaction with a [nonce value](#private-transaction-nonce). 1. The private transaction is distributed to all participants in the privacy group. 1. The PMT is created and submitted to the transaction pool with a nonce of `0` if using one-time accounts. - If using a specific account with [`--privacy-marker-transaction-signing-key-file`](../../../../global/reference/cli/options.md#privacy-marker-transaction-signing-key-file), + If using a specific account with [`--privacy-marker-transaction-signing-key-file`](../../../../public-networks/reference/cli/options.md#privacy-marker-transaction-signing-key-file), the public nonce for that account is obtained and used for the PMT. 1. The PMT is mined and included in the block. 1. After the block containing the PMT is imported, and the PMT is processed, the private transaction is retrieved from @@ -94,8 +94,8 @@ The following private transaction flow illustrates when nonce validation occurs: ### Private nonce management -In Besu, you call [`eth_getTransactionCount`](../../../../global/reference/api/index.md#eth_gettransactioncount) to get a nonce, -then use that nonce with [`eea_sendRawTransaction`](../../../../global/reference/api/index.md#eea_sendrawtransaction) to send a +In Besu, you call [`eth_getTransactionCount`](../../../../public-networks/reference/api/index.md#eth_gettransactioncount) to get a nonce, +then use that nonce with [`eea_sendRawTransaction`](../../../../public-networks/reference/api/index.md#eea_sendrawtransaction) to send a private transaction. However, when you send multiple transactions in row, if a subsequent call to `getTransactionCount` happens before a diff --git a/docs/private-networks/concepts/privacy/private-transactions/processing.md b/docs/private-networks/concepts/privacy/private-transactions/processing.md index d97c73e7cef..ca84a071d80 100644 --- a/docs/private-networks/concepts/privacy/private-transactions/processing.md +++ b/docs/private-networks/concepts/privacy/private-transactions/processing.md @@ -17,7 +17,7 @@ Processing [private transactions](index.md) involves the following: * **Privacy marker transaction (PMT)**: A public Ethereum transaction with a payload of the enclave key. The enclave key is a pointer to the private transaction in Tessera. - The `to` attribute of the PMT is the [address of the privacy precompiled contract](../../../../global/reference/api/index.md#priv_getprivacyprecompileaddress). + The `to` attribute of the PMT is the [address of the privacy precompiled contract](../../../../public-networks/reference/api/index.md#priv_getprivacyprecompileaddress). The PMT is [signed with a random key or the key specified on the command line]. @@ -25,7 +25,7 @@ Private transaction processing is illustrated and described in the following dia ![Processing Private Transactions](../../../../images/PrivateTransactionProcessing.png) -1. Submit a private transaction using [`eea_sendRawTransaction`](../../../../global/reference/api/index.md#eea_sendrawtransaction). +1. Submit a private transaction using [`eea_sendRawTransaction`](../../../../public-networks/reference/api/index.md#eea_sendrawtransaction). The signed transaction includes transaction parameters specific to private transactions, including: * `privateFor` or `privacyGroupId`, which specifies the list of recipients. @@ -55,7 +55,7 @@ Private transaction processing is illustrated and described in the following dia 1. Besu mines the PMT into a block and the PMT is distributed to all Ethereum nodes in the network. 1. The Mainnet Transaction Processor processes the PMT in the same way as any other public transaction. - On nodes containing the [privacy precompile contract](../../../../global/reference/api/index.md#priv_getprivacyprecompileaddress) + On nodes containing the [privacy precompile contract](../../../../public-networks/reference/api/index.md#priv_getprivacyprecompileaddress) specified in the `to` attribute of the PMT, the Mainnet Transaction Processor passes the PMT to the privacy precompile contract. diff --git a/docs/private-networks/get-started/install/binary-distribution.md b/docs/private-networks/get-started/install/binary-distribution.md index 8e45618dc6b..1fc1f78dd87 100644 --- a/docs/private-networks/get-started/install/binary-distribution.md +++ b/docs/private-networks/get-started/install/binary-distribution.md @@ -1 +1,83 @@ -{!global/get-started/install/binary-distribution.md!} +--- +description: Install or upgrade Hyperledger Besu from binary distribution +--- + +# Install binary distribution + +## MacOS with Homebrew + +### Prerequisites + +* [Homebrew](https://brew.sh/) +* Java JDK + +!!!important + + Hyperledger Besu supports: + + * MacOS High Sierra 10.13 or later versions. + * Java 11+. + We recommend using at least Java 17 because that will be the minimum requirement in the next Besu version series. + 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 + + If you've upgraded your MacOS version between installing and upgrading Besu, when running `brew upgrade + hyperledger/besu/besu` you may be prompted to reinstall command line tools with `xcode-select --install`. + +!!! note + + 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](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. + +### 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/docs/private-networks/get-started/install/index.md b/docs/private-networks/get-started/install/index.md index a3f21b5aed7..ea314a24a08 100644 --- a/docs/private-networks/get-started/install/index.md +++ b/docs/private-networks/get-started/install/index.md @@ -1 +1,29 @@ -{!global/get-started/install/index.md!} +--- +title: Installation options +description: Options for getting started with Hyperledger Besu +--- + +# Options for getting started + +## New to Hyperledger Besu? + +Get started with the [Developer Quickstart](../../../private-networks/tutorials/quickstart.md). +Use the quickstart to rapidly generate local blockchain 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/docs/private-networks/get-started/install/run-docker-image.md b/docs/private-networks/get-started/install/run-docker-image.md index 502759d70ca..02833bf336d 100644 --- a/docs/private-networks/get-started/install/run-docker-image.md +++ b/docs/private-networks/get-started/install/run-docker-image.md @@ -1 +1,138 @@ -{!global/get-started/install/run-docker-image.md!} +--- +description: Run Hyperledger Besu using the official docker image +--- + +# 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 + +!!! important + + The Docker image does not 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). + +!!! example + + 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 + +!!! important + + 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#besu-environment-variables) with the +Docker image instead of the command line options. + +!!! example + + ```bash + docker run -p 30303:30303 -p 8545:8545 -e BESU_RPC_HTTP_ENABLED=true -e BESU_NETWORK=goerli hyperledger/besu:latest + ``` + +### Run a node for testing + +To run a node that mines blocks at a rate suitable for testing purposes with WebSockets 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 Rinkeby testnet + +To run a node on Rinkeby: + +```bash +docker run -p 30303:30303 --mount type=bind,source=/,target=/var/lib/besu hyperledger/besu:latest --network=rinkeby --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/docs/private-networks/get-started/start-node.md b/docs/private-networks/get-started/start-node.md index 4218e44697b..50c5a48b821 100644 --- a/docs/private-networks/get-started/start-node.md +++ b/docs/private-networks/get-started/start-node.md @@ -17,7 +17,7 @@ with the most common options. ## 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`](../../global/reference/cli/options.md#data-path) option +the local block data or use the [`--data-path`](../../public-networks/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 @@ -30,37 +30,37 @@ Besu specifies the genesis configuration, and sets the network ID and bootnodes [Goerli](#run-a-node-on-goerli-testnet), [Kiln](#run-a-node-on-kiln-testnet), [Sepolia](#run-a-node-on-sepolia-testnet), and [Mainnet](#run-a-node-on-ethereum-mainnet). -When you specify [`--network=dev`](../../global/reference/cli/options.md#network), Besu uses the +When you specify [`--network=dev`](../../public-networks/reference/cli/options.md#network), Besu uses the development mode genesis configuration with a fixed low difficulty. A node started with -[`--network=dev`](../../global/reference/cli/options.md#network) has an empty bootnodes list by +[`--network=dev`](../../public-networks/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`](../../global/reference/cli/options.md#genesis-file) option. +the file using the [`--genesis-file`](../../public-networks/reference/cli/options.md#genesis-file) option. ## Syncing and storage By default, Besu syncs to the current state of the blockchain using [fast sync](../../public-networks/how-to/connect/sync-node.md#fast-synchronization) in: -- Networks specified using [`--network`](../../global/reference/cli/options.md#network) except for the `dev` +- Networks specified using [`--network`](../../public-networks/reference/cli/options.md#network) except for the `dev` development network. - Ethereum Mainnet. We recommend using [snap sync](../../public-networks/how-to/connect/sync-node.md#snap-synchronization) for a faster sync, by starting Besu -with [`--sync-mode=X_SNAP`](../../global/reference/cli/options.md#sync-mode). +with [`--sync-mode=X_SNAP`](../../public-networks/reference/cli/options.md#sync-mode). By default, Besu stores data in the [Forest of Tries](../../public-networks/concepts/data-storage-formats.md#forest-of-tries) format. We recommend using [Bonsai Tries](../../public-networks/concepts/data-storage-formats.md#bonsai-tries) for lower storage requirements, -by starting Besu with [`--data-storage-format=BONSAI`](../../global/reference/cli/options.md#data-storage-format). +by starting Besu with [`--data-storage-format=BONSAI`](../../public-networks/reference/cli/options.md#data-storage-format). ## Confirm node is running If you started Besu with the -[`--rpc-http-enabled`](../../global/reference/cli/options.md#rpc-http-enabled) option, use +[`--rpc-http-enabled`](../../public-networks/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. @@ -100,7 +100,7 @@ To run a node that mines blocks at a rate suitable for testing purposes: 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/configure/configuration-file.md) +You can also use the following [configuration file](../../public-networks/how-to/configuration-file.md) on the command line to start a node with the same options as above: ```toml @@ -191,7 +191,7 @@ besu --rpc-http-enabled ## Besu launcher Use the Besu launcher to interactively configure and start a node with the most common options. The -launcher asks a series of questions and generates a [configuration file](../how-to/configure/configuration-file.md). +launcher asks a series of questions and generates a [configuration file](../../public-networks/how-to/configuration-file.md). To run the Besu launcher: diff --git a/docs/private-networks/get-started/system-requirements.md b/docs/private-networks/get-started/system-requirements.md index 3df9ac5462f..b07f7af2acc 100644 --- a/docs/private-networks/get-started/system-requirements.md +++ b/docs/private-networks/get-started/system-requirements.md @@ -9,9 +9,9 @@ Private network system requirements depend on many factors, including: * Size of the world state for the network. * Number of transactions submitted to the network. -* [Block gas limit](../../global/reference/genesis-items.md#genesis-block-parameters). -* Number and complexity of [JSON-RPC](../how-to/use-besu-api/json-rpc.md), - [PubSub](../how-to/use-besu-api/rpc-pubsub.md), or [GraphQL](../how-to/use-besu-api/graphql.md) queries +* [Block gas limit](../../public-networks/reference/genesis-items.md#genesis-block-parameters). +* Number and complexity of [JSON-RPC](../../public-networks/how-to/use-besu-api/json-rpc.md), + [PubSub](../../public-networks/how-to/use-besu-api/rpc-pubsub.md), or [GraphQL](../../public-networks/how-to/use-besu-api/graphql.md) queries handled by the node. Participation in private networks is typically restricted in some way, so the volume of traffic is @@ -20,7 +20,7 @@ much lower than on Mainnet, resulting in lower system requirements. ## Determining system requirements To determine system requirements, check CPU and disk space requirements using -[Prometheus](../how-to/monitor/metrics.md). Grafana provides a +[Prometheus](../../public-networks/how-to/monitor/metrics.md). Grafana provides a [sample dashboard](https://grafana.com/grafana/dashboards/10273) for Besu. ## Java Virtual Machine size @@ -47,7 +47,7 @@ We recommend you create a VM with the following attributes: * (Optional) You can create a shared directory to copy block files or genesis files from the host computer to the VM. For details on how to create a shared directory, see "Share Folders" in the [Oracle VirtualBox documentation]. - + ## Disk type Use [local SSD storage](https://cloud.google.com/compute/docs/disks) for high throughput nodes (validators and RPC nodes). diff --git a/docs/private-networks/how-to/backup.md b/docs/private-networks/how-to/backup.md index 2a625f21f7f..d937ceb040e 100644 --- a/docs/private-networks/how-to/backup.md +++ b/docs/private-networks/how-to/backup.md @@ -18,7 +18,7 @@ If installed locally, the default data location is the Besu installation directo We recommend mounting a [separate volume to store data](../get-started/install/run-docker-image.md). Use the -[`--data-path`](../../global/reference/cli/options.md#data-path) command line option to pass the path +[`--data-path`](../../public-networks/reference/cli/options.md#data-path) command line option to pass the path to Besu. The default data location is the Besu installation directory, or `/opt/besu/database` if using the @@ -52,4 +52,4 @@ The process for finding peers after restarting is the same as for [finding peers after upgrading and restarting]. -[finding peers after upgrading and restarting]: ../how-to/upgrade/node.md +[finding peers after upgrading and restarting]: ../../public-networks/how-to/upgrade-node.md#find-peers-on-restarting diff --git a/docs/private-networks/how-to/connect/bootnodes.md b/docs/private-networks/how-to/configure/bootnodes.md similarity index 77% rename from docs/private-networks/how-to/connect/bootnodes.md rename to docs/private-networks/how-to/configure/bootnodes.md index 07d161532e1..390abb736b1 100644 --- a/docs/private-networks/how-to/connect/bootnodes.md +++ b/docs/private-networks/how-to/configure/bootnodes.md @@ -27,8 +27,8 @@ In production networks, [configure two or more nodes as bootnodes](#configure-bo ## Specify a bootnode -To start a node, specify a bootnode [enode](../../concepts/node-keys.md) for P2P discovery, -using the [`--bootnodes`](../../../global/reference/cli/options.md#bootnodes) option. +To start a node, specify a bootnode [enode](../../../public-networks/concepts/node-keys.md) for P2P discovery, +using the [`--bootnodes`](../../../public-networks/reference/cli/options.md#bootnodes) option. !!! example @@ -38,12 +38,12 @@ using the [`--bootnodes`](../../../global/reference/cli/options.md#bootnodes) op The default host and port advertised to other peers for P2P discovery is `127.0.0.1:30303`. To specify a different host or port, use the -[`--p2p-host`](../../../global/reference/cli/options.md#p2p-host) and -[`--p2p-port`](../../../global/reference/cli/options.md#p2p-port) options. +[`--p2p-host`](../../../public-networks/reference/cli/options.md#p2p-host) and +[`--p2p-port`](../../../public-networks/reference/cli/options.md#p2p-port) options. By default, peer discovery listens on all available network interfaces. If the device Besu is running on must bind to a specific network interface, specify the interface using the -[`--p2p-interface`](../../../global/reference/cli/options.md#p2p-interface) option. +[`--p2p-interface`](../../../public-networks/reference/cli/options.md#p2p-interface) option. ## Configure bootnodes in a production network @@ -51,14 +51,14 @@ A network must have at least one operating bootnode. To allow for continuity in failure, configure two or more bootnodes in a production network. We don't recommend putting bootnodes behind a load balancer because the -[enode](../../../global/concepts/node-keys.md#enode-url) relates to the node public key, IP address, and +[enode](../../../public-networks/concepts/node-keys.md#enode-url) relates to the node public key, IP address, and discovery ports. Any changes to a bootnode enode prevents other nodes from being able to establish a connection with the bootnode. This is why we recommend putting more bootnodes on the network itself. To ensure a bootnode enode doesn't change when recovering from a complete bootnode failure: -1. Create the [node key pair](../../concepts/node-keys.md) (that is, the private and public key) +1. Create the [node key pair](../../../public-networks/concepts/node-keys.md) (that is, the private and public key) before starting the bootnode. 1. When creating bootnodes in the cloud (for example, AWS and Azure), attempt to assign a static IP address to them. If your network is: @@ -80,10 +80,10 @@ To allow for failure, specify all bootnodes on the command line (even to the boo ## Add and remove bootnodes Adding new bootnodes is a similar process to creating bootnodes. After creating the bootnodes and -adding them to the network, update the [`--bootnodes`](../../../global/reference/cli/options.md#bootnodes) +adding them to the network, update the [`--bootnodes`](../../../public-networks/reference/cli/options.md#bootnodes) command line option for each node to include the new bootnodes. When adding bootnodes, you don't need to restart running nodes. By updating the -[`--bootnodes`](../../../global/reference/cli/options.md#bootnodes) option, the next time you restart the -nodes (for example, when [upgrading](../../how-to/upgrade/node.md)), the nodes connect to the new -bootnodes. +[`--bootnodes`](../../../public-networks/reference/cli/options.md#bootnodes) option, the next time you restart the +nodes (for example, when [upgrading](../../../public-networks/how-to/upgrade-node.md)), the nodes +connect to the new bootnodes. diff --git a/docs/private-networks/how-to/configure/configuration-file.md b/docs/private-networks/how-to/configure/configuration-file.md deleted file mode 100644 index 3044fcc5def..00000000000 --- a/docs/private-networks/how-to/configure/configuration-file.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/configure/configuration-file.md!} diff --git a/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md b/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md index 98bcd14a744..3d825bb4b58 100644 --- a/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md +++ b/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md @@ -145,8 +145,8 @@ To add or remove validators without voting: 1. Restart all nodes in the network using the updated genesis file. You can make a rolling update of the nodes, as long as they're all up before the transition block is processed. 1. To verify the changes after the transition block, call - [`qbft_getValidatorsByBlockNumber`](../../../../global/reference/api/index.md#qbft_getvalidatorsbyblocknumber) or - [`ibft_getValidatorsByBlockNumber`](../../../../global/reference/api/index.md#ibft_getvalidatorsbyblocknumber), + [`qbft_getValidatorsByBlockNumber`](../../../../public-networks/reference/api/index.md#qbft_getvalidatorsbyblocknumber) or + [`ibft_getValidatorsByBlockNumber`](../../../../public-networks/reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. !!! caution diff --git a/docs/private-networks/how-to/configure/consensus/clique.md b/docs/private-networks/how-to/configure/consensus/clique.md index 91cfe67c2b9..c48293be2a6 100644 --- a/docs/private-networks/how-to/configure/consensus/clique.md +++ b/docs/private-networks/how-to/configure/consensus/clique.md @@ -23,7 +23,7 @@ You can [create a private network using Clique](../../../tutorials/clique.md). ## Genesis file -To use Clique in a private network, Besu requires a Clique [genesis file](../../../concepts/genesis-file.md). When connecting to Rinkeby, +To use Clique in a private network, Besu requires a Clique [genesis file](../../../../public-networks/concepts/genesis-file.md). When connecting to Rinkeby, Besu uses the [`rinkeby.json`](https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/config/src/main/resources/rinkeby.json) genesis file in the `/besu/config/src/main/resources` directory. @@ -99,34 +99,34 @@ Additionally, [`extraData`](#extra-data) is limited to 32 bytes of vanity data a ## Connect to a Clique network To connect to the Rinkeby testnet, start Besu with the -[`--network=rinkeby`](../../../../global/reference/cli/options.md#network) command line option. To start a +[`--network=rinkeby`](../../../../public-networks/reference/cli/options.md#network) command line option. To start a node on a Clique private network, use the -[`--genesis-file`](../../../../global/reference/cli/options.md#genesis-file) option to specify the custom +[`--genesis-file`](../../../../public-networks/reference/cli/options.md#genesis-file) option to specify the custom genesis file. ## Add and remove signers Existing signers propose and vote to add or remove validators using the Clique JSON-RPC API methods. -Enable the HTTP interface with [`--rpc-http-enabled`](../../../../global/reference/cli/options.md#rpc-http-enabled) or the -WebSocket interface with [`--rpc-ws-enabled`](../../../../global/reference/cli/options.md#rpc-ws-enabled). +Enable the HTTP interface with [`--rpc-http-enabled`](../../../../public-networks/reference/cli/options.md#rpc-http-enabled) or the +WebSocket interface with [`--rpc-ws-enabled`](../../../../public-networks/reference/cli/options.md#rpc-ws-enabled). The Clique API methods are disabled by default. -To enable them, specify the [`--rpc-http-api`](../../../../global/reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../../../global/reference/cli/options.md#rpc-ws-api) option and include `CLIQUE`. +To enable them, specify the [`--rpc-http-api`](../../../../public-networks/reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../../public-networks/reference/cli/options.md#rpc-ws-api) option and include `CLIQUE`. The methods to add or remove signers are: -* [`clique_propose`](../../../../global/reference/api/index.md#clique_propose). -* [`clique_getSigners`](../../../../global/reference/api/index.md#clique_getsigners). -* [`clique_discard`](../../../../global/reference/api/index.md#clique_discard). +* [`clique_propose`](../../../../public-networks/reference/api/index.md#clique_propose). +* [`clique_getSigners`](../../../../public-networks/reference/api/index.md#clique_getsigners). +* [`clique_discard`](../../../../public-networks/reference/api/index.md#clique_discard). To view signer metrics for a specified block range, call -[`clique_getSignerMetrics`](../../../../global/reference/api/index.md#clique_getsignermetrics). +[`clique_getSignerMetrics`](../../../../public-networks/reference/api/index.md#clique_getsignermetrics). ### Add a signer To propose adding a signer to a Clique network, call -[`clique_propose`](../../../../global/reference/api/index.md#clique_propose), specifying the address of the proposed signer and `true`. +[`clique_propose`](../../../../public-networks/reference/api/index.md#clique_propose), specifying the address of the proposed signer and `true`. A majority of signers must execute the call. !!! example "JSON-RPC `clique_propose` request example" @@ -141,7 +141,7 @@ When more than 50% of the existing signers propose adding the signer, with their signer can begin signing blocks. To return a list of signers and confirm the addition of a proposed signer, call -[`clique_getSigners`](../../../../global/reference/api/index.md#clique_getsigners). +[`clique_getSigners`](../../../../public-networks/reference/api/index.md#clique_getsigners). !!! example "JSON-RPC `clique_getSigners` request example" @@ -150,7 +150,7 @@ To return a list of signers and confirm the addition of a proposed signer, call ``` To discard your proposal after confirming the addition of a signer, call -[`clique_discard`](../../../../global/reference/api/index.md#clique_discard) specifying the address of the proposed signer. +[`clique_discard`](../../../../public-networks/reference/api/index.md#clique_discard) specifying the address of the proposed signer. !!! example "JSON-RPC `clique_discard` request example" @@ -161,7 +161,7 @@ To discard your proposal after confirming the addition of a signer, call ### Remove a signer The process for removing a signer from a Clique network is the same as [adding a signer](#add-a-signer), except you -specify `false` as the second parameter of [`clique_propose`](../../../../global/reference/api/index.md#clique_propose). +specify `false` as the second parameter of [`clique_propose`](../../../../public-networks/reference/api/index.md#clique_propose). ### Epoch transition diff --git a/docs/private-networks/how-to/configure/consensus/ibft.md b/docs/private-networks/how-to/configure/consensus/ibft.md index d52ea4b86bb..cc1caefbe8d 100644 --- a/docs/private-networks/how-to/configure/consensus/ibft.md +++ b/docs/private-networks/how-to/configure/consensus/ibft.md @@ -25,11 +25,11 @@ You can [create a private network using IBFT](../../../tutorials/ibft/index.md). !!! tip You can use a plugin to securely store a validator's key using the - [`--security-module`](../../../../global/reference/cli/options.md#security-module) option. + [`--security-module`](../../../../public-networks/reference/cli/options.md#security-module) option. ## Genesis file -To use IBFT 2.0, Besu requires an IBFT 2.0 [genesis file](../../../concepts/genesis-file.md). The genesis file defines properties +To use IBFT 2.0, Besu requires an IBFT 2.0 [genesis file](../../../../public-networks/concepts/genesis-file.md). The genesis file defines properties specific to IBFT 2.0. !!! example "Example IBFT 2.0 genesis file" @@ -82,7 +82,7 @@ The properties with specific values in the IBFT 2.0 genesis files are: block identification. To start a node on an IBFT 2.0 private network, use the -[`--genesis-file`](../../../../global/reference/cli/options.md#genesis-file) option to specify the custom +[`--genesis-file`](../../../../public-networks/reference/cli/options.md#genesis-file) option to specify the custom genesis file. ### Extra data @@ -107,7 +107,7 @@ Formally, `extraData` in the genesis block contains #### Generate extra data To generate the `extraData` RLP string for inclusion in the genesis file, use the -[`rlp encode`](../../../../global/reference/cli/subcommands.md#rlp) Besu subcommand. +[`rlp encode`](../../../../public-networks/reference/cli/subcommands.md#rlp) Besu subcommand. !!! example @@ -117,7 +117,7 @@ To generate the `extraData` RLP string for inclusion in the genesis file, use th Where the `toEncode.json` file contains a list of the initial validators, in ascending order. To write the validator address and copy it to the `toEncode.json` file, use the -[`public-key export-address`](../../../../global/reference/cli/subcommands.md#export-address) Besu subcommand. +[`public-key export-address`](../../../../public-networks/reference/cli/subcommands.md#export-address) Besu subcommand. For example: !!! example "One initial validator in `toEncode.json` file" @@ -196,21 +196,21 @@ Additionally, [`extraData`](#extra-data) is limited to 32 bytes of vanity data a ## Add and remove validators Existing validators propose and vote to add or remove validators using the IBFT 2.0 JSON-RPC API methods. -Enable the HTTP interface with [`--rpc-http-enabled`](../../../../global/reference/cli/options.md#rpc-http-enabled) or the -WebSocket interface with [`--rpc-ws-enabled`](../../../../global/reference/cli/options.md#rpc-ws-enabled). +Enable the HTTP interface with [`--rpc-http-enabled`](../../../../public-networks/reference/cli/options.md#rpc-http-enabled) or the +WebSocket interface with [`--rpc-ws-enabled`](../../../../public-networks/reference/cli/options.md#rpc-ws-enabled). The IBFT 2.0 API methods are disabled by default. -To enable them, specify the [`--rpc-http-api`](../../../../global/reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../../../global/reference/cli/options.md#rpc-ws-api) option and include `IBFT`. +To enable them, specify the [`--rpc-http-api`](../../../../public-networks/reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../../public-networks/reference/cli/options.md#rpc-ws-api) option and include `IBFT`. The methods to add or remove validators are: -* [`ibft_getPendingVotes`](../../../../global/reference/api/index.md#ibft_getpendingvotes). -* [`ibft_proposeValidatorVote`](../../../../global/reference/api/index.md#ibft_proposevalidatorvote). -* [`ibft_discardValidatorVote`](../../../../global/reference/api/index.md#ibft_discardvalidatorvote). +* [`ibft_getPendingVotes`](../../../../public-networks/reference/api/index.md#ibft_getpendingvotes). +* [`ibft_proposeValidatorVote`](../../../../public-networks/reference/api/index.md#ibft_proposevalidatorvote). +* [`ibft_discardValidatorVote`](../../../../public-networks/reference/api/index.md#ibft_discardvalidatorvote). To view validator metrics for a specified block range, use -[`ibft_getSignerMetrics`](../../../../global/reference/api/index.md#ibft_getsignermetrics). +[`ibft_getSignerMetrics`](../../../../public-networks/reference/api/index.md#ibft_getsignermetrics). !!! note @@ -220,7 +220,7 @@ To view validator metrics for a specified block range, use ### Add a validator To propose adding a validator to an IBFT 2.0 network, call -[`ibft_proposeValidatorVote`](../../../../global/reference/api/index.md#ibft_proposevalidatorvote), specifying the address of the +[`ibft_proposeValidatorVote`](../../../../public-networks/reference/api/index.md#ibft_proposevalidatorvote), specifying the address of the proposed validator and `true`. A majority of validators must execute the call. @@ -231,14 +231,14 @@ A majority of validators must execute the call. ``` When the validator proposes the next block, the protocol inserts one proposal received from -[`ibft_proposeValidatorVote`](../../../../global/reference/api/index.md#ibft_proposevalidatorvote) into the block. +[`ibft_proposeValidatorVote`](../../../../public-networks/reference/api/index.md#ibft_proposevalidatorvote) into the block. If blocks include all proposals, subsequent blocks proposed by the validator will not contain a vote. When more than 50% of the existing validators have published a matching proposal, the protocol adds the proposed validator to the validator pool and the validator can begin validating blocks. To return a list of validators and confirm the addition of a proposed validator, use -[`ibft_getValidatorsByBlockNumber`](../../../../global/reference/api/index.md#ibft_getvalidatorsbyblocknumber). +[`ibft_getValidatorsByBlockNumber`](../../../../public-networks/reference/api/index.md#ibft_getvalidatorsbyblocknumber). !!! example "JSON-RPC `ibft_getValidatorsByBlockNumber` request example" @@ -247,7 +247,7 @@ To return a list of validators and confirm the addition of a proposed validator, ``` To discard your proposal after confirming the addition of a validator, call -[`ibft_discardValidatorVote`](../../../../global/reference/api/index.md#ibft_discardvalidatorvote), +[`ibft_discardValidatorVote`](../../../../public-networks/reference/api/index.md#ibft_discardvalidatorvote), specifying the address of the proposed validator. !!! example "JSON-RPC `ibft_discardValidatorVote` request example" @@ -260,7 +260,7 @@ specifying the address of the proposed validator. The process for removing a validator from an IBFT 2.0 network is the same as [adding a validator](#add-a-validator) except you specify `false` as the second parameter of -[`ibft_proposeValidatorVote`](../../../../global/reference/api/index.md#ibft_proposevalidatorvote). +[`ibft_proposeValidatorVote`](../../../../public-networks/reference/api/index.md#ibft_proposevalidatorvote). ### Epoch transition @@ -360,7 +360,7 @@ To update an existing network with a new `blockperiodseconds`: 3. Restart all nodes in the network using the updated genesis file. 4. To verify the changes after the transition block, call - [`ibft_getValidatorsByBlockNumber`](../../../../global/reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. + [`ibft_getValidatorsByBlockNumber`](../../../../public-networks/reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. ### Configure block rewards on an existing network deployment diff --git a/docs/private-networks/how-to/configure/consensus/qbft.md b/docs/private-networks/how-to/configure/consensus/qbft.md index 5328e5a854c..17246b07c37 100644 --- a/docs/private-networks/how-to/configure/consensus/qbft.md +++ b/docs/private-networks/how-to/configure/consensus/qbft.md @@ -28,7 +28,7 @@ You can [create a private network using QBFT](../../../tutorials/qbft.md). ## Genesis file -To use QBFT, define a [genesis file](../../../concepts/genesis-file.md) that contains the QBFT properties. +To use QBFT, define a [genesis file](../../../../public-networks/concepts/genesis-file.md) that contains the QBFT properties. The genesis file differs depending on the [validator management method](#add-and-remove-validators) you intend to use. @@ -164,7 +164,7 @@ The properties with specific values in the QBFT genesis files are: block identification. To start a node on a QBFT private network, use the -[`--genesis-file`](../../../../global/reference/cli/options.md#genesis-file) option to specify the custom +[`--genesis-file`](../../../../public-networks/reference/cli/options.md#genesis-file) option to specify the custom genesis file. ### Extra data @@ -200,7 +200,7 @@ Formally, `extraData` in the genesis block contains: #### Generate extra data To generate the `extraData` RLP string for inclusion in the genesis file, -use the [`rlp encode`](../../../../global/reference/cli/subcommands.md#rlp) Besu subcommand. +use the [`rlp encode`](../../../../public-networks/reference/cli/subcommands.md#rlp) Besu subcommand. !!! example @@ -210,7 +210,7 @@ use the [`rlp encode`](../../../../global/reference/cli/subcommands.md#rlp) Besu Where the `toEncode.json` file contains a list of the initial validators, in ascending order. To write the validator address and copy it to the `toEncode.json` file, use the -[`public-key export-address`](../../../../global/reference/cli/subcommands.md#export-address) Besu +[`public-key export-address`](../../../../public-networks/reference/cli/subcommands.md#export-address) Besu subcommand. For example: !!! example "Initial validators in `toEncode.json` file" @@ -311,21 +311,21 @@ method are configured in the genesis file's `storage` section. ### Add and remove validators using block headers -Enable the HTTP interface with [`--rpc-http-enabled`](../../../../global/reference/cli/options.md#rpc-http-enabled) or the -WebSockets interface with [`--rpc-ws-enabled`](../../../../global/reference/cli/options.md#rpc-ws-enabled). +Enable the HTTP interface with [`--rpc-http-enabled`](../../../../public-networks/reference/cli/options.md#rpc-http-enabled) or the +WebSockets interface with [`--rpc-ws-enabled`](../../../../public-networks/reference/cli/options.md#rpc-ws-enabled). The QBFT API methods are disabled by default. -To enable them, specify the [`--rpc-http-api`](../../../../global/reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../../../global/reference/cli/options.md#rpc-ws-api) option and include `QBFT`. +To enable them, specify the [`--rpc-http-api`](../../../../public-networks/reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../../public-networks/reference/cli/options.md#rpc-ws-api) option and include `QBFT`. The methods to add or remove validators are: -* [`qbft_getPendingVotes`](../../../../global/reference/api/index.md#qbft_getpendingvotes). -* [`qbft_proposeValidatorVote`](../../../../global/reference/api/index.md#qbft_proposevalidatorvote). -* [`qbft_discardValidatorVote`](../../../../global/reference/api/index.md#qbft_discardvalidatorvote). +* [`qbft_getPendingVotes`](../../../../public-networks/reference/api/index.md#qbft_getpendingvotes). +* [`qbft_proposeValidatorVote`](../../../../public-networks/reference/api/index.md#qbft_proposevalidatorvote). +* [`qbft_discardValidatorVote`](../../../../public-networks/reference/api/index.md#qbft_discardvalidatorvote). To view validator metrics for a specified block range, use -[`qbft_getSignerMetrics`](../../../../global/reference/api/index.md#qbft_getsignermetrics). +[`qbft_getSignerMetrics`](../../../../public-networks/reference/api/index.md#qbft_getsignermetrics). !!! note @@ -335,7 +335,7 @@ To view validator metrics for a specified block range, use #### Add a validator To propose adding a validator, call -[`qbft_proposeValidatorVote`](../../../../global/reference/api/index.md#qbft_proposevalidatorvote), +[`qbft_proposeValidatorVote`](../../../../public-networks/reference/api/index.md#qbft_proposevalidatorvote), specifying the address of the proposed validator and `true`. A majority of validators must execute the call. @@ -346,7 +346,7 @@ the call. ``` When the validator proposes the next block, the protocol inserts one proposal received from -[`qbft_proposeValidatorVote`](../../../../global/reference/api/index.md#qbft_proposevalidatorvote) into the +[`qbft_proposeValidatorVote`](../../../../public-networks/reference/api/index.md#qbft_proposevalidatorvote) into the block. If blocks include all proposals, subsequent blocks proposed by the validator will not contain a vote. @@ -354,7 +354,7 @@ When more than 50% of the existing validators have published a matching proposal adds the proposed validator to the validator pool and the validator can begin validating blocks. To return a list of validators and confirm the addition of a proposed validator, use -[`qbft_getValidatorsByBlockNumber`](../../../../global/reference/api/index.md#qbft_getvalidatorsbyblocknumber). +[`qbft_getValidatorsByBlockNumber`](../../../../public-networks/reference/api/index.md#qbft_getvalidatorsbyblocknumber). !!! example "JSON-RPC `qbft_getValidatorsByBlockNumber` request example" @@ -363,7 +363,7 @@ To return a list of validators and confirm the addition of a proposed validator, ``` To discard your proposal after confirming the addition of a validator, call -[`qbft_discardValidatorVote`](../../../../global/reference/api/index.md#qbft_discardvalidatorvote), +[`qbft_discardValidatorVote`](../../../../public-networks/reference/api/index.md#qbft_discardvalidatorvote), specifying the address of the proposed validator. !!! example "JSON-RPC `qbft_discardValidatorVote` request example" @@ -376,7 +376,7 @@ specifying the address of the proposed validator. The process for removing a validator is the same as adding a validator except you specify `false` as the second parameter of -[`qbft_proposeValidatorVote`](../../../../global/reference/api/index.md#qbft_proposevalidatorvote). +[`qbft_proposeValidatorVote`](../../../../public-networks/reference/api/index.md#qbft_proposevalidatorvote). #### Epoch transition @@ -491,7 +491,7 @@ To update an existing network with a new `blockperiodseconds`: 3. Restart all nodes in the network using the updated genesis file. 4. To verify the changes after the transition block, call - [`qbft_getValidatorsByBlockNumber`](../../../../global/reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. + [`qbft_getValidatorsByBlockNumber`](../../../../public-networks/reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. ### Configure block rewards on an existing network deployment diff --git a/docs/private-networks/how-to/configure/contracts.md b/docs/private-networks/how-to/configure/contracts.md index 5f8e982b790..4f70a8e1e32 100644 --- a/docs/private-networks/how-to/configure/contracts.md +++ b/docs/private-networks/how-to/configure/contracts.md @@ -4,7 +4,7 @@ description: Pre-deploying contracts in the genesis file # Pre-deploying contracts in the genesis file -To pre-deploy contracts when starting Besu, specify the contract code in the [genesis file](../../concepts/genesis-file.md). +To pre-deploy contracts when starting Besu, specify the contract code in the [genesis file](../../../public-networks/concepts/genesis-file.md). !!! example "Contract code in the genesis file" diff --git a/docs/private-networks/how-to/configure/curves.md b/docs/private-networks/how-to/configure/curves.md index 66febcb61a3..65c5a8a2cba 100644 --- a/docs/private-networks/how-to/configure/curves.md +++ b/docs/private-networks/how-to/configure/curves.md @@ -12,7 +12,7 @@ By default, Besu uses the Ethereum standard `secp256k1` elliptic curve (EC). However, when running nodes in a private network, it is possible to configure an alternative elliptic curve. The configuration for what elliptic curve Besu will use is done in the network configuration section of genesis file, -using the [`ecCurve`](../../../global/reference/genesis-items.md#Configuration_Items) key: +using the [`ecCurve`](../../../public-networks/reference/genesis-items.md#Configuration_Items) key: ```bash { diff --git a/docs/private-networks/how-to/configure/free-gas.md b/docs/private-networks/how-to/configure/free-gas.md index e585314fa28..d63e1e379e6 100644 --- a/docs/private-networks/how-to/configure/free-gas.md +++ b/docs/private-networks/how-to/configure/free-gas.md @@ -74,7 +74,7 @@ size (in bytes). ### 3. Start Besu with a minimum gas price of zero -When starting nodes, set the [minimum gas price](../../../global/reference/cli/options.md#min-gas-price) +When starting nodes, set the [minimum gas price](../../../public-networks/reference/cli/options.md#min-gas-price) to zero. === "Command Line" @@ -90,10 +90,10 @@ to zero. ``` !!! important - In a free gas network, ensure the [minimum gas price](../../../global/reference/cli/options.md#min-gas-price) + In a free gas network, ensure the [minimum gas price](../../../public-networks/reference/cli/options.md#min-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`](../../../global/reference/api/index.md#eth_gasprice). + You can query a node's gas configuration using [`eth_gasPrice`](../../../public-networks/reference/api/index.md#eth_gasprice). ## Configuring free gas in Truffle diff --git a/docs/private-networks/how-to/configure/mining.md b/docs/private-networks/how-to/configure/mining.md deleted file mode 100644 index 954ed3c2220..00000000000 --- a/docs/private-networks/how-to/configure/mining.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/configure/mining.md!} diff --git a/docs/private-networks/how-to/configure/pass-jvm-options.md b/docs/private-networks/how-to/configure/pass-jvm-options.md deleted file mode 100644 index 265c1da5451..00000000000 --- a/docs/private-networks/how-to/configure/pass-jvm-options.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/configure/pass-jvm-options.md!} diff --git a/docs/private-networks/how-to/configure/tls/client-and-server.md b/docs/private-networks/how-to/configure/tls/client-and-server.md index 64cea71b06c..2ab0d882be2 100644 --- a/docs/private-networks/how-to/configure/tls/client-and-server.md +++ b/docs/private-networks/how-to/configure/tls/client-and-server.md @@ -66,22 +66,22 @@ besu --rpc-http-enabled --rpc-http-tls-enabled --rpc-http-tls-client-auth-enable The command line: * Enables the HTTP JSON-RPC service using the - [`--rpc-http-enabled`](../../../../global/reference/cli/options.md#rpc-http-enabled) option. + [`--rpc-http-enabled`](../../../../public-networks/reference/cli/options.md#rpc-http-enabled) option. * Enables TLS for the HTTP JSON-RPC service using the - [`--rpc-http-tls-enabled`](../../../../global/reference/cli/options.md#rpc-http-tls-enabled) option. + [`--rpc-http-tls-enabled`](../../../../public-networks/reference/cli/options.md#rpc-http-tls-enabled) option. * Enables TLS client authentication using the - [`--rpc-http-tls-client-auth-enabled`](../../../../global/reference/cli/options.md#rpc-http-tls-client-auth-enabled) option. + [`--rpc-http-tls-client-auth-enabled`](../../../../public-networks/reference/cli/options.md#rpc-http-tls-client-auth-enabled) option. * Specifies the keystore using the - [`--rpc-http-tls-keystore-file`](../../../../global/reference/cli/options.md#rpc-http-tls-keystore-file) + [`--rpc-http-tls-keystore-file`](../../../../public-networks/reference/cli/options.md#rpc-http-tls-keystore-file) option. * Specifies the file that contains the password to decrypt the keystore using the - [`--rpc-http-tls-keystore-password-file`](../../../../global/reference/cli/options.md#rpc-http-tls-keystore-password-file) option. + [`--rpc-http-tls-keystore-password-file`](../../../../public-networks/reference/cli/options.md#rpc-http-tls-keystore-password-file) option. * [Specifies the clients](#create-the-known-clients-file) allowed to connect to Besu using the - [`--rpc-http-tls-known-clients-file`](../../../../global/reference/cli/options.md#rpc-http-tls-known-clients-file) option. + [`--rpc-http-tls-known-clients-file`](../../../../public-networks/reference/cli/options.md#rpc-http-tls-known-clients-file) option. * specifies the Java cipher suites using the - [`--rpc-http-tls-cipher-suite`](../../../../global/reference/cli/options.md#rpc-http-tls-cipher-suite) option. + [`--rpc-http-tls-cipher-suite`](../../../../public-networks/reference/cli/options.md#rpc-http-tls-cipher-suite) option. * specifies the TLS protocol version using the - [`--rpc-http-tls-protocol`](../../../../global/reference/cli/options.md#rpc-http-tls-protocol) option. + [`--rpc-http-tls-protocol`](../../../../public-networks/reference/cli/options.md#rpc-http-tls-protocol) option. !!! note @@ -127,14 +127,14 @@ besu --privacy-tls-enabled --privacy-tls-keystore-file=/Users/me/my_node/keystor The command line: * Enables TLS with the server using the - [`--privacy-tls-enabled`](../../../../global/reference/cli/options.md#privacy-tls-enabled) option. + [`--privacy-tls-enabled`](../../../../public-networks/reference/cli/options.md#privacy-tls-enabled) option. * Specifies the keystore using the - [`--privacy-tls-keystore-file`](../../../../global/reference/cli/options.md#privacy-tls-keystore-file) + [`--privacy-tls-keystore-file`](../../../../public-networks/reference/cli/options.md#privacy-tls-keystore-file) option. * Specifies the file that contains the password to decrypt the keystore using the - [`--privacy-tls-keystore-password-file`](../../../../global/reference/cli/options.md#privacy-tls-keystore-password-file) option. + [`--privacy-tls-keystore-password-file`](../../../../public-networks/reference/cli/options.md#privacy-tls-keystore-password-file) option. * Specifies the trusted servers using the - [`--privacy-tls-known-enclave-file`](../../../../global/reference/cli/options.md#privacy-tls-known-enclave-file) option. + [`--privacy-tls-known-enclave-file`](../../../../public-networks/reference/cli/options.md#privacy-tls-known-enclave-file) option. [Configure the client for TLS]: https://docs.ethsigner.consensys.net/en/latest/HowTo/Configure-TLS/#server-tls-connection diff --git a/docs/private-networks/how-to/configure/validators.md b/docs/private-networks/how-to/configure/validators.md index 93512ec68a1..c90808f86a7 100644 --- a/docs/private-networks/how-to/configure/validators.md +++ b/docs/private-networks/how-to/configure/validators.md @@ -4,9 +4,9 @@ description: Configuring validators in production networks # Configuring validators in a production network -As when [configuring bootnodes](../connect/bootnodes.md): +As when [configuring bootnodes](bootnodes.md): -1. Create the [node key pair](../../concepts/node-keys.md) (that is, the private and public key) +1. Create the [node key pair](../../../public-networks/concepts/node-keys.md) (that is, the private and public key) before starting the validator. 1. When creating validators in the cloud (for example, AWS or Azure), attempt to assign static IP addresses to them. If your network is: @@ -31,7 +31,7 @@ You can [vote validators in or out of the validator pool]. ## Validators as bootnodes -Validators can also be bootnodes. Other than the [usual configuration for bootnodes](../connect/bootnodes.md), +Validators can also be bootnodes. Other than the [usual configuration for bootnodes](bootnodes.md), you do not need to specify any extra configuration when a validator is also a bootnode. If you remove a validator that is also a bootnode, ensure there are enough remaining bootnodes on diff --git a/docs/private-networks/how-to/connect/configure-ports.md b/docs/private-networks/how-to/connect/configure-ports.md deleted file mode 100644 index e57aaf532d7..00000000000 --- a/docs/private-networks/how-to/connect/configure-ports.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/connect/configure-ports.md!} diff --git a/docs/private-networks/how-to/connect/manage-peers.md b/docs/private-networks/how-to/connect/manage-peers.md deleted file mode 100644 index 07f15b7b028..00000000000 --- a/docs/private-networks/how-to/connect/manage-peers.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/connect/manage-peers.md!} diff --git a/docs/private-networks/how-to/connect/specify-nat.md b/docs/private-networks/how-to/connect/specify-nat.md deleted file mode 100644 index dfa9996af11..00000000000 --- a/docs/private-networks/how-to/connect/specify-nat.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/connect/specify-nat.md!} diff --git a/docs/private-networks/how-to/connect/static-nodes.md b/docs/private-networks/how-to/connect/static-nodes.md deleted file mode 100644 index 19c150d81b7..00000000000 --- a/docs/private-networks/how-to/connect/static-nodes.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/connect/static-nodes.md!} diff --git a/docs/private-networks/how-to/deploy/ethstats.md b/docs/private-networks/how-to/deploy/ethstats.md index b8005b2df9e..69b64b4c606 100644 --- a/docs/private-networks/how-to/deploy/ethstats.md +++ b/docs/private-networks/how-to/deploy/ethstats.md @@ -36,8 +36,8 @@ for installing those components and connecting to a dashboard. You can use command line options to connect a node directly to a [dashboard](https://github.com/goerli/ethstats-client#available-dashboards), without using a client. -Start a node using the [`--ethstats`](../../../global/reference/cli/options.md#ethstats) option to specify the Ethstats server URL. -You can specify a contact email to send to the server using [`--ethstats-contact`](../../../global/reference/cli/options.md#ethstats-contact). +Start a node using the [`--ethstats`](../../../public-networks/reference/cli/options.md#ethstats) option to specify the Ethstats server URL. +You can specify a contact email to send to the server using [`--ethstats-contact`](../../../public-networks/reference/cli/options.md#ethstats-contact). !!! example diff --git a/docs/private-networks/how-to/develop/client-libraries.md b/docs/private-networks/how-to/develop/client-libraries.md deleted file mode 100644 index 5342720df65..00000000000 --- a/docs/private-networks/how-to/develop/client-libraries.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/develop/client-libraries.md!} diff --git a/docs/private-networks/how-to/develop/truffle.md b/docs/private-networks/how-to/develop/truffle.md deleted file mode 100644 index a3602128ea6..00000000000 --- a/docs/private-networks/how-to/develop/truffle.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/develop/truffle.md!} diff --git a/docs/private-networks/how-to/index.md b/docs/private-networks/how-to/index.md new file mode 100644 index 00000000000..8d7cbd89fac --- /dev/null +++ b/docs/private-networks/how-to/index.md @@ -0,0 +1,33 @@ +--- +description: private networks how to overview +--- + +# How to + +This section provides instructional content for private network features. + +The following features are shared with [public networks](../../public-networks/index.md) and the +content can be found in the public networks section: + +- Configuration: + - [Use a configuration file](../../public-networks/how-to/configuration-file.md) + - [Pass JVM options](../../public-networks/how-to/pass-jvm-options.md) + - [Configure mining](../../public-networks/how-to/use-pow/mining.md) +- [Use the Besu API](../../public-networks/how-to/use-besu-api/index.md): + - [Use JSON-RPC over HTTP, WS, and IPC](../../public-networks/how-to/use-besu-api/json-rpc.md) + - [Use RPC Pub/Sub over WS](../../public-networks/how-to/use-besu-api/rpc-pubsub.md) + - [Use GraphQL over HTTP](../../public-networks/how-to/use-besu-api/graphql.md) + - [Authenticate JSON-RPC requests](../../public-networks/how-to/use-besu-api/authenticate.md) + - [Access logs using JSON-RPC API](../../public-networks/how-to/use-besu-api/access-logs.md) +- Find and connect to peers: + - [Configure static nodes](../../public-networks/how-to/connect/static-nodes.md) + - [Configure ports](../../public-networks/how-to/connect/configure-ports.md) + - [Manage peers](../../public-networks/how-to/connect/manage-peers.md) + - [Specify NAT method](../../public-networks/how-to/connect/specify-nat.md) +- Develop dapps: + - [Use Truffle](../../public-networks/how-to/develop/truffle.md) + - [Use client libraries](../../public-networks/how-to/develop/client-libraries.md) +- Troubleshoot: + - [Use EVM tool](../../public-networks/how-to/troubleshoot/evm-tool.md) + - [Use Java Flight Recorder](../../public-networks/how-to/troubleshoot/java-flight-recorder.md) + - [Trace transactions](../../public-networks/how-to/troubleshoot/trace-transactions.md) diff --git a/docs/private-networks/how-to/monitor/index.md b/docs/private-networks/how-to/monitor/index.md index 7617ba6dd90..b208b4c1df1 100644 --- a/docs/private-networks/how-to/monitor/index.md +++ b/docs/private-networks/how-to/monitor/index.md @@ -1 +1,19 @@ -{!global/how-to/monitor/index.md!} +--- +description: Monitoring using metrics and logging +--- + +# Monitoring + +Monitoring enables identification of node and network issues. In private networks, you can +[configure metrics and logging](../../../public-networks/how-to/monitor/index.md) as in public +networks. + +You can also use the following monitoring tools in private networks: + +- [Elastic Stack](elastic-stack.md) +- [Quorum Hibernate](quorum-hibernate.md) +- [Splunk](splunk.md) +- [OpenTelemetry](opentelemetry.md) + +For an overview of monitoring Hyperledger Besu, view +[this recording](https://www.youtube.com/watch?v=7BuutRe0I28&feature=youtu.be). diff --git a/docs/private-networks/how-to/monitor/logging.md b/docs/private-networks/how-to/monitor/logging.md deleted file mode 100644 index 96bf41c09fe..00000000000 --- a/docs/private-networks/how-to/monitor/logging.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/monitor/logging.md!} diff --git a/docs/private-networks/how-to/monitor/metrics.md b/docs/private-networks/how-to/monitor/metrics.md deleted file mode 100644 index 8f0c31fb8cc..00000000000 --- a/docs/private-networks/how-to/monitor/metrics.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/monitor/metrics.md!} diff --git a/docs/private-networks/how-to/monitor/opentelemetry.md b/docs/private-networks/how-to/monitor/opentelemetry.md index 728a6eb4385..c78224d9b6f 100644 --- a/docs/private-networks/how-to/monitor/opentelemetry.md +++ b/docs/private-networks/how-to/monitor/opentelemetry.md @@ -5,8 +5,8 @@ description: Collect Besu information with the OpenTelemetry Collector # OpenTelemetry You can use the OpenTelemetry monitoring and tracing service to gather node metrics and traces. -To enable OpenTelemetry to access Hyperledger Besu, use the [`--metrics-enabled`](../../../global/reference/cli/options.md#metrics-enabled) -and [`--metrics-protocol=opentelemetry`](../../../global/reference/cli/options.md#metrics-protocol) options. +To enable OpenTelemetry to access Hyperledger Besu, use the [`--metrics-enabled`](../../../public-networks/reference/cli/options.md#metrics-enabled) +and [`--metrics-protocol=opentelemetry`](../../../public-networks/reference/cli/options.md#metrics-protocol) options. Use [Splunk](https://splunk.com) to visualize the collected data. A [Besu Sync example](https://github.com/splunk/splunk-connect-for-ethereum/tree/master/examples/besu-sync) is available. @@ -140,8 +140,8 @@ Download and install the [OpenTelemetry Collector](https://github.com/open-telem You can also refer to this [Docker-compose example](https://github.com/splunk/splunk-connect-for-ethereum/blob/989dc2ccae7d8235bf3ce2a83a18cf0cd1713294/examples/besu-sync/full-sync/docker-compose.yaml). -1. Start Besu with the [`--metrics-enabled`](../../../global/reference/cli/options.md#metrics-enabled) and - [`--metrics-protocol=opentelemetry`](../../../global/reference/cli/options.md#metrics-protocol) options. +1. Start Besu with the [`--metrics-enabled`](../../../public-networks/reference/cli/options.md#metrics-enabled) and + [`--metrics-protocol=opentelemetry`](../../../public-networks/reference/cli/options.md#metrics-protocol) options. For example, run the following command to start a single node: === "Syntax" diff --git a/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md b/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md index 65bbdfb4312..f073f3a8acb 100644 --- a/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md +++ b/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md @@ -9,12 +9,12 @@ Private transaction processing involves two transactions, the private transactio The private transaction and the PMT each have their own [nonce](../../concepts/privacy/private-transactions/index.md#nonces). If your private transaction rate requires sending private transactions without waiting for the previous -private transaction to be mined, using [`eth_getTransactionCount`](../../../global/reference/api/index.md#eth_gettransactioncount) -and [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction) may result in +private transaction to be mined, using [`eth_getTransactionCount`](../../../public-networks/reference/api/index.md#eth_gettransactioncount) +and [`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction) may result in [incorrect nonces](../../concepts/privacy/private-transactions/index.md#private-nonce-management). In this case, use [`priv_distributeRawTransaction`](private-transactions.md#priv_distributerawtransaction) -instead of [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction). +instead of [`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction). !!! note @@ -22,10 +22,10 @@ instead of [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea [`priv_getEeaTransactionCount`](../../../reference/api/index.md#priv_geteeatransactioncount) to get the nonce for an account for the specified privacy group or participants. -Send the corresponding PMT using [`eth_sendRawTransaction`](../../../global/reference/api/index.md#eth_sendrawtransaction), +Send the corresponding PMT using [`eth_sendRawTransaction`](../../../public-networks/reference/api/index.md#eth_sendrawtransaction), specifying the public PMT nonce. This method allows you to create and send the PMT yourself rather than -[`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction) handling the PMT. +[`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction) handling the PMT. !!! important diff --git a/docs/private-networks/how-to/send-transactions/index.md b/docs/private-networks/how-to/send-transactions/index.md index 96a3531cf51..5bc3b015e27 100644 --- a/docs/private-networks/how-to/send-transactions/index.md +++ b/docs/private-networks/how-to/send-transactions/index.md @@ -1 +1,14 @@ -{!global/how-to/send-transactions.md!} +--- +description: private networks send transactions overview +--- + +# Create and send transactions + +In private networks, you can create and [send regular transactions](../../../public-networks/how-to/send-transactions.md) +as in public networks. + +You can also: + +- [Send private transactions](private-transactions.md). +- [Send concurrent private transactions](concurrent-private-transactions.md). +- [Include revert reason in transactions](revert-reason.md). diff --git a/docs/private-networks/how-to/send-transactions/private-transactions.md b/docs/private-networks/how-to/send-transactions/private-transactions.md index 9b8315f9375..7ea59ce43b1 100644 --- a/docs/private-networks/how-to/send-transactions/private-transactions.md +++ b/docs/private-networks/how-to/send-transactions/private-transactions.md @@ -26,7 +26,7 @@ The `gas` and `gasPrice` specified when sending a private transaction are used b ## `eea_sendRawTransaction` -[`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction) distributes the +[`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction) distributes the private transaction to the participating nodes, and signs and submits the PMT, as described in [Private transaction processing](../../concepts/privacy/private-transactions/processing.md). @@ -38,28 +38,28 @@ private transaction to the participating nodes, and signs and submits the PMT, a ## `priv_distributeRawTransaction` -Use [`priv_distributeRawTransaction`](../../../global/reference/api/index.md#priv_distributerawtransaction) instead of +Use [`priv_distributeRawTransaction`](../../../public-networks/reference/api/index.md#priv_distributerawtransaction) instead of [`eea_sendRawTransaction`](#eea_sendrawtransaction) when sending [concurrent private transactions](concurrent-private-transactions.md). -[`priv_distributeRawTransaction`](../../../global/reference/api/index.md#priv_distributerawtransaction) +[`priv_distributeRawTransaction`](../../../public-networks/reference/api/index.md#priv_distributerawtransaction) distributes the private transaction to the participating nodes but does not sign and submit the PMT. That is, it performs steps 1 to 5 of [Private Transaction Processing](../../concepts/privacy/private-transactions/processing.md). If using -[`priv_distributeRawTransaction`](../../../global/reference/api/index.md#priv_distributerawtransaction) -instead of [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction), use +[`priv_distributeRawTransaction`](../../../public-networks/reference/api/index.md#priv_distributerawtransaction) +instead of [`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction), use the value returned by -[`priv_distributeRawTransaction`](../../../global/reference/api/index.md#priv_distributerawtransaction), +[`priv_distributeRawTransaction`](../../../public-networks/reference/api/index.md#priv_distributerawtransaction), which is the enclave key to the private transaction in [Tessera](https://docs.tessera.consensys.net/), in the `data` field of a call to -[`eth_sendRawTransaction`](../../../global/reference/api/index.md#eth_sendrawtransaction). +[`eth_sendRawTransaction`](../../../public-networks/reference/api/index.md#eth_sendrawtransaction). Use the value returned by -[`priv_getPrivacyPrecompileAddress`](../../../global/reference/api/index.md#priv_getprivacyprecompileaddress), which is the +[`priv_getPrivacyPrecompileAddress`](../../../public-networks/reference/api/index.md#priv_getprivacyprecompileaddress), which is the address of the [privacy precompiled contract](../../concepts/privacy/private-transactions/processing.md), in the `to` field of the call. By using the [public Ethereum transaction](../../how-to/send-transactions/index.md), -[`eth_sendRawTransaction`](../../../global/reference/api/index.md#eth_sendrawtransaction), you are signing +[`eth_sendRawTransaction`](../../../public-networks/reference/api/index.md#eth_sendrawtransaction), you are signing and submitting the PMT yourself instead of having it signed by the Besu node, giving you greater control over the PMT. !!! warning @@ -111,15 +111,15 @@ and submitting the PMT yourself instead of having it signed by the Besu node, gi To create an [EEA-compliant private transaction], specify `privateFor` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction). To create a [Besu-extended private transaction], specify a `privacyGroupId` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction). ## Unsigned and unencoded private transactions -The [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction) parameter is +The [`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction) parameter is a signed RLP-encoded private transaction. Shown below are examples of unsigned and unencoded private transactions to create a contract. diff --git a/docs/private-networks/how-to/send-transactions/revert-reason.md b/docs/private-networks/how-to/send-transactions/revert-reason.md index c091c28b7c7..23864d54a3e 100644 --- a/docs/private-networks/how-to/send-transactions/revert-reason.md +++ b/docs/private-networks/how-to/send-transactions/revert-reason.md @@ -33,7 +33,7 @@ client an optional string message containing information about the error. function withdraw() public { if (msg.sender != owner) revert Unauthorized(); - + payable(msg.sender).transfer(address(this).balance); } } @@ -41,11 +41,11 @@ client an optional string message containing information about the error. ## Enabling revert reason -Use the [`--revert-reason-enabled`](../../../global/reference/cli/options.md#revert-reason-enabled) +Use the [`--revert-reason-enabled`](../../../public-networks/reference/cli/options.md#revert-reason-enabled) command line option to include the revert reason in the transaction receipt, -[`eth_estimateGas`](../../../global/reference/api/index.md#eth_estimategas) error, -[`eth_call`](../../../global/reference/api/index.md#eth_call) error, and -[`trace`](../../../global/reference/trace-types.md#trace) response in Hyperledger Besu. +[`eth_estimateGas`](../../../public-networks/reference/api/index.md#eth_estimategas) error, +[`eth_call`](../../../public-networks/reference/api/index.md#eth_call) error, and +[`trace`](../../../public-networks/reference/trace-types.md#trace) response in Hyperledger Besu. !!! caution @@ -55,7 +55,7 @@ command line option to include the revert reason in the transaction receipt, ## Where is the revert reason included With revert reason enabled, the transaction receipt returned by -[`eth_getTransactionReceipt`](../../../global/reference/api/index.md#eth_gettransactionreceipt) includes +[`eth_getTransactionReceipt`](../../../public-networks/reference/api/index.md#eth_gettransactionreceipt) includes the revert reason as an ABI-encoded string. !!! important @@ -90,8 +90,8 @@ the revert reason as an ABI-encoded string. } ``` -The error returned by [`eth_estimateGas`](../../../global/reference/api/index.md#eth_estimategas) and -[`eth_call`](../../../global/reference/api/index.md#eth_call) includes the revert reason as an ABI-encoded string in the `data` field. +The error returned by [`eth_estimateGas`](../../../public-networks/reference/api/index.md#eth_estimategas) and +[`eth_call`](../../../public-networks/reference/api/index.md#eth_call) includes the revert reason as an ABI-encoded string in the `data` field. !!! example "Example of `eth_estimateGas` and `eth_call` error" @@ -107,10 +107,10 @@ The error returned by [`eth_estimateGas`](../../../global/reference/api/index.md } ``` -The list items in the [`trace`](../../../global/reference/trace-types.md#trace) response returned by -[`trace_replayBlockTransactions`](../../../global/reference/api/index.md#trace_replayblocktransactions), -[`trace_block`](../../../global/reference/api/index.md#trace_block), and -[`trace_transaction`](../../../global/reference/api/index.md#trace_transaction) include the revert reason as an ABI-encoded string. +The list items in the [`trace`](../../../public-networks/reference/trace-types.md#trace) response returned by +[`trace_replayBlockTransactions`](../../../public-networks/reference/api/index.md#trace_replayblocktransactions), +[`trace_block`](../../../public-networks/reference/api/index.md#trace_block), and +[`trace_transaction`](../../../public-networks/reference/api/index.md#trace_transaction) include the revert reason as an ABI-encoded string. !!! example "Example of `trace` response list item" diff --git a/docs/private-networks/how-to/troubleshoot/evm-tool.md b/docs/private-networks/how-to/troubleshoot/evm-tool.md deleted file mode 100644 index dc41144a672..00000000000 --- a/docs/private-networks/how-to/troubleshoot/evm-tool.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/troubleshoot/evm-tool.md!} diff --git a/docs/private-networks/how-to/troubleshoot/java-flight-recorder.md b/docs/private-networks/how-to/troubleshoot/java-flight-recorder.md deleted file mode 100644 index 81244b48cbf..00000000000 --- a/docs/private-networks/how-to/troubleshoot/java-flight-recorder.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/troubleshoot/java-flight-recorder.md!} diff --git a/docs/private-networks/how-to/troubleshoot/trace-transactions.md b/docs/private-networks/how-to/troubleshoot/trace-transactions.md deleted file mode 100644 index 8835801e7df..00000000000 --- a/docs/private-networks/how-to/troubleshoot/trace-transactions.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/troubleshoot/trace-transactions.md!} diff --git a/docs/private-networks/how-to/upgrade/protocol.md b/docs/private-networks/how-to/upgrade.md similarity index 82% rename from docs/private-networks/how-to/upgrade/protocol.md rename to docs/private-networks/how-to/upgrade.md index 8b47d782fe1..03f39b97f3c 100644 --- a/docs/private-networks/how-to/upgrade/protocol.md +++ b/docs/private-networks/how-to/upgrade.md @@ -4,6 +4,12 @@ description: Upgrading protocol versions # Network and protocol upgrades +!!! important + + Node upgrades upgrade your Besu client to a later version. + In private networks, you can [upgrade your node](../../public-networks/how-to/upgrade-node.md) + as in public networks. + Network upgrades are the mechanism for upgrading the Ethereum protocol. Protocol upgrades occur during the network upgrades. @@ -23,7 +29,7 @@ To upgrade the protocol in a private network: For example, [Istanbul](https://eips.ethereum.org/EIPS/eip-1679). 1. Network participants agree on the block number at which to upgrade. 1. For each node in the network: - 1. Add the [milestone block number](../../../global/reference/genesis-items.md#milestone-blocks) to + 1. Add the [milestone block number](../../public-networks/reference/genesis-items.md#milestone-blocks) to the genesis file. 1. Restart the node before reaching milestone block. diff --git a/docs/private-networks/how-to/upgrade/node.md b/docs/private-networks/how-to/upgrade/node.md deleted file mode 100644 index d157bdb0342..00000000000 --- a/docs/private-networks/how-to/upgrade/node.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/upgrade/node.md!} diff --git a/docs/private-networks/how-to/use-besu-api/access-logs.md b/docs/private-networks/how-to/use-besu-api/access-logs.md deleted file mode 100644 index 9a5fea40aed..00000000000 --- a/docs/private-networks/how-to/use-besu-api/access-logs.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/use-besu-api/access-logs.md!} diff --git a/docs/private-networks/how-to/use-besu-api/authenticate.md b/docs/private-networks/how-to/use-besu-api/authenticate.md deleted file mode 100644 index a8d44937651..00000000000 --- a/docs/private-networks/how-to/use-besu-api/authenticate.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/use-besu-api/authenticate.md!} diff --git a/docs/private-networks/how-to/use-besu-api/graphql.md b/docs/private-networks/how-to/use-besu-api/graphql.md deleted file mode 100644 index 9fd4baaa9b5..00000000000 --- a/docs/private-networks/how-to/use-besu-api/graphql.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/use-besu-api/graphql.md!} diff --git a/docs/private-networks/how-to/use-besu-api/index.md b/docs/private-networks/how-to/use-besu-api/index.md deleted file mode 100644 index f7dda280a5f..00000000000 --- a/docs/private-networks/how-to/use-besu-api/index.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/use-besu-api/index.md!} diff --git a/docs/private-networks/how-to/use-besu-api/json-rpc.md b/docs/private-networks/how-to/use-besu-api/json-rpc.md deleted file mode 100644 index 7e5fea5e55c..00000000000 --- a/docs/private-networks/how-to/use-besu-api/json-rpc.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/use-besu-api/json-rpc.md!} diff --git a/docs/private-networks/how-to/use-besu-api/rpc-pubsub.md b/docs/private-networks/how-to/use-besu-api/rpc-pubsub.md deleted file mode 100644 index fda54f88734..00000000000 --- a/docs/private-networks/how-to/use-besu-api/rpc-pubsub.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/use-besu-api/rpc-pubsub.md!} diff --git a/docs/private-networks/how-to/use-permissioning/local.md b/docs/private-networks/how-to/use-permissioning/local.md index 9ed93c3d2b5..e7ba76c24d3 100644 --- a/docs/private-networks/how-to/use-permissioning/local.md +++ b/docs/private-networks/how-to/use-permissioning/local.md @@ -26,7 +26,7 @@ enabled, communication is only between nodes in the allowlist. Node allowlisting is at the node level. That is, each node in the network has a [permissions configuration file](#permissions-configuration-file) file in the -[data directory](../../../global/reference/cli/options.md#data-path) for the node. +[data directory](../../../public-networks/reference/cli/options.md#data-path) for the node. Local permissioning doesn't check that the node using the permissions configuration file is listed in the allowlist, it only checks that the remote end of the connection is in the allowlist. Use [onchain permissioning] if you @@ -34,7 +34,7 @@ need to check both ends of the connection. ### Specifying bootnodes in the allowlist -The nodes permissions list must include the [bootnodes](../connect/bootnodes.md) or Hyperledger Besu doesn't +The nodes permissions list must include the [bootnodes](../configure/bootnodes.md) or Hyperledger Besu doesn't start with node permissions enabled. !!! example @@ -57,23 +57,23 @@ start with node permissions enabled. ### Enabling node allowlisting To enable node allowlisting, specify the -[`--permissions-nodes-config-file-enabled`](../../../global/reference/cli/options.md#permissions-nodes-config-file-enabled) +[`--permissions-nodes-config-file-enabled`](../../../public-networks/reference/cli/options.md#permissions-nodes-config-file-enabled) option when starting Besu. The `PERM` API methods are not enabled by default. To enable the `PERM` API methods, use the -[`--rpc-http-api`](../../../global/reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../../global/reference/cli/options.md#rpc-ws-api) options. +[`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../public-networks/reference/cli/options.md#rpc-ws-api) options. ### Updating the node allowlist To update the nodes allowlist while the node is running, use the following JSON-RPC API methods: -* [perm_addNodesToAllowlist](../../../global/reference/api/index.md#perm_addnodestoallowlist) -* [perm_removeNodesFromAllowlist](../../../global/reference/api/index.md#perm_removenodesfromallowlist) +* [perm_addNodesToAllowlist](../../../public-networks/reference/api/index.md#perm_addnodestoallowlist) +* [perm_removeNodesFromAllowlist](../../../public-networks/reference/api/index.md#perm_removenodesfromallowlist) You can also update the [`permissions_config.toml`](#permissions-configuration-file) file directly and then update the allowlist using the -[`perm_reloadPermissionsFromFile`](../../../global/reference/api/index.md#perm_reloadpermissionsfromfile) +[`perm_reloadPermissionsFromFile`](../../../public-networks/reference/api/index.md#perm_reloadpermissionsfromfile) method. Updates to the permissions configuration file persist across node restarts. @@ -81,7 +81,7 @@ Updates to the permissions configuration file persist across node restarts. ### Viewing the node allowlist To view the nodes allowlist, use the -[perm_getNodesAllowlist](../../../global/reference/api/index.md#perm_getnodesallowlist) method. +[perm_getNodesAllowlist](../../../public-networks/reference/api/index.md#perm_getnodesallowlist) method. !!! note @@ -111,7 +111,7 @@ permissioning accepts transactions only from accounts in the accounts allowlist. Account allowlisting is at the node level. That is, each node in the network has a [permissions configuration file](#permissions-configuration-file) in the -[data directory](../../../global/reference/cli/options.md#data-path) for the node. +[data directory](../../../public-networks/reference/cli/options.md#data-path) for the node. !!! caution "Using account permissioning and privacy" @@ -126,7 +126,7 @@ Account allowlisting is at the node level. That is, each node in the network has Transaction validation against the accounts allowlist occurs at the following points: * Submitted by JSON-RPC API method - [`eth_sendRawTransaction`](../../../global/reference/api/index.md#eth_sendrawtransaction) + [`eth_sendRawTransaction`](../../../public-networks/reference/api/index.md#eth_sendrawtransaction) * Received via propagation from another node * Added to a block by a mining node @@ -165,23 +165,23 @@ The following diagram illustrates applying local and onchain permissioning rules ### Enabling account allowlisting To enable account allowlisting, specify the -[`--permissions-accounts-config-file-enabled`](../../../global/reference/cli/options.md#permissions-accounts-config-file-enabled) +[`--permissions-accounts-config-file-enabled`](../../../public-networks/reference/cli/options.md#permissions-accounts-config-file-enabled) option when starting Besu. The `PERM` API methods are not enabled by default. To enable the `PERM` API methods, use the -[`--rpc-http-api`](../../../global/reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../../global/reference/cli/options.md#rpc-ws-api) options. +[`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../public-networks/reference/cli/options.md#rpc-ws-api) options. ### Updating the account allowlist To update the accounts allowlist when the node is running, use the JSON-RPC API methods: -* [`perm_addAccountsToAllowlist`](../../../global/reference/api/index.md#perm_addaccountstoallowlist) -* [`perm_removeAccountsFromAllowlist`](../../../global/reference/api/index.md#perm_removeaccountsfromallowlist). +* [`perm_addAccountsToAllowlist`](../../../public-networks/reference/api/index.md#perm_addaccountstoallowlist) +* [`perm_removeAccountsFromAllowlist`](../../../public-networks/reference/api/index.md#perm_removeaccountsfromallowlist). You can also update the [`permissions_config.toml`](#permissions-configuration-file) file directly and use the -[`perm_reloadPermissionsFromFile`](../../../global/reference/api/index.md#perm_reloadpermissionsfromfile) +[`perm_reloadPermissionsFromFile`](../../../public-networks/reference/api/index.md#perm_reloadpermissionsfromfile) method to update the allowlists. Updates to the permissions configuration file persist across node restarts. @@ -189,25 +189,25 @@ Updates to the permissions configuration file persist across node restarts. ### Viewing the account allowlist To view the accounts allowlist, use the -[`perm_getAccountsAllowlist`](../../../global/reference/api/index.md#perm_getaccountsallowlist) method. +[`perm_getAccountsAllowlist`](../../../public-networks/reference/api/index.md#perm_getaccountsallowlist) method. ## Permissions configuration file The permissions configuration file contains the nodes and accounts allowlists. If the -[`--permissions-accounts-config-file`](../../../global/reference/cli/options.md#permissions-accounts-config-file) -and [`--permissions-nodes-config-file`](../../../global/reference/cli/options.md#permissions-nodes-config-file) +[`--permissions-accounts-config-file`](../../../public-networks/reference/cli/options.md#permissions-accounts-config-file) +and [`--permissions-nodes-config-file`](../../../public-networks/reference/cli/options.md#permissions-nodes-config-file) options are not specified, the name of the permissions configuration file must be [`permissions_config.toml`](#permissions-configuration-file) and must be in the -[data directory](../../../global/reference/cli/options.md#data-path) for the node. +[data directory](../../../public-networks/reference/cli/options.md#data-path) for the node. You can specify the accounts and nodes allowlists in the same file or in separate files for accounts and nodes. To specify a permissions configuration file (or separate files for accounts and nodes) in any location, use the -[`--permissions-accounts-config-file`](../../../global/reference/cli/options.md#permissions-accounts-config-file) +[`--permissions-accounts-config-file`](../../../public-networks/reference/cli/options.md#permissions-accounts-config-file) and -[`--permissions-nodes-config-file`](../../../global/reference/cli/options.md#permissions-nodes-config-file) +[`--permissions-nodes-config-file`](../../../public-networks/reference/cli/options.md#permissions-nodes-config-file) options. !!!note @@ -228,5 +228,5 @@ options. [specify a permissions configuration file with Docker]: ../../../global/get-started/install/run-docker-image.md#permissions-configuration-file -[support domain names]: ../../../global/concepts/node-keys.md#domain-name-support +[support domain names]: ../../../public-networks/concepts/node-keys.md#domain-name-support [onchain permissioning]: ../../concepts/permissioning/onchain.md diff --git a/docs/private-networks/how-to/use-permissioning/onchain.md b/docs/private-networks/how-to/use-permissioning/onchain.md index 61f04a8c6d6..53305f5ee25 100644 --- a/docs/private-networks/how-to/use-permissioning/onchain.md +++ b/docs/private-networks/how-to/use-permissioning/onchain.md @@ -45,7 +45,7 @@ To add a node to the Hyperledger Besu nodes allowlist: 1. On the **Nodes** tab of the permissioning management dapp, select **Add Node**. The **Add Node** window displays. -2. Enter the [enode URL](../../../global/concepts/node-keys.md#enode-url) of the node you are adding and select **Add Node**. +2. Enter the [enode URL](../../../public-networks/concepts/node-keys.md#enode-url) of the node you are adding and select **Add Node**. !!! tip @@ -108,7 +108,7 @@ You can add or remove admins in the same way as [accounts](#update-accounts-allo ## Specify the permissioning contract interface version -Use the [`--permissions-nodes-contract-version`](../../../global/reference/cli/options.md#permissions-nodes-contract-version) +Use the [`--permissions-nodes-contract-version`](../../../public-networks/reference/cli/options.md#permissions-nodes-contract-version) command line option to specify the version of the [permissioning contract interface](../../concepts/permissioning/onchain.md#permissioning-contracts). The default is 1. @@ -123,6 +123,6 @@ the contract interface implements. The permissioning contracts in the [`ConsenSys/permissioning-smart-contracts`](https://github.com/ConsenSys/permissioning-smart-contracts) repository implement the version 2 contract interface. -[support domain names]: ../../../global/concepts/node-keys.md#domain-name-support +[support domain names]: ../../../public-networks/concepts/node-keys.md#domain-name-support [projects release page]: https://github.com/ConsenSys/permissioning-smart-contracts/releases/latest [onchain permissioning tutorial]: ../../tutorials/permissioning/onchain.md diff --git a/docs/private-networks/how-to/use-privacy/access-private-transactions.md b/docs/private-networks/how-to/use-privacy/access-private-transactions.md index e691c961db1..5b9aaca2d87 100644 --- a/docs/private-networks/how-to/use-privacy/access-private-transactions.md +++ b/docs/private-networks/how-to/use-privacy/access-private-transactions.md @@ -21,9 +21,9 @@ With the transaction hash returned when submitting the private transaction, to g receipt for the: * Private transaction, use - [`priv_getTransactionReceipt`](../../../global/reference/api/index.md#priv_gettransactionreceipt). + [`priv_getTransactionReceipt`](../../../public-networks/reference/api/index.md#priv_gettransactionreceipt). * Privacy marker transaction, use - [`eth_getTransactionReceipt`](../../../global/reference/api/index.md#eth_gettransactionreceipt). + [`eth_getTransactionReceipt`](../../../public-networks/reference/api/index.md#eth_gettransactionreceipt). The transaction receipt includes a `status` indicating if the transaction failed (`0x0`), succeeded (`0x1`), or was invalid (`0x2`). @@ -40,6 +40,6 @@ was invalid (`0x2`). With the transaction hash returned when submitting the private transaction, to get the: * Private transaction, use - [`priv_getPrivateTransaction`](../../../global/reference/api/index.md#priv_getprivatetransaction). + [`priv_getPrivateTransaction`](../../../public-networks/reference/api/index.md#priv_getprivatetransaction). * Privacy marker transaction, use - [`eth_getTransactionByHash`](../../../global/reference/api/index.md#eth_gettransactionbyhash). + [`eth_getTransactionByHash`](../../../public-networks/reference/api/index.md#eth_gettransactionbyhash). diff --git a/docs/private-networks/how-to/use-privacy/besu-extended.md b/docs/private-networks/how-to/use-privacy/besu-extended.md index cc6021ce7ba..f2be4bcac8c 100644 --- a/docs/private-networks/how-to/use-privacy/besu-extended.md +++ b/docs/private-networks/how-to/use-privacy/besu-extended.md @@ -14,23 +14,23 @@ Hyperledger Besu provides an extended implementation of privacy allowing you to [create a privacy group for a set of participants](../../concepts/privacy/privacy-groups.md). You must specify the privacy group ID when sending private transactions. -To enable the [`PRIV` API methods](../../../global/reference/api/index.md#priv-methods), use the -[`--rpc-http-api`](../../../global/reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../../global/reference/cli/options.md#rpc-ws-api) command line options. +To enable the [`PRIV` API methods](../../../public-networks/reference/api/index.md#priv-methods), use the +[`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../public-networks/reference/cli/options.md#rpc-ws-api) command line options. To create the privacy group containing the recipients of a private transaction, use -[`priv_createPrivacyGroup`](../../../global/reference/api/index.md#priv_createprivacygroup). +[`priv_createPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_createprivacygroup). To create an EEA-compliant private transaction, specify `privacyGroupId` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction). ## Privacy group type Privacy groups created using -[`priv_createPrivacyGroup`](../../../global/reference/api/index.md#priv_createprivacygroup) +[`priv_createPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_createprivacygroup) have a `BESU` privacy group type when returned by -[`priv_findPrivacyGroup`](../../../global/reference/api/index.md#priv_findprivacygroup). +[`priv_findPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_findprivacygroup). !!! example diff --git a/docs/private-networks/how-to/use-privacy/eea-compliant.md b/docs/private-networks/how-to/use-privacy/eea-compliant.md index dc0bb267034..95e6cb76fa9 100644 --- a/docs/private-networks/how-to/use-privacy/eea-compliant.md +++ b/docs/private-networks/how-to/use-privacy/eea-compliant.md @@ -14,19 +14,19 @@ When using Hyperledger Besu [EEA-compliant privacy](../../concepts/privacy/priva group of nodes specified by `privateFrom` and `privateFor` form a privacy group, to which Tessera assigns a unique privacy group ID. -To enable the [`EEA` API methods](../../../global/reference/api/index.md#eea-methods), use the -[`--rpc-http-api`](../../../global/reference/cli/options.md#rpc-http-api) or -[`--rpc-ws-api`](../../../global/reference/cli/options.md#rpc-ws-api) command line options. +To enable the [`EEA` API methods](../../../public-networks/reference/api/index.md#eea-methods), use the +[`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) or +[`--rpc-ws-api`](../../../public-networks/reference/cli/options.md#rpc-ws-api) command line options. To create an EEA-compliant private transaction, specify `privateFor` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction). ## Privacy group type Privacy groups created when specifying `privateFrom` and `privateFor` have a `LEGACY` privacy group type when returned by -[`priv_findPrivacyGroup`](../../../global/reference/api/index.md#priv_findprivacygroup). +[`priv_findPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_findprivacygroup). !!! example diff --git a/docs/private-networks/how-to/use-privacy/flexible.md b/docs/private-networks/how-to/use-privacy/flexible.md index 76fa973dec3..3a972e40b18 100644 --- a/docs/private-networks/how-to/use-privacy/flexible.md +++ b/docs/private-networks/how-to/use-privacy/flexible.md @@ -32,11 +32,11 @@ membership of [flexible privacy groups](../../concepts/privacy/flexible-privacy. ## Enabling flexible privacy groups -Use the [`--privacy-flexible-groups-enabled`](../../../global/reference/cli/options.md#privacy-flexible-groups-enabled) +Use the [`--privacy-flexible-groups-enabled`](../../../public-networks/reference/cli/options.md#privacy-flexible-groups-enabled) command line option to enable [flexible privacy groups](../../concepts/privacy/flexible-privacy.md). -When flexible privacy groups are enabled, the [`priv_createPrivacyGroup`](../../../global/reference/api/index.md#priv_createprivacygroup), -[`priv_deletePrivacyGroup`](../../../global/reference/api/index.md#priv_deleteprivacygroup), -and [`priv_findPrivacyGroup`](../../../global/reference/api/index.md#priv_findprivacygroup) methods for +When flexible privacy groups are enabled, the [`priv_createPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_createprivacygroup), +[`priv_deletePrivacyGroup`](../../../public-networks/reference/api/index.md#priv_deleteprivacygroup), +and [`priv_findPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_findprivacygroup) methods for [offchain privacy groups](../../concepts/privacy/privacy-groups.md) are disabled. ## Simple flexible privacy group example diff --git a/docs/private-networks/how-to/use-privacy/goquorum-compatible.md b/docs/private-networks/how-to/use-privacy/goquorum-compatible.md index a04a4dbb710..4b06f1c9283 100644 --- a/docs/private-networks/how-to/use-privacy/goquorum-compatible.md +++ b/docs/private-networks/how-to/use-privacy/goquorum-compatible.md @@ -10,7 +10,7 @@ Besu and [GoQuorum clients] using the Tessera private transaction manager. This mode requires both networks to run an interoperable consensus algorithm such as [QBFT] to work. To run your Besu nodes in GoQuorum-compatible privacy mode, add the `isQuorum:true` flag to your -[genesis file](../../concepts/genesis-file.md). +[genesis file](../../../public-networks/concepts/genesis-file.md). While in GoQuorum-compatible privacy mode and using Tessera, disable [`orion` mode](https://docs.tessera.consensys.net/en/stable/HowTo/Configure/Orion-Mode/) by removing `"mode": "orion",` from the [Tessera configuration file](../../tutorials/privacy/multi-tenancy.md#3-update-the-tessera-configuration-file). diff --git a/docs/private-networks/how-to/use-privacy/performance-best-practices.md b/docs/private-networks/how-to/use-privacy/performance-best-practices.md index 0cfc38a549d..3855be8aa09 100644 --- a/docs/private-networks/how-to/use-privacy/performance-best-practices.md +++ b/docs/private-networks/how-to/use-privacy/performance-best-practices.md @@ -1,4 +1,4 @@ -# Private transaction performance best practices +# Performance best practices This document collects deployment and usage tips to help you achieve high performance for private transactions. If transaction throughput or latency is not meeting your expectations, please consider the following before raising an issue. diff --git a/docs/private-networks/how-to/use-privacy/privacy-groups.md b/docs/private-networks/how-to/use-privacy/privacy-groups.md index 1bd6252743e..08e827e9c1d 100644 --- a/docs/private-networks/how-to/use-privacy/privacy-groups.md +++ b/docs/private-networks/how-to/use-privacy/privacy-groups.md @@ -13,9 +13,9 @@ description: Create and manage privacy groups with Hyperledger Besu Hyperledger Besu-extended privacy provides JSON-RPC API methods for creating and managing privacy groups: -* [`priv_createPrivacyGroup`](../../../global/reference/api/index.md#priv_createprivacygroup) -* [`priv_findPrivacyGroup`](../../../global/reference/api/index.md#priv_findprivacygroup) -* [`priv_deletePrivacyGroup`](../../../global/reference/api/index.md#priv_deleteprivacygroup). +* [`priv_createPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_createprivacygroup) +* [`priv_findPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_findprivacygroup) +* [`priv_deletePrivacyGroup`](../../../public-networks/reference/api/index.md#priv_deleteprivacygroup). !!! tip diff --git a/docs/private-networks/how-to/use-privacy/sign-pmts.md b/docs/private-networks/how-to/use-privacy/sign-pmts.md index c4fb01b1735..b54748ff426 100644 --- a/docs/private-networks/how-to/use-privacy/sign-pmts.md +++ b/docs/private-networks/how-to/use-privacy/sign-pmts.md @@ -6,7 +6,7 @@ description: How to sign a privacy marker transaction with Hyperledger Besu You can sign privacy marker transactions with either a random key or a specified key. To sign privacy marker transactions with a specified private key, use -[`--privacy-marker-transaction-signing-key-file`](../../../global/reference/cli/options.md#privacy-marker-transaction-signing-key-file) +[`--privacy-marker-transaction-signing-key-file`](../../../public-networks/reference/cli/options.md#privacy-marker-transaction-signing-key-file) when starting Hyperledger Besu. !!! note @@ -20,7 +20,7 @@ adequate funds. In [free gas networks](../configure/free-gas.md), to provide further anonymity by signing each privacy marker transaction with a different random key, exclude the -[`--privacy-marker-transaction-signing-key-file`](../../../global/reference/cli/options.md#privacy-marker-transaction-signing-key-file) +[`--privacy-marker-transaction-signing-key-file`](../../../public-networks/reference/cli/options.md#privacy-marker-transaction-signing-key-file) command line option when starting Besu. !!! caution "Using account permissioning and privacy" diff --git a/docs/private-networks/how-to/use-privacy/web3js-quorum.md b/docs/private-networks/how-to/use-privacy/web3js-quorum.md index 9d289c70d59..552f999a1f6 100644 --- a/docs/private-networks/how-to/use-privacy/web3js-quorum.md +++ b/docs/private-networks/how-to/use-privacy/web3js-quorum.md @@ -35,8 +35,8 @@ npm install web3js-quorum Initialize your client where: * `` is the JSON-RPC HTTP endpoint of your Hyperledger Besu node. Specified - by the [`--rpc-http-host`](../../../global/reference/cli/options.md#rpc-http-host) and - [`--rpc-http-port`](../../../global/reference/cli/options.md#rpc-http-port) command line options. + by the [`--rpc-http-host`](../../../public-networks/reference/cli/options.md#rpc-http-host) and + [`--rpc-http-port`](../../../public-networks/reference/cli/options.md#rpc-http-port) command line options. !!! example diff --git a/docs/private-networks/index.md b/docs/private-networks/index.md index 874740321a4..a1ae006df4f 100644 --- a/docs/private-networks/index.md +++ b/docs/private-networks/index.md @@ -8,7 +8,7 @@ You can use Besu to develop enterprise applications requiring secure, high-perfo processing in a private network. A private network is a network not connected to Ethereum Mainnet or an Ethereum testnet. -Private networks typically use a different [chain ID](concepts/network-and-chain-id.md) and +Private networks typically use a different [chain ID](../public-networks/concepts/network-and-chain-id.md) and proof of authority consensus ([QBFT](how-to/configure/consensus/qbft.md), [IBFT 2.0](how-to/configure/consensus/ibft.md), or [Clique](how-to/configure/consensus/clique.md)). diff --git a/docs/private-networks/reference/accounts-for-testing.md b/docs/private-networks/reference/accounts-for-testing.md index 7c9caecd11b..222f87c6662 100644 --- a/docs/private-networks/reference/accounts-for-testing.md +++ b/docs/private-networks/reference/accounts-for-testing.md @@ -9,7 +9,7 @@ network. Hyperledger Besu also provides predefined accounts for use in developme ## Development mode -When you start Besu with the [`--network=dev`](../../global/reference/cli/options.md#network) command line option, Besu +When you start Besu with the [`--network=dev`](../../public-networks/reference/cli/options.md#network) command line option, Besu uses the `dev.json` genesis file by default. The `dev.json` genesis file defines the following accounts used for testing. @@ -23,4 +23,4 @@ network. For an example of how to define accounts in the genesis file, see [`dev.json`](https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/config/src/main/resources/dev.json). To start Besu with the genesis file defining the existing accounts, use the -[`--genesis-file`](../../global/reference/cli/options.md#genesis-file) command line option . +[`--genesis-file`](../../public-networks/reference/cli/options.md#genesis-file) command line option . diff --git a/docs/private-networks/reference/api/index.md b/docs/private-networks/reference/api/index.md index 98925d7d548..cc733080676 100644 --- a/docs/private-networks/reference/api/index.md +++ b/docs/private-networks/reference/api/index.md @@ -1 +1,2159 @@ -{!global/reference/api/index.md!} +--- +description: Hyperledger Besu private network JSON-RPC API methods reference +--- + +# Private network API methods + +!!! attention + + * This reference contains API methods that apply to only private networks. + For API methods that apply to both private and public networks, see the + [public network API reference](../../../public-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](../../../public-networks/reference/cli/options.md#rpc-http-host) or + [--rpc-http-port](../../../public-networks/reference/cli/options.md#rpc-http-port) options, update the endpoint. + +## `CLIQUE` methods + +The `CLIQUE` API methods provide access to the [Clique](../../how-to/configure/consensus/clique.md) consensus engine. + +!!! note + + The `CLIQUE` API methods are not enabled by default for JSON-RPC. To enable the `CLIQUE` API + methods use the [`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) + or [`--rpc-ws-api`](../../../public-networks/reference/cli/options.md#rpc-ws-api) options. + +### `clique_discard` + +Discards a proposal to [add or remove a signer with the specified address]. + +#### Parameters + +`address`: *string* - 20-byte address of proposed signer + +#### Returns + +`result`: *boolean* - indicates if the proposal is discarded + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"clique_discard","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"clique_discard","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73"], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 1, + "result" : true + } + ``` + +### `clique_getSigners` + +Lists [signers for the specified block]. + +#### Parameters + +`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../../public-networks/how-to/use-besu-api/json-rpc.md#block-parameter) + +#### Returns + +`result`: *array* of *string* - list of 20-byte addresses of signers + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"clique_getSigners","params":["latest"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"clique_getSigners","params":["latest"], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 1, + "result" : [ "0x42eb768f2244c8811c63729a21a3569731535f06", "0x7ffc57839b00206d1ad20c69a1981b489f772031", "0xb279182d99e65703f0076e4812653aab85fca0f0" ] + } + ``` + +### `clique_getSignerMetrics` + +Provides the following validator metrics for the specified range: + +* Number of blocks from each validator + +* Block number of the last block proposed by each validator (if any proposed in the specified + range) + +* All validators present in the last block + +#### Parameters + +* `fromBlockNumber`: *string* - integer representing a block number or the string tag `earliest`, as described + in [Block Parameter](../../../public-networks/how-to/use-besu-api/json-rpc.md#block-parameter) + +* `toBlockNumber`: *string* - integer representing a block number or one of the string tags `latest` or + `pending`, as described in + [Block Parameter](../../../public-networks/how-to/use-besu-api/json-rpc.md#block-parameter) + +If you specify: + +* No parameters, the call provides metrics for the last 100 blocks, or all blocks if there are less + than 100 blocks. + +* Only the first parameter, the call provides metrics for all blocks from the block specified to + the latest block. + +#### Returns + +`result`: *array* of *objects* - list of validator objects + +!!! note + + The proposer of the genesis block has address `0x0000000000000000000000000000000000000000`. + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"clique_getSignerMetrics","params":["1", "100"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"clique_getSignerMetrics","params":["1", "100"], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": [ + { + "address": "0x7ffc57839b00206d1ad20c69a1981b489f772031", + "proposedBlockCount": "0x21", + "lastProposedBlockNumber": "0x61" + }, + { + "address": "0x42eb768f2244c8811c63729a21a3569731535f06", + "proposedBlockCount": "0x21", + "lastProposedBlockNumber": "0x63" + }, + { + "address": "0xb279182d99e65703f0076e4812653aab85fca0f0", + "proposedBlockCount": "0x21", + "lastProposedBlockNumber": "0x62" + } + ] + } + ``` + +### `clique_getSignersAtHash` + +Lists signers for the specified block. + +#### Parameters + +`hash`: *string* - 32-byte block hash + +#### Returns + +`result`: *array* of *string* - list of 20-byte addresses of signers + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"clique_getSignersAtHash","params":["0x98b2ddb5106b03649d2d337d42154702796438b3c74fd25a5782940e84237a48"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"clique_getSignersAtHash","params":["0x98b2ddb5106b03649d2d337d42154702796438b3c74fd25a5782940e84237a48"], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 1, + "result" : [ "0x42eb768f2244c8811c63729a21a3569731535f06", "0x7ffc57839b00206d1ad20c69a1981b489f772031", "0xb279182d99e65703f0076e4812653aab85fca0f0" ] + } + ``` + +### `clique_proposals` + +Returns +[current proposals](../../how-to/configure/consensus/clique.md#add-and-remove-signers). + +#### Parameters + +None + +#### Returns + +`result`: *map* of *strings* to *booleans* - map of account addresses to corresponding boolean values indicating the +proposal for each account (if `true`, the proposal is to add a signer; if `false`, the proposal is to +remove a signer.) + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"clique_proposals","params":[], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"clique_proposals","params":[], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": { + "0x42eb768f2244c8811c63729a21a3569731535f07": false, + "0x12eb759f2222d7711c63729a45c3585731521d01": true + } + } + ``` + +### `clique_propose` + +Proposes to [add or remove a signer with the specified address]. + +#### Parameters + +* `address`: *string* - 20-byte address + +* `proposal`: *boolean* - `true` to propose adding signer or `false` to propose removing signer + +#### Returns + +`result`: *boolean* - `true` + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"clique_propose","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73", true], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"clique_propose","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73", true], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 1, + "result" : true + } + ``` + +## `EEA` methods + +The `EEA` API methods provide functionality for [private transactions](../../concepts/privacy/private-transactions/index.md) and +[privacy groups](../../concepts/privacy/privacy-groups.md). + +!!! note + + The `EEA` API methods are not enabled by default for JSON-RPC. To enable the `EEA` API methods, + use the [`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) or + [`--rpc-ws-api`](../../../public-networks/reference/cli/options.md#rpc-ws-api) options. + +### `eea_sendRawTransaction` + +Distributes the +[private transaction](../../how-to/send-transactions/private-transactions.md), +generates the [privacy marker transaction](../../concepts/privacy/private-transactions/processing.md) +and submits it to the transaction pool, and returns the transaction hash of the +[privacy marker transaction](../../concepts/privacy/private-transactions/processing.md). + +The signed transaction passed as an input parameter includes the `privateFrom`, +[`privateFor` or `privacyGroupId`](../../how-to/send-transactions/private-transactions.md#eea-compliant-or-besu-extended-privacy), +and `restriction` fields. + +The `gas` and `gasPrice` are used by the [privacy marker transaction](../../concepts/privacy/private-transactions/processing.md) +not the private transaction itself. + +To avoid exposing your private key, create signed transactions offline and send the signed +transaction data using `eea_sendRawTransaction`. + +!!! important + + For production systems requiring private transactions, use a network with a consensus mechanism + supporting transaction finality to make sure the private state does not become inconsistent + with the chain. For example, [IBFT 2.0](../how-to/configure/consensus/ibft.md) + and [QBFT](../how-to/configure/consensus/qbft.md) provide the required finality. + + Using private transactions with [pruning](../../public-networks/how-to/connect/sync-node.md) or + [fast sync](../../../public-networks/reference/cli/options.md#sync-mode) is not supported. + + Besu doesn't implement + [`eea_sendTransaction`](../../how-to/send-transactions/private-transactions.md). + + [EthSigner](https://docs.ethsigner.consensys.net/en/latest/) provides transaction signing and + implements [`eea_sendTransaction`](https://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/#eea_sendtransaction). + +#### Parameters + +`transaction`: *string* - signed RLP-encoded private transaction + +#### Returns + +`result`: *string* - 32-byte transaction hash of the +[privacy marker transaction](../../concepts/privacy/private-transactions/processing.md) + +!!! tip + + If creating a contract, use [priv_getTransactionReceipt](#priv_gettransactionreceipt) to + retrieve the contract address after the transaction is finalized. + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eea_sendRawTransaction","params": ["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"eea_sendRawTransaction","params": ["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"], "id":1} + ``` + + === "JSON result" + + ```json + { + "id":1, + "jsonrpc": "2.0", + "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331" + } + ``` + +## `IBFT` 2.0 methods + +The `IBFT` API methods provide access to the [IBFT 2.0](../../how-to/configure/consensus/ibft.md) consensus engine. + +!!! note + + The `IBFT` API methods are not enabled by default for JSON-RPC. To enable the `IBFT` API + methods, use the [`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) or + [`--rpc-ws-api`](../../../public-networks/reference/cli/options.md#rpc-ws-api) options. + +### `ibft_discardValidatorVote` + +Discards a proposal to [add or remove a validator] with the specified address. + +#### Parameters + +`address`: *string* - 20-byte address of proposed validator + +#### Returns + +`result`: *boolean* - indicates if the proposal is discarded + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_discardValidatorVote","params":["0xef1bfb6a12794615c9b0b5a21e6741f01e570185"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"ibft_discardValidatorVote","params":["0xef1bfb6a12794615c9b0b5a21e6741f01e570185"], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 1, + "result" : true + } + ``` + +### `ibft_getPendingVotes` + +Returns [votes](../../how-to/configure/consensus/ibft.md#add-and-remove-validators) cast in the current +[epoch](../../how-to/configure/consensus/ibft.md#genesis-file). + +#### Parameters + +None + +#### Returns + +`result`: *map* of *strings* to *booleans* - map of account addresses to corresponding boolean values indicating the +vote for each account; if `true`, the vote is to add a validator. If `false`, the proposal is to +remove a validator. + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_getPendingVotes","params":[], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"ibft_getPendingVotes","params":[], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": { + "0xef1bfb6a12794615c9b0b5a21e6741f01e570185": true, + "0x42d4287eac8078828cf5f3486cfe601a275a49a5": true + } + } + ``` + +### `ibft_getSignerMetrics` + +Provides the following validator metrics for the specified range: + +* Number of blocks from each validator + +* Block number of the last block proposed by each validator (if any proposed in the specified + range) + +* All validators present in the last block of the range + +#### Parameters + +* `fromBlockNumber`: *string* - integer representing a block number or the string tag `earliest` as described + in [Block Parameter](../../../public-networks/how-to/use-besu-api/json-rpc.md#block-parameter) + +* `toBlockNumber`: *string* - integer representing a block number or one of the string tags `latest` or + `pending`, as described in + [Block Parameter](../../../public-networks/how-to/use-besu-api/json-rpc.md#block-parameter) + +If you specify: + +* No parameters, the call provides metrics for the last 100 blocks, or all blocks if there are less + than 100 blocks. + +* Only the first parameter, the call provides metrics for all blocks from the block specified to + the latest block. + +#### Returns + +`result`: *array* of *objects* - list of validator objects + +!!! note + + The proposer of the genesis block has address `0x0000000000000000000000000000000000000000`. + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_getSignerMetrics","params":["1", "100"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"ibft_getSignerMetrics","params":["1", "100"], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": [ + { + "address": "0x7ffc57839b00206d1ad20c69a1981b489f772031", + "proposedBlockCount": "0x21", + "lastProposedBlockNumber": "0x61" + }, + { + "address": "0x42eb768f2244c8811c63729a21a3569731535f06", + "proposedBlockCount": "0x21", + "lastProposedBlockNumber": "0x63" + }, + { + "address": "0xb279182d99e65703f0076e4812653aab85fca0f0", + "proposedBlockCount": "0x21", + "lastProposedBlockNumber": "0x62" + } + ] + } + ``` + +### `ibft_getValidatorsByBlockHash` + +Lists the validators defined in the specified block. + +#### Parameters + +`block`: *string* - 32-byte block hash + +#### Returns + +`result`: *array* of *strings* - list of validator addresses + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_getValidatorsByBlockHash","params":["0xbae7d3feafd743343b9a4c578cab5e5d65eb735f6855fb845c00cab356331256"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"ibft_getValidatorsByBlockHash","params":["0xbae7d3feafd743343b9a4c578cab5e5d65eb735f6855fb845c00cab356331256"], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": [ + "0x42d4287eac8078828cf5f3486cfe601a275a49a5", + "0xb1b2bc9582d2901afdc579f528a35ca41403fa85", + "0xef1bfb6a12794615c9b0b5a21e6741f01e570185" + ] + } + ``` + +### `ibft_getValidatorsByBlockNumber` + +Lists the validators defined in the specified block. + +#### Parameters + +* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, + `earliest`, or `pending`, as described in + [Block Parameter](../../../public-networks/how-to/use-besu-api/json-rpc.md#block-parameter) + +#### Returns + +`result`: *array* of *strings* - list of validator addresses + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_getValidatorsByBlockNumber","params":["latest"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"ibft_getValidatorsByBlockNumber","params":["latest"], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": [ + "0x42d4287eac8078828cf5f3486cfe601a275a49a5", + "0xb1b2bc9582d2901afdc579f528a35ca41403fa85", + "0xef1bfb6a12794615c9b0b5a21e6741f01e570185" + ] + } + ``` + +### `ibft_proposeValidatorVote` + +Proposes to [add or remove a validator] with the specified address. + +#### Parameters + +* `address`: *string* - account address + +* `proposal`: *boolean* - `true` to propose adding validator or `false` to propose removing validator + +#### Returns + +`result`: *boolean* - `true` + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"ibft_proposeValidatorVote","params":["42d4287eac8078828cf5f3486cfe601a275a49a5",true], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"ibft_proposeValidatorVote","params":["42d4287eac8078828cf5f3486cfe601a275a49a5",true], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 1, + "result" : true + } + ``` + +## `PERM` (Permissioning) methods + +The `PERM` API methods provide permissioning functionality. +Use these methods for [local permissioning](../../how-to/use-permissioning/local.md) only. + +!!! important + + The `PERM` API methods are not enabled by default for JSON-RPC. To enable the `PERM` API + methods, use the [`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) or + [`--rpc-ws-api`](../../../public-networks/reference/cli/options.md#rpc-ws-api) CLI options. + +### `perm_addAccountsToAllowlist` + +Adds accounts (participants) to the +[accounts permission list](../../how-to/use-permissioning/local.md#account-permissioning). + +#### Parameters + +`addresses`: *array* of *strings* - list of account addresses + +!!! note + + The parameters list contains a list which is why the account addresses are enclosed by double + square brackets. + +#### Returns + +`result`: *string* - `Success` or `error` (errors include attempting to add accounts already on the +allowlist and including invalid account addresses.) + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"perm_addAccountsToAllowlist","params":[["0xb9b81ee349c3807e46bc71aa2632203c5b462032", "0xb9b81ee349c3807e46bc71aa2632203c5b462034"]], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"perm_addAccountsToAllowlist","params":[["0xb9b81ee349c3807e46bc71aa2632203c5b462032", "0xb9b81ee349c3807e46bc71aa2632203c5b462034"]], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": "Success" + } + ``` + +### `perm_addNodesToAllowlist` + +Adds nodes to the +[nodes allowlist](../../how-to/use-permissioning/local.md#node-allowlisting). + +To use domain names in enode URLs, ensure you [enable DNS support](../../../public-networks/concepts/node-keys.md#domain-name-support) +to avoid receiving a `request contains an invalid node` error. + +!!! warning + + Enode URL domain name support is an experimental feature. + +#### Parameters + +`enodes`: *array* of *strings* - list of [enode URLs](../../../public-networks/concepts/node-keys.md#enode-url) + +!!! note + + The parameters list contains a list which is why the enode URLs are enclosed by double + square brackets. + +#### Returns + +`result`: *string* - `Success` or `error`; errors include attempting to add nodes already on the allowlist or +including invalid enode URLs. + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"perm_addNodesToAllowlist","params":[["enode://7e4ef30e9ec683f26ad76ffca5b5148fa7a6575f4cfad4eb0f52f9c3d8335f4a9b6f9e66fcc73ef95ed7a2a52784d4f372e7750ac8ae0b544309a5b391a23dd7@127.0.0.1:30303","enode://2feb33b3c6c4a8f77d84a5ce44954e83e5f163e7a65f7f7a7fec499ceb0ddd76a46ef635408c513d64c076470eac86b7f2c8ae4fcd112cb28ce82c0d64ec2c94@127.0.0.1:30304"]], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"perm_addNodesToAllowlist","params":[["enode://7e4ef30e9ec683f26ad76ffca5b5148fa7a6575f4cfad4eb0f52f9c3d8335f4a9b6f9e66fcc73ef95ed7a2a52784d4f372e7750ac8ae0b544309a5b391a23dd7@127.0.0.1:30303","enode://2feb33b3c6c4a8f77d84a5ce44954e83e5f163e7a65f7f7a7fec499ceb0ddd76a46ef635408c513d64c076470eac86b7f2c8ae4fcd112cb28ce82c0d64ec2c94@127.0.0.1:30304"]], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": "Success" + } + ``` + +### `perm_getAccountsAllowlist` + +Lists accounts (participants) in the +[accounts permissions list](../../how-to/use-permissioning/local.md#account-permissioning). + +#### Parameters + +None + +#### Returns + +`result`: *array* of *strings* - list of accounts (participants) in the accounts allowlist + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"perm_getAccountsAllowlist","params":[], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"perm_getAccountsAllowlist","params":[], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": [ + "0x0000000000000000000000000000000000000009", + "0xb9b81ee349c3807e46bc71aa2632203c5b462033" + ] + } + ``` + +### `perm_getNodesAllowlist` + +Lists nodes in the +[nodes allowlist](../../how-to/use-permissioning/local.md#node-allowlisting). + +#### Parameters + +None + +#### Returns + +`result`: *array* of *strings* - [enode URLs](../../../public-networks/concepts/node-keys.md#enode-url) +of nodes in the nodes allowlist + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"perm_getNodesAllowlist","params":[], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"perm_getNodesAllowlist","params":[], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": [ + "enode://7b61d5ee4b44335873e6912cb5dd3e3877c860ba21417c9b9ef1f7e500a82213737d4b269046d0669fb2299a234ca03443f25fe5f706b693b3669e5c92478ade@127.0.0.1:30305", + "enode://2feb33b3c6c4a8f77d84a5ce44954e83e5f163e7a65f7f7a7fec499ceb0ddd76a46ef635408c513d64c076470eac86b7f2c8ae4fcd112cb28ce82c0d64ec2c94@127.0.0.1:30304" + ] + } + ``` + +### `perm_reloadPermissionsFromFile` + +Reloads the accounts and nodes allowlists from the [permissions configuration file]. + +#### Parameters + +None + +#### Returns + +`result`: *string* - `Success`, or `error` if the permissions configuration file is not valid + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"perm_reloadPermissionsFromFile","params":[], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"perm_reloadPermissionsFromFile","params":[], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": "Success" + } + ``` + +### `perm_removeAccountsFromAllowlist` + +Removes accounts (participants) from the +[accounts permissions list](../../how-to/use-permissioning/local.md#account-permissioning). + +#### Parameters + +`addresses`: *array* of *strings* - list of account addresses + +!!! note + + The parameters list contains a list which is why the account addresses are enclosed by double + square brackets. + +#### Returns + +`result`: *string* - `Success` or `error` (errors include attempting to remove accounts not on the allowlist +and including invalid account addresses.) + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"perm_removeAccountsFromAllowlist","params":[["0xb9b81ee349c3807e46bc71aa2632203c5b462032", "0xb9b81ee349c3807e46bc71aa2632203c5b462034"]], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"perm_removeAccountsFromAllowlist","params":[["0xb9b81ee349c3807e46bc71aa2632203c5b462032", "0xb9b81ee349c3807e46bc71aa2632203c5b462034"]], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": "Success" + } + ``` + +### `perm_removeNodesFromAllowlist` + +Removes nodes from the +[nodes allowlist](../../how-to/use-permissioning/local.md#node-allowlisting). + +#### Parameters + +`enodes`: *array* of *strings* - list of [enode URLs](../../../public-networks/concepts/node-keys.md#enode-url) + +!!! note + + The parameters list contains a list which is why the enode URLs are enclosed by double square + brackets. + +#### Returns + +`result`: *string* - `Success` or `error` (errors include attempting to remove nodes not on the allowlist +and including invalid enode URLs.) + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"perm_removeNodesFromAllowlist","params":[["enode://7e4ef30e9ec683f26ad76ffca5b5148fa7a6575f4cfad4eb0f52f9c3d8335f4a9b6f9e66fcc73ef95ed7a2a52784d4f372e7750ac8ae0b544309a5b391a23dd7@127.0.0.1:30303","enode://2feb33b3c6c4a8f77d84a5ce44954e83e5f163e7a65f7f7a7fec499ceb0ddd76a46ef635408c513d64c076470eac86b7f2c8ae4fcd112cb28ce82c0d64ec2c94@127.0.0.1:30304"]], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"perm_removeNodesFromAllowlist","params":[["enode://7e4ef30e9ec683f26ad76ffca5b5148fa7a6575f4cfad4eb0f52f9c3d8335f4a9b6f9e66fcc73ef95ed7a2a52784d4f372e7750ac8ae0b544309a5b391a23dd7@127.0.0.1:30303","enode://2feb33b3c6c4a8f77d84a5ce44954e83e5f163e7a65f7f7a7fec499ceb0ddd76a46ef635408c513d64c076470eac86b7f2c8ae4fcd112cb28ce82c0d64ec2c94@127.0.0.1:30304"]], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": "Success" + } + ``` + +## `PRIV` methods + +The `PRIV` API methods provide functionality for [private transactions](../../concepts/privacy/private-transactions/index.md) and +[privacy groups](../../concepts/privacy/privacy-groups.md). + +!!! note + + The `PRIV` API methods are not enabled by default for JSON-RPC. To enable the `PRIV` API + methods, use the [`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) or + [`--rpc-ws-api`](../../../public-networks/reference/cli/options.md#rpc-ws-api) options. + +### `priv_call` + +Invokes a private contract function locally and does not change the privacy group state. + +For private contracts, `priv_call` is the same as [`eth_call`](../../../public-networks/reference/api/index.md#eth_call) +for public contracts. + +#### Parameters + +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/privacy/privacy-groups.md) + +* `call`: *object* - [transaction call object](../../../public-networks/reference/api/objects.md#transaction-call-object) + +* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, + `earliest`, or `pending`, as described in + [Block Parameter](../../../public-networks/how-to/use-besu-api/json-rpc.md#block-parameter) + +#### Returns + +`result`: *data* - return value of the executed contract + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"priv_call","params":["tb8NVyQqZnHNegf/3mYsyB+HEud4SPWn90rz3GoskRw=", {"to":"0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13","data": "0x3fa4f245"}, "latest"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"priv_call","params":["tb8NVyQqZnHNegf/3mYsyB+HEud4SPWn90rz3GoskRw=", {"to":"0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13","data": "0x3fa4f245"}, "latest"],"id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": "0x0000000000000000000000000000000000000000000000000000000000000001" + } + ``` + + === "curl GraphQL" + + ```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 + ``` + + === "GraphQL" + + ```bash + { + block { + number + call(data: {from: "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", to: "0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13", data: "0x12a7b914"}) { + data + status + } + } + } + ``` + + === "GraphQL result" + + ```json + { + "data" : { + "block" : { + "number" : 17449, + "call" : { + "data" : "0x", + "status" : 1 + } + } + } + } + ``` + +### `priv_createPrivacyGroup` + +Creates a group of nodes, specified by their [Tessera](https://docs.tessera.consensys.net/) public key. + +#### Parameters + +`options`: *object* - request options object with the following fields: + +* `addresses`: *array* of *strings* - list of nodes specified by + [Tessera](https://docs.tessera.consensys.net/) public keys + +* `name`: *string* - (optional) privacy group name + +* `description`: *string* - (optional) privacy group description + +#### Returns + +`result`: *string* - privacy group ID + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method": "priv_createPrivacyGroup", "params": [{"addresses":["sTZpbQhcOfd9ZaFDnC00e/N2Ofv9p4/ZTBbEeVtXJ3E=","quhb1pQPGN1w8ZSZSyiIfncEAlVY/M/rauSyQ5wVMRE="],"name":"Group A","description":"Description Group A"}],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method": "priv_createPrivacyGroup", "params": [{"addresses":["sTZpbQhcOfd9ZaFDnC00e/N2Ofv9p4/ZTBbEeVtXJ3E=","quhb1pQPGN1w8ZSZSyiIfncEAlVY/M/rauSyQ5wVMRE="],"name":"Group A","description":"Description Group A"}],"id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": "ewuTVoc5nlvWMwTFdRRK/wvV0dcyQo/Pauvx5bNEbTk=" + } + ``` + +### `priv_debugGetStateRoot` + +Returns the state root of the specified privacy group at the specified block. + +#### Parameters + +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/privacy/privacy-groups.md) + +* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, + `earliest`, or `pending`, as described in + [Block Parameter](../../../public-networks/how-to/use-besu-api/json-rpc.md#block-parameter) + +#### Returns + +`result`: *string* - 32-byte state root + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"priv_debugGetStateRoot","params":["xJdxvWOEmrs2MCkKWlgArTzWIXFfU/tmVxI3EKssVTk=","latest"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"priv_debugGetStateRoot","params":["xJdxvWOEmrs2MCkKWlgArTzWIXFfU/tmVxI3EKssVTk=","latest"],"id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 1, + "result" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421" + } + + ``` + +### `priv_deletePrivacyGroup` + +Deletes the specified privacy group. + +#### Parameters + +`privacyGroupId`: *string* - privacy group ID + +#### Returns + +`result`: *string* - deleted privacy group ID + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"priv_deletePrivacyGroup","params":["ewuTVoc5nlvWMwTFdRRK/wvV0dcyQo/Pauvx5bNEbTk="],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"priv_deletePrivacyGroup","params":["ewuTVoc5nlvWMwTFdRRK/wvV0dcyQo/Pauvx5bNEbTk="],"id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 53, + "result": "ewuTVoc5nlvWMwTFdRRK/wvV0dcyQo/Pauvx5bNEbTk=" + } + ``` + +### `priv_distributeRawTransaction` + +Distributes a signed, RLP encoded +[private transaction](../../how-to/send-transactions/private-transactions.md). + +!!! tip + + If you want to sign the [privacy marker transaction](../../how-to/use-privacy/sign-pmts.md) + outside of Besu, use [`priv_distributeRawTransaction`](../../how-to/send-transactions/private-transactions.md#priv_distributerawtransaction) + instead of [`eea_sendRawTransaction`](#eea_sendrawtransaction). + +#### Parameters + +`transaction`: *string* - signed RLP-encoded private transaction + +#### Returns + +`result`: *string* - 32-byte enclave key (the enclave key is a pointer to the private transaction in +[Tessera](https://docs.tessera.consensys.net/).) + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"priv_distributeRawTransaction","params": ["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"priv_distributeRawTransaction","params": ["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": "0xfd0d90ab824574abc19c0776ca0210e764561d0ef6d621f2bbbea316eccfe56b" + } + ``` + +### `priv_findPrivacyGroup` + +Returns a list of privacy groups containing only the listed members. For example, if the listed +members are A and B, a privacy group containing A, B, and C is not returned. + +#### Parameters + +`members`: *array* of *strings* - members specified by [Tessera](https://docs.tessera.consensys.net/) public keys + +#### Returns + +`result`: *array* of *objects* - privacy group objects containing only the specified members; privacy groups are +[EEA-compliant](../../concepts/privacy/privacy-groups.md#enterprise-ethereum-alliance-privacy) +or [Besu-extended](../../concepts/privacy/privacy-groups.md#besu-extended-privacy) with types: + +* `LEGACY` for EEA-compliant groups. + +* `PANTHEON` for Besu-extended groups. + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc": "2.0","method": "priv_findPrivacyGroup","params": [["negmDcN2P4ODpqn/6WkJ02zT/0w0bjhGpkZ8UP6vARk=", "g59BmTeJIn7HIcnq8VQWgyh/pDbvbt2eyP0Ii60aDDw="]],"id": 1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc": "2.0","method": "priv_findPrivacyGroup","params": [["negmDcN2P4ODpqn/6WkJ02zT/0w0bjhGpkZ8UP6vARk=", "g59BmTeJIn7HIcnq8VQWgyh/pDbvbt2eyP0Ii60aDDw="]],"id": 1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": [ + { + "privacyGroupId": "GpK3ErNO0xF27T0sevgkJ3+4qk9Z+E3HtXYxcKIBKX8=", + "name": "Group B", + "description": "Description of Group B", + "type": "PANTHEON", + "members": [ + "negmDcN2P4ODpqn/6WkJ02zT/0w0bjhGpkZ8UP6vARk=", + "g59BmTeJIn7HIcnq8VQWgyh/pDbvbt2eyP0Ii60aDDw=" + ] + } + ] + } + ``` + +### `priv_getCode` + +Returns the code of the private smart contract at the specified address. Compiled smart contract code +is stored as a hexadecimal value. + +#### Parameters + +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/privacy/privacy-groups.md) + +* `address`: *string* - 20-byte contract address + +* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, `earliest`, + or `pending`, as described in [Block Parameter](../../../public-networks/how-to/use-besu-api/json-rpc.md#block-parameter) + +#### Returns + +`result`: *data* - code stored at the specified address + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getCode","params":["1lJxSIP4JOp6uRn9wYsPeWwqoOP1c4nPQjylB4FExUA=", "0xeaf1c1bd00ef0bec5e39fba81740f1c5d05aa201", "latest"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"priv_getCode","params":["1lJxSIP4JOp6uRn9wYsPeWwqoOP1c4nPQjylB4FExUA=", "0xeaf1c1bd00ef0bec5e39fba81740f1c5d05aa201", "latest"],"id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": "0x60806040526004361060485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633fa4f2458114604d57806355241077146071575b600080fd5b348015605857600080fd5b50605f6088565b60408051918252519081900360200190f35b348015607c57600080fd5b506086600435608e565b005b60005481565b60008190556040805182815290517f199cd93e851e4c78c437891155e2112093f8f15394aa89dab09e38d6ca0727879181900360200190a1505600a165627a7a723058209d8929142720a69bde2ab3bfa2da6217674b984899b62753979743c0470a2ea70029" + } + ``` + +### `priv_getEeaTransactionCount` + +Returns the private transaction count for the specified account and +[group of sender and recipients]. + +!!! important + + If sending more than one transaction to be mined in the same block (that is, you are not + waiting for the transaction receipt), you must calculate the private transaction nonce outside + Besu instead of using `priv_getEeaTransactionCount`. + +#### Parameters + +* `address`: *string* - account address + +* `sender`: *string* - base64-encoded Tessera address of the sender + +* `recipients`: *array* of *strings* - base64-encoded Tessera addresses of recipients + +#### Returns + +`result`: *string* - integer representing the number of private transactions sent from the address to the +specified group of sender and recipients + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getEeaTransactionCount","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "GGilEkXLaQ9yhhtbpBT03Me9iYa7U/mWXxrJhnbl1XY=", ["KkOjNLmCI6r+mICrC6l+XuEDjFEzQllaMQMpWLl4y1s=","eLb69r4K8/9WviwlfDiZ4jf97P9czyS3DkKu0QYGLjg="]], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"priv_getEeaTransactionCount","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "GGilEkXLaQ9yhhtbpBT03Me9iYa7U/mWXxrJhnbl1XY=", ["KkOjNLmCI6r+mICrC6l+XuEDjFEzQllaMQMpWLl4y1s=","eLb69r4K8/9WviwlfDiZ4jf97P9czyS3DkKu0QYGLjg="]], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": "0x1" + } + ``` + +### `priv_getFilterChanges` + +Polls the specified filter for a private contract and returns an array of changes that have occurred +since the last poll. + +Filters for private contracts can only be created by [`priv_newFilter`](#priv_newfilter) so unlike +[`eth_getFilterChanges`](../../../public-networks/reference/api/index.md#eth_getfilterchanges), +`priv_getFilterChanges` always returns an array of log objects or an empty list. + +#### Parameters + +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/privacy/privacy-groups.md) + +* `filterId`: *string* - filter ID + +#### Returns + +`result`: *array* of *objects* - list of [log objects](../../../public-networks/reference/api/objects.md#log-object), +or an empty list if nothing has changed since the last poll + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc": "2.0","method": "priv_getFilterChanges","params": ["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc": "2.0","method": "priv_getFilterChanges","params": ["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": [ + { + "logIndex": "0x0", + "removed": false, + "blockNumber": "0x4d0", + "blockHash": "0x1c8200667a869e99b945374c37277b5ee7a7ae67943e13c82563381387553dbb", + "transactionHash": "0xb1966b9b372ba68952f48f3a3e78f036f5ae82ceca2de972a782d07fb88f6d88", + "transactionIndex": "0x0", + "address": "0x991cc548c154b2953cc48c02f782e1314097dfbb", + "data": "0x", + "topics": [ + "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410", + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + } + ] + } + ``` + +### `priv_getFilterLogs` + +Returns an array of [logs](../../../public-networks/concepts/events-and-logs.md) for the specified filter for a private +contract. + +For private contracts, `priv_getFilterLogs` is the same as +[`eth_getFilterLogs`](../../../public-networks/reference/api/index.md#eth_getfilterlogs) for public +contracts except there's no [automatic log bloom caching](../../../public-networks/reference/cli/options.md#auto-log-bloom-caching-enabled) +for private contracts. + +!!! note + + `priv_getFilterLogs` is only used for filters created with [`priv_newFilter`](#priv_newfilter). + To specify a filter object and get logs without creating a filter, use [`priv_getLogs`](#priv_getlogs). + +#### Parameters + +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/privacy/privacy-groups.md) + +* `filterId`: *string* - filter ID + +#### Returns + +`result`: *array* of *objects* - list of [log objects](../../../public-networks/reference/api/objects.md#log-object) + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc": "2.0","method": "priv_getFilterLogs","params":["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc": "2.0","method": "priv_getFilterLogs","params":["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": [ + { + "logIndex": "0x0", + "removed": false, + "blockNumber": "0x493", + "blockHash": "0xd9cb3a852e1e02c95f035a2e32d57f82c10cab61faa3e8f5c010adf979bb4786", + "transactionHash": "0x78866dc51fdf189d8cca74f6a8fe54f172348fbd2163bbe80fa8b106cfc7deb4", + "transactionIndex": "0x0", + "address": "0x991cc548c154b2953cc48c02f782e1314097dfbb", + "data": "0x", + "topics": [ + "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ] + }, + { + "logIndex": "0x0", + "removed": false, + "blockNumber": "0x4d0", + "blockHash": "0x1c8200667a869e99b945374c37277b5ee7a7ae67943e13c82563381387553dbb", + "transactionHash": "0xb1966b9b372ba68952f48f3a3e78f036f5ae82ceca2de972a782d07fb88f6d88", + "transactionIndex": "0x0", + "address": "0x991cc548c154b2953cc48c02f782e1314097dfbb", + "data": "0x", + "topics": [ + "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410", + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + } + ] + } + ``` + +### `priv_getLogs` + +Returns an array of [logs](../../../public-networks/concepts/events-and-logs.md) matching a specified filter object. + +For private contracts, `priv_getLogs` is the same as [`eth_getLogs`](../../../public-networks/reference/api/index.md#eth_getlogs) +for public contracts except there is no [automatic log bloom caching](../../../public-networks/reference/cli/options.md#auto-log-bloom-caching-enabled) +for private contracts. + +#### Parameters + +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/privacy/privacy-groups.md) + +* `filterOptions`: *object* - [filter options object](../../../public-networks/reference/api/objects.md#filter-options-object) + +#### Returns + +`result`: *array* of *objects* - list of [log objects](../../../public-networks/reference/api/objects.md#log-object) + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc": "2.0","method": "priv_getLogs","params":["vGy/TZgO6y8VPMVeJAQ99MF1NaTf5ohA3TFfzoEF71k=",{"fromBlock": "earliest","toBlock": "latest","addresses": ["0x630c507ff633312087dc33c513b66276abcd2fc3"],"topics": ["0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410"]}],"id": 1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc": "2.0","method": "priv_getLogs","params":["vGy/TZgO6y8VPMVeJAQ99MF1NaTf5ohA3TFfzoEF71k=",{"fromBlock": "earliest","toBlock": "latest","addresses": ["0x630c507ff633312087dc33c513b66276abcd2fc3"],"topics": ["0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410"]}],"id": 1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": [ + { + "logIndex": "0x0", + "removed": false, + "blockNumber": "0x342", + "blockHash": "0xf5954f068fa2f2f7741281e8c753a8e92047e27ab3c4971836d2c89fab86d92b", + "transactionHash": "0xa9ba5cffde9d4ad8997c5c4352d5d49eeea0e9def8a4ea69991b8837c49d4e4f", + "transactionIndex": "0x0", + "address": "0x630c507ff633312087dc33c513b66276abcd2fc3", + "data": "0x", + "topics": [ + "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ] + }, + { + "logIndex": "0x0", + "removed": false, + "blockNumber": "0x383", + "blockHash": "0x91b73a47d53e3a88d62ed091a89a4be7557ad91b552e7ff7d86bf78977d5d45d", + "transactionHash": "0xc2a185faf00e87434e55b7f70cc4c38be354c2128b4b96b5f5def0b54a2173ec", + "transactionIndex": "0x0", + "address": "0x630c507ff633312087dc33c513b66276abcd2fc3", + "data": "0x", + "topics": [ + "0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410", + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + } + ] + } + ``` + +### `priv_getPrivacyPrecompileAddress` + +Returns the address of the +[privacy precompiled contract](../../concepts/privacy/private-transactions/processing.md). +The address +is derived and based on the value of the +[`privacy-flexible-groups-enabled`](../cli/options.md#privacy-flexible-groups-enabled) option. + +#### Parameters + +None + +#### Returns + +`result`: *string* - address of the privacy precompile + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getPrivacyPrecompileAddress","params":[], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"priv_getPrivacyPrecompileAddress","params":[], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": "0x000000000000000000000000000000000000007e" + } + ``` + +### `priv_getPrivateTransaction` + +Returns the private transaction if you are a participant, otherwise, `null`. + +#### Parameters + +`transaction`: *string* - transaction hash returned by [`eea_sendRawTransaction`](#eea_sendrawtransaction) or +[`eea_sendTransaction`](https://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/#eea_sendtransaction). + +#### Returns + +`result`: *object* - [private transaction object](objects.md#private-transaction-object), or `null` if not +a participant in the private transaction + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getPrivateTransaction","params":["0x623c4ce5275a87b91f4f1c521012d39ca19311c787bde405490f4c0426a71498"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"priv_getPrivateTransaction","params":["0x623c4ce5275a87b91f4f1c521012d39ca19311c787bde405490f4c0426a71498"], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": { + "from": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas": "0x2dc6c0", + "gasPrice": "0x0", + "hash": "0x623c4ce5275a87b91f4f1c521012d39ca19311c787bde405490f4c0426a71498", + "input": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610221806100606000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633fa4f2451461005c5780636057361d1461008757806367e404ce146100b4575b600080fd5b34801561006857600080fd5b5061007161010b565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b506100b260048036038101908080359060200190929190505050610115565b005b3480156100c057600080fd5b506100c96101cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600254905090565b7fc9db20adedc6cf2b5d25252b101ab03e124902a73fcb12b753f3d1aaa2d8f9f53382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a18060028190555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058208efaf938851fb2d235f8bf9a9685f149129a30fe0f4b20a6c1885dc02f639eba0029", + "nonce": "0x0", + "to": null, + "value": "0x0", + "v": "0xfe8", + "r": "0x654a6a9663ca70bb13e27cca14b3777cc92da184e19a151cdeef2ccbbd5c6405", + "s": "0x5dd4667b020c8a5af7ae28d4c3126f8dcb1187f49dcf0de9d7a39b1651892eef", + "privateFrom": "negmDcN2P4ODpqn/6WkJ02zT/0w0bjhGpkZ8UP6vARk=", + "privateFor": [ + "g59BmTeJIn7HIcnq8VQWgyh/pDbvbt2eyP0Ii60aDDw=" + ], + "restriction": "restricted" + } + } + ``` + +### `priv_getTransactionCount` + +Returns the private transaction count for specified account and privacy group. + +!!! important + + If sending more than one transaction to be mined in the same block (that is, you are not + waiting for the transaction receipt), you must calculate the private transaction nonce outside + Besu instead of using `priv_getTransactionCount`. + +#### Parameters + +* `address`: *string* - account address + +* `privacyGroupId`: *string* - privacy group ID + +#### Returns + +`result`: *string* - integer representing the number of private transactions sent from the address to the +specified privacy group + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getTransactionCount","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "kAbelwaVW7okoEn1+okO+AbA4Hhz/7DaCOWVQz9nx5M="], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"priv_getTransactionCount","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "kAbelwaVW7okoEn1+okO+AbA4Hhz/7DaCOWVQz9nx5M="], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": "0x1" + } + ``` + +### `priv_getTransactionReceipt` + +Returns information about the private transaction after mining the transaction. Receipts for +pending transactions are not available. + +#### Parameters + +`transaction`: *string* - 32-byte hash of a transaction + +#### Returns + +`result`: *object* - [private Transaction receipt object](objects.md#private-transaction-receipt-object), +or `null` if no receipt found + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"priv_getTransactionReceipt","params":["0xf3ab9693ad92e277bf785e1772f29fb1864904bbbe87b0470455ddb082caab9d"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"priv_getTransactionReceipt","params":["0xf3ab9693ad92e277bf785e1772f29fb1864904bbbe87b0470455ddb082caab9d"],"id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": { + "blockHash": "0xe7212a92cfb9b06addc80dec2a0dfae9ea94fd344efeb157c41e12994fcad60a", + "blockNumber": "0x50", + "contractAddress": "0x493b76031593402e24e16faa81f677b58e2d53f3", + "from": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "logs": [], + "to": "0xf17f52151ebef6c7334fad080c5704d77216b732", + "transactionHash": "0x36219e92b5f53d4150aa9ef7d2d793118cced523de6724100da5b534e3ceb4b8", + "transactionIndex": "0x0", + "output": "0x6080604052600436106049576000357c010000000000000000000000000000000000000000000 + 0000000000000900463ffffffff1680633fa4f24514604e57806355241077146076575b600080fd5b3480156059 + 57600080fd5b50606060a0565b6040518082815260200191505060405180910390f35b348015608157600080fd5b + 50609e6004803603810190808035906020019092919050505060a6565b005b60005481565b8060008190555050560 + 0a165627a7a723058202bdbba2e694dba8fff33d9d0976df580f57bff0a40e25a46c398f8063b4c00360029", + "commitmentHash": "0x79b9e6b0856db398ad7dc208f15b1d38c0c0b0c5f99e4a443a2c5a85510e96a5", + "status": "0x1", + "privateFrom": "negmDcN2P4ODpqn/6WkJ02zT/0w0bjhGpkZ8UP6vARk=", + "privacyGroupId": "cD636RZlcqVSpoxT/ExbkWQfBO7kPAZO0QlWHErNSL8=", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } + } + ``` + +### `priv_newFilter` + +Creates a [log filter](../../../public-networks/concepts/events-and-logs.md) for a private contract. +To poll for logs associated with the created filter, use [`priv_getFilterChanges`](#priv_getfilterchanges). +To get all logs associated with the filter, use [`priv_getFilterLogs`](#priv_getfilterlogs). + +For private contracts, `priv_newFilter` is the same as [`eth_newFilter`](../../../public-networks/reference/api/index.md#eth_newfilter) +for public contracts. + +#### Parameters + +* `privacyGroupId`: *string* - 32-byte [privacy Group ID](../../concepts/privacy/privacy-groups.md) + +* `filterOptions`: *object* - [filter options object](../../../public-networks/reference/api/objects.md#filter-options-object) + +!!! note + + `fromBlock` and `toBlock` in the filter options object default to `latest`. + +#### Returns + +`result`: *string* - filter ID + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc": "2.0","method": "priv_newFilter","params": ["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=",{"fromBlock": "earliest","toBlock": "latest","addresses": ["0x991cc548c154b2953cc48c02f782e1314097dfbb"],"topics": ["0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410"]}],"id": 1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc": "2.0","method": "priv_newFilter","params": ["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=",{"fromBlock": "earliest","toBlock": "latest","addresses": ["0x991cc548c154b2953cc48c02f782e1314097dfbb"],"topics": ["0x85bea11d86cefb165374e0f727bacf21dc2f4ea816493981ecf72dcfb212a410"]}],"id": 1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": "0x4a35b92809d73f4f53a2355d62125442" + } + ``` + +### `priv_uninstallFilter` + +Uninstalls a filter for a private contract with the specified ID. When a filter is no longer required, +call this method. + +Filters time out when not requested by [`priv_getFilterChanges`](#priv_getfilterchanges) or +[`priv_getFilterLogs`](#priv_getfilterlogs) for 10 minutes. + +For private contracts, `priv_uninstallFilter` is the same as +[`eth_uninstallFilter`](../../../public-networks/reference/api/index.md#eth_uninstallfilter) +for public contracts. + +#### Parameters + +* `privacyGroupId`: *string* - 32-byte [privacy group ID](../../concepts/privacy/privacy-groups.md) + +* `filterId`: *string* - filter ID + +#### Returns + +`result`: *boolean* - indicates if the filter is successfully uninstalled + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc": "2.0","method": "priv_uninstallFilter","params":["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc": "2.0","method": "priv_uninstallFilter","params":["4rFldHM792LeP/e2WPkTXZedjwKuTr/KwCFTt6mBbkI=","0x4a35b92809d73f4f53a2355d62125442"],"id": 1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": true + } + ``` + +## `QBFT` methods + +The `QBFT` API methods provide access to the [QBFT](../../how-to/configure/consensus/qbft.md) consensus engine. + +!!! note + + The `QBFT` API methods are not enabled by default for JSON-RPC. To enable the `QBFT` API + methods, use the [`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) or + [`--rpc-ws-api`](../../../public-networks/reference/cli/options.md#rpc-ws-api) options. + +### `qbft_discardValidatorVote` + +Discards a proposal to +[add or remove a validator](../../how-to/configure/consensus/qbft.md#add-and-remove-validators) with +the specified address. + +#### Parameters + +`address`: *string* - 20-byte address of proposed validator + +#### Returns + +`result`: *boolean* - indicates if the proposal is discarded + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_discardValidatorVote","params":["0xef1bfb6a12794615c9b0b5a21e6741f01e570185"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"qbft_discardValidatorVote","params":["0xef1bfb6a12794615c9b0b5a21e6741f01e570185"], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 1, + "result" : true + } + ``` + +### `qbft_getPendingVotes` + +Returns [votes](../../how-to/configure/consensus/qbft.md#add-and-remove-validators) cast in the current +[epoch](../../how-to/configure/consensus/qbft.md#genesis-file). + +#### Parameters + +None + +#### Returns + +`result`: *map* of *strings* to *booleans* - map of account addresses to corresponding boolean values indicating the +vote for each account; if `true`, the vote is to add a validator. If `false`, the proposal is to +remove a validator. + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_getPendingVotes","params":[], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"qbft_getPendingVotes","params":[], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": { + "0xef1bfb6a12794615c9b0b5a21e6741f01e570185": true, + "0x42d4287eac8078828cf5f3486cfe601a275a49a5": true + } + } + ``` + +### `qbft_getSignerMetrics` + +Provides the following validator metrics for the specified range: + +* Number of blocks from each validator + +* Block number of the last block proposed by each validator (if any proposed in the specified + range) + +* All validators present in the last block of the range + +#### Parameters + +* `fromBlockNumber`: *string* - integer representing a block number or the string tag `earliest` as described + in [Block Parameter](../../../public-networks/how-to/use-besu-api/json-rpc.md#block-parameter) + +* `toBlockNumber`: *string* - integer representing a block number or one of the string tags `latest` or + `pending`, as described in + [Block Parameter](../../../public-networks/how-to/use-besu-api/json-rpc.md#block-parameter) + +If you specify: + +* No parameters, the call provides metrics for the last 100 blocks, or all blocks if there are less + than 100 blocks. + +* Only the first parameter, the call provides metrics for all blocks from the block specified to + the latest block. + +#### Returns + +`result`: *array* of *objects* - list of validator objects + +!!! note + + The proposer of the genesis block has address `0x0000000000000000000000000000000000000000`. + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_getSignerMetrics","params":["1", "100"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"qbft_getSignerMetrics","params":["1", "100"], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": [ + { + "address": "0x7ffc57839b00206d1ad20c69a1981b489f772031", + "proposedBlockCount": "0x21", + "lastProposedBlockNumber": "0x61" + }, + { + "address": "0x42eb768f2244c8811c63729a21a3569731535f06", + "proposedBlockCount": "0x21", + "lastProposedBlockNumber": "0x63" + }, + { + "address": "0xb279182d99e65703f0076e4812653aab85fca0f0", + "proposedBlockCount": "0x21", + "lastProposedBlockNumber": "0x62" + } + ] + } + ``` + +### `qbft_getValidatorsByBlockHash` + +Lists the validators defined in the specified block. + +#### Parameters + +`block`: *string* - 32-byte block hash + +#### Returns + +`result`: *array* of *strings* - list of validator addresses + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockHash","params":["0xbae7d3feafd743343b9a4c578cab5e5d65eb735f6855fb845c00cab356331256"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockHash","params":["0xbae7d3feafd743343b9a4c578cab5e5d65eb735f6855fb845c00cab356331256"], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": [ + "0x42d4287eac8078828cf5f3486cfe601a275a49a5", + "0xb1b2bc9582d2901afdc579f528a35ca41403fa85", + "0xef1bfb6a12794615c9b0b5a21e6741f01e570185" + ] + } + ``` + +### `qbft_getValidatorsByBlockNumber` + +Lists the validators defined in the specified block. + +#### Parameters + +* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, + `earliest`, or `pending`, as described in + [Block Parameter](../../../public-networks/how-to/use-besu-api/json-rpc.md#block-parameter) + +#### Returns + +`result`: *array* of *strings* - list of validator addresses + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockNumber","params":["latest"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockNumber","params":["latest"], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": [ + "0x42d4287eac8078828cf5f3486cfe601a275a49a5", + "0xb1b2bc9582d2901afdc579f528a35ca41403fa85", + "0xef1bfb6a12794615c9b0b5a21e6741f01e570185" + ] + } + ``` + +### `qbft_proposeValidatorVote` + +Proposes to +[add or remove a validator](../../how-to/configure/consensus/qbft.md#add-and-remove-validators) with +the specified address. + +#### Parameters + +* `address`: *string* - account address + +* `proposal`: *boolean* - `true` to propose adding validator or `false` to propose removing validator + +#### Returns + +`result`: *boolean* - `true` + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_proposeValidatorVote","params":["42d4287eac8078828cf5f3486cfe601a275a49a5",true], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"qbft_proposeValidatorVote","params":["42d4287eac8078828cf5f3486cfe601a275a49a5",true], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 1, + "result" : true + } + ``` + + +[add or remove a signer with the specified address]: ../../how-to/configure/consensus/clique.md#add-and-remove-signers +[signers for the specified block]: ../../how-to/configure/consensus/clique.md#adding-and-removing-signers +[add or remove a validator]: ../../how-to/configure/consensus/ibft.md#add-and-remove-validators +[permissions configuration file]: ../../how-to/use-permissioning/local.md#permissions-configuration-file +[group of sender and recipients]: ../../concepts/privacy/privacy-groups.md#enterprise-ethereum-alliance-privacy + +*[EEA]: Enterprise Ethereum Alliance diff --git a/docs/private-networks/reference/api/objects.md b/docs/private-networks/reference/api/objects.md index 9f19335583f..0899a004330 100644 --- a/docs/private-networks/reference/api/objects.md +++ b/docs/private-networks/reference/api/objects.md @@ -1 +1,56 @@ -{!global/reference/api/objects.md!} +--- +description: Hyperledger Besu private network API objects reference +--- + +# Private network API objects + +The following objects are parameters for or returned by Besu private network API methods. + +!!! attention + + This reference contains API objects that apply to only private networks. + For API objects that apply to both private and public networks, see the + [public network API objects reference](../../../public-networks/reference/api/objects.md). + +## Private transaction object + +Returned by [`priv_getPrivateTransaction`](index.md#priv_getprivatetransaction). + +| Key | Type | Value | +|-----|:----:|-------| +| **from** | Data, 20 bytes | Address of the sender. | +| **gas** | Quantity | Gas provided by the sender. | +| **gasPrice** | Quantity | Gas price, in Wei, provided by the sender. | +| **input** | Data | The data to create or invoke a contract. | +| **nonce** | Quantity | Number of transactions made by the sender to the privacy group before this one. | +| **to** | Data, 20 bytes | `null` if a contract creation transaction, otherwise, the contract address. | +| **value** | Quantity | `null` because private transactions cannot transfer Ether. | +| **v** | Quantity | ECDSA Recovery ID. | +| **r** | Data, 32 bytes | ECDSA signature r. | +| **s** | Data, 32 bytes | ECDSA signature s. | +| **privateFrom** | Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) public key of the sender. | +| **privateFor** | Array of Data, 32 bytes each | [Tessera](https://docs.tessera.consensys.net/) public keys of recipients. Not returned if using `privacyGroupId` to [send the transaction](../../../private-networks/concepts/privacy/privacy-groups.md#privacy-types). | +| **privacyGroupId** | Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) privacy group ID of recipients. Not returned if using `privateFor` to [send the transaction](../../../private-networks/concepts/privacy/privacy-groups.md#privacy-types). | +| **restriction** | String | Must be [`restricted`](../../../private-networks/concepts/privacy/private-transactions/index.md). | + +## Private transaction receipt object + +Returned by [`priv_getTransactionReceipt`](index.md#priv_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 a contract creation transaction, otherwise, `null`. A failed contract creation transaction still produces a contract address value. | +| **from** | Data, 20 bytes | Address of the sender. | +| **logs** | Array | Array of [log objects](#log-object) generated by this private transaction. | +| **to** | Data, 20 bytes | Address of the receiver, if sending ether, otherwise, null. | +| **transactionIndex** | Quantity, Integer | Index position of transaction in the block. | +| **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). | +| **output** | Data | RLP-encoded return value of a contract call if a value returns, otherwise, `null`. | +| **commitmentHash** | Data, 32 bytes | Hash of the privacy marker transaction. | +| **status** | Quantity | Either `0x1` (success) or `0x0` (failure). | +| **privateFrom** | Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) public key of the sender. | +| **privateFor** or **privacyGroupId** | Array or Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) public keys or privacy group ID of the recipients. | +| **logsBloom** | Data, 256 bytes | Bloom filter for light clients to quickly retrieve related logs. | + diff --git a/docs/private-networks/reference/cli/options.md b/docs/private-networks/reference/cli/options.md index c9f014da406..86b93eeaf1f 100644 --- a/docs/private-networks/reference/cli/options.md +++ b/docs/private-networks/reference/cli/options.md @@ -1 +1,640 @@ -{!global/reference/cli/options.md!} +--- +description: Hyperledger Besu private networks CLI reference +--- + +# Private network command line options + +This reference describes the syntax of the Hyperledger Besu private network command line interface +(CLI) options. + +!!! attention + + This reference contains options that apply to only private networks. + For options that apply to both private and public networks, see the + [public network options reference](../../../public-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/configuration-file.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 +``` + +## Options + +### `permissions-accounts-config-file` + +=== "Syntax" + + ```bash + --permissions-accounts-config-file= + ``` + +=== "Example" + + ```bash + --permissions-accounts-config-file=/home/me/me_configFiles/myPermissionsFile + ``` + +=== "Environment variable" + + ```bash + BESU_PERMISSIONS_ACCOUNTS_CONFIG_FILE=/home/me/me_configFiles/myPermissionsFile + ``` + +=== "Configuration file" + + ```bash + permissions-accounts-config-file="/home/me/me_configFiles/myPermissionsFile" + ``` + +The [accounts permissions configuration file]. The default is the `permissions_config.toml` file in +the [data directory](../../../public-networks/reference/cli/options.md#data-path). + +!!! tip + + `--permissions-accounts-config-file` and + [`--permissions-nodes-config-file`](#permissions-nodes-config-file) can use the same file. + +### `permissions-accounts-config-file-enabled` + +=== "Syntax" + + ```bash + --permissions-accounts-config-file-enabled[=] + ``` + +=== "Example" + + ```bash + --permissions-accounts-config-file-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_PERMISSIONS_ACCOUNTS_CONFIG_FILE_ENABLED=true + ``` + +=== "Configuration file" + + ```bash + permissions-accounts-config-file-enabled=true + ``` + +Enables or disables file-based account level permissions. The default is `false`. + +### `permissions-accounts-contract-address` + +=== "Syntax" + + ```bash + --permissions-accounts-contract-address= + ``` + +=== "Example" + + ```bash + --permissions-accounts-contract-address=xyz + ``` + +=== "Environment variable" + + ```bash + BESU_PERMISSIONS_ACCOUNTS_CONTRACT_ADDRESS=xyz + ``` + +=== "Configuration file" + + ```bash + permissions-accounts-contract-address=xyz + ``` + +The contract address for +[onchain account permissioning](../../concepts/permissioning/onchain.md). + +### `permissions-accounts-contract-enabled` + +=== "Syntax" + + ```bash + --permissions-accounts-contract-enabled[=] + ``` + +=== "Example" + + ```bash + --permissions-accounts-contract-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_PERMISSIONS_ACCOUNTS_CONTRACT_ENABLED=true + ``` + +=== "Configuration file" + + ```bash + permissions-accounts-contract-enabled=true + ``` + +Enables or disables contract-based +[onchain account permissioning](../../concepts/permissioning/onchain.md). The default +is `false`. + +### `permissions-nodes-config-file` + +=== "Syntax" + + ```bash + --permissions-nodes-config-file= + ``` + +=== "Example" + + ```bash + --permissions-nodes-config-file=/home/me/me_configFiles/myPermissionsFile + ``` + +=== "Environment variable" + + ```bash + BESU_PERMISSIONS_NODES_CONFIG_FILE=/home/me/me_configFiles/myPermissionsFile + ``` + +=== "Configuration file" + + ```bash + permissions-nodes-config-file="/home/me/me_configFiles/myPermissionsFile" + ``` + +The [nodes permissions configuration file]. The default is the `permissions_config.toml` file in +the [data directory](../../../public-networks/reference/cli/options.md#data-path). + +!!! tip + + `--permissions-nodes-config-file` and + [`--permissions-accounts-config-file`](#permissions-accounts-config-file) can use the same + file. + +### `permissions-nodes-config-file-enabled` + +=== "Syntax" + + ```bash + --permissions-nodes-config-file-enabled[=] + ``` + +=== "Example" + + ```bash + --permissions-nodes-config-file-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_PERMISSIONS_NODES_CONFIG_FILE_ENABLED=true + ``` + +=== "Configuration file" + + ```bash + permissions-nodes-config-file-enabled=true + ``` + +Enables or disables file-based node level permissions. The default is `false`. + +### `permissions-nodes-contract-address` + +=== "Syntax" + + ```bash + --permissions-nodes-contract-address= + ``` + +=== "Example" + + ```bash + --permissions-nodes-contract-address=xyz + ``` + +=== "Environment variable" + + ```bash + BESU_PERMISSIONS_NODES_CONTRACT_ADDRESS=xyz + ``` + +=== "Configuration file" + + ```bash + permissions-nodes-contract-address=xyz + ``` + +The contract address for +[onchain node permissioning](../../concepts/permissioning/onchain.md). + +### `permissions-nodes-contract-enabled` + +=== "Syntax" + + ```bash + --permissions-nodes-contract-enabled[=] + ``` + +=== "Example" + + ```bash + --permissions-nodes-contract-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_PERMISSIONS_NODES_CONTRACT_ENABLED=true + ``` + +=== "Configuration file" + + ```bash + permissions-nodes-contract-enabled=true + ``` + +Enables or disables contract-based +[onchain node permissioning](../../concepts/permissioning/onchain.md). The default is +`false`. + +### `permissions-nodes-contract-version` + +=== "Syntax" + + ```bash + --permissions-nodes-contract-version= + ``` + +=== "Example" + + ```bash + --permissions-nodes-contract-version=2 + ``` + +=== "Environment variable" + + ```bash + BESU_PERMISSIONS_NODES_CONTRACT_VERSION=2 + ``` + +=== "Configuration file" + + ```bash + permissions-nodes-contract-version=2 + ``` + +Version of the EEA [node permissioning interface](../../how-to/use-permissioning/onchain.md#specify-the-permissioning-contract-interface-version). +The default is 1. + +### `privacy-enabled` + +=== "Syntax" + + ```bash + --privacy-enabled[=] + ``` + +=== "Example" + + ```bash + --privacy-enabled=false + ``` + +=== "Environment variable" + + ```bash + BESU_PRIVACY_ENABLED=false + ``` + +=== "Configuration file" + + ```bash + privacy-enabled=false + ``` + +Enables or disables [private transactions](../../concepts/privacy/index.md). The default +is `false`. + +!!! important + + Using private transactions with [pruning](../../../public-networks/concepts/data-storage-formats.md) + or [fast sync](../../../public-networks/reference/cli/options.md#sync-mode) is not supported. + +### `privacy-marker-transaction-signing-key-file` + +=== "Syntax" + + ```bash + --privacy-marker-transaction-signing-key-file= + ``` + +=== "Example" + + ```bash + --privacy-marker-transaction-signing-key-file=/home/me/me_node/myPrivateKey + ``` + +=== "Environment variable" + + ```bash + BESU_PRIVACY_MARKER_TRANSACTION_SIGNING_KEY_FILE=/home/me/me_node/myPrivateKey + ``` + +=== "Configuration file" + + ```bash + privacy-marker-transaction-signing-key-file="/home/me/me_node/myPrivateKey" + ``` + +`` is the name of the private key file used to +[sign privacy marker transactions](../../how-to/use-privacy/sign-pmts.md). + +!!! note + + This can be the same file used by [`--node-private-key-file`](../../../public-networks/reference/cli/options.md#node-private-key-file), + or a different key file to identify who signed the privacy marker transaction. + +You must specify this option if you're using: + +* a privacy network where you pay gas. Also, the associated account must contain adequate funds. +* [account permissioning] and privacy. You must include the corresponding public key in the + accounts allowlist. + +If you do not specify this option (for example, in a free gas network), Besu signs each transaction +with a different randomly generated key. + +### `privacy-multi-tenancy-enabled` + +=== "Syntax" + + ```bash + --privacy-multi-tenancy-enabled[=] + ``` + +=== "Example" + + ```bash + --privacy-multi-tenancy-enabled=false + ``` + +=== "Environment variable" + + ```bash + BESU_PRIVACY_MULTI_TENANCY_ENABLED=false + ``` + +=== "Configuration file" + + ```bash + privacy-multi-tenancy-enabled=false + ``` + +Enables or disables [multi-tenancy](../../concepts/privacy/multi-tenancy.md) for private +transactions. The default is `false`. + +### `privacy-flexible-groups-enabled` + +=== "Syntax" + + ```bash + --privacy-flexible-groups-enabled[=] + ``` + +=== "Example" + + ```bash + --privacy-flexible-groups-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_PRIVACY_FLEXIBLE_GROUPS_ENABLED=true + ``` + +=== "Configuration file" + + ```bash + privacy-flexible-groups-enabled=true + ``` + +Enables or disables [flexible privacy groups](../../concepts/privacy/flexible-privacy.md). The default is `false`. + +Deprecated syntax for this option is `--privacy-onchain-groups-enabled`. + +### `privacy-public-key-file` + +=== "Syntax" + + ```bash + --privacy-public-key-file= + ``` + +=== "Example" + + ```bash + --privacy-public-key-file=Tessera/nodeKey.pub + ``` + +=== "Environment variable" + + ```bash + BESU_PRIVACY_PUBLIC_KEY_FILE=Tessera/nodeKey.pub + ``` + +=== "Configuration file" + + ```bash + privacy-public-key-file="Tessera/nodeKey.pub" + ``` + +The [public key of the Tessera node](https://docs.tessera.consensys.net/). + +!!! important + + You cannot specify `privacy-public-key-file` when + [`--privacy-multi-tenancy-enabled`](#privacy-multi-tenancy-enabled) is `true` + +### `privacy-tls-enabled` + +=== "Syntax" + + ```bash + --privacy-tls-enabled[=] + ``` + +=== "Example" + + ```bash + --privacy-tls-enabled=false + ``` + +=== "Environment variable" + + ```bash + BESU_PRIVACY_TLS_ENABLED=false + ``` + +=== "Configuration file" + + ```bash + privacy-tls-enabled=false + ``` + +Enables or disables [TLS on communication with the private transaction manager]. The default is +false. + +### `privacy-tls-keystore-file` + +=== "Syntax" + + ```bash + --privacy-tls-keystore-file= + ``` + +=== "Example" + + ```bash + --privacy--keystore-file=/home/me/me_node/key + ``` + +=== "Environment variable" + + ```bash + BESU_PRIVACY_TLS_KEYSTORE_FILE=/home/me/me_node/key + ``` + +=== "Configuration file" + + ```bash + privacy-tls-keystore-file="/home/me/me_node/key" + ``` + +The keystore file (in PKCS #12 format) containing the private key and the certificate presented +during authentication. + +You must specify `privacy-tls-keystore-file` if [`--privacy-tls-enabled`](#privacy-tls-enabled) is +`true`. + +### `privacy-tls-keystore-password-file` + +=== "Syntax" + + ```bash + --privacy-tls-keystore-password-file= + ``` + +=== "Example" + + ```bash + --privacy-tls-keystore-password-file=/home/me/me_node/password + ``` + +=== "Environment variable" + + ```bash + BESU_PRIVACY_TLS_KEYSTORE_PASSWORD_FILE=/home/me/me_node/password + ``` + +=== "Configuration file" + + ```bash + privacy-tls-keystore-password-file="/home/me/me_node/password" + ``` + +The path to the file containing the password to decrypt the keystore. + +### `privacy-tls-known-enclave-file` + +=== "Syntax" + + ```bash + --privacy-tls-known-enclave-file= + ``` + +=== "Example" + + ```bash + --privacy-tls-known-enclave-file=/home/me/me_node/knownEnclave + ``` + +=== "Environment variable" + + ```bash + BESU_PRIVACY_TLS_KNOWN_ENCLAVE_FILE=/home/me/me_node/knownEnclave + ``` + +=== "Configuration file" + + ```bash + privacy-tls-known-enclave-file="/home/me/me_node/knownEnclave" + ``` + +The path to the file containing the hostnames, ports, and SHA256 certificate fingerprints of the +[authorized privacy enclave](../../how-to/configure/tls/client-and-server.md#create-the-known-servers-file). + +### `privacy-url` + +=== "Syntax" + + ```bash + --privacy-url= + ``` + +=== "Example" + + ```bash + --privacy-url=http://127.0.0.1:8888 + ``` + +=== "Environment variable" + + ```bash + BESU_PRIVACY_URL=http://127.0.0.1:8888 + ``` + +=== "Configuration file" + + ```bash + privacy-url="http://127.0.0.1:8888" + ``` + +The URL on which the +[Tessera node](../../tutorials/privacy/index.md#3-create-tessera-configuration-files) is +running. + + +[accounts permissions configuration file]: ../../how-to/use-permissioning/local.md#permissions-configuration-file +[nodes permissions configuration file]: ../../how-to/use-permissioning/local.md#permissions-configuration-file +[account permissioning]: ../../concepts/permissioning/index.md#account-permissioning +[TLS on communication with the private transaction manager]: ../../concepts/privacy/index.md#private-transaction-manager diff --git a/docs/private-networks/reference/cli/subcommands.md b/docs/private-networks/reference/cli/subcommands.md index 8b3bba39ebe..61361ae3e8a 100644 --- a/docs/private-networks/reference/cli/subcommands.md +++ b/docs/private-networks/reference/cli/subcommands.md @@ -1 +1,139 @@ -{!global/reference/cli/subcommands.md!} +--- +description: Hyperledger Besu command line interface subcommands +--- + +# Private network subcommands + +This reference describes the syntax of the Hyperledger Besu private network command line interface +(CLI) subcommands. + +!!! attention + + This reference contains subcommands that apply to only private networks. + For subcommands that apply to both private and public networks, see the + [public network subcommands reference](../../../public-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 +``` + +## `operator` + +Provides operator actions. + +### `generate-blockchain-config` + +=== "Syntax" + + ```bash + besu operator generate-blockchain-config --config-file= --to= [--genesis-file-name=] [--private-key-file-name=] [--public-key-file-name=] + ``` + +=== "Example" + + ```bash + besu operator generate-blockchain-config --config-file=config.json --to=myNetworkFiles + ``` +Generates an +[IBFT 2.0](../../how-to/configure/consensus/ibft.md#genesis-file) or +[QBFT](../../how-to/configure/consensus/qbft.md#genesis-file) genesis file. + +The configuration file has two nested JSON nodes. +The first is the `genesis` property defining the IBFT 2.0 or QBFT genesis file, except for the +`extraData` string. +The second is the `blockchain` property defining the number of key pairs to generate. + +## `rlp` + +Provides RLP related actions. + +### `encode` + +=== "Syntax" + + ```bash + besu rlp encode [--from=] [--to=] [--type=] + ``` + +=== "File example" + + ```bash + besu rlp encode --from=ibft_extra_data.json --to=extra_data_for_ibft_genesis.txt --type=IBFT_EXTRA_DATA + ``` + +=== "Standard input/output example" + + ```bash + cat extra_data.json | besu rlp encode > rlp.txt + ``` + +Encodes the RLP hexadecimal string for use in an [IBFT 2.0](../../how-to/configure/consensus/ibft.md#genesis-file) +or [QBFT](../../how-to/configure/consensus/qbft.md#genesis-file) genesis file. +The default type is `IBFT_EXTRA_DATA`. + +Supported types are: + +* `IBFT_EXTRA_DATA` - The IBFT 2.0 genesis file includes the `IBFT_EXTRA_DATA` type in the + [`extraData`](../../how-to/configure/consensus/ibft.md#extra-data) property. + +* `QBFT_EXTRA_DATA` - The QBFT genesis file includes the `QBFT_EXTRA_DATA` type in the + [`extraData`](../../how-to/configure/consensus/qbft.md#extra-data) property. + +???+ summary "IBFT 2.0 extra data" + + To generate the RLP encoded `extraData` string, specify a JSON input that is an array of + validator addresses in ascending order. + + ??? tip "JSON Schema for IBFT_EXTRA_DATA" + + Use the following JSON Schema to validate that your JSON data is well formed. + To validate your JSON content, use an online validation tool, such as + [JSON Schema Validator](https://www.jsonschemavalidator.net/). + + ```json + { + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "http://org.hyperledger.besu/cli_rlp_ibft_extra_data.json", + "type": "array", + "definitions": {}, + "title": "IBFT extra data", + "description":"JSON format used as input to generate an IBFT extra data RLP string", + "items": { + "$id": "#/address", + "type": "string", + "title": "Validator address", + "description":"The validator node address", + "default": "", + "examples": [ + "be068f726a13c8d46c44be6ce9d275600e1735a4", + "5ff6f4b66a46a2b2310a6f3a93aaddc0d9a1c193" + ], + "pattern":"^([0-9a-f]{40})$" + } + } + ``` + + !!! example "Example IBFT_EXTRA_DATA encoding" + + === "JSON input" + + ```json + [ + "be068f726a13c8d46c44be6ce9d275600e1735a4", + "5ff6f4b66a46a2b2310a6f3a93aaddc0d9a1c193" + ] + ``` + + === "RLP output" + + ``` + 0xf853a00000000000000000000000000000000000000000000000000000000000000000ea94be068f726a13c8d46c44be6ce9d275600e1735a4945ff6f4b66a46a2b2310a6f3a93aaddc0d9a1c193808400000000c0 + ``` diff --git a/docs/private-networks/reference/disclosure.md b/docs/private-networks/reference/disclosure.md deleted file mode 100644 index 2b3e8710985..00000000000 --- a/docs/private-networks/reference/disclosure.md +++ /dev/null @@ -1 +0,0 @@ -{!global/reference/disclosure.md!} diff --git a/docs/private-networks/reference/evm-tool.md b/docs/private-networks/reference/evm-tool.md deleted file mode 100644 index 37560ee6349..00000000000 --- a/docs/private-networks/reference/evm-tool.md +++ /dev/null @@ -1 +0,0 @@ -{!global/reference/evm-tool.md!} diff --git a/docs/private-networks/reference/genesis-items.md b/docs/private-networks/reference/genesis-items.md deleted file mode 100644 index c19fa7018b2..00000000000 --- a/docs/private-networks/reference/genesis-items.md +++ /dev/null @@ -1 +0,0 @@ -{!global/reference/genesis-items.md!} diff --git a/docs/private-networks/reference/index.md b/docs/private-networks/reference/index.md new file mode 100644 index 00000000000..60b8f6f8e47 --- /dev/null +++ b/docs/private-networks/reference/index.md @@ -0,0 +1,22 @@ +--- +description: private networks reference overview +--- + +# Reference + +This section provides reference material for private network features. + +The following features and resources are shared with [public networks](../../public-networks/index.md) +and the content can be found in the public networks section: + +- Besu command line: + - [Standard options](../../public-networks/reference/cli/options.md) + - [Standard subcommands](../../public-networks/reference/cli/subcommands.md) +- Besu API: + - [Standard Besu API methods](../../public-networks/reference/api/index.md) + - [Standard Besu API objects](../../public-networks/reference/api/objects.md) +- [Genesis file items](../../public-networks/reference/genesis-items.md) +- [EVM tool options](../../public-networks/reference/evm-tool.md) +- [Transaction trace types](../../public-networks/reference/trace-types.md) +- [Projects using Besu](../../public-networks/reference/projects-using-besu.md) +- [Security disclosure policy](../../public-networks/reference/disclosure.md) diff --git a/docs/private-networks/reference/projects-using-besu.md b/docs/private-networks/reference/projects-using-besu.md deleted file mode 100644 index 3c77731158a..00000000000 --- a/docs/private-networks/reference/projects-using-besu.md +++ /dev/null @@ -1 +0,0 @@ -{!global/reference/projects-using-besu.md!} diff --git a/docs/private-networks/reference/trace-types.md b/docs/private-networks/reference/trace-types.md deleted file mode 100644 index 56c97baf60d..00000000000 --- a/docs/private-networks/reference/trace-types.md +++ /dev/null @@ -1 +0,0 @@ -{!global/reference/trace-types.md!} diff --git a/docs/private-networks/tutorials/clique.md b/docs/private-networks/tutorials/clique.md index 72507285fc6..a81df6cb94a 100644 --- a/docs/private-networks/tutorials/clique.md +++ b/docs/private-networks/tutorials/clique.md @@ -24,7 +24,7 @@ Listed on the right-hand side of the page are the steps to create a private netw ### 1. Create directories Each node requires a data directory for the blockchain data. When the node starts, Besu saves the -[node key](../../global/concepts/node-keys.md) in this directory. +[node key](../../public-networks/concepts/node-keys.md) in this directory. Create directories for your private network, each of the three nodes, and a data directory for each node: @@ -46,7 +46,7 @@ file. For this Clique network, we'll use Node-1 as the initial signer. This requ address for Node-1. To get the address for Node-1, in the `Node-1` directory, use the -[`public-key export-address`](../../global/reference/cli/subcommands.md#export-address) subcommand to +[`public-key export-address`](../../public-networks/reference/cli/subcommands.md#export-address) subcommand to write the node address to the specified file (`node1Address` in this example). === "MacOS" @@ -154,15 +154,15 @@ Start Node-1: The command line enables: * The JSON-RPC API using the - [`--rpc-http-enabled`](../../global/reference/cli/options.md#rpc-http-enabled) option + [`--rpc-http-enabled`](../../public-networks/reference/cli/options.md#rpc-http-enabled) option * The ETH, NET, and CLIQUE APIs using the - [`--rpc-http-api`](../../global/reference/cli/options.md#rpc-http-api) option + [`--rpc-http-api`](../../public-networks/reference/cli/options.md#rpc-http-api) option * All-host access to the HTTP JSON-RPC API using the - [`--host-allowlist`](../../global/reference/cli/options.md#host-allowlist) option + [`--host-allowlist`](../../public-networks/reference/cli/options.md#host-allowlist) option * All-domain access to the node through the HTTP JSON-RPC API using the - [`--rpc-http-cors-origins`](../../global/reference/cli/options.md#rpc-http-cors-origins) option + [`--rpc-http-cors-origins`](../../public-networks/reference/cli/options.md#rpc-http-cors-origins) option -When the node starts, the [enode URL](../../global/concepts/node-keys.md#enode-url) displays. +When the node starts, the [enode URL](../../public-networks/concepts/node-keys.md#enode-url) displays. Copy the enode URL to specify Node-1 as the bootnode in the following steps. ![Node 1 Enode URL](../../images/EnodeStartup.png) @@ -187,13 +187,13 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * A different port to Node-1 for P2P discovery using the - [`--p2p-port`](../../global/reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../public-networks/reference/cli/options.md#p2p-port) option. * A different port to Node-1 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../global/reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../public-networks/reference/cli/options.md#rpc-http-port) option. * The enode URL of Node-1 using the - [`--bootnodes`](../../global/reference/cli/options.md#bootnodes) option. + [`--bootnodes`](../../public-networks/reference/cli/options.md#bootnodes) option. * The data directory for Node-2 using the - [`--data-path`](../../global/reference/cli/options.md#data-path) option. + [`--data-path`](../../public-networks/reference/cli/options.md#data-path) option. * Other options as for [Node-1](#5-start-first-node-as-bootnode). ### 6. Start Node-3 @@ -216,18 +216,18 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * A different port to Node-1 and Node-2 for P2P discovery using the - [`--p2p-port`](../../global/reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../public-networks/reference/cli/options.md#p2p-port) option. * A different port to Node-1 and Node-2 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../global/reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../public-networks/reference/cli/options.md#rpc-http-port) option. * The data directory for Node-3 using the - [`--data-path`](../../global/reference/cli/options.md#data-path) option. + [`--data-path`](../../public-networks/reference/cli/options.md#data-path) option. * The bootnode as for [Node-2](#5-start-node-2). * Other options as for [Node-1](#4-start-the-first-node-as-the-bootnode). ### 7. Confirm the private network is working Start another terminal, use curl to call the JSON-RPC API -[`net_peerCount`](../../global/reference/api/index.md#net_peercount) method and confirm the nodes are +[`net_peerCount`](../../public-networks/reference/api/index.md#net_peercount) method and confirm the nodes are functioning as peers: ```bash diff --git a/docs/private-networks/tutorials/contracts/index.md b/docs/private-networks/tutorials/contracts/index.md index 17595ec5dca..e7e7400bb54 100644 --- a/docs/private-networks/tutorials/contracts/index.md +++ b/docs/private-networks/tutorials/contracts/index.md @@ -30,7 +30,7 @@ smart contract as an example, create a new file called `compile.js` with the fol ```js const fs = require('fs').promises; const solc = require('solc'); - + async function main() { // Load the contract source code const sourceCode = await fs.readFile('SimpleStorage.sol', 'utf8'); @@ -40,7 +40,7 @@ smart contract as an example, create a new file called `compile.js` with the fol const artifact = JSON.stringify({ abi, bytecode }, null, 2); await fs.writeFile('SimpleStorage.json', artifact); } - + function compile(sourceCode, contractName) { // Create the Solidity Compiler Standard Input and Output JSON const input = { @@ -56,7 +56,7 @@ smart contract as an example, create a new file called `compile.js` with the fol bytecode: artifact.evm.bytecode.object, }; } - + main().then(() => process.exit(0)); ``` @@ -85,7 +85,7 @@ The Developer Quickstart provides an [example of a public transaction script](ht // use an existing account, or make an account const privateKey = "0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63"; const account = web3.eth.accounts.privateKeyToAccount(privateKey); - + // read in the contracts const contractJsonPath = path.resolve(__dirname, 'SimpleStorage.json'); const contractJson = JSON.parse(fs.readFileSync(contractJsonPath)); @@ -94,10 +94,10 @@ The Developer Quickstart provides an [example of a public transaction script](ht const contractBin = fs.readFileSync(contractBinPath); // initialize the default constructor with a value `47 = 0x2F`; this value is appended to the bytecode const contractConstructorInit = "000000000000000000000000000000000000000000000000000000000000002F"; - + // get txnCount for the nonce value const txnCount = await web3.eth.getTransactionCount(account.address); - + const rawTxOptions = { nonce: web3.utils.numberToHex(txnCount), from: account.address, @@ -152,7 +152,7 @@ Refer to the [EthSigner documentation](https://docs.ethsigner.consensys.net/) fo Pass the following parameters to the [`eth_sendTransaction`](https://docs.ethsigner.consensys.net/Reference/API-Methods/#eth_sendtransaction) call to EthSigner; EthSigner then converts the request to an -[`eth_sendRawTransaction`](../../../global/reference/api/index.md#eth_sendrawtransaction) call that Besu uses: +[`eth_sendRawTransaction`](../../../public-networks/reference/api/index.md#eth_sendrawtransaction) call that Besu uses: * `to` - address of the receiver. To deploy a contract, set to `null`. * `from` - address of the sender account. For example `0x9b790656b9ec0db1936ed84b3bea605873558198`. @@ -188,7 +188,7 @@ Make the request using `eth_sendTransaction`: To deploy a private contract to another node or [privacy group](../../concepts/privacy/privacy-groups.md) member, use the [web3js-quorum](https://www.npmjs.com/package/web3js-quorum) library and -the [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction) API call. +the [`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction) API call. You must use this API call instead of [`eth_sendTransaction`](https://ethereum.github.io/execution-apis/api-documentation) because Hyperledger Besu keeps account management separate for stronger security. @@ -206,15 +206,15 @@ by running the following commands in a JavaScript console, or by including them ```js const Web3 = require('web3'); const Web3Quorum = require('web3js-quorum'); - + const bytecode="608060405234801561001057600080fd5b5060405161014d38038061014d8339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806000819055505060f38061005a6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c80632a1afcd914604157806360fe47b114605d5780636d4ce63c146088575b600080fd5b604760a4565b6040518082815260200191505060405180910390f35b608660048036036020811015607157600080fd5b810190808035906020019092919050505060aa565b005b608e60b4565b6040518082815260200191505060405180910390f35b60005481565b8060008190555050565b6000805490509056fea2646970667358221220e6966e446bd0af8e6af40eb0d8f323dd02f771ba1f11ae05c65d1624ffb3c58264736f6c63430007060033"; // initialize the default constructor with a value `47 = 0x2F`; this value is appended to the bytecode const contractConstructorInit = "000000000000000000000000000000000000000000000000000000000000002F"; - + const chainId = 1337; const web3 = new Web3(clientUrl); const web3quorum = new Web3Quorum(web3, chainId); - + const txOptions = { data: '0x'+bytecode+contractConstructorInit, privateKey: fromPrivateKey, @@ -224,7 +224,7 @@ by running the following commands in a JavaScript console, or by including them console.log("Creating contract..."); const txHash = await web3quorum.priv.generateAndSendRawTransaction(txOptions); console.log("Getting contractAddress from txHash: ", txHash); - + const privateTxReceipt = await web3quorum.priv.waitForTransactionReceipt(txHash); console.log("Private Transaction Receipt: ", privateTxReceipt); return privateTxReceipt; @@ -244,10 +244,10 @@ the contract's address. This example doesn't use a privacy group and makes a simple node-to-node transaction. To use a privacy group: - + * Create the privacy group using the public keys of the nodes in the group. * Specify the `privacyGroupId` instead of the `privateFor` option in the txOptions above and then send the transaction. - + The Developer Quickstart provides an [example of a private transaction with a privacy group](https://github.com/ConsenSys/quorum-dev-quickstart/blob/b72a0f64d685c851bf8be399a8e33bbdf0e09982/files/besu/smart_contracts/privacy/scripts/private_tx_privacy_group.js). @@ -260,7 +260,7 @@ the contract's address. To deploy a private contract to another [privacy group](../../concepts/privacy/privacy-groups.md) member, use the [web3js-quorum](https://consensys.github.io/web3js-quorum/latest/index.html) library and -the [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction) API call. +the [`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction) API call. You must use this API call instead of [`eth_sendTransaction`](https://ethereum.github.io/execution-apis/api-documentation) because Hyperledger Besu keeps account management separate for stronger security. @@ -277,11 +277,11 @@ Use `eea_sendRawTransaction` by running the following commands in a JavaScript c ```js const Web3 = require('web3'); const EEAClient = require('web3-eea'); - + const bytecode="608060405234801561001057600080fd5b5060405161014d38038061014d8339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806000819055505060f38061005a6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c80632a1afcd914604157806360fe47b114605d5780636d4ce63c146088575b600080fd5b604760a4565b6040518082815260200191505060405180910390f35b608660048036036020811015607157600080fd5b810190808035906020019092919050505060aa565b005b608e60b4565b6040518082815260200191505060405180910390f35b60005481565b8060008190555050565b6000805490509056fea2646970667358221220e6966e446bd0af8e6af40eb0d8f323dd02f771ba1f11ae05c65d1624ffb3c58264736f6c63430007060033"; // initialize the default constructor with a value `47 = 0x2F`; this value is appended to the bytecode const contractConstructorInit = "000000000000000000000000000000000000000000000000000000000000002F"; - + const web3 = new Web3(clientUrl); const web3eea = new EEAClient(web3, 1337); const txOptions = { @@ -293,7 +293,7 @@ Use `eea_sendRawTransaction` by running the following commands in a JavaScript c console.log("Creating contract..."); const txHash = await web3eea.eea.sendRawTransaction(txOptions); console.log("Getting contractAddress from txHash: ", txHash); - + const privateTxReceipt = await web3.priv.getTransactionReceipt(txHash, fromPublicKey); // console.log("Private Transaction Receipt: ", privateTxReceipt); return privateTxReceipt; diff --git a/docs/private-networks/tutorials/ethash.md b/docs/private-networks/tutorials/ethash.md index 8fad43d85a7..fa9676d2b3b 100644 --- a/docs/private-networks/tutorials/ethash.md +++ b/docs/private-networks/tutorials/ethash.md @@ -27,7 +27,7 @@ Listed on the right-hand side of the page are the steps to create a private netw ### 1. Create directories Each node requires a data directory for the blockchain data. When the node starts, Besu saves the -[node key](../concepts/node-keys.md) in this directory. +[node key](../../public-networks/concepts/node-keys.md) in this directory. Create directories for your private network, each of the three nodes, and a data directory for each node: @@ -49,7 +49,7 @@ blockchain). The genesis file includes entries for configuring the blockchain, s difficulty and initial accounts and balances. All nodes in a network must use the same genesis file. The -[network ID](../concepts/network-and-chain-id.md) defaults to the `chainID` in the genesis +[network ID](../../public-networks/concepts/network-and-chain-id.md) defaults to the `chainID` in the genesis file. The `fixeddifficulty` enables fast block mining. Copy the following genesis definition to a file called `privateNetworkGenesis.json` and save it in @@ -112,20 +112,20 @@ Start Node-1: The command line enables: * Mining and specifies the account to pay mining rewards to using the - [`--miner-enabled`](../../global/reference/cli/options.md#miner-enabled) and - [`--miner-coinbase`](../../global/reference/cli/options.md#miner-coinbase) options. -* JSON-RPC API using the [`--rpc-http-enabled`](../../global/reference/cli/options.md#rpc-http-enabled) + [`--miner-enabled`](../../public-networks/reference/cli/options.md#miner-enabled) and + [`--miner-coinbase`](../../public-networks/reference/cli/options.md#miner-coinbase) options. +* JSON-RPC API using the [`--rpc-http-enabled`](../../public-networks/reference/cli/options.md#rpc-http-enabled) option. * All-host access to the HTTP JSON-RPC API using the - [`--host-allowlist`](../../global/reference/cli/options.md#host-allowlist) option. + [`--host-allowlist`](../../public-networks/reference/cli/options.md#host-allowlist) option. * All-domain access to the node through the HTTP JSON-RPC API using the - [`--rpc-http-cors-origins`](../../global/reference/cli/options.md#rpc-http-cors-origins) option. + [`--rpc-http-cors-origins`](../../public-networks/reference/cli/options.md#rpc-http-cors-origins) option. !!! info The miner coinbase account is one of the accounts defined in the genesis file. -When the node starts, the [enode URL](../../global/concepts/node-keys.md#enode-url) displays. Copy the +When the node starts, the [enode URL](../../public-networks/concepts/node-keys.md#enode-url) displays. Copy the enode URL to specify Node-1 as the bootnode in the following steps. ![Node 1 Enode URL](../../images/EnodeStartup.png) @@ -150,11 +150,11 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * A different port to Node-1 for P2P discovery using the - [`--p2p-port`](../../global/reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../public-networks/reference/cli/options.md#p2p-port) option. * The enode URL of Node-1 using the - [`--bootnodes`](../../global/reference/cli/options.md#bootnodes) option. + [`--bootnodes`](../../public-networks/reference/cli/options.md#bootnodes) option. * A data directory for Node-2 using the - [`--data-path`](../../global/reference/cli/options.md#data-path) option. + [`--data-path`](../../public-networks/reference/cli/options.md#data-path) option. * A genesis file as for Node-1. ### 5. Start Node-3 @@ -178,13 +178,13 @@ The command line specifies: * A different port to Node-1 and Node-2 for P2P discovery. * A data directory for Node-3 using the - [`--data-path`](../../global/reference/cli/options.md#data-path) option. + [`--data-path`](../../public-networks/reference/cli/options.md#data-path) option. * A bootnode and genesis file as for Node-2. ### 6. Confirm the private network is working Start another terminal, use curl to call the JSON-RPC API -[`net_peerCount`](../../global/reference/api/index.md#net_peercount) method and confirm the nodes are +[`net_peerCount`](../../public-networks/reference/api/index.md#net_peercount) method and confirm the nodes are functioning as peers: ```bash @@ -214,10 +214,10 @@ Import accounts to MetaMask and send transactions as described in the Send transactions using `eth_sendRawTransaction` to [send ether or, deploy or invoke contracts](../how-to/send-transactions/index.md). -Use the [JSON-RPC API](../how-to/use-besu-api/json-rpc.md). +Use the [JSON-RPC API](../../public-networks/how-to/use-besu-api/json-rpc.md). -Start a node with the [`--rpc-ws-enabled`](../../global/reference/cli/options.md#rpc-ws-enabled) option -and use the [RPC Pub/Sub API](../how-to/use-besu-api/rpc-pubsub.md). +Start a node with the [`--rpc-ws-enabled`](../../public-networks/reference/cli/options.md#rpc-ws-enabled) option +and use the [RPC Pub/Sub API](../../public-networks/how-to/use-besu-api/rpc-pubsub.md). ## Stop the nodes diff --git a/docs/private-networks/tutorials/ibft/index.md b/docs/private-networks/tutorials/ibft/index.md index 73f8d90934f..100c81a6aeb 100644 --- a/docs/private-networks/tutorials/ibft/index.md +++ b/docs/private-networks/tutorials/ibft/index.md @@ -197,17 +197,17 @@ In the `Node-1` directory, start Node-1: The command line: * Specifies the data directory for Node-1 using the - [`--data-path`](../../../global/reference/cli/options.md#data-path) option. + [`--data-path`](../../../public-networks/reference/cli/options.md#data-path) option. * Enables the JSON-RPC API using the - [`--rpc-http-enabled`](../../../global/reference/cli/options.md#rpc-http-enabled) option. + [`--rpc-http-enabled`](../../../public-networks/reference/cli/options.md#rpc-http-enabled) option. * Enables the ETH, NET, and IBFT APIs using the - [`--rpc-http-api`](../../../global/reference/cli/options.md#rpc-http-api) option. + [`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) option. * Enables all-host access to the HTTP JSON-RPC API using the - [`--host-allowlist`](../../../global/reference/cli/options.md#host-allowlist) option. + [`--host-allowlist`](../../../public-networks/reference/cli/options.md#host-allowlist) option. * Enables all-domain access to the node through the HTTP JSON-RPC API using the - [`--rpc-http-cors-origins`](../../../global/reference/cli/options.md#rpc-http-cors-origins) option. + [`--rpc-http-cors-origins`](../../../public-networks/reference/cli/options.md#rpc-http-cors-origins) option. -When the node starts, the [enode URL](../../../global/concepts/node-keys.md#enode-url) displays. Copy the +When the node starts, the [enode URL](../../../public-networks/concepts/node-keys.md#enode-url) displays. Copy the enode URL to specify Node-1 as the bootnode in the following steps. ![Node 1 Enode URL](../../../images/EnodeStartup.png) @@ -232,13 +232,13 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * The data directory for Node-2 using the - [`--data-path`](../../../global/reference/cli/options.md#data-path) option. + [`--data-path`](../../../public-networks/reference/cli/options.md#data-path) option. * A different port to Node-1 for P2P discovery using the - [`--p2p-port`](../../../global/reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../../public-networks/reference/cli/options.md#p2p-port) option. * A different port to Node-1 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../../global/reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../../public-networks/reference/cli/options.md#rpc-http-port) option. * The enode URL of Node-1 using the - [`--bootnodes`](../../../global/reference/cli/options.md#bootnodes) option. + [`--bootnodes`](../../../public-networks/reference/cli/options.md#bootnodes) option. * Other options as for [Node-1](#6-start-the-first-node-as-the-bootnode). ### 8. Start Node-3 @@ -261,11 +261,11 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * The data directory for Node-3 using the - [`--data-path`](../../../global/reference/cli/options.md#data-path) option. + [`--data-path`](../../../public-networks/reference/cli/options.md#data-path) option. * A different port to Node-1 and Node-2 for P2P discovery using the - [`--p2p-port`](../../../global/reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../../public-networks/reference/cli/options.md#p2p-port) option. * A different port to Node-1 and Node-2 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../../global/reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../../public-networks/reference/cli/options.md#rpc-http-port) option. * The bootnode as for [Node-2](#7-start-node-2). * Other options as for [Node-1](#6-start-the-first-node-as-the-bootnode). @@ -289,18 +289,18 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * The data directory for Node-4 using the - [`--data-path`](../../../global/reference/cli/options.md#data-path) option. + [`--data-path`](../../../public-networks/reference/cli/options.md#data-path) option. * A different port to Node-1, Node-2, and Node-3 for P2P discovery using the - [`--p2p-port`](../../../global/reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../../public-networks/reference/cli/options.md#p2p-port) option. * A different port to Node-1, Node-2, and Node-3 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../../global/reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../../public-networks/reference/cli/options.md#rpc-http-port) option. * The bootnode as for [Node-2](#7-start-node-2). * Other options as for [Node-1](#6-start-the-first-node-as-the-bootnode). ### 10. Confirm the private network is working Start another terminal, use curl to call the JSON-RPC API -[`ibft_getvalidatorsbyblocknumber`](../../../global/reference/api/index.md#ibft_getvalidatorsbyblocknumber) +[`ibft_getvalidatorsbyblocknumber`](../../../public-networks/reference/api/index.md#ibft_getvalidatorsbyblocknumber) method and confirm the network has four validators: ```bash @@ -339,7 +339,7 @@ Look at the logs to confirm Besu is producing blocks: ``` If the keys were not copied to the correct directory, Besu creates a key when starting up: - + ```bash 2020-12-21 07:33:11.458+10:00 | main | INFO | KeyPairUtil | Generated new public key 0x1a4a2ade5ebc0a85572e2492e0cdf3e96b8928c75fa55b4425de8849850cf9b3a8cad1e27d98a3d3afac326a5e8788dbe6cc40249715c92825aebb28abe3e346 and stored it to /IBFT-Network/Node-1/data/key ``` @@ -349,7 +349,7 @@ Look at the logs to confirm Besu is producing blocks: ## Next steps -Use the [IBFT API](../../../global/reference/api/index.md#ibft-20-methods) to remove or add validators. +Use the [IBFT API](../../../public-networks/reference/api/index.md#ibft-20-methods) to remove or add validators. !!! note diff --git a/docs/private-networks/tutorials/ibft/validators.md b/docs/private-networks/tutorials/ibft/validators.md index 0ce8c6c16b2..31d80d98ce7 100644 --- a/docs/private-networks/tutorials/ibft/validators.md +++ b/docs/private-networks/tutorials/ibft/validators.md @@ -33,13 +33,13 @@ besu --data-path=data --genesis-file=../genesis.json --bootnodes=`, ``, ``, and `` with the enode URL displayed when @@ -337,7 +337,7 @@ starting each node. ### 12. Add nodes as peers -Use the [`admin_addPeer`](../../../global/reference/api/index.md#admin_addpeer) JSON-RPC API method to add +Use the [`admin_addPeer`](../../../public-networks/reference/api/index.md#admin_addpeer) JSON-RPC API method to add Node-1 as a peer for Node-2, Node-3, and Node-4. Replace `` with the enode URL displayed when starting Node-1. @@ -390,7 +390,7 @@ Replace `` with the enode URL displayed when starting Node-3. #### Check peer count -Use curl to call the JSON-RPC API [`net_peerCount`](../../../global/reference/api/index.md#net_peercount) method and confirm the +Use curl to call the JSON-RPC API [`net_peerCount`](../../../public-networks/reference/api/index.md#net_peercount) method and confirm the nodes are functioning as peers: ```bash @@ -453,7 +453,7 @@ Change to the `Node-5` directory and start Node-5 specifying the Node-1 enode UR ``` Start another terminal and use curl to call the JSON-RPC API -[`net_peerCount`](../../../global/reference/api/index.md#net_peercount) method: +[`net_peerCount`](../../../public-networks/reference/api/index.md#net_peercount) method: ```bash curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' localhost:8549 diff --git a/docs/private-networks/tutorials/permissioning/onchain.md b/docs/private-networks/tutorials/permissioning/onchain.md index 39cac3727c2..175efeaa243 100644 --- a/docs/private-networks/tutorials/permissioning/onchain.md +++ b/docs/private-networks/tutorials/permissioning/onchain.md @@ -258,25 +258,25 @@ besu --data-path=data --genesis-file=../genesis.json --permissions-accounts-cont On the command line: * Enable onchain accounts permissioning using - [`--permissions-accounts-contract-enabled`](../../../global/reference/cli/options.md#permissions-accounts-contract-enabled). + [`--permissions-accounts-contract-enabled`](../../../public-networks/reference/cli/options.md#permissions-accounts-contract-enabled). * Set the address of the Account Ingress contract in the genesis file using - [`--permissions-accounts-contract-address`](../../../global/reference/cli/options.md#permissions-accounts-contract-address). + [`--permissions-accounts-contract-address`](../../../public-networks/reference/cli/options.md#permissions-accounts-contract-address). * Enable onchain nodes permissioning using - [`--permissions-nodes-contract-enabled`](../../../global/reference/cli/options.md#permissions-nodes-contract-enabled). + [`--permissions-nodes-contract-enabled`](../../../public-networks/reference/cli/options.md#permissions-nodes-contract-enabled). * Set the address of the Node Ingress contract in the genesis file using - [`--permissions-nodes-contract-address`](../../../global/reference/cli/options.md#permissions-nodes-contract-address). + [`--permissions-nodes-contract-address`](../../../public-networks/reference/cli/options.md#permissions-nodes-contract-address). * Set the version of the [permissioning contract interface](../../how-to/use-permissioning/onchain.md#specify-the-permissioning-contract-interface-version) - using [`--permissions-nodes-contract-version`](../../../global/reference/cli/options.md#permissions-nodes-contract-version). + using [`--permissions-nodes-contract-version`](../../../public-networks/reference/cli/options.md#permissions-nodes-contract-version). * Enable the JSON-RPC API using - [`--rpc-http-enabled`](../../../global/reference/cli/options.md#rpc-http-enabled). + [`--rpc-http-enabled`](../../../public-networks/reference/cli/options.md#rpc-http-enabled). * Enable the `ADMIN`, `ETH`, `NET`, `PERM`, and `IBFT` APIs using - [`--rpc-http-api`](../../../global/reference/cli/options.md#rpc-http-api). + [`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api). * Allow all-host access to the HTTP JSON-RPC API using - [`--host-allowlist`](../../../global/reference/cli/options.md#host-allowlist). + [`--host-allowlist`](../../../public-networks/reference/cli/options.md#host-allowlist). * Allow all-domain access to the node through the HTTP JSON-RPC API using - [`--rpc-http-cors-origins`](../../../global/reference/cli/options.md#rpc-http-cors-origins). + [`--rpc-http-cors-origins`](../../../public-networks/reference/cli/options.md#rpc-http-cors-origins). -When the node starts, the [enode URL](../../../global/concepts/node-keys.md#enode-url) displays. Copy the +When the node starts, the [enode URL](../../../public-networks/concepts/node-keys.md#enode-url) displays. Copy the enode URL to use when starting Node-2, Node-3, and Node-4. ### 9. Clone the contracts and install dependencies @@ -358,9 +358,9 @@ besu --data-path=data --genesis-file=../genesis.json --bootnodes= [Tessera]: https://docs.tessera.consensys.net/ diff --git a/docs/private-networks/tutorials/privacy/multi-tenancy.md b/docs/private-networks/tutorials/privacy/multi-tenancy.md index 9782e1dc0a9..ab4ca8de1e7 100644 --- a/docs/private-networks/tutorials/privacy/multi-tenancy.md +++ b/docs/private-networks/tutorials/privacy/multi-tenancy.md @@ -153,15 +153,15 @@ In the `Node-1` directory, start Besu Node-1: The command line specifies privacy options: -* [`--rpc-http-authentication-enabled`](../../../global/reference/cli/options.md#rpc-http-authentication-enabled) +* [`--rpc-http-authentication-enabled`](../../../public-networks/reference/cli/options.md#rpc-http-authentication-enabled) enables authentication for JSON-RPC APIs. -* [`--rpc-http-authentication-jwt-public-key-file`](../../../global/reference/cli/options.md#rpc-http-authentication-jwt-public-key-file) +* [`--rpc-http-authentication-jwt-public-key-file`](../../../public-networks/reference/cli/options.md#rpc-http-authentication-jwt-public-key-file) specifies the Operator's [public key file](#1-generate-a-private-and-public-key-pair). Used to authenticate the [tenant JWTs](#7-generate-the-tenant-jwts). -* [`--privacy-enabled`](../../../global/reference/cli/options.md#privacy-enabled) enables privacy. -* [`--privacy-url`](../../../global/reference/cli/options.md#privacy-url) specifies the +* [`--privacy-enabled`](../../../public-networks/reference/cli/options.md#privacy-enabled) enables privacy. +* [`--privacy-url`](../../../public-networks/reference/cli/options.md#privacy-url) specifies the [Quorum to Tessera (Q2T)] server address of the Tessera node (`Q2T` in `tessera.conf`). -* [`--privacy-multi-tenancy-enabled`](../../../global/reference/cli/options.md#privacy-multi-tenancy-enabled) +* [`--privacy-multi-tenancy-enabled`](../../../public-networks/reference/cli/options.md#privacy-multi-tenancy-enabled) enables multi-tenancy. !!! note @@ -176,12 +176,12 @@ The command line specifies privacy options: ## 6. Generate the tenant JWTs -[Generate the JWT](../../../global/how-to/use-besu-api/authenticate.md#2-create-the-jwt) for each tenant +[Generate the JWT](../../../public-networks/how-to/use-besu-api/authenticate.md#2-create-the-jwt) for each tenant and specify the [tenant's Tessera public key](#2-generate-tessera-keys) in the `privacyPublicKey` field. Ensure you apply the appropriate -[JSON-RPC API permissions](../../../global/how-to/use-besu-api/authenticate.md#json-rpc-permissions) to the +[JSON-RPC API permissions](../../../public-networks/how-to/use-besu-api/authenticate.md#json-rpc-permissions) to the token. For example, ensure you enable the `PRIV` and `EEA` APIs for privacy. !!! note @@ -192,10 +192,10 @@ token. For example, ensure you enable the `PRIV` and `EEA` APIs for privacy. [Use the authentication token to make requests]. -[JWT public key authentication]: ../../../global/how-to/use-besu-api/authenticate.md#jwt-public-key-authentication -[username and password authentication]: ../../../global/how-to/use-besu-api/authenticate.md#username-and-password-authentication -[generate the private and public key pair]: ../../../global/how-to/use-besu-api/authenticate.md#1-generate-a-private-and-public-key-pair -[Use the authentication token to make requests]: ../../../global/how-to/use-besu-api/authenticate.md#using-an-authentication-token-to-make-requests +[JWT public key authentication]: ../../../public-networks/how-to/use-besu-api/authenticate.md#jwt-public-key-authentication +[username and password authentication]: ../../../public-networks/how-to/use-besu-api/authenticate.md#username-and-password-authentication +[generate the private and public key pair]: ../../../public-networks/how-to/use-besu-api/authenticate.md#1-generate-a-private-and-public-key-pair +[Use the authentication token to make requests]: ../../../public-networks/how-to/use-besu-api/authenticate.md#using-an-authentication-token-to-make-requests [Quorum to Tessera (Q2T)]: https://docs.tessera.consensys.net/Concepts/TesseraAPI/#quorum-to-tessera-api *[JWT]: JSON Web Token diff --git a/docs/private-networks/tutorials/privacy/quickstart.md b/docs/private-networks/tutorials/privacy/quickstart.md index e731f235c2e..ef1b8ab3420 100644 --- a/docs/private-networks/tutorials/privacy/quickstart.md +++ b/docs/private-networks/tutorials/privacy/quickstart.md @@ -87,7 +87,7 @@ For more information on the endpoints and services, refer to README.md in the in To deploy a private contract to another [privacy group](../../concepts/privacy/privacy-groups.md) member, use the [web3js-quorum](https://consensys.github.io/web3js-quorum/latest/index.html) library and -the [`eea_sendRawTransaction`](../../../global/reference/api/index.md#eea_sendrawtransaction) API call. +the [`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction) API call. You must use this API call instead of [`eth_sendTransaction`](https://ethereum.github.io/execution-apis/api-documentation) because Hyperledger Besu keeps account management separate for stronger security. diff --git a/docs/private-networks/tutorials/privacy/web3js-quorum.md b/docs/private-networks/tutorials/privacy/web3js-quorum.md index 2fb04393c6d..03901a311b6 100644 --- a/docs/private-networks/tutorials/privacy/web3js-quorum.md +++ b/docs/private-networks/tutorials/privacy/web3js-quorum.md @@ -33,7 +33,7 @@ To use the examples provided in the web3js-quorum library with * chain ID * Tessera node public keys * Hyperledger Besu node RPC URLs - * [Hyperledger Besu node private keys](../../../global/concepts/node-keys.md#node-private-key). + * [Hyperledger Besu node private keys](../../../public-networks/concepts/node-keys.md#node-private-key). 1. In the `example/multiNodeExample` directory, deploy the contract: diff --git a/docs/private-networks/tutorials/qbft.md b/docs/private-networks/tutorials/qbft.md index ff0c6aa424e..6ab1f94e91a 100644 --- a/docs/private-networks/tutorials/qbft.md +++ b/docs/private-networks/tutorials/qbft.md @@ -201,17 +201,17 @@ In the `Node-1` directory, start Node-1: The command line: * Specifies the data directory for Node-1 using the - [`--data-path`](../../global/reference/cli/options.md#data-path) option. + [`--data-path`](../../public-networks/reference/cli/options.md#data-path) option. * Enables the JSON-RPC API using the - [`--rpc-http-enabled`](../../global/reference/cli/options.md#rpc-http-enabled) option. + [`--rpc-http-enabled`](../../public-networks/reference/cli/options.md#rpc-http-enabled) option. * Enables the ETH, NET, and QBFT APIs using the - [`--rpc-http-api`](../../global/reference/cli/options.md#rpc-http-api) option. + [`--rpc-http-api`](../../public-networks/reference/cli/options.md#rpc-http-api) option. * Enables all-host access to the HTTP JSON-RPC API using the - [`--host-allowlist`](../../global/reference/cli/options.md#host-allowlist) option. + [`--host-allowlist`](../../public-networks/reference/cli/options.md#host-allowlist) option. * Enables all-domain access to the node through the HTTP JSON-RPC API using the - [`--rpc-http-cors-origins`](../../global/reference/cli/options.md#rpc-http-cors-origins) option. + [`--rpc-http-cors-origins`](../../public-networks/reference/cli/options.md#rpc-http-cors-origins) option. -When the node starts, the [enode URL](../../global/concepts/node-keys.md#enode-url) displays. Copy the +When the node starts, the [enode URL](../../public-networks/concepts/node-keys.md#enode-url) displays. Copy the enode URL to specify Node-1 as the bootnode in the following steps. ![Node 1 Enode URL](../../images/EnodeStartup.png) @@ -236,13 +236,13 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * The data directory for Node-2 using the - [`--data-path`](../../global/reference/cli/options.md#data-path) option. + [`--data-path`](../../public-networks/reference/cli/options.md#data-path) option. * A different port to Node-1 for P2P discovery using the - [`--p2p-port`](../../global/reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../public-networks/reference/cli/options.md#p2p-port) option. * A different port to Node-1 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../global/reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../public-networks/reference/cli/options.md#rpc-http-port) option. * The enode URL of Node-1 using the - [`--bootnodes`](../../global/reference/cli/options.md#bootnodes) option. + [`--bootnodes`](../../public-networks/reference/cli/options.md#bootnodes) option. * Other options as for [Node-1](#6-start-the-first-node-as-the-bootnode). ### 8. Start Node-3 @@ -265,11 +265,11 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * The data directory for Node-3 using the - [`--data-path`](../../global/reference/cli/options.md#data-path) option. + [`--data-path`](../../public-networks/reference/cli/options.md#data-path) option. * A different port to Node-1 and Node-2 for P2P discovery using the - [`--p2p-port`](../../global/reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../public-networks/reference/cli/options.md#p2p-port) option. * A different port to Node-1 and Node-2 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../global/reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../public-networks/reference/cli/options.md#rpc-http-port) option. * The bootnode as for [Node-2](#7-start-node-2). * Other options as for [Node-1](#6-start-the-first-node-as-the-bootnode). @@ -293,18 +293,18 @@ enode URL copied when starting Node-1 as the bootnode: The command line specifies: * The data directory for Node-4 using the - [`--data-path`](../../global/reference/cli/options.md#data-path) option. + [`--data-path`](../../public-networks/reference/cli/options.md#data-path) option. * A different port to Node-1, Node-2, and Node-3 for P2P discovery using the - [`--p2p-port`](../../global/reference/cli/options.md#p2p-port) option. + [`--p2p-port`](../../public-networks/reference/cli/options.md#p2p-port) option. * A different port to Node-1, Node-2, and Node-3 for HTTP JSON-RPC using the - [`--rpc-http-port`](../../global/reference/cli/options.md#rpc-http-port) option. + [`--rpc-http-port`](../../public-networks/reference/cli/options.md#rpc-http-port) option. * The bootnode as for [Node-2](#7-start-node-2). * Other options as for [Node-1](#6-start-the-first-node-as-the-bootnode). ### 10. Confirm the private network is working Start another terminal, use curl to call the JSON-RPC API -[`qbft_getvalidatorsbyblocknumber`](../../global/reference/api/index.md#qbft_getvalidatorsbyblocknumber) +[`qbft_getvalidatorsbyblocknumber`](../../public-networks/reference/api/index.md#qbft_getvalidatorsbyblocknumber) method and confirm the network has four validators: ```bash @@ -353,7 +353,7 @@ Look at the logs to confirm Besu is producing blocks: ## Next steps -Use the [QBFT API](../../global/reference/api/index.md#qbft-methods) to remove or add validators, or import accounts +Use the [QBFT API](../../public-networks/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). diff --git a/docs/private-networks/tutorials/quickstart.md b/docs/private-networks/tutorials/quickstart.md index 6ef94e3b8f9..3def137571a 100644 --- a/docs/private-networks/tutorials/quickstart.md +++ b/docs/private-networks/tutorials/quickstart.md @@ -92,13 +92,13 @@ When execution is successfully finished, the process lists the available service - 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](../how-to/monitor/metrics.md). + [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](../how-to/monitor/metrics.md). + [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). + [Read more about log management](../../public-networks/how-to/monitor/elastic-stack.md). To display the list of endpoints again, run: @@ -135,7 +135,7 @@ You can directly access these tools from your browser at the addresses displayed - [Grafana dashboard](http://localhost:3000/d/XE4V0WGZz/besu-overview?orgId=1&refresh=10s&from=now-30m&to=now&var-system=All) For more details on how to configure and use these tools for your own nodes, see the -[performances monitoring documentation](../how-to/monitor/metrics.md), +[performances monitoring documentation](../../public-networks/how-to/monitor/metrics.md), [Prometheus documentation](https://prometheus.io/docs/introduction/overview/) and [Grafana documentation](https://grafana.com/docs/). @@ -199,7 +199,7 @@ or skip ahead to [Create a transaction using MetaMask](#create-a-transaction-usi Peers are the other nodes connected to the node receiving the JSON-RPC request. -Poll the peer count using [`net_peerCount`](../../global/reference/api/index.md#net_peercount): +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 @@ -217,7 +217,7 @@ The result indicates that there are four peers (the validators): ### Request the most recent block number -Call [`eth_blockNumber`](../../global/reference/api/index.md#eth_blockNumber) to retrieve the number of the most recently +Call [`eth_blockNumber`](../../public-networks/reference/api/index.md#eth_blockNumber) to retrieve the number of the most recently synchronized block: ```bash @@ -580,7 +580,7 @@ If the `nodekey.pub` is `4540ea...9c1d78` and the IP address is `172.16.239.41`, `"enode://4540ea...9c1d78@172.16.239.41:30303"`, which must be added to both files. Alternatively, call the -[`perm_addNodesToAllowlist`](../../global/reference/api/index.md#perm_addnodestoallowlist) API method on existing nodes to add +[`perm_addNodesToAllowlist`](../../public-networks/reference/api/index.md#perm_addnodestoallowlist) API method on existing nodes to add the new node without restarting. !!! note @@ -594,13 +594,13 @@ the new node without restarting. 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](../../global/reference/api/index.md#perm_addnodestoallowlist). +or via [RPC API calls](../../public-networks/reference/api/index.md#perm_addnodestoallowlist). -[bootnodes]: ../how-to/connect/bootnodes.md +[bootnodes]: ../how-to/configure/bootnodes.md [permissions file]: ../how-to/use-permissioning/local.md -[static nodes]: ../../global/how-to/connect/static-nodes.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/docs/public-networks/concepts/data-storage-formats.md b/docs/public-networks/concepts/data-storage-formats.md index 041cabe65ed..0e3f9cf44ad 100644 --- a/docs/public-networks/concepts/data-storage-formats.md +++ b/docs/public-networks/concepts/data-storage-formats.md @@ -27,7 +27,7 @@ account key. This greatly reduces the disk space needed for storage and allows f and faster read performance. Bonsai inherently [prunes](../../global/concepts/Pruning.md) orphaned nodes and old branches. To run a node with Bonsai Tries data storage format, use the command line option -[`--data-storage-format=BONSAI`](../../global/reference/cli/options.md#data-storage-format). +[`--data-storage-format=BONSAI`](../reference/cli/options.md#data-storage-format). ![Bonsai_tries](../../images/Bonsai_tries.png) @@ -50,7 +50,7 @@ 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-maximum-back-layers-to-load`](../../global/reference/cli/options.md#bonsai-maximum-back-layers-to-load) option. +[`--bonsai-maximum-back-layers-to-load`](../reference/cli/options.md#bonsai-maximum-back-layers-to-load) option. !!! note diff --git a/docs/public-networks/concepts/events-and-logs.md b/docs/public-networks/concepts/events-and-logs.md index 51736319f22..02288456601 100644 --- a/docs/public-networks/concepts/events-and-logs.md +++ b/docs/public-networks/concepts/events-and-logs.md @@ -1 +1,212 @@ -{!global/concepts/events-and-logs.md!} +--- +description: Hyperledger Besu events and logs +--- + +# 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). + +!!! example + + A log entry for an event with one indexed parameter: + + ```json + { + "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. + +!!! example + + 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); + } + } + ``` + +!!! example + + 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. + +!!! example + + 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. + +!!! example + + 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. + +!!! example + + 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/docs/public-networks/concepts/genesis-file.md b/docs/public-networks/concepts/genesis-file.md index de48beefd4c..e2cf8adedec 100644 --- a/docs/public-networks/concepts/genesis-file.md +++ b/docs/public-networks/concepts/genesis-file.md @@ -1 +1,48 @@ -{!global/concepts/genesis-file.md!} +--- +description: Configuring a network using the genesis file +--- + +# 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, Rinkeby) 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. + +!!! example "Example IBFT 2.0 genesis file" + + ```json + { + "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/docs/public-networks/concepts/network-and-chain-id.md b/docs/public-networks/concepts/network-and-chain-id.md index 14ecebd8bae..8c69773390b 100644 --- a/docs/public-networks/concepts/network-and-chain-id.md +++ b/docs/public-networks/concepts/network-and-chain-id.md @@ -1 +1,77 @@ -{!global/concepts/network-and-chain-id.md!} +--- +description: Besu network ID and chain ID implementation +--- + +# 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. + +!!! example "Chain ID in the genesis file" + + ```json + { + "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 | +| `ropsten` | ETH | 3 | 3 | Test | +| `rinkeby` | ETH | 4 | 4 | Test | +| `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 | +| `kotti` | ETC | 6 | 6 | Test | +| `astor` | ETC | 212 | 212 | Test | + +## 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). + +!!! important + + 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/docs/public-networks/concepts/node-keys.md b/docs/public-networks/concepts/node-keys.md index 388d7e79372..7546f182710 100644 --- a/docs/public-networks/concepts/node-keys.md +++ b/docs/public-networks/concepts/node-keys.md @@ -1 +1,127 @@ -{!global/concepts/node-keys.md!} +--- +description: Private and public key, and node address used to identify nodes +--- + +# 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. + +## Specifying 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`. + +!!! example + + ```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 [`perm_addNodesToAllowlist`](../reference/api/index.md#perm_addnodestoallowlist) method specify nodes by +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`. + +!!! example + + 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 + +!!! warning + + Enode URL domain name support is an experimental 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 Besu's `--Xdns-enabled` experimental command line option. + +!!! example "Example enode URL using a domain name" + + ```bash + 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 experimental 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/docs/global/concepts/Transactions/Transaction-Pool.md b/docs/public-networks/concepts/transactions/pool.md similarity index 93% rename from docs/global/concepts/Transactions/Transaction-Pool.md rename to docs/public-networks/concepts/transactions/pool.md index 7c4d97dcb80..8e3251416b9 100644 --- a/docs/global/concepts/Transactions/Transaction-Pool.md +++ b/docs/public-networks/concepts/transactions/pool.md @@ -38,17 +38,17 @@ transactions. 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](Transaction-Types.md#frontier-transactions), the old transaction is replaced if the +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](Transaction-Types.md#eip1559-transactions), the old transaction is replaced if +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). diff --git a/docs/global/concepts/Transactions/Transaction-Types.md b/docs/public-networks/concepts/transactions/types.md similarity index 100% rename from docs/global/concepts/Transactions/Transaction-Types.md rename to docs/public-networks/concepts/transactions/types.md diff --git a/docs/global/concepts/Transactions/Transaction-Validation.md b/docs/public-networks/concepts/transactions/validation.md similarity index 100% rename from docs/global/concepts/Transactions/Transaction-Validation.md rename to docs/public-networks/concepts/transactions/validation.md diff --git a/docs/public-networks/get-started/install/binary-distribution.md b/docs/public-networks/get-started/install/binary-distribution.md index 8e45618dc6b..1fc1f78dd87 100644 --- a/docs/public-networks/get-started/install/binary-distribution.md +++ b/docs/public-networks/get-started/install/binary-distribution.md @@ -1 +1,83 @@ -{!global/get-started/install/binary-distribution.md!} +--- +description: Install or upgrade Hyperledger Besu from binary distribution +--- + +# Install binary distribution + +## MacOS with Homebrew + +### Prerequisites + +* [Homebrew](https://brew.sh/) +* Java JDK + +!!!important + + Hyperledger Besu supports: + + * MacOS High Sierra 10.13 or later versions. + * Java 11+. + We recommend using at least Java 17 because that will be the minimum requirement in the next Besu version series. + 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 + + If you've upgraded your MacOS version between installing and upgrading Besu, when running `brew upgrade + hyperledger/besu/besu` you may be prompted to reinstall command line tools with `xcode-select --install`. + +!!! note + + 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](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. + +### 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/docs/public-networks/get-started/install/index.md b/docs/public-networks/get-started/install/index.md index a3f21b5aed7..4d77c0d6f50 100644 --- a/docs/public-networks/get-started/install/index.md +++ b/docs/public-networks/get-started/install/index.md @@ -1 +1,22 @@ -{!global/get-started/install/index.md!} +--- +title: Installation options +description: Options for getting started with Hyperledger Besu +--- + +# 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/docs/public-networks/get-started/install/run-docker-image.md b/docs/public-networks/get-started/install/run-docker-image.md index 502759d70ca..02833bf336d 100644 --- a/docs/public-networks/get-started/install/run-docker-image.md +++ b/docs/public-networks/get-started/install/run-docker-image.md @@ -1 +1,138 @@ -{!global/get-started/install/run-docker-image.md!} +--- +description: Run Hyperledger Besu using the official docker image +--- + +# 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 + +!!! important + + The Docker image does not 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). + +!!! example + + 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 + +!!! important + + 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#besu-environment-variables) with the +Docker image instead of the command line options. + +!!! example + + ```bash + docker run -p 30303:30303 -p 8545:8545 -e BESU_RPC_HTTP_ENABLED=true -e BESU_NETWORK=goerli hyperledger/besu:latest + ``` + +### Run a node for testing + +To run a node that mines blocks at a rate suitable for testing purposes with WebSockets 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 Rinkeby testnet + +To run a node on Rinkeby: + +```bash +docker run -p 30303:30303 --mount type=bind,source=/,target=/var/lib/besu hyperledger/besu:latest --network=rinkeby --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/docs/public-networks/get-started/start-node.md b/docs/public-networks/get-started/start-node.md index 63852c2d2e8..1d6c005a92e 100644 --- a/docs/public-networks/get-started/start-node.md +++ b/docs/public-networks/get-started/start-node.md @@ -17,7 +17,7 @@ with the most common options. ## 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`](../../global/reference/cli/options.md#data-path) option +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 @@ -30,37 +30,37 @@ Besu specifies the genesis configuration, and sets the network ID and bootnodes [Goerli](#run-a-node-on-goerli-testnet), [Kiln](#run-a-node-on-kiln-testnet), [Sepolia](#run-a-node-on-sepolia-testnet), and [Mainnet](#run-a-node-on-ethereum-mainnet). -When you specify [`--network=dev`](../../global/reference/cli/options.md#network), Besu uses the +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`](../../global/reference/cli/options.md#network) has an empty bootnodes list by +[`--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`](../../global/reference/cli/options.md#genesis-file) option. +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](../how-to/connect/sync-node.md#fast-synchronization) in: -- Networks specified using [`--network`](../../global/reference/cli/options.md#network) except for the `dev` +- Networks specified using [`--network`](../reference/cli/options.md#network) except for the `dev` development network. - Ethereum Mainnet. We recommend using [snap sync](../how-to/connect/sync-node.md#snap-synchronization) for a faster sync, by starting Besu -with [`--sync-mode=X_SNAP`](../../global/reference/cli/options.md#sync-mode). +with [`--sync-mode=X_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`](../../global/reference/cli/options.md#data-storage-format). +by starting Besu with [`--data-storage-format=BONSAI`](../reference/cli/options.md#data-storage-format). ## Confirm node is running If you started Besu with the -[`--rpc-http-enabled`](../../global/reference/cli/options.md#rpc-http-enabled) option, use +[`--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. diff --git a/docs/public-networks/get-started/system-requirements.md b/docs/public-networks/get-started/system-requirements.md index e1495bfb0eb..4051d2d55b7 100644 --- a/docs/public-networks/get-started/system-requirements.md +++ b/docs/public-networks/get-started/system-requirements.md @@ -23,9 +23,9 @@ to the chain head. Monitor your system to determine your actual JVM memory needs ## Disk space -[Fast synchronization](../../global/reference/cli/options.md#sync-mode) with +[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](../../global/reference/cli/options.md#sync-mode) requires approximately 3 TB. +[Full synchronization](../reference/cli/options.md#sync-mode) requires approximately 3 TB. ## Disk type diff --git a/docs/public-networks/how-to/configuration-file.md b/docs/public-networks/how-to/configuration-file.md index 3044fcc5def..7af1dcc2240 100644 --- a/docs/public-networks/how-to/configuration-file.md +++ b/docs/public-networks/how-to/configuration-file.md @@ -1 +1,65 @@ -{!global/how-to/configure/configuration-file.md!} +--- +description: Using the Hyperledger Besu configuration file +--- + +# Use the Hyperledger Besu configuration file + +To specify command line options in a file, use a TOML configuration file. + +Save the configuration file and reuse it across node startups. To specify the configuration file, +use the [`--config-file`](../reference/cli/options.md#config-file) option. + +To override an option specified in the configuration file, either specify the same option on the +command line or as an +[environment variable](../reference/cli/options.md#specifying-options). For options +specified in more than one place, the order of precedence is command line, environment variable, +configuration file. + +## 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. + +!!!tip + + The [command line reference](../../reference/cli/options.md) includes configuration file + examples for each option. + +!!!example "Sample TOML configuration file" + + ```toml + # 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" + ``` + +!!!example "Starting Besu with a configuration file" + + ```bash + besu --config-file=/home/me/me_node/config.toml + ``` diff --git a/docs/public-networks/how-to/connect/configure-ports.md b/docs/public-networks/how-to/connect/configure-ports.md index e57aaf532d7..a4c9a37e310 100644 --- a/docs/public-networks/how-to/connect/configure-ports.md +++ b/docs/public-networks/how-to/connect/configure-ports.md @@ -1 +1,61 @@ -{!global/how-to/connect/configure-ports.md!} +--- +description: To enable communication you must expose Hyperledger Besu ports appropriately +--- + +# 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](../../../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). + +!!! 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](../../../global/how-to/monitor/metrics.md#monitor-node-performance-using-prometheus), 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/docs/public-networks/how-to/connect/manage-peers.md b/docs/public-networks/how-to/connect/manage-peers.md index 07f15b7b028..9874afd7135 100644 --- a/docs/public-networks/how-to/connect/manage-peers.md +++ b/docs/public-networks/how-to/connect/manage-peers.md @@ -1 +1,90 @@ -{!global/how-to/connect/manage-peers.md!} +--- +description: Managing Hyperledger Besu peers +--- + +# 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. + +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#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. + +!!! example "Sample log output" + + ```bash + 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. diff --git a/docs/public-networks/how-to/connect/specify-nat.md b/docs/public-networks/how-to/connect/specify-nat.md index dfa9996af11..05fd76b92a8 100644 --- a/docs/public-networks/how-to/connect/specify-nat.md +++ b/docs/public-networks/how-to/connect/specify-nat.md @@ -1 +1,105 @@ -{!global/how-to/connect/specify-nat.md!} +--- +description: Configuring NAT with Hyperledger Besu +--- + +# 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. + +!!! example + 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. + +!!! important + + 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. + +!!! important + + 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/docs/public-networks/how-to/connect/static-nodes.md b/docs/public-networks/how-to/connect/static-nodes.md index 19c150d81b7..3ca1b160050 100644 --- a/docs/public-networks/how-to/connect/static-nodes.md +++ b/docs/public-networks/how-to/connect/static-nodes.md @@ -1 +1,76 @@ -{!global/how-to/connect/static-nodes.md!} +--- +description: Configuring static nodes +--- + +# Static nodes + +Static nodes are a configured set of trusted nodes. Static nodes are exempt from +[maximum peer](manage-peers.md#limiting-peers) and +[remote connection](manage-peers.md#limiting-remote-connections) limits. + +Besu attempts to maintain connections with static nodes by periodically initiating a connection to +any unconnected static node. + +!!! tip + + Bootnodes and static nodes are parallel methods for finding peers. Depending on your use case, + you can use only bootnodes, only static nodes, or both bootnodes and statics nodes. For + example, you run multiple nodes on Mainnet (discovery using bootnodes), but want to ensure your + nodes are always connected (using static nodes). + + To find peers, configure one or more [bootnodes](../../private-networks/how-to/connect/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). + +!!! example + + ```json + [ + "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/docs/public-networks/how-to/connect/sync-node.md b/docs/public-networks/how-to/connect/sync-node.md index 591f3247d7b..5c2c43ba724 100644 --- a/docs/public-networks/how-to/connect/sync-node.md +++ b/docs/public-networks/how-to/connect/sync-node.md @@ -2,7 +2,7 @@ description: Full and archive node types --- -# Node types +# Sync Besu Besu supports two node types, commonly referred to as _full nodes_ and _archive nodes_. @@ -30,7 +30,7 @@ You can run a full node using [fast synchronization (fast sync)](#fast-synchroni ### Fast synchronization -Enable fast sync using [`--sync-mode=FAST`](../../../global/reference/cli/options.md#sync-mode). +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. @@ -38,10 +38,10 @@ 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`](../../../global/reference/cli/options.md#network) +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`](../../../global/reference/cli/options.md#network) or [`--genesis-file`](../../../global/reference/cli/options.md#genesis-file) +[`--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. @@ -86,7 +86,7 @@ You can observe the `besu_synchronizer_fast_sync_*` and `besu_synchronizer_world 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=X_SNAP`](../../../global/reference/cli/options.md#sync-mode). +Enable snap sync using [`--sync-mode=X_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 @@ -102,7 +102,7 @@ deleting the data directory, and starting over using `--sync-mode=X_SNAP`. Checkpoint sync is an experimental feature. -Enable checkpoint sync using [`--sync-mode=X_CHECKPOINT`](../../../global/reference/cli/options.md#sync-mode). +Enable checkpoint sync using [`--sync-mode=X_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 @@ -136,6 +136,6 @@ sync from the genesis block. ## Run an archive node To run an archive node, enable full synchronization (full sync) using -[`--sync-mode=FULL`](../../../global/reference/cli/options.md#sync-mode). +[`--sync-mode=FULL`](../../reference/cli/options.md#sync-mode). Full sync starts from the genesis block and reprocesses all transactions. diff --git a/docs/public-networks/how-to/develop/client-libraries.md b/docs/public-networks/how-to/develop/client-libraries.md index 5342720df65..32a2ee191af 100644 --- a/docs/public-networks/how-to/develop/client-libraries.md +++ b/docs/public-networks/how-to/develop/client-libraries.md @@ -1 +1,26 @@ -{!global/how-to/develop/client-libraries.md!} +--- +description: Hyperledger Besu client libraries +--- + +# 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](../../../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/docs/public-networks/how-to/develop/truffle.md b/docs/public-networks/how-to/develop/truffle.md index a3602128ea6..997dbd03ae1 100644 --- a/docs/public-networks/how-to/develop/truffle.md +++ b/docs/public-networks/how-to/develop/truffle.md @@ -1 +1,58 @@ -{!global/how-to/develop/truffle.md!} +--- +description: Using Hyperledger Besu with Truffle +--- + +# Using Hyperledger Besu with Truffle + +Developing for Hyperledger Besu using Truffle is the same as developing for public Ethereum +networks using Truffle. Truffle supports Besu with the only difference being Besu does not support +private key management. To use Besu with Truffle, you must configure a Truffle wallet. + +## Install a Truffle wallet + +To install a Truffle wallet: + +```bash +npm install --save @truffle/hdwallet-provider +``` + +!!!note + + With Truffle 5, you must use a Web3 1.0 enabled wallet or the Truffle tasks hang. + +### Update the Truffle configuration file + +To add the wallet provider, update the `truffle-config.js` file in the project directory. Replace: + +* `` with the JSON-RPC endpoint (IP address and port) of a Besu node. +* `` with the private key of an Ethereum account containing Ether. + +```javascript +const PrivateKeyProvider = require("@truffle/hdwallet-provider"); +const privateKey = ""; +const privateKeyProvider = new PrivateKeyProvider(privateKey, ""); + +module.exports = { + // See + // for more about customizing your Truffle configuration! + networks: { + besuWallet: { + provider: privateKeyProvider, + network_id: "*" + }, + } +}; +``` + +### Start a Besu node + +Start a Besu node with JSON-RPC enabled on the endpoint specified in the Truffle configuration +file. + +### Deploy a contract + +To deploy a contract onto the Besu network: + +```bash +truffle migrate --network besuWallet +``` diff --git a/docs/public-networks/how-to/monitor/index.md b/docs/public-networks/how-to/monitor/index.md index 7617ba6dd90..1e35e1750d5 100644 --- a/docs/public-networks/how-to/monitor/index.md +++ b/docs/public-networks/how-to/monitor/index.md @@ -1 +1,14 @@ -{!global/how-to/monitor/index.md!} +--- +description: Monitoring using metrics and logging +--- + +# Monitoring + +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/docs/public-networks/how-to/monitor/logging.md b/docs/public-networks/how-to/monitor/logging.md index 96bf41c09fe..04d19c60ed1 100644 --- a/docs/public-networks/how-to/monitor/logging.md +++ b/docs/public-networks/how-to/monitor/logging.md @@ -1 +1,81 @@ -{!global/how-to/monitor/logging.md!} +--- +description: Hyperledger Besu log level setting and log formatting +path: blob/master/besu/src/main/resources/ +source: log4j2.xml +--- + +# 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. + +!!! example "debug.xml" + + ```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. + +!!! example + + To set the debug logging and start Besu connected to the Rinkeby testnet: + + ```bash + LOG4J_CONFIGURATION_FILE=./debug.xml besu --network=rinkeby + ``` + +### 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/docs/public-networks/how-to/monitor/metrics.md b/docs/public-networks/how-to/monitor/metrics.md index 8f0c31fb8cc..923e3875b08 100644 --- a/docs/public-networks/how-to/monitor/metrics.md +++ b/docs/public-networks/how-to/monitor/metrics.md @@ -1 +1,305 @@ -{!global/how-to/monitor/metrics.md!} +--- +description: Monitoring and metrics +--- + +# 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 Grafana dashboard](https://grafana.com/dashboards/10273). + +The Besu example networks have [monitoring with Prometheus and Grafana configured]. + +!!! example + + 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. + +## Setting up and running 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: + + !!! example + + === "Fragment to insert in prometheus.yml" + + ```yml + - job_name: besu + scrape_interval: 15s + scrape_timeout: 10s + metrics_path: /metrics + scheme: http + static_configs: + - targets: + - localhost:9545 + ``` + + === "Full prometheus.yml example" + + ```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. + +1. 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: + + === "Syntax" + + ```bash + besu --network=dev --miner-enabled --miner-coinbase --rpc-http-cors-origins="all" --rpc-http-enabled --metrics-enabled + ``` + + === "Example" + + ```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. + + !!! important + + 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` + has to be in `--host-allowlist`. + +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). + + !!! tip + + Use a log ingestion tool, such as Logstash, to parse the logs and alert you to configured anomalies. + +## Running 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 Pushgateway](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: + + === "Syntax" + + ```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 + ``` + + === "Example" + + ```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"}`. + +## Metrics list + +The following table lists available metrics. +Each metric starts with a metric category prefix. +Metrics specific to Besu use the `besu_` prefix, followed by another metric category. +Metric categories can be enabled using the [`metrics-category`](../../reference/cli/options.md#metrics-category) command line option. +If a metric has a JSON-RPC equivalent, it is included in the definition column. + +| Name | Metric type | Definition | +| --- | --- | --- | +| `besu_blockchain_chain_head_gas_limit` | Gauge | Block gas limit of the current chain head block | +| `besu_blockchain_chain_head_gas_used` | Gauge | Gas used by the current chain head block | +| `besu_blockchain_chain_head_ommer_count` | Gauge | Number of uncles in the current chain head block (JSON-RPC equivalent: [`eth_getUncleCountByBlockHash`](../../reference/api/index.md#eth_getunclecountbyblockhash) or [`eth_getUncleCountByBlockNumber`](../../reference/api/index.md#eth_getunclecountbyblocknumber)) | +| `besu_blockchain_chain_head_timestamp` | Gauge | Timestamp from the current chain head | +| `besu_blockchain_chain_head_transaction_count` | Gauge | Number of transactions in the current chain head block (JSON-RPC equivalent: [`eth_getBlockTransactionCountByHash`](../../reference/api/index.md#eth_getblocktransactioncountbyhash) or [`eth_getBlockTransactionCountByNumber`](../../reference/api/index.md#eth_getblocktransactioncountbynumber)) | +| `besu_blockchain_difficulty_total` | Gauge | Difficulty of the chain head (JSON-RPC equivalent: `difficulty` of [`admin_peers`](../../reference/api/index.md#admin_peers)) | +| `besu_executors_ethscheduler_computation_active_threads_current` | Gauge | Current number of threads executing computation tasks | +| `besu_executors_ethscheduler_computation_completed_tasks_total` | Gauge | Total number of computation tasks executed | +| `besu_executors_ethscheduler_computation_pool_size_current` | Gauge | Current number of threads in the computation thread pool | +| `besu_executors_ethscheduler_computation_queue_length_current` | Gauge | Current number of computation tasks awaiting execution | +| `besu_executors_ethscheduler_computation_rejected_tasks_total` | Counter | Total number of tasks rejected by this computation executor | +| `besu_executors_ethscheduler_computation_submitted_tasks_total` | Gauge | Total number of computation tasks submitted | +| `besu_executors_ethscheduler_timer_active_threads_current` | Gauge | Current number of threads executing timer tasks | +| `besu_executors_ethscheduler_timer_completed_tasks_total` | Gauge | Total number of timer tasks executed | +| `besu_executors_ethscheduler_timer_pool_size_current` | Gauge | Current number of threads in the timer thread pool | +| `besu_executors_ethscheduler_timer_queue_length_current` | Gauge | Current number of timer tasks awaiting execution | +| `besu_executors_ethscheduler_timer_rejected_tasks_total` | Counter | Total number of tasks rejected by this timer executor | +| `besu_executors_ethscheduler_timer_submitted_tasks_total` | Gauge | Total number of timer tasks submitted | +| `besu_executors_ethscheduler_workers_active_threads_current` | Gauge | Current number of threads executing worker tasks | +| `besu_executors_ethscheduler_workers_completed_tasks_total` | Gauge | Total number of worker tasks executed | +| `besu_executors_ethscheduler_workers_pool_size_current` | Gauge | Current number of threads in the worker thread pool | +| `besu_executors_ethscheduler_workers_queue_length_current` | Gauge | Current number of worker tasks awaiting execution | +| `besu_executors_ethscheduler_workers_rejected_tasks_total` | Counter | Total number of tasks rejected by this worker executor | +| `besu_executors_ethscheduler_workers_submitted_tasks_total` | Gauge | Total number of worker tasks submitted | +| `besu_network_discovery_inflight_interactions_current` | Gauge | Current number of inflight discovery interactions | +| `besu_network_discovery_interaction_count` | Counter | Total number of discovery interactions initiated | +| `besu_network_discovery_interaction_retry_count` | Counter | Total number of interaction retries performed | +| `besu_network_discovery_messages_inbound` | Counter | Total number of P2P discovery messages received | +| `besu_network_discovery_messages_outbound` | Counter | Total number of P2P discovery messages sent | +| `besu_network_netty_boss_pending_tasks` | Gauge | Number of pending tasks in Netty boss event loop | +| `besu_network_netty_workers_pending_tasks` | Gauge | Number of pending tasks in Netty workers event loop | +| `besu_network_p2p_messages_inbound` | Counter | Total number of P2P messages received | +| `besu_network_vertx_eventloop_pending_tasks` | Gauge | Number of pending tasks in Vertx event loop | +| `besu_network_vertx_worker_pool_completed_total` | Counter | Total number of tasks completed by Vertx worker pool | +| `besu_network_vertx_worker_pool_rejected_total` | Counter | Total number of tasks rejected by Vertx worker pool | +| `besu_network_vertx_worker_pool_submitted_total` | Counter | Total number of tasks submitted to Vertx worker pool | +| `besu_peers_connected_total` | Counter | Total number of peers connected | +| `besu_peers_disconnected_total` | Counter | Total number of peers disconnected | +| `besu_peers_pending_peer_requests_current` | Gauge | Current number of peer requests pending because peers are busy | +| `besu_pruner_mark_time_duration` | Gauge | Cumulative number of seconds spent marking the state trie across all pruning cycles | +| `besu_pruner_mark_operations_total` | Counter | Total number of mark operations performed | +| `besu_pruner_marked_nodes_total` | Counter | Total number of nodes marked as in use | +| `besu_pruner_sweep_operations_total` | Counter | Total number of sweep operations performed | +| `besu_pruner_swept_nodes_total` | Counter | Total number of unused nodes removed | +| `besu_stratum_connections` | Counter | Number of connections over time | +| `besu_stratum_difficulty` | Gauge | Current mining difficulty | +| `besu_stratum_disconnections` | Counter | Number of disconnections over time | +| `besu_stratum_miners` | Gauge | Number of connected miners | +| `besu_synchronizer_chain_download_pipeline_processed_total` | Counter | Number of entries processed by each chain download pipeline stage | +| `besu_synchronizer_chain_download_pipeline_restarts` | Counter | Number of times chain download pipeline has been restarted | +| `besu_synchronizer_fast_sync_pivot_block_current` | Gauge | The current fast sync pivot block | +| `besu_synchronizer_fast_sync_pivot_block_selected_count` | Counter | Number of times a fast sync pivot block has been selected | +| `besu_synchronizer_fast_sync_validation_mode` | Counter | Number of blocks validated using light vs full validation during fast sync | +| `besu_synchronizer_in_sync` | Gauge | Whether or not the local node has caught up to the best known peer (1 or 0) | +| `besu_synchronizer_task` | Summary | Internal processing tasks | +| `besu_synchronizer_world_state_completed_requests_total` | Counter | Total number of node data requests completed as part of fast sync world state download | +| `besu_synchronizer_world_state_existing_nodes_total` | Counter | Total number of node data requests completed using existing data | +| `besu_synchronizer_world_state_inflight_requests_current` | Gauge | Number of in progress requests for world state data | +| `besu_synchronizer_world_state_node_requests_since_last_progress_current` | Gauge | Number of world state requests made since the last time new data was returned | +| `besu_synchronizer_world_state_pending_requests_cache_size` | Gauge | Pending request cache size for fast sync world state download | +| `besu_synchronizer_world_state_pending_requests_current` | Gauge | Number of pending requests for fast sync world state download | +| `besu_synchronizer_world_state_pipeline_processed_total` | Counter | Number of entries processed by each world state download pipeline stage | +| `besu_synchronizer_world_state_retried_requests_total` | Counter | Total number of node data requests repeated as part of fast sync world state download | +| `besu_transaction_pool_pending_transactions_messages_skipped_total` | Counter | Total number of pending transactions messages skipped by the processor | +| `besu_transaction_pool_transactions` | Gauge | Current size of the transaction pool (JSON-RPC equivalent: result number of [`txpool_besuTransactions`](../../reference/api/index.md#txpool_besutransactions)) | +| `besu_transaction_pool_transactions_added_total` | Counter | Count of transactions added to the transaction pool | +| `besu_transaction_pool_transactions_messages_skipped_total` | Counter | Total number of transactions messages skipped by the processor. | +| `ethereum_best_known_block_number` | Gauge | Estimated highest block available (JSON-RPC equivalent: `highestBlock` of [`eth_syncing`](../../reference/api/index.md#eth_syncing), or [`eth_blockNumber`](../../reference/api/index.md#eth_blocknumber) if not syncing) | +| `ethereum_blockchain_height` | Gauge | Current height of the canonical chain (JSON-RPC equivalent: [`eth_blockNumber`](../../reference/api/index.md#eth_blocknumber)) | +| `ethereum_peer_count` | Gauge | Current number of peers connected (JSON-RPC equivalent: [`net_peerCount`](../../reference/api/index.md#net_peercount)) | +| `ethereum_peer_limit` | Gauge | Maximum number of peers this node allows to connect | +| `jvm_buffer_pool_capacity_bytes` | Gauge | Bytes capacity of a given JVM buffer pool | +| `jvm_buffer_pool_used_buffers` | Gauge | Used buffers of a given JVM buffer pool | +| `jvm_buffer_pool_used_bytes` | Gauge | Used bytes of a given JVM buffer pool | +| `jvm_classes_loaded` | Gauge | Current number of classes loaded in the JVM | +| `jvm_classes_loaded_total` | Counter | Total number of classes loaded since the JVM started execution | +| `jvm_classes_unloaded_total` | Counter | Total number of classes unloaded since the JVM started execution | +| `jvm_gc_collection_seconds` | Summary | Seconds spent in a given JVM garbage collector | +| `jvm_memory_bytes_committed` | Gauge | Committed bytes of a given JVM memory area | +| `jvm_memory_bytes_init` | Gauge | Initial bytes of a given JVM memory area | +| `jvm_memory_bytes_max` | Gauge | Maximum bytes of a given JVM memory area | +| `jvm_memory_bytes_used` | Gauge | Used bytes of a given JVM memory area | +| `jvm_memory_pool_bytes_committed` | Gauge | Committed bytes of a given JVM memory pool | +| `jvm_memory_pool_bytes_init` | Gauge | Initial bytes of a given JVM memory pool | +| `jvm_memory_pool_bytes_max` | Gauge | Maximum bytes of a given JVM memory pool | +| `jvm_memory_pool_bytes_used` | Gauge | Used bytes of a given JVM memory pool | +| `jvm_threads_current` | Gauge | Current thread count of a JVM | +| `jvm_threads_daemon` | Gauge | Daemon thread count of a JVM | +| `jvm_threads_deadlocked` | Gauge | Cycles of JVM threads in deadlock waiting to acquire object monitors or ownable synchronizers | +| `jvm_threads_deadlocked_monitor` | Gauge | Cycles of JVM threads in deadlock waiting to acquire object monitors | +| `jvm_threads_peak` | Gauge | Peak thread count of a JVM | +| `jvm_threads_started_total` | Counter | Started thread count of a JVM | +| `jvm_threads_state` | Gauge | Current count of threads by state | +| `process_cpu_seconds_total` | Counter | Total user and system CPU time spent in seconds | +| `process_max_fds` | Gauge | Maximum number of open file descriptors | +| `process_open_fds` | Gauge | Number of open file descriptors | +| `process_start_time_seconds` | Gauge | Start time of the process since Unix epoch in seconds | + +!!! important + + * The `ethereum_best_known_block_number` metric always has a value. When the + [`eth_syncing` JSON-RPC method](../../reference/api/index.md#eth_syncing) returns + false, the current chain height displays. + * Although the `ethereum_peer_limit` metric does not have a JSON-RPC equivalent, the + [`max peers` command line option](../../reference/cli/options.md#max-peers) sets the + maximum number of P2P connections that can be established. + + +[monitoring with Prometheus and Grafana configured]: ../../../private-networks/tutorials/quickstart.md#monitor-nodes-with-prometheus-and-grafana diff --git a/docs/public-networks/how-to/node.md b/docs/public-networks/how-to/node.md deleted file mode 100644 index d157bdb0342..00000000000 --- a/docs/public-networks/how-to/node.md +++ /dev/null @@ -1 +0,0 @@ -{!global/how-to/upgrade/node.md!} diff --git a/docs/public-networks/how-to/pass-jvm-options.md b/docs/public-networks/how-to/pass-jvm-options.md index 265c1da5451..e8734f3ea42 100644 --- a/docs/public-networks/how-to/pass-jvm-options.md +++ b/docs/public-networks/how-to/pass-jvm-options.md @@ -1 +1,21 @@ -{!global/how-to/configure/pass-jvm-options.md!} +--- +description: Passing Java virtual machine JVM options to Hyperledger Besu at runtime +--- + +# Pass JVM options + +To perform tasks such as attaching a debugger or configuring the garbage collector, pass 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. + +!!! example + + ```bash + BESU_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 \ + besu --network=rinkeby + ``` diff --git a/docs/public-networks/how-to/prepare-for-the-merge.md b/docs/public-networks/how-to/prepare-for-the-merge.md index b6b04ac305f..da840a0db5a 100644 --- a/docs/public-networks/how-to/prepare-for-the-merge.md +++ b/docs/public-networks/how-to/prepare-for-the-merge.md @@ -32,7 +32,7 @@ You can use Besu with any consensus client. ### 1. Configure the Engine API The beacon node and Besu communicate using the [Engine API](use-engine-api.md). -Configure the Engine API by setting [`engine-rpc-port`](../../global/reference/cli/options.md#engine-rpc-port) in the Besu +Configure the Engine API by setting [`engine-rpc-port`](../reference/cli/options.md#engine-rpc-port) in the Besu configuration file. Specify the Besu Engine API endpoint in the consensus client using the consensus client's configuration options. @@ -49,7 +49,7 @@ You can generate a JWT using a command line tool, for example: openssl rand -hex 32 -out ``` -Provide the JWT to Besu using the [`engine-jwt-secret`](../../global/reference/cli/options.md#engine-jwt-secret) +Provide the JWT to Besu using the [`engine-jwt-secret`](../reference/cli/options.md#engine-jwt-secret) configuration option, and to the consensus client using its configuration options. For example, provide the JWT to [Teku] using the [`ee-jwt-secret-file`](https://docs.teku.consensys.net/en/latest/Reference/CLI/CLI-Syntax/#ee-jwt-secret-file) option. diff --git a/docs/public-networks/how-to/send-transactions.md b/docs/public-networks/how-to/send-transactions.md index 96a3531cf51..96725e477b6 100644 --- a/docs/public-networks/how-to/send-transactions.md +++ b/docs/public-networks/how-to/send-transactions.md @@ -1 +1,76 @@ -{!global/how-to/send-transactions.md!} +--- +description: Some use cases of creating transactions on a Hyperledger Besu network +--- + +# 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. + +!!! warning "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 [EthSigner](https://docs.ethsigner.consensys.net/) to isolate your private keys + and sign transactions with + [`eth_sendTransaction`](https://docs.ethsigner.consensys.net/Using-EthSigner/Using-EthSigner/#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: + +* [EthSigner](http://docs.ethsigner.consensys.net/en/latest/) 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. + +!!! tip + + [EthSigner](http://docs.ethsigner.consensys.net/en/latest/) implements + [`eth_sendTransaction`](http://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/#eth_sendtransaction) + and [`eea_sendTransaction`](http://docs.ethsigner.consensys.net/en/latest/Using-EthSigner/Using-EthSigner/#eea_sendtransaction). diff --git a/docs/public-networks/how-to/troubleshoot/evm-tool.md b/docs/public-networks/how-to/troubleshoot/evm-tool.md index dc41144a672..4950024cf57 100644 --- a/docs/public-networks/how-to/troubleshoot/evm-tool.md +++ b/docs/public-networks/how-to/troubleshoot/evm-tool.md @@ -1 +1,79 @@ -{!global/how-to/troubleshoot/evm-tool.md!} +--- +description: Hyperledger Besu EVM tool +--- + +# 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. + +## Getting the EVM tool + +The Besu EVM tool does not have a standard zip file distribution. To use, you need to either +build from the source repository or use a pre-published docker image. + +### Building 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/evm +``` + +### Executing 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, starting with 1.5.3. The `develop` tag + is the current main branch code that will go into a future release version of Besu. + +## EVM tool run options + +The first mode of the EVM tool runs an arbitrary EVM and is invoked without an extra command. [Command +line options](../../reference/evm-tool.md) specify the code and other contextual information. + +The EVM tool also has a [`state-test` subcommand](../../reference/evm-tool.md#state-test-options) +that allows the [Ethereum state tests](https://github.com/ethereum/tests/tree/develop/GeneralStateTests) to be evaluated. +Most of the options from EVM execution do not apply. + +=== "Syntax" + + ```bash + evm state-test --nomemory + ``` + +=== "CLI example" + + ```bash + evm state-test stExample/add11.json --nomemory + ``` +=== "Docker example" + + ```bash + docker run --rm -v ${PWD}:/opt/referencetests hyperledger/besu-evmtool:develop state-test /opt/referencetests/GeneralStateTests/stExample/add11.json + ``` + +The [EVM tool reference](../../reference/evm-tool.md) provides more information on both modes. diff --git a/docs/public-networks/how-to/troubleshoot/java-flight-recorder.md b/docs/public-networks/how-to/troubleshoot/java-flight-recorder.md index 81244b48cbf..45a8559f32b 100644 --- a/docs/public-networks/how-to/troubleshoot/java-flight-recorder.md +++ b/docs/public-networks/how-to/troubleshoot/java-flight-recorder.md @@ -1 +1,33 @@ -{!global/how-to/troubleshoot/java-flight-recorder.md!} +--- +description: Using Java Flight Recorder with Hyperledger Besu +--- + +# 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. + +## Enabling 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). + +!!! warning + + 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/docs/public-networks/how-to/troubleshoot/trace-transactions.md b/docs/public-networks/how-to/troubleshoot/trace-transactions.md index 8835801e7df..5530af84b09 100644 --- a/docs/public-networks/how-to/troubleshoot/trace-transactions.md +++ b/docs/public-networks/how-to/troubleshoot/trace-transactions.md @@ -1 +1,48 @@ -{!global/how-to/troubleshoot/trace-transactions.md!} +--- +description: How to trace transactions +--- + +# 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 different diagnostic options when tracing calls or transactions. +The options are [`trace`, `vmTrace`, or `stateDiff`](../../reference/trace-types.md). + +To use the ad-hoc tracing APIs, the requested block or transaction must be within the +number of [blocks retained](../../reference/cli/options.md#pruning-blocks-retained) with [pruning enabled](../../reference/cli/options.md#pruning-enabled) +(by default, 1024). + +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 +(that is, synchronized without pruning or fast sync) or the +requested block or transaction must be within the +number of [blocks retained](../../reference/cli/options.md#pruning-blocks-retained) with [pruning enabled](../../reference/cli/options.md#pruning-enabled) +(by default, 1024). + +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/docs/global/how-to/upgrade/node.md b/docs/public-networks/how-to/upgrade-node.md similarity index 96% rename from docs/global/how-to/upgrade/node.md rename to docs/public-networks/how-to/upgrade-node.md index 42de207cf02..a0b662bd3b2 100644 --- a/docs/global/how-to/upgrade/node.md +++ b/docs/public-networks/how-to/upgrade-node.md @@ -2,7 +2,7 @@ description: Upgrade Besu --- -# Upgrading your Besu node +# Upgrade your Besu node When upgrading your Besu node, we recommend: @@ -26,7 +26,7 @@ The playbook: 1. Applies any new configuration. 1. Starts Besu. -## Finding peers on restarting +## 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 diff --git a/docs/public-networks/how-to/use-besu-api/access-logs.md b/docs/public-networks/how-to/use-besu-api/access-logs.md index 9a5fea40aed..e293033f07d 100644 --- a/docs/public-networks/how-to/use-besu-api/access-logs.md +++ b/docs/public-networks/how-to/use-besu-api/access-logs.md @@ -1 +1,220 @@ -{!global/how-to/use-besu-api/access-logs.md!} +--- +description: Accessing logs using the Hyperledger Besu API +--- + +# 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). + +!!! example + + 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). + +!!! example + + 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). + +!!! example + + 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. + +!!! example + + ```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. + +!!! example + + 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/docs/public-networks/how-to/use-besu-api/authenticate.md b/docs/public-networks/how-to/use-besu-api/authenticate.md index a8d44937651..6a395f29dcf 100644 --- a/docs/public-networks/how-to/use-besu-api/authenticate.md +++ b/docs/public-networks/how-to/use-besu-api/authenticate.md @@ -1 +1,280 @@ -{!global/how-to/use-besu-api/authenticate.md!} +--- +description: Hyperledger Besu authentication and authorization for JSON-RPC +--- + +# Authentication and authorization for 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). + +!!! note + Using JSON-RPC authentication and authorization with [MetaMask](https://metamask.io/) is not supported. + +!!! important + 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. + +!!! example "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). + +!!! example "Password hash subcommand" + + === "Command" + + ```bash + besu password hash --password=MyPassword + ``` + + === "Hash output" + + ```text + $2a$10$L3Xb5G/AJOsEK5SuOn9uzOhpCCfuVWTajc5hwWerY6N5xBM/xlrMK + ``` + +### 2. Enable authentication + +To require authentication for the JSON-RPC API, use 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) +options. + +To specify the [credentials file](#1-create-the-credentials-file), use the +[`--rpc-http-authentication-credentials-file`](../../reference/cli/options.md#rpc-http-authentication-credentials-file) +and [`--rpc-ws-authentication-credentials-file`](../../reference/cli/options.md#rpc-ws-authentication-credentials-file) +options. + +### 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. + +!!! example + + === "Generate a token for HTTP" + + ```bash + curl -X POST --data '{"username":"username1","password":"MyPassword"}' /login + ``` + + === "Example for HTTP" + + ```bash + curl -X POST --data '{"username":"username1","password":"MyPassword"}' http://localhost:8545/login + ``` + + === "Generate a token for WS" + + ```bash + curl -X POST --data '{"username":"username1","password":"MyPassword"}' /login + ``` + + === "Example for WS" + + ```bash + curl -X POST --data '{"username":"username1","password":"MyPassword"}' http://localhost:8546/login + ``` + + === "JSON result" + + ```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. + +!!! important + 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`. + +Besu default is `RS256`. + +!!! example "Example of key generation using OpenSSL" + + === "`RS256` RSA Keys" + + 1. Generate the private key: + + ```bash + openssl genrsa -out privateRSAKey.pem 2048 + ``` + + 1. Generate the public key: + + ```bash + openssl rsa -pubout -in privateRSAKey.pem -pubout -out publicRSAKey.pem + ``` + + === "`ES256` `secp256r1` ECDSA Keys" + + 1. Generate the private key: + + ```bash + openssl ecparam -name secp256r1 -genkey -out privateECDSAKey.pem + ``` + + 1. Generate the public key: + + ```bash + openssl ec -in privateECDSAKey.pem -pubout -out publicECDSAKey.pem + ``` + +!!! critical "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 + [harware](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 you nodes 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. + +!!! 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). + +!!! example "JWT generation example" + + === "Example JSON Payload" + + ```json + { + "permissions": ["*:*"], + "privacyPublicKey": "2UKH3VJThkOoKskrLFpwoxCnnRARyobV1bEdgseFHTs=", + "exp": 1600899999002 + } + ``` + + === "Example JWT result" + + ![eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJwZXJtaXNzaW9ucyI6Iio6KiIsInByaXZhY3lQdWJsaWNLZXkiOiIyVUtIM1ZKVGhrT29Lc2tyTEZwd294Q25uUkFSeW9iVjFiRWRnc2VGSFRzPSIsImV4cCI6IjE2MDA4OTk5OTkwMDIiLCJpYXQiOjE2MzkxNTc2Mjd9.FGf-FmfDQlIPCRDGmNnsHZWlwrUr69d7AIDqQrIrUrSJLiwGpR3NCUhVHIDMpQvDHQYf-sFMZTYvZGrvztYRuBKWMbTfIZKN74onzNJbFIPBVQuUX2HMXmI4VQ3UFB11LShiUJHKLna13qdbqfbgJIO3HetxJhJQxTiwtixfHwyPXl-Nx8HbQy_AWH58lLAUeaoLzN7QIA9kborthBpvfK9C7Sv1lXT1cdCDC4oRKBoiMg2RWFZtGtxFsnWyloangwbhCB6Bc_elqY5nd9WkF4ix95xsP_HgBcouy1sDw6jxn5_LveX53H8owczVWP6S1e6hv6hq2fs6YkSntKMK2g](jwt.png){: style='width:15rem' } + +### 3. Enable authentication + +To require authentication for the JSON-RPC API, use 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) +options. + +To specify the JWT provider's public key file to use with the externally created JWT, use 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) +options. + +## 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. + +## Using 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. + +!!! example + + === "cURL Request with authentication placeholders" + + ```bash + curl -X POST -H 'Authorization: Bearer ' -d '{"jsonrpc":"2.0","method":"","params":[],"id":1}' + ``` + + === "cURL Request with authentication" + + ```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/docs/public-networks/how-to/use-besu-api/graphql.md b/docs/public-networks/how-to/use-besu-api/graphql.md index 9fd4baaa9b5..44759c17baa 100644 --- a/docs/public-networks/how-to/use-besu-api/graphql.md +++ b/docs/public-networks/how-to/use-besu-api/graphql.md @@ -1 +1,98 @@ -{!global/how-to/use-besu-api/graphql.md!} +--- +description: How to access the Hyperledger Besu API using GraphQL +--- + +# 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. + +!!! example + + 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 + ``` + +## 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](../../../images/GraphiQL.png) + +## Pending + +`transactionCount` and `transactions` supports the Pending query. + +!!! important + + Besu does not execute pending transactions so results from `account`, `call`, and `estimateGas` + for Pending do not reflect pending transactions. + +!!! example + + === "Pending transaction count" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{ "query": "{pending {transactionCount}}"}' http://localhost:8547/graphql + ``` + + === "Result" + + ```bash + { + "data" : { + "pending" : { + "transactionCount" : 2 + } + } + } + ``` + +!!! example + + === "Pending transactions" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{ "query": "{pending {transactions{hash}}}"}' http://localhost:8547/graphql + ``` + + === "Result" + + ```bash + { + "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/docs/public-networks/how-to/use-besu-api/index.md b/docs/public-networks/how-to/use-besu-api/index.md index f7dda280a5f..f8cac7c3663 100644 --- a/docs/public-networks/how-to/use-besu-api/index.md +++ b/docs/public-networks/how-to/use-besu-api/index.md @@ -1 +1,109 @@ -{!global/how-to/use-besu-api/index.md!} +--- +description: Hyperledger Besu API +--- + +# 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). + +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 experimental 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 experimental 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`. + +!!! important + + This isn't a permissioning feature. + If you want 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. + +!!! example + + ```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/docs/public-networks/how-to/use-besu-api/json-rpc.md b/docs/public-networks/how-to/use-besu-api/json-rpc.md index 7e5fea5e55c..c863094bd69 100644 --- a/docs/public-networks/how-to/use-besu-api/json-rpc.md +++ b/docs/public-networks/how-to/use-besu-api/json-rpc.md @@ -1 +1,271 @@ -{!global/how-to/use-besu-api/json-rpc.md!} +--- +description: How to access the Hyperledger Besu API using JSON-RPC +--- + +# JSON-RPC over HTTP, WebSocket, and IPC + +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 experimental option. + +--8<-- "global/Postman.md" + +## 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: + +!!! example + + === "HTTP endpoint" + + ```bash + geth attach http://localhost:8545 + ``` + + === "IPC endpoint" + + ```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. + +!!! example + + ```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). + +!!! example + + === "Syntax" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","id":,"method":"","params":[]}' + ``` + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","id":"1","method":"eth_blockNumber","params":[]}' http://127.0.0.1:8555 + ``` + + === "JSON result" + + ```json + { + "jsonrpc":"2.0", + "id":"1", + "result":"0x60e" + } + ``` + +You can use `curl` to make multiple RPC requests over HTTP at the same time. +Send the requests as an array, and receive an array of responses. + +!!! example + + === "curl HTTP request" + + ```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 result" + + ```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. + +!!! Example + + === "Syntax" + + ```bash + {"jsonrpc":"2.0","id":,"method":"","params":[]} + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","id":"1","method":"eth_blockNumber","params":[]} + ``` + + === "JSON result" + + ```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. + +!!! example + + === "wscat WS request" + + ```bash + [{"jsonrpc":"2.0","id":"1","method":"eth_blockNumber","params":[]}, {"jsonrpc":"2.0","id":"2","method":"admin_peers","params":[]}] + ``` + + === "JSON result" + + ```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. + +=== "Readiness endpoint" + + ```bash + http:///readiness + ``` + +=== "curl request example" + + ```bash + curl -v 'http://localhost:8545/readiness' + ``` + +=== "Query parameters example" + + ```bash + curl -v 'http://localhost:8545/readiness?minPeers=0&maxBlocksBehind=10' + ``` + +### Liveness + +The liveness check requires the JSON-RPC server to be up. + +=== "Liveness endpoint" + + ```bash + http:///liveness + ``` + +=== "curl request example" + + ```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 experimental 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 the following values: + +* `blockNumber` : `quantity` - The block number, specified in hexadecimal or decimal. 0 represents + the genesis block. +* `earliest` : `tag` - The earliest (genesis) block. +* `latest` : `tag` - The last block mined. +* `pending` : `tag` - The last block mined plus pending transactions. Use only with + [`eth_getTransactionCount`](../../reference/api/index.md#eth_gettransactioncount). +* `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. + +!!! note + + If [synchronizing in FAST mode](../../reference/cli/options.md#sync-mode), most + historical world state data is unavailable. Any methods attempting to access unavailable world + state data return `null`. diff --git a/docs/global/how-to/use-besu-api/jwt.png b/docs/public-networks/how-to/use-besu-api/jwt.png similarity index 100% rename from docs/global/how-to/use-besu-api/jwt.png rename to docs/public-networks/how-to/use-besu-api/jwt.png diff --git a/docs/public-networks/how-to/use-besu-api/rpc-pubsub.md b/docs/public-networks/how-to/use-besu-api/rpc-pubsub.md index fda54f88734..e8124afe1db 100644 --- a/docs/public-networks/how-to/use-besu-api/rpc-pubsub.md +++ b/docs/public-networks/how-to/use-besu-api/rpc-pubsub.md @@ -1 +1,488 @@ -{!global/how-to/use-besu-api/rpc-pubsub.md!} +--- +description: Using RPC Pub/Sub with Hyperledger Besu WebSockets +--- + +# 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). + +!!!important + + 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. + +### Using 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. + +!!!example + + 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. + +## Subscribing + +Use `eth_subscribe` to create subscriptions for the following event types: + +* [New headers](#new-headers) +* [Logs](#logs) +* [Pending transactions](#pending-transactions) +* [Dropped transactions](#dropped-transactions) +* [Synchronizing](#synchronizing) + +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. + +!!!example + + 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). + +!!!example "Public logs" + + === "All logs" + + ```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"}]} + ``` + + === "Result" + + ```json + {"jsonrpc":"2.0","id":1,"result":"0x2"} + ``` + + === "Notification" + + ```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"] + } + } + } + ``` + +!!!example "Private logs" + + === "All logs for privacy group" + + ```json + {"id": 1, "method": "priv_subscribe", "params": ["4sSv8eqB6/0lV9I0tBGUhPjjHtLEf3z0eeMc8Lokkyo=", "logs",{}]} + ``` + + === "Specific address and topic" + + ```json + {"id": 1, "method": "priv_subscribe", "params": ["4sSv8eqB6/0lV9I0tBGUhPjjHtLEf3z0eeMc8Lokkyo=", "logs", {"address": "0x8320fe7702b96808f7bbc0d4a888ed1468216cfd", "topics": ["0xd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902"]}]} + ``` + + === "Result" + + ```json + {"jsonrpc":"2.0","id":1,"result":"0x1"} + ``` + + === "Notification" + + ```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. + +!!!example "Transaction hashes" + + 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" + } + } + ``` + +!!!example "Transaction details" + + 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. + +!!!example + + 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`. + +!!!example + + 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 + } + } + ``` + +## Unsubscribing + +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. + +!!!example + + To unsubscribe from a subsciption 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/docs/public-networks/how-to/use-engine-api.md b/docs/public-networks/how-to/use-engine-api.md index 924a00f2c76..754769c537f 100644 --- a/docs/public-networks/how-to/use-engine-api.md +++ b/docs/public-networks/how-to/use-engine-api.md @@ -11,8 +11,8 @@ These [API methods](../reference/engine-api/index.md) are a separate subsection To configure the Engine API: -- [Enable the JSON-RPC API](../../global/how-to/use-besu-api/index.md#enable-api-access). - Ensure the [`ETH` method is enabled](../../global/how-to/use-besu-api/json-rpc.md#api-methods-enabled-by-default) (it's enabled by default). +- [Enable the JSON-RPC API](use-besu-api/index.md#enable-api-access). + Ensure the [`ETH` method is enabled](use-besu-api/json-rpc.md#api-methods-enabled-by-default) (it's enabled by default). - Specify the [service ports](#service-ports). - Specify the [host allowlist](#host-allowlist). @@ -25,7 +25,7 @@ To configure the Engine API: ### Service ports To specify the port the Engine API service listens on for HTTP and WebSocket, use the -[`--engine-rpc-port`](../../global/reference/cli/options.md#engine-rpc-port) option. +[`--engine-rpc-port`](../reference/cli/options.md#engine-rpc-port) option. The default is `8551`. ### Host allowlist @@ -33,7 +33,7 @@ The default is `8551`. 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`](../../global/reference/cli/options.md#engine-host-allowlist) option matches the request host headers. +[`--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`. !!! important @@ -52,14 +52,14 @@ Specify "*" for `--engine-host-allowlist` to effectively disable host protection ## Authentication By default, [authentication](../how-to/use-besu-api/authenticate.md) for the Engine API is enabled. -To disable, set the [`--engine-jwt-disabled`](../../global/reference/cli/options.md#engine-jwt-disabled) option to `true`. +To disable, set the [`--engine-jwt-disabled`](../reference/cli/options.md#engine-jwt-disabled) option to `true`. !!! warning Don't disable JWT authentication in production environments. Disable only for testing purposes. -Set the [JWT secret](../../global/how-to/use-besu-api/authenticate.md#jwt-public-key-authentication) by using the [`--engine-jwt-secret`](../../global/reference/cli/options.md#engine-jwt-secret) option. +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 diff --git a/docs/public-networks/how-to/use-pow/mining.md b/docs/public-networks/how-to/use-pow/mining.md index 954ed3c2220..d81da8583a5 100644 --- a/docs/public-networks/how-to/use-pow/mining.md +++ b/docs/public-networks/how-to/use-pow/mining.md @@ -1 +1,92 @@ -{!global/how-to/configure/mining.md!} +--- +description: Using Hyperledger Besu for PoW CPU mining +--- + +# Mining + +Hyperledger Besu supports CPU and GPU mining, which are configured using command line options. + +GPU mining support testing 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. + +## 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. + +## Hyperledger Besu mined blocks + +Hyperledger 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` diff --git a/docs/public-networks/reference/api/index.md b/docs/public-networks/reference/api/index.md index 98925d7d548..f61c04315d3 100644 --- a/docs/public-networks/reference/api/index.md +++ b/docs/public-networks/reference/api/index.md @@ -1 +1,6000 @@ -{!global/reference/api/index.md!} +--- +description: Hyperledger Besu JSON-RPC API methods reference +--- + +# Besu API methods + +!!! attention + + * 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. + * Except for the examples made on the Ropsten network, the example requests are made against + private networks. Depending on network configuration and activity, your example results might + be different. + +--8<-- "global/Postman.md" + +## `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) + +!!! example + + === "curl HTTP request" + + ```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 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"admin_addPeer","params":["enode://f59c0ab603377b6ec88b89d5bb41b98fc385030ab1e4b03752db6f7dab364559d92c757c13116ae6408d2d33f0138e7812eb8b696b2a22fe3332c4b5127b22a3@127.0.0.1:30304"],"id":1} + ``` + + === "JSON result" + + ```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` + +!!! example + + The following example changes the debug level for specified classes to `DEBUG`. + + === "curl HTTP request" + + ```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 + ``` + + === "wscat WS request" + + ```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 result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": "Success" + } + ``` + + The following example changes the debug level of all logs to `WARN`. + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"admin_changeLogLevel","params":["WARN"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"admin_changeLogLevel","params":["WARN"], "id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{jsonrpc":"2.0","method":"admin_generateLogBloomCache", "params":["0x0", "0x10000"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"admin_generateLogBloomCache", "params":["0x0", "0x10000"], "id":1} + ``` + + === "JSON result" + + ```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* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +* `toBlock`: *string* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +You can skip a parameter by using an empty string, `""`. +If you specify: + +* No parameters, the call removes cache files for all blocks. + +* Only `fromBlock`, the call removes cache files for the specified block. + +* Only `toBlock`, the call removes cache files from the genesis block to the specified block. + +#### Returns + +`result`: *object* - `Cache Removed` status or `error`. + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"admin_logsRemoveCache","params":["1", "100"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"admin_logsRemoveCache","params":["1", "100"], "id":1} + ``` + + === "JSON result" + + ```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` + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"admin_logsRepairCache","params":["1200"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"admin_logsRepairCache","params":["1200"], "id":1} + ``` + + === "JSON result" + + ```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). + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"admin_nodeInfo","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"admin_nodeInfo","params":[],"id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"admin_peers","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"admin_peers","params":[],"id":1} + ``` + + === "JSON result" + + ```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) + +!!! example + + === "curl HTTP request" + + ```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 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"admin_removePeer","params":["enode://f59c0ab603377b6ec88b89d5bb41b98fc385030ab1e4b03752db6f7dab364559d92c757c13116ae6408d2d33f0138e7812eb8b696b2a22fe3332c4b5127b22a3@127.0.0.1:30304"],"id":1} + ``` + + === "JSON result" + + ```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/). +We recommend using the [`TRACE` API](#trace-methods) for production use over the `DEBUG` API. + +!!! 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 + +!!! example + + This example uses an externally owned account address for the `address` parameter. + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"debug_accountAt","params":["0xc8df1f061abb4d0c107b2b1a794ade8780b3120e681f723fe55a7be586d95ba6", 0, "0xbcde5374fce5edbc8e2a8697c15331677e6ebf0b"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"debug_accountAt","params":["0xc8df1f061abb4d0c107b2b1a794ade8780b3120e681f723fe55a7be586d95ba6", 0, "0xbcde5374fce5edbc8e2a8697c15331677e6ebf0b"],"id":1} + ``` + + === "JSON result" + + ```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. + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"debug_accountAt","params":["0x2b76b3a2fc44c0e21ea183d06c846353279a7acf12abcc6fb9d5e8fb14ae2f8c", 0, "0x0e0d2c8f7794e82164f11798276a188147fbd415"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"debug_accountAt","params":["0x2b76b3a2fc44c0e21ea183d06c846353279a7acf12abcc6fb9d5e8fb14ae2f8c", 0, "0x0e0d2c8f7794e82164f11798276a188147fbd415"],"id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"debug_accountRange","params":["12345", 0, "0", 5],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"debug_accountRange","params":["12345", 0, "0", 5],"id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"debug_batchSendRawTransaction","params":["0xf868808203e882520894627306090abab3a6e1400e9345bc60c78a8bef57872386f26fc10000801ba0ac74ecfa0e9b85785f042c143ead4780931234cc9a032fce99fab1f45e0d90faa02fd17e8eb433d4ca47727653232045d4f81322619c0852d3fe8ddcfcedb66a43","0x416","0xf868018203e882520894627306090abab3a6e1400e9345bc60c78a8bef57872386f26fc10000801ca0b24ea1bee8fe36984c36acbf80979a4509f23fc17141851e08d505c0df158aa0a00472a05903d4cd7a811bd4d5c59cc105d93f5943f3393f253e92e65fc36e7ce0","0xf868808203e882520894627306090abab3a6e1400e9345bc60c78a8bef5787470de4df820000801ca0f7936b4de04792e3c65095cfbfd1399d231368f5f05f877588c0c8509f6c98c9a01834004dead527c8da1396eede42e1c60e41f38a77c2fd13a6e495479c729b99"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"debug_batchSendRawTransaction","params":["0xf868808203e882520894627306090abab3a6e1400e9345bc60c78a8bef57872386f26fc10000801ba0ac74ecfa0e9b85785f042c143ead4780931234cc9a032fce99fab1f45e0d90faa02fd17e8eb433d4ca47727653232045d4f81322619c0852d3fe8ddcfcedb66a43","0x416","0xf868018203e882520894627306090abab3a6e1400e9345bc60c78a8bef57872386f26fc10000801ca0b24ea1bee8fe36984c36acbf80979a4509f23fc17141851e08d505c0df158aa0a00472a05903d4cd7a811bd4d5c59cc105d93f5943f3393f253e92e65fc36e7ce0","0xf868808203e882520894627306090abab3a6e1400e9345bc60c78a8bef5787470de4df820000801ca0f7936b4de04792e3c65095cfbfd1399d231368f5f05f877588c0c8509f6c98c9a01834004dead527c8da1396eede42e1c60e41f38a77c2fd13a6e495479c729b99"],"id":1} + ``` + + === "JSON result" + + ```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) + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"debug_getBadBlocks","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"debug_getBadBlocks","params":[],"id":1} + ``` + + === "JSON result" + + ```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_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 + +!!! example + + === "curl HTTP request" + + ```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 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"debug_standardTraceBlockToFile","params":["0x2dc0b6c43144e314a86777b4bd4f987c0790a6a0b21560671d221ed81a23f2dc", { + "txHash": "0x4ff04c4aec9517721179c8dd435f47fbbfc2ed26cd4926845ab687420d5580a6", "disableMemory": false}], "id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"debug_standardTraceBadBlockToFile","params":["0x53741e9e94791466d117c5f9e41a2ed1de3f73d39920c621dfc2f294e7779baa"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"debug_standardTraceBadBlockToFile","params":["0x53741e9e94791466d117c5f9e41a2ed1de3f73d39920c621dfc2f294e7779baa"], "id":1} + ``` + + === "JSON result" + + ```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). + +!!! example + + === "curl HTTP request" + + ```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 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"debug_storageRangeAt","params":["0x2b76b3a2fc44c0e21ea183d06c846353279a7acf12abcc6fb9d5e8fb14ae2f8c",0,"0x0e0d2c8f7794e82164f11798276a188147fbd415","0x0000000000000000000000000000000000000000000000000000000000000000",1], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": { + "storage": { + "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563": { + "key": null, + "value": "0x0000000000000000000000000000000000000000000000000000000000000001" + } + }, + "nextKey": "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6" + } + } + ``` + +### `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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"debug_metrics","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"debug_metrics","params":[],"id":1} + ``` + + === "JSON result" + + ```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_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) + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceTransaction","params":["0x2cc6c94c21685b7e0f8ddabf277a5ccf98db157c62619cde8baea696a74ed18e",{"disableStorage":true}],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"debug_traceTransaction","params":["0x2cc6c94c21685b7e0f8ddabf277a5ccf98db157c62619cde8baea696a74ed18e",{"disableStorage":true}],"id":1} + ``` + + === "JSON result" + + ```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) + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceBlock","params":["0xf90277f90208a05a41d0e66b4120775176c09fcf39e7c0520517a13d2b57b18d33d342df038bfca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e6a7a1d47ff21b6321162aea7c6cb457d5476bcaa00e0df2706b0a4fb8bd08c9246d472abbe850af446405d9eba1db41db18b4a169a04513310fcb9f6f616972a3b948dc5d547f280849a87ebb5af0191f98b87be598a0fe2bf2a941abf41d72637e5b91750332a30283efd40c424dc522b77e6f0ed8c4b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000860153886c1bbd82b44382520b8252088455c426598b657468706f6f6c2e6f7267a0b48c515a9dde8d346c3337ea520aa995a4738bb595495506125449c1149d6cf488ba4f8ecd18aab215f869f86780862d79883d2000825208945df9b87991262f6ba471f09758cde1c0fc1de734827a69801ca088ff6cf0fefd94db46111149ae4bfc179e9b94721fffd821d38d16464b3f71d0a045e0aff800961cfce805daef7016b9b675c137a6a41a548f7b60a3484c06a33ac0"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"debug_traceBlock","params":["0xf90277f90208a05a41d0e66b4120775176c09fcf39e7c0520517a13d2b57b18d33d342df038bfca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e6a7a1d47ff21b6321162aea7c6cb457d5476bcaa00e0df2706b0a4fb8bd08c9246d472abbe850af446405d9eba1db41db18b4a169a04513310fcb9f6f616972a3b948dc5d547f280849a87ebb5af0191f98b87be598a0fe2bf2a941abf41d72637e5b91750332a30283efd40c424dc522b77e6f0ed8c4b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000860153886c1bbd82b44382520b8252088455c426598b657468706f6f6c2e6f7267a0b48c515a9dde8d346c3337ea520aa995a4738bb595495506125449c1149d6cf488ba4f8ecd18aab215f869f86780862d79883d2000825208945df9b87991262f6ba471f09758cde1c0fc1de734827a69801ca088ff6cf0fefd94db46111149ae4bfc179e9b94721fffd821d38d16464b3f71d0a045e0aff800961cfce805daef7016b9b675c137a6a41a548f7b60a3484c06a33ac0"],"id":1} + ``` + + === "JSON result" + + ```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) + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceBlockByHash","params":["0xaceb3b2c9b25b0589230873921eb894b28722011b8df63977145517d754875a5"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"debug_traceBlockByHash","params":["0xaceb3b2c9b25b0589230873921eb894b28722011b8df63977145517d754875a5"], "id":1} + ``` + + === "JSON result" + + ```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* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +* `options`: *object* - request options object with the following fields (all optional and default to `false`): + + * `disableStorage`: *boolean* - `true` disables storage capture. + + * `disableMemory`: *boolean* - `true` disables memory capture. + + * `disableStack` : *boolean* - `true` disables stack capture. + +#### Returns + +`result`: *array* of *objects* - list of [trace objects](objects.md#trace-object) + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"debug_traceBlockByNumber","params":["0x7224",{"disableStorage":true}], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"debug_traceBlockByNumber","params":["0x7224",{"disableStorage":true}], "id":1} + ``` + + === "JSON result" + + ```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 + [EthSigner](http://docs.ethsigner.consensys.net/en/latest/) with Besu. + +#### Parameters + +None + +#### Returns + +`result`: *array* of *strings* - list of 20-byte account addresses owned by the client + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":53}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":53} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 53, + "result" : [ ] + } + ``` + +### `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 + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":51}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":51} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 51, + "result" : "0x2377" + } + ``` + + === "curl GraphQL" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block{number}}"}' http://localhost:8547/graphql + ``` + + === "GraphQL" + + ```bash + { + block { + number + } + } + ``` + + === "GraphQL result" + + ```bash + { + "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`. + +If revert reason is enabled with [`--revert-reason-enabled`](../cli/options.md#revert-reason-enabled), +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) + +`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +!!! note + + By default, `eth_call` does not fail if the sender account has an insufficient balance. + This is done by setting the balance of the account to a large amount of ether. + To enforce balance rules, set the [`strict` parameter](objects.md#transaction-call-object) in the transaction call object to `true`. + +#### Returns + +`result`: *string* - return value of the executed contract + +!!! example + + === "curl HTTP" + + ```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 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13","value":"0x1"}, "latest"],"id":53} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 53, + "result": "0x" + } + ``` + + === "curl GraphQL" + + ```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 + ``` + + === "GraphQL" + + ```bash + { + block { + number + call(data: {from: "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", to: "0x69498dd54bd25aa0c886cf1f8b8ae0856d55ff13", data: "0x12a7b914"}) { + data + status + } + } + } + ``` + + === "GraphQL result" + + ```json + { + "data" : { + "block" : { + "number" : 17449, + "call" : { + "data" : "0x", + "status" : 1 + } + } + } + } + ``` + +!!! example "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. + + === "curl HTTP" + + ```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 result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":51}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":51} + ``` + + === "JSON result" + + ```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: + +!!!example + + ```bash + besu --miner-coinbase="0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" --rpc-http-enabled + ``` + +#### Parameters + +None + +#### Returns + +`result`: *string* - coinbase address + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":53}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":53} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 53, + "result" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" + } + ``` + +### `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. + +If revert reason is enabled with [`--revert-reason-enabled`](../cli/options.md#revert-reason-enabled), +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 + +!!! example "Example of cost estimate of a value transaction" + + The following example returns an estimate of 21000 wei (`0x5208`) for the transaction. + + === "curl HTTP" + + ```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 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_estimateGas","params":[{"from":"0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73","to":"0x44Aa93095D6749A706051658B970b941c72c1D53","value":"0x1"}],"id":53} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 53, + "result" : "0x5208" + } + ``` + + === "curl GraphQL" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block{estimateGas (data: {from :\"0x6295ee1b4f6dd65047762f924ecd367c17eabf8f\", to :\"0x8888f1f195afa192cfee860698584c030f4c9db1\"})}}"}' http://localhost:8547/graphql + ``` + + === "GraphQL" + + ```bash + { + block { + estimateGas(data: {from: "0x6295ee1b4f6dd65047762f924ecd367c17eabf8f", to: "0x8888f1f195afa192cfee860698584c030f4c9db1"}) + } + } + ``` + + === "GraphQL result" + + ```bash + { + "data" : { + "block" : { + "estimateGas" : 21000 + } + } + } + ``` + +!!! example "Example of cost estimate of deploying a simple storage smart contract" + + The following example request estimates the cost of deploying a simple storage smart contract to + the network. The data field contains the hash of the compiled contract you want to deploy. (You can + get the compiled contract hash from your IDE, for example, **Remix > Compile tab > details > + WEB3DEPLOY**.) The result is 113355 wei. + + === "curl HTTP request" + + ```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 result" + + ```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. + +#### Parameters + +* `blockCount`: *integer* - 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. + +* `newestBlock`: *string* - Integer representing the highest number block of the requested range or one of the string tags `latest`, + `earliest`, or `pending`, as described in + [Block parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter). + +#### Returns + +`result`: *object* - [Fee history results object](objects.md#fee-history-results-object). + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_feeHistory","params":[2, "latest"],"id":28}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_feeHistory","params":[2, "latest"],"id":28} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 28, + "result" : { + "oldestBlock" : "0x53cbe6", + "baseFeePerGas" : ["0x7", "0x7", "0x7" ] + "gasUsedRatio" : [ 0.0011536265162931602, 0.10653990633315608 ] + } + } + ``` + +### `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 + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":53}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":53} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 53, + "result" : "0x3e8" + } + ``` + + === "curl GraphQL" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{ "query": "{gasPrice}"}' http://localhost:8547/graphql + ``` + + === "GraphQL" + + ```bash + { + gasPrice + } + ``` + + === "GraphQL result" + + ```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`: *string* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +#### Returns + +`result`: *string* - current balance, in Wei, as a hexadecimal value + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "latest"],"id":53}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_getBalance","params":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", "latest"],"id":53} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 53, + "result" : "0x1cfe56f3795885980000" + } + ``` + + === "curl GraphQL" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{ "query": "{ account ( address: \"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73\") { balance } }"}' http://localhost:8547/graphql + ``` + + === "GraphQL" + + ```bash + { + account(address: "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73") { + balance + } + } + ``` + + === "GraphQL result" + + ```bash + { + "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 + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xd5f1812548be429cbdc6376b29611fc49e06f1359758c4ceaaa3b393e2239f9c", false],"id":53}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xd5f1812548be429cbdc6376b29611fc49e06f1359758c4ceaaa3b393e2239f9c", false],"id":53} + ``` + + === "JSON result" + + ```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" + } + } + ``` + + === "curl GraphQL" + + ```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 + ``` + + === "GraphQL" + + ```bash + { + block(hash: "0xb0efed1fc9326fee967cb2d845d4ebe57c5350a0670c8e86f8052dea6f219f92") { + number + transactions { + hash + } + timestamp + difficulty + totalDifficulty + gasUsed + gasLimit + hash + nonce + ommerCount + logsBloom + mixHash + ommerHash + extraData + stateRoot + receiptsRoot + transactionCount + transactionsRoot + } + } + ``` + + === "GraphQL result" + + ```bash + { + "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* - 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) + +* `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. + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x68B3", true],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x68B3", true],"id":1} + ``` + + === "JSON result" + + ```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" + } + } + ``` + + === "curl GraphQL" + + ```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 + ``` + + === "GraphQL" + + ```bash + { + 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 + } + } + } + ``` + + === "GraphQL result" + + ```bash + { + "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_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 + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":53}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":53} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 53, + "result" : null + } + ``` + + === "curl GraphQL" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block(hash:\"0xe455c14f757b0b9b67774baad1be1c180a4c1657df52259dbb685bf375408097\"){transactionCount}}"}' http://localhost:8547/graphql + ``` + + === "GraphQL" + + ```bash + { + block(hash: "0xe455c14f757b0b9b67774baad1be1c180a4c1657df52259dbb685bf375408097") { + transactionCount + } + } + ``` + + === "GraphQL result" + + ```bash + { + "data" : { + "block" : { + "transactionCount" : 1 + } + } + } + ``` + +### `eth_getBlockTransactionCountByNumber` + +Returns the number of transactions in a block matching the specified block number. + +#### Parameters + +`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +#### Returns + +`result`: *string* - integer representing the number of transactions in the specified block, +or `null` if no matching block number is found + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0xe8"],"id":51}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0xe8"],"id":51} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 51, + "result" : "0x8" + } + ``` + + === "curl GraphQL" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block(number:232){transactionCount}}"}' http://localhost:8547/graphql + ``` + + === "GraphQL" + + ```bash + { + block(number: 232) { + transactionCount + } + } + ``` + + === "GraphQL result" + + ```bash + { + "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`: *string* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +#### Returns + +`result`: *data* - code stored at the specified address + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xa50a51c09a5c451c52bb714527e1974b686d8e77", "latest"],"id":53}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_getCode","params":["0xa50a51c09a5c451c52bb714527e1974b686d8e77", "latest"],"id":53} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 53, + "result": "0x60806040526004361060485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633fa4f2458114604d57806355241077146071575b600080fd5b348015605857600080fd5b50605f6088565b60408051918252519081900360200190f35b348015607c57600080fd5b506086600435608e565b005b60005481565b60008190556040805182815290517f199cd93e851e4c78c437891155e2112093f8f15394aa89dab09e38d6ca0727879181900360200190a1505600a165627a7a723058209d8929142720a69bde2ab3bfa2da6217674b984899b62753979743c0470a2ea70029" + } + ``` + + === "curl GraphQL" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{"query": "{account(address: \"0xa50a51c09a5c451c52bb714527e1974b686d8e77\"){ code }}"}' http://localhost:8547/graphql + ``` + + === "GraphQL" + + ```bash + { + account(address: "0xa50a51c09a5c451c52bb714527e1974b686d8e77") { + code + } + } + ``` + + === "GraphQL result" + + ```bash + { + "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). + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0xf8bf5598d9e04fbe84523d42640b9b0e"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0xf8bf5598d9e04fbe84523d42640b9b0e"],"id":1} + ``` + + === "JSON result" + + ```json + + Example result from a filter created with `eth_newBlockFilter`: + { + "jsonrpc": "2.0", + "id": 1, + "result": [ + "0xda2bfe44bf85394f0d6aa702b5af89ae50ae22c0928c18b8903d9269abe17e0b", + "0x88cd3a37306db1306f01f7a0e5b25a9df52719ad2f87b0f88ee0e6753ed4a812", + "0x4d4c731fe129ff32b425e6060d433d3fde278b565bbd1fd624d5a804a34f8786" + ] + } + + Example result from a filter created with `eth_newPendingTransactionFilter`: + { + "jsonrpc": "2.0", + "id": 1, + "result": [ + "0x1e977049b6db09362da09491bee3949d9362080ce3f4fc19721196d508580d46", + "0xa3abc4b9a4e497fd58dc59cdff52e9bb5609136bcd499e760798aa92802769be" + ] + } + + 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) + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x5ace5de3985749b6a1b2b0d3f3e1fb69"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x5ace5de3985749b6a1b2b0d3f3e1fb69"],"id":1} + ``` + + === "JSON result" + + ```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. + +!!! attention + + Using `eth_getLogs` to get the logs from a large range of blocks, especially an entire chain from + its genesis block, can cause Besu to hang and never return a response. + We recommend splitting one large query into multiple ones for better performance. + +#### Parameters + +`filterOptions`: *object* - [filter options object](objects.md#filter-options-object) + +#### Returns + +`result`: *array* of *objects* - list of [log objects](objects.md#log-object) + +!!! example + + === "curl HTTP" + + ```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 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_getLogs","params":[{"fromBlock":"earliest", "toBlock":"latest", "address": "0x2e1f232a9439c3d459fceca0beef13acc8259dd8", "topics":[]}], "id":1} + ``` + + === "JSON result" + + ```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" ] + } ] + } + ``` + + === "curl GraphQL" + + ```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 + ``` + + === "GraphQL" + + ```bash + { + logs(filter: {fromBlock: 1486000, toBlock: 1486010, addresses: ["0x7ef66b77759e12caf3ddb3e4aff524e577c59d8d"], topics: [["0x8a22ee899102a366ac8ad0495127319cb1ff2403cfae855f83a89cda1266674d"]]}) { + index + topics + data + account { + address + } + transaction { + hash + } + } + } + ``` + + === "GraphQL result" + + ```bash + { + "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) + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method": "eth_getMinerDataByBlockHash","params": ["0xbf137c3a7a1ebdfac21252765e5d7f40d115c2757e4a4abee929be88c624fdb7"],"id": 1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method": "eth_getMinerDataByBlockHash","params": ["0xbf137c3a7a1ebdfac21252765e5d7f40d115c2757e4a4abee929be88c624fdb7"],"id": 1} + ``` + + === "JSON result" + + ```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* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +#### Returns + +`result`: *object* - [miner data object](objects.md#miner-data-object) + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method": "eth_getMinerDataByBlockNumber","params": ["0x7689D2"],"id": 1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method": "eth_getMinerDataByBlockNumber","params": ["0x7689D2"],"id": 1} + ``` + + === "JSON result" + + ```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`: *string* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +#### 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` + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method": "eth_getProof","params": [ + "0a8156e7ee392d885d10eaa86afd0e323afdcd95", ["0x0000000000000000000000000000000000000000000000000000000000000347"], "latest"],"id": 1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method": "eth_getProof","params": [ + "0a8156e7ee392d885d10eaa86afd0e323afdcd95", ["0x0000000000000000000000000000000000000000000000000000000000000347"], "latest"],"id": 1} + ``` + + === "JSON result" + + ```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_getQuorumPayload` + +When using [GoQuorum-compatible privacy](../../../private-networks/how-to/use-privacy/goquorum-compatible.md), returns the +[unencrypted payload from Tessera](https://docs.tessera.consensys.net/Concepts/Transaction-manager/#private-transaction-flow). + +#### Parameters + +`id`: *string* - the generated SHA3-512 hash of the encrypted payload from Tessera, in hex (the `input` value in the transaction) + +#### Returns + +`result`: *string* - unencrypted transaction payload in hex + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST http://127.0.0.1:22000 --data '{"jsonrpc":"2.0","method":"eth_getQuorumPayload","params":["0x5e902fa2af51b186468df6ffc21fd2c26235f4959bf900fc48c17dc1774d86d046c0e466230225845ddf2cf98f23ede5221c935aac27476e77b16604024bade0"],"id":67}' + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method": "eth_getQuorumPayload","params": ["0x5e902fa2af51b186468df6ffc21fd2c26235f4959bf900fc48c17dc1774d86d046c0e466230225845ddf2cf98f23ede5221c935aac27476e77b16604024bade0"],"id": 67} + ``` + + === "JSON result" + + ```json + { + "jsonrpc":"2.0", + "id":67, + "result":"0x6060604052341561000f57600080fd5b604051602080610149833981016040528080519060200190919050505b806000819055505b505b610104806100456000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632a1afcd914605157806360fe47b11460775780636d4ce63c146097575b600080fd5b3415605b57600080fd5b606160bd565b6040518082815260200191505060405180910390f35b3415608157600080fd5b6095600480803590602001909190505060c3565b005b341560a157600080fd5b60a760ce565b6040518082815260200191505060405180910390f35b60005481565b806000819055505b50565b6000805490505b905600a165627a7a72305820d5851baab720bba574474de3d09dbeaabc674a15f4dd93b974908476542c23f00029000000000000000000000000000000000000000000000000000000000000002a" + } + ``` + +### `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`: *string* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +#### Returns + +`result` : *string* - value at the specified storage position + +!!! example + + Calculating the correct position depends on the storage you want to retrieve. + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method": "eth_getStorageAt","params": ["0x‭3B3F3E‬","0x0","latest"],"id": 53}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method": "eth_getStorageAt","params": ["0x‭3B3F3E‬","0x0","latest"],"id": 53} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 53, + "result" : "0x0000000000000000000000000000000000000000000000000000000000000000" + } + ``` + + === "curl GraphQL" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{ "query": "{account(address: \"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73\") {storage(slot: \"0x04\")}}"}' http://localhost:8547/graphql + ``` + + === "GraphQL" + + ```bash + { + account(address: "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73") { + storage(slot: "0x04") + } + } + ``` + + === "GraphQL result" + + ```bash + { + "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 + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0xbf137c3a7a1ebdfac21252765e5d7f40d115c2757e4a4abee929be88c624fdb7", "0x2"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0xbf137c3a7a1ebdfac21252765e5d7f40d115c2757e4a4abee929be88c624fdb7", "0x2"], "id":1} + ``` + + === "JSON result" + + ```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", + "publicKey": "0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33d8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3", + "raw": "0xf86401018304cb2f946295ee1b4f6dd65047762f924ecd367c17eabf8f0a8412a7b9141ba0ed2e0f715eccaab4362c19c1cf35ad8031ab1cabe71ada3fe8b269fe9d726712a06691074f289f826d23c92808ae363959eb958fb7a91fc721875ece4958114c65", + "to" : "0xcfdc98ec7f01dab1b67b36373524ce0208dc3953", + "transactionIndex" : "0x2", + "value" : "0x0", + "v" : "0x2a", + "r" : "0xa2d2b1021e1428740a7c67af3c05fe3160481889b25b921108ac0ac2c3d5d40a", + "s" : "0x63186d2aaefe188748bfb4b46fb9493cbc2b53cf36169e8501a5bc0ed941b484" + } + } + ``` + + === "curl GraphQL" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{"query": "{ block(hash: \"0x9270651f9c6fa36232c379d0ecf69b519383aa275815a65f1e03114346668f69\") { transactionAt(index: 0) {block{hash} hash } } }"}' http://localhost:8547/graphql + ``` + + === "GraphQL" + + ```bash + { + block(hash: "0x9270651f9c6fa36232c379d0ecf69b519383aa275815a65f1e03114346668f69") { + transactionAt(index: 0) { + block { + hash + } + hash + } + } + } + ``` + + === "GraphQL result" + + ```bash + { + "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* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +`index`: *string* - transaction index position + +#### Returns + +`result`: *object* - [transaction object](objects.md#transaction-object), or `null` when there is no +transaction + +!!! example + + 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. + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["82990", "0x2"], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["82990", "0x2"], "id":1} + ``` + + === "JSON result" + + ```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", + "publicKey": "0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33d8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3", + "raw": "0xf86401018304cb2f946295ee1b4f6dd65047762f924ecd367c17eabf8f0a8412a7b9141ba0ed2e0f715eccaab4362c19c1cf35ad8031ab1cabe71ada3fe8b269fe9d726712a06691074f289f826d23c92808ae363959eb958fb7a91fc721875ece4958114c65", + "to" : "0xcfdc98ec7f01dab1b67b36373524ce0208dc3953", + "transactionIndex" : "0x2", + "value" : "0x0", + "v" : "0x2a", + "r" : "0xa2d2b1021e1428740a7c67af3c05fe3160481889b25b921108ac0ac2c3d5d40a", + "s" : "0x63186d2aaefe188748bfb4b46fb9493cbc2b53cf36169e8501a5bc0ed941b484" + } + } + ``` + + === "curl GraphQL" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{"query": "{block(number:20303) {transactionAt(index: 0) {block{hash} hash}}}"}' http://localhost:8547/graphql + ``` + + === "GraphQL" + + ```bash + { + block(number: 20303) { + transactionAt(index: 0) { + block { + hash + } + hash + } + } + } + ``` + + === "GraphQL result" + + ```bash + { + "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 + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0xa52be92809541220ee0aaaede6047d9a6c5d0cd96a517c854d944ee70a0ebb44"],"id":53}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0xa52be92809541220ee0aaaede6047d9a6c5d0cd96a517c854d944ee70a0ebb44"],"id":53} + ``` + + === "JSON result" + + ```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", + "publicKey": "0x3a514176466fa815ed481ffad09110a2d344f6c9b78c1d14afc351c3a51be33d8072e77939dc03ba44790779b7a1025baf3003f6732430e20cd9b76d953391b3", + "raw": "0xf8641d018304cb2f946295ee1b4f6dd65047762f924ecd367c17eabf8f0a84e8beef5b1ca011232cac2f935ab8dd5d5972438fde90e05d0dd620860b42886e7d54dc5c4a0ca03dd467b5faa6e5a0f3c22a5396fefa5b03f07d8114d8434e0e1493736aad8d0e", + "to" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "transactionIndex" : "0x0", + "value" : "0x4e1003b28d9280000", + "v" : "0xfe7", + "r" : "0x84caf09aefbd5e539295acc67217563438a4efb224879b6855f56857fa2037d3", + "s" : "0x5e863be3829812c81439f0ae9d8ecb832b531d651fb234c848d1bf45e62be8b9" + } + } + ``` + + === "curl GraphQL" + + ```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 + ``` + + === "GraphQL" + + ```bash + { + transaction(hash: "0x03d80b9ca0a71435399a268609d6d7896f7155d2147cc22b780672bcb59b170d") { + block { + hash + } + gas + gasPrice + hash + nonce + value + from { + address + } + to { + address + } + status + } + } + ``` + + === "GraphQL result" + + ```bash + { + "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`: *string* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, 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 + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0xc94770007dda54cF92009BFF0dE90c06F603a09f","latest"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0xc94770007dda54cF92009BFF0dE90c06F603a09f","latest"],"id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 1, + "result" : "0x1" + } + ``` + + === "curl GraphQL" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{ "query": "{ account (address:\"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73\"){transactionCount}}"}' http://localhost:8547/graphql + ``` + + === "GraphQL" + + ```bash + { + account(address: "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73") { + transactionCount + } + } + ``` + + === "GraphQL result" + + ```bash + { + "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 + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x504ce587a65bdbdb6414a0c6c16d86a04dd79bfcc4f2950eec9634b30ce5370f"],"id":53}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x504ce587a65bdbdb6414a0c6c16d86a04dd79bfcc4f2950eec9634b30ce5370f"],"id":53} + ``` + + === "JSON result" + + ```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" + } + } + ``` + + === "curl GraphQL" + + ```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 + ``` + + === "GraphQL" + + ```bash + { + transaction(hash: "0x5f5366af89e8777d5ae62a1af94a0876bdccbc22417bed0aff361eefa3e37f86") { + block { + hash + logsBloom + } + hash + createdContract { + address + } + cumulativeGasUsed + gas + gasUsed + logs { + topics + } + from { + address + } + to { + address + } + index + } + } + ``` + + === "GraphQL result" + + ```bash + { + "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. + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0xc48fb64230a82f65a08e7280bd8745e7fea87bc7c206309dee32209fe9a985f7", "0x0"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0xc48fb64230a82f65a08e7280bd8745e7fea87bc7c206309dee32209fe9a985f7", "0x0"],"id":1} + ``` + + === "JSON result" + + ```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":[] + } + } + ``` + + === "curl GraphQL" + + ```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 + ``` + + === "GraphQL" + + ```bash + { + block(hash: "0xc48fb64230a82f65a08e7280bd8745e7fea87bc7c206309dee32209fe9a985f7") { + ommerAt(index: 0) { + difficulty + extraData + gasLimit + gasUsed + hash + logsBloom + mixHash + nonce + number + receiptsRoot + stateRoot + timestamp + totalDifficulty + transactionsRoot + } + } + } + ``` + + === "GraphQL result" + + ```bash + { + "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* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +* `uncleIndex`: *string* - index of the uncle + +#### Returns + +`result`: *object* - [block object](objects.md#block-object) + +!!! note + + Uncles do not contain individual transactions. + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockNumberAndIndex","params":["0x7689D2", "0x0"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_getUncleByBlockNumberAndIndex","params":["0x7689D2", "0x0"],"id":1} + ``` + + === "JSON result" + + ```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":[] + } + } + ``` + + === "curl GraphQL" + + ```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 + ``` + + === "GraphQL" + + ```bash + { + block(number: 2587) { + ommerAt(index: 0) { + difficulty + extraData + gasLimit + gasUsed + hash + logsBloom + mixHash + nonce + number + receiptsRoot + stateRoot + timestamp + totalDifficulty + transactionsRoot + } + } + } + ``` + + === "GraphQL result" + + ```bash + { + "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 + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 1, + "result" : 0x0 + } + ``` + + === "curl GraphQL" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block(hash:\"0x65c08d792e4192b9ece6b6f2390da7da464208b22d88490be8add9373917b426\"){ommerCount}}"}' http://localhost:8547/graphql + ``` + + === "GraphQL" + + ```bash + { + block(hash: "0x65c08d792e4192b9ece6b6f2390da7da464208b22d88490be8add9373917b426") { + ommerCount + } + } + ``` + + === "GraphQL result" + + ```bash + { + "data" : { + "block" : { + "ommerCount" : 2 + } + } + } + ``` + +### `eth_getUncleCountByBlockNumber` + +Returns the number of uncles in a block matching the specified block number. + +#### Parameters + +`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +#### Returns + +`result`: *string* - integer representing the number of uncles in the specified block + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber","params":["0xe8"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber","params":["0xe8"],"id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 1, + "result" : "0x1" + } + ``` + + === "curl GraphQL" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{ "query": "{block(number:\"0x59fd\"){ommerCount}}"}' http://localhost:8547/graphql + ``` + + === "GraphQL" + + ```bash + { + block(number: "0x59fd") { + ommerCount + } + } + ``` + + === "GraphQL result" + + ```bash + { + "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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getWork","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"eth_getWork","params":[],"id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_mining","params":[],"id":53}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"eth_mining","params":[],"id":53} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```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 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"eth_newFilter","params":[{"fromBlock":"earliest", "toBlock":"latest", "topics":[]}],"id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": "0x443d6a77c4964707a8554c92f7e4debd" + } + ``` + +### `eth_protocolVersion` + +Returns current Ethereum protocol version. + +#### Parameters + +None + +#### Returns + +`result`: *string* - Ethereum protocol version + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc": "2.0", + "id": 1, + "result": "0x3f" + } + ``` + + === "curl GraphQL" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{ "query": "{protocolVersion}"}' http://localhost:8547/graphql + ``` + + === "GraphQL" + + ```bash + { + protocolVersion + } + ``` + + === "GraphQL result" + + ```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`. + +!!! important + + Besu doesn't implement [`eth_sendTransaction`](../../how-to/send-transactions.md). + + [EthSigner](https://docs.ethsigner.consensys.net/) provides transaction signing and implements + [`eth_sendTransaction`](https://docs.ethsigner.consensys.net/Using-EthSigner/Using-EthSigner/#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 + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"],"id":1} + ``` + + === "JSON result" + + ```json + { + "id":1, + "jsonrpc": "2.0", + "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331" + } + ``` + + === "curl GraphQL" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{ "query": "mutation {sendRawTransaction(data: \"0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833\")}"}' http://localhost:8547/graphql + ``` + + === "GraphQL" + + ```bash + mutation { + sendRawTransaction(data: "0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833") + } + ``` + + === "GraphQL result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitHashrate", "params":["0x0000000000000000000000000000000000000000000000000000000000500000", "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0", "method":"eth_submitHashrate", "params":["0x0000000000000000000000000000000000000000000000000000000000500000", "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c"],"id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitWork", "params":["0x0000000000000001", "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "0xD1GE5700000000000000000000000000D1GE5700000000000000000000000000"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0", "method":"eth_submitWork", "params":["0x0000000000000001", "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "0xD1GE5700000000000000000000000000D1GE5700000000000000000000000000"],"id":73} + ``` + + === "JSON result" + + ```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.) + +!!! example + + === "curl HTTP" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":51}' http://127.0.0.1:8545 + ``` + + === "wscat WS" + + ```bash + {"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":51} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 51, + "result" : { + "startingBlock" : "0x0", + "currentBlock" : "0x1518", + "highestBlock" : "0x9567a3", + "pulledStates" : "0x203ca", + "knownStates" : "0x200636" + } + } + ``` + + === "curl GraphQL" + + ```bash + curl -X POST -H "Content-Type: application/json" --data '{ "query": "{syncing{startingBlock currentBlock highestBlock pulledStates knownStates}}"}' http://localhost:8547/graphql + ``` + + === "GraphQL" + + ```bash + { + syncing { + startingBlock + currentBlock + highestBlock + pulledStates + knownStates + } + } + ``` + + === "GraphQL result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0x70355a0b574b437eaa19fe95adfedc0a"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0x70355a0b574b437eaa19fe95adfedc0a"],"id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 1, + "result" : true + } + ``` + +## `MINER` methods + +The `MINER` API methods allow you to control the node’s mining operation. + +!!! note + + The `MINER` API methods are not enabled by default for JSON-RPC. To enable the `MINER` API + methods, use the [`--rpc-http-api`](../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` + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"miner_changeTargetGasLimit","params":[800000], "id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"miner_changeTargetGasLimit","params":[800000], "id":1} + ``` + + === "JSON result" + + ```json + { + "jsonrpc" : "2.0", + "id" : 1, + "result" : "Success" + } + ``` + +### `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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"miner_setCoinbase","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"miner_setCoinbase","params":["0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73"],"id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"miner_start","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"miner_start","params":[],"id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"miner_stop","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"miner_stop","params":[],"id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"net_enode","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"net_enode","params":[],"id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":53}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"net_listening","params":[],"id":53} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":53}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":53} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"net_services","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"net_services","params":[],"id":1} + ``` + + === "JSON result" + + ```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 | +| `3` | ETH | Ropsten | PoS test network | +| `4` | ETH | Rinkeby | PoA test network using Clique | +| `5` | ETH | Goerli | PoA test network using Clique | +| `2018` | ETH | Dev | PoW development network | +| `1` | ETC | Classic | Main Ethereum Classic network | +| `7` | ETC | Mordor | PoW test network | +| `6` | ETC | Kotti | PoA test network using Clique | +| `212` | ETC | Astor | 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`. + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":53}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"net_version","params":[],"id":53} + ``` + + === "JSON result for Mainnet" + + ```json + { + "jsonrpc" : "2.0", + "id" : 51, + "result" : "1" + } + ``` + + === "JSON result for Ropsten" + + ```json + { + "jsonrpc" : "2.0", + "id" : 53, + "result" : "3" + } + ``` + +## `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` + +!!! example + + === "curl HTTP request" + + ```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 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"plugins_reloadPluginConfig","params":["tech.pegasys.plus.plugin.kafka.KafkaPlugin"],"id":1} + ``` + + === "JSON result" + + ```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. + +!!! important + + Your node must be an archive node (that is, synchronized without pruning or fast sync) or the + requested block must be within the number of [blocks retained](../cli/options.md#pruning-blocks-retained) + with [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). + +#### Parameters + +`blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +#### 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). + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"trace_block","params":["0x6"],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"trace_block","params":["0x6"],"id":1} + ``` + + === "JSON result" + + ```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. + +!!! important + + The requested transaction must be contained in a block within the number of + [blocks retained](../cli/options.md#pruning-blocks-retained) with [pruning enabled](../cli/options.md#pruning-enabled) + (by default, 1024). + +#### Parameters + +* `call`: *object* - [transaction call object](objects.md#transaction-call-object) + +* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +* `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 + +!!! example + + === "curl HTTP request" + + ```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 + ``` + + === "wscat WS request" + + ```bash + {"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 result" + + ```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. + +!!! important + + The requested block must be within the number of [blocks retained](../cli/options.md#pruning-blocks-retained) + with [pruning enabled](../cli/options.md#pruning-enabled) + (by default, 1024). + +#### 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* - integer representing a block number or one of the string tags `latest`, + `earliest`, or `pending`, as described in + [Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +#### Returns + +`result`: *array* of *objects* - list of [calls to other contracts](../trace-types.md#trace) containing +one object per call, in transaction execution order + +!!! example + + === "curl HTTP request" + + ```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 + ``` + + === "wscat WS request" + + ```bash + {"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 result" + + ```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. + +!!! important + + Your node must be an archive node (that is, synchronized without pruning or fast sync) or the + requested block must be within the number of [blocks retained](../cli/options.md#pruning-blocks-retained) + with [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). + +#### 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 + +!!! example + + === "curl HTTP request" + + ```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 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"trace_filter","params":[{"fromBlock":"0x1","toBlock":"0x21","after":2,"count":2,"fromAddress":["0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"]}],"id":415} + ``` + + === "JSON result" + + ```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 trace at given position. + +!!! important + + Your node must be an archive node (that is, synchronized without pruning or fast sync) or the + requested transaction must be contained in a block within + the number of [blocks retained](../cli/options.md#pruning-blocks-retained) with + [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). + +#### 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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"trace_get","params":["0x17104ac9d3312d8c136b7f44d4b8b47852618065ebfa534bd2d3b5ef218ca1f3",["0x0"]],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"trace_get","params":["0x17104ac9d3312d8c136b7f44d4b8b47852618065ebfa534bd2d3b5ef218ca1f3",["0x0"]],"id":1} + ``` + + === "JSON result" + + ```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. + +!!! important + + The requested transaction must be contained in a block within + the number of [blocks retained](../cli/options.md#pruning-blocks-retained) with + [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). + +#### 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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"trace_rawTransaction","params":["0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",["trace"]],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"trace_rawTransaction","params":["0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",["trace"]],"id":1} + ``` + + === "JSON result" + + ```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. + +!!! important + + The requested block must be within the number of [blocks retained](../cli/options.md#pruning-blocks-retained) + with [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). + +#### Parameters + +* `blockNumber`: *string* - integer representing a block number or one of the string tags `latest`, +`earliest`, or `pending`, as described in +[Block Parameter](../../how-to/use-besu-api/json-rpc.md#block-parameter) + +* `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). + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc": "2.0", "method": "trace_replayBlockTransactions","params": ["0x12",["trace","vmTrace","stateDiff"]],"id": 1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc": "2.0", "method": "trace_replayBlockTransactions","params": ["0x12",["trace","vmTrace","stateDiff"]],"id": 1} + ``` + + === "JSON result" + + ```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. + +!!! important + + Your node must be an archive node (that is, synchronized without pruning or fast sync) or the + requested transaction must be contained in a block within + the number of [blocks retained](../cli/options.md#pruning-blocks-retained) with + [pruning enabled](../cli/options.md#pruning-enabled) (by default, 1024). + +#### 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). + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc": "2.0", "method": "trace_transaction","params": ["0x4c253746668dca6ac3f7b9bc18248b558a95b5fc881d140872c2dff984d344a7"],"id": 1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc": "2.0", "method": "trace_transaction","params": ["0x4c253746668dca6ac3f7b9bc18248b558a95b5fc881d140872c2dff984d344a7"],"id": 1} + ``` + + === "JSON result" + + ```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) + +!!! example + + === "curl HTTP request" + + ```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 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"txpool_besuPendingTransactions","params":[2,{"from":{"eq":"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"},"gas":{"lt":"0x5209"},"nonce":{"gt":"0x1"}}],"id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"txpool_besuStatistics","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"txpool_besuStatistics","params":[],"id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"txpool_besuTransactions","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"txpool_besuTransactions","params":[],"id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":1} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c00"],"id":53}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c00"],"id":53} + ``` + + === "JSON result" + + ```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 + +!!! example + + === "curl HTTP request" + + ```bash + curl -X POST --data '{"jsonrpc":"2.0","method":"rpc_modules","params":[],"id":1}' http://127.0.0.1:8545 + ``` + + === "wscat WS request" + + ```bash + {"jsonrpc":"2.0","method":"rpc_modules","params":[],"id":1} + ``` + + === "JSON result" + + ```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/docs/public-networks/reference/api/objects.md b/docs/public-networks/reference/api/objects.md index 9f19335583f..f007008dca5 100644 --- a/docs/public-networks/reference/api/objects.md +++ b/docs/public-networks/reference/api/objects.md @@ -1 +1,273 @@ -{!global/reference/api/objects.md!} +--- +description: Hyperledger Besu API objects reference +--- + +# Besu API objects + +The following objects are parameters for or returned by Besu API methods. + +!!! attention + + 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. | +| **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 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). | +| **gasUsedRatio** | Array | Array of block gas used ratios. These are calculated as the ratio of `gasUsed` and `gasLimit`. | + +## 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), and +[`debug_traceTransaction`](index.md#debug_tracetransaction). + +| 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. | +| **publicKey** | Data, 64 bytes | Public key of the sender. | +| **raw** | Data | This signed transaction in Recursive Length Prefix (RLP) encoded form. | +| **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) 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`. | +| **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). | +| **strict** | Tag | If `true`, checks that the `from` account’s ether balance is sufficient to cover the transaction and gas fee. If `false`, the `gasPrice` and `baseFee` are set to zero, in order to simulate a transaction without enforcing a balance check. The default is `false`. | + +## 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). | + +!!!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/docs/public-networks/reference/cli/options.md b/docs/public-networks/reference/cli/options.md index c9f014da406..9458b735e9d 100644 --- a/docs/public-networks/reference/cli/options.md +++ b/docs/public-networks/reference/cli/options.md @@ -1 +1,3372 @@ -{!global/reference/cli/options.md!} +--- +description: Hyperledger Besu command line interface reference +--- + +# Command line options + +This reference describes the syntax of the Hyperledger Besu command line interface (CLI) options. + +!!! attention + + 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/configuration-file.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 +``` + +## Options + +### `api-gas-price-blocks` + +=== "Syntax" + + ```bash + --api-gas-price-blocks= + ``` + +=== "Example" + + ```bash + --api-gas-price-blocks=50 + ``` + +=== "Environment variable" + + ```bash + BESU_API_GAS_PRICE_BLOCKS=50 + ``` + +=== "Example configuration file" + + ```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` + +=== "Syntax" + + ```bash + --api-gas-price-max= + ``` + +=== "Example" + + ```bash + --api-gas-price-max=20000 + ``` + +=== "Environment variable" + + ```bash + BESU_API_GAS_PRICE_MAX=20000 + ``` + +=== "Example configuration file" + + ```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` + +=== "Syntax" + + ```bash + --api-gas-price-percentile= + ``` + +=== "Example" + + ```bash + --api-gas-price-percentile=75 + ``` + +=== "Environment variable" + + ```bash + BESU_API_GAS_PRICE_PERCENTILE=75 + ``` + +=== "Example configuration file" + + ```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` + +=== "Syntax" + + ```bash + ---auto-log-bloom-caching-enabled[=] + ``` + +=== "Example" + + ```bash + --auto-log-bloom-caching-enabled=false + ``` + +=== "Environment variable" + + ```bash + BESU_AUTO_LOG_BLOOM_CACHING_ENABLED=false + ``` + +=== "Example configuration file" + + ```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` + +=== "Syntax" + + ```bash + --banned-node-ids=[,...]... + ``` + +=== "Example" + + ```bash + --banned-node-ids=0xc35c3...d615f,0xf42c13...fc456 + ``` + +=== "Environment variable" + + ```bash + BESU_BANNED_NODE_IDS=0xc35c3...d615f,0xf42c13...fc456 + ``` + +=== "Configuration file" + + ```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. + +### `bonsai-maximum-back-layers-to-load` + +=== "Syntax" + + ```bash + --bonsai-maximum-back-layers-to-load=256 + ``` + +=== "Example" + + ```bash + --bonsai-maximum-back-layers-to-load=256 + ``` + +=== "Environment variable" + + ```bash + BESU_BONSAI_MAXIMUM_BACK_LAYERS_TO_LOAD=256 + ``` + +=== "Example configuration file" + + ```bash + bonsai-maximum-back-layers-to-load=256 + ``` + +When using [Bonsai Tries](../../concepts/data-storage-formats.md#bonsai-tries), the +[maximum number of layers back](../../concepts/data-storage-formats.md#accessing-data) Bonsai can go to reconstruct a +historical state. +The default is 512. + +### `bootnodes` + +=== "Syntax" + + ```bash + --bootnodes[=[,...]...] + ``` + +=== "Example" + + ```bash + --bootnodes=enode://c35c3...d615f@1.2.3.4:30303,enode://f42c13...fc456@1.2.3.5:30303 + ``` + +=== "Environment variable" + + ```bash + BESU_BOOTNODES=enode://c35c3...d615f@1.2.3.4:30303,enode://f42c13...fc456@1.2.3.5:30303 + ``` + +=== "Example configuration file" + + ```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` + +=== "Syntax" + + ```bash + --color-enabled[=] + ``` + +=== "Example" + + ```bash + --color-enabled=false + ``` + +=== "Environment variable" + + ```bash + BESU_COLOR_ENABLED=false + ``` + +=== "Example configuration file" + + ```bash + color-enabled=false + ``` + +Enables or disables color output to console. +The default is `true`. + +### `compatibility-eth64-forkid-enabled` + +=== "Syntax" + + ```bash + --compatibility-eth64-forkid-enabled[=] + ``` + +=== "Example" + + ```bash + --compatibility-eth64-forkid-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_COMPATIBILITY_ETH64_FORKID_ENABLED=true + ``` + +=== "Example configuration file" + + ```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` + +=== "Syntax" + + ```bash + --config-file= + ``` + +=== "Example" + + ```bash + --config-file=/home/me/me_node/config.toml + ``` + +=== "Environment variable" + + ```bash + BESU_CONFIG_FILE=/home/me/me_node/config.toml + ``` + +The path to the [TOML configuration file](../../how-to/configuration-file.md). +The default is `none`. + +### `data-path` + +=== "Syntax" + + ```bash + --data-path= + ``` + +=== "Example" + + ```bash + --data-path=/home/me/me_node + ``` + +=== "Environment variable" + + ```bash + BESU_DATA_PATH=/home/me/me_node + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --data-storage-format= + ``` + +=== "Example" + + ```bash + --data-storage-format=BONSAI + ``` + +=== "Environment variable" + + ```bash + BESU_DATA_STORAGE_FORMAT=BONSAI + ``` + +=== "Configuration file" + + ```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 `FOREST`. + +### `discovery-dns-url` + +=== "Syntax" + + ```bash + --discovery-dns-url= + ``` + +=== "Environment variable" + + ```bash + BESU_DISCOVERY_DNS_URL=enrtree://AM5FCQLWIZX2QFPNJAP7VUERCCRNGRHWZG3YYHIUV7BVDQ5FDPRT2@nodes.example.org + ``` + +=== "Example configuration file" + + ```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` + +=== "Syntax" + + ```bash + --discovery-enabled[=] + ``` + +=== "Example" + + ```bash + --discovery-enabled=false + ``` + +=== "Environment variable" + + ```bash + BESU_DISCOVERY_ENABLED=false + ``` + +=== "Example configuration file" + + ```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 + [experimental option](#xhelp) `--Xp2p-dns-discovery-server=`. + +### `engine-host-allowlist` + +=== "Syntax" + + ```bash + --engine-host-allowlist=[,...]... or "*" + ``` + +=== "Example" + + ```bash + --engine-host-allowlist=localhost,127.0.0.1 + ``` + +=== "Environment variable" + + ```bash + BESU_ENGINE_HOST_ALLOWLIST=localhost,127.0.0.1 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --engine-jwt-disabled[=] + ``` + +=== "Example" + + ```bash + --engine-jwt-disabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_ENGINE_JWT_DISABLED=true + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --engine-jwt-secret= + ``` + +=== "Example" + + ```bash + --engine-jwt-secret=jwt.hex + ``` + +=== "Environment variable" + + ```bash + BESU_ENGINE_JWT_SECRET="publicKey.pem" + ``` + +=== "Configuration file" + + ```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](../../tutorials/merge-testnet.md#prerequisites). + +### `engine-rpc-port` + +=== "Syntax" + + ```bash + --engine-rpc-port= + ``` + +=== "Example" + + ```bash + --engine-rpc-port=8551 + ``` + +=== "Environment variable" + + ```bash + BESU_ENGINE_RPC_PORT=8551 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --ethstats= + ``` + +=== "Example" + + ```bash + --ethstats=Dev-Node-1:secret@127.0.0.1:3001 + ``` + +=== "Environment variable" + + ```bash + BESU_ETHSTATS=Dev-Node-1:secret@127.0.0.1:3001 + ``` + +=== "Configuration file" + + ```bash + ethstats="Dev-Node-1:secret@127.0.0.1:3001" + ``` + +Reporting URL of an [Ethstats](../../../private-networks/how-to/deploy/ethstats.md) server. + +### `ethstats-contact` + +=== "Syntax" + + ```bash + --ethstats-contact= + ``` + +=== "Example" + + ```bash + --ethstats-contact=contact@mail.com + ``` + +=== "Environment variable" + + ```bash + BESU_ETHSTATS_CONTACT=contact@mail.com + ``` + +=== "Configuration file" + + ```bash + ethstats-contact="contact@mail.com" + ``` + +Contact email address to send to the Ethstats server specified by [`--ethstats`](#ethstats). + +!!! note + + A server must be specified by `--ethstats` in order to use this option. + +### `fast-sync-min-peers` + +=== "Syntax" + + ```bash + --fast-sync-min-peers= + ``` + +=== "Example" + + ```bash + --fast-sync-min-peers=8 + ``` + +=== "Environment variable" + + ```bash + BESU_FAST_SYNC_MIN_PEERS=8 + ``` + +=== "Example configuration file" + + ```bash + fast-sync-min-peers=8 + ``` + +The minimum number of peers required before starting [fast synchronization](../../how-to/connect/sync-node.md#run-a-full-node). +The default is 5. + +!!! note + + If synchronizing in `FAST` mode, most historical world state data is unavailable. Any methods + attempting to access unavailable world state data return `null`. + +### `genesis-file` + +Use the genesis file to create a custom network. + +!!!tip + + To use a public Ethereum network such as Rinkeby, use the [`--network`](#network) option. The + network option defines the genesis file for public networks. + +=== "Syntax" + + ```bash + --genesis-file= + ``` + +=== "Example" + + ```bash + --genesis-file=/home/me/me_node/customGenesisFile.json + ``` + +=== "Environment variable" + + ```bash + BESU_GENESIS_FILE=/home/me/me_node/customGenesisFile.json + ``` + +=== "Configuration file" + + ```bash + genesis-file="/home/me/me_node/customGenesisFile.json" + ``` + +The path to the genesis file. + +!!!important + + You cannot use the [`--genesis-file`](#genesis-file) and [`--network`](#network) options at the + same time. + +### `graphql-http-cors-origins` + +=== "Syntax" + + ```bash + --graphql-http-cors-origins= + ``` + +=== "Example" + + ```bash + --graphql-http-cors-origins="http://medomain.com","https://meotherdomain.com" + ``` + +=== "Environment variable" + + ```bash + BESU_GRAPHQL_HTTP_CORS_ORIGINS="http://medomain.com","https://meotherdomain.com" + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + ---graphql-http-enabled[=] + ``` + +=== "Example" + + ```bash + --graphql-http-enabled + ``` + +=== "Environment variable" + + ```bash + BESU_GRAPHQL_HTTP_ENABLED=true + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --graphql-http-host= + ``` + +=== "Example" + + ```bash + # to listen on all interfaces + --graphql-http-host=0.0.0.0 + ``` + +=== "Environment variable" + + ```bash + # to listen on all interfaces + BESU_GRAPHQL_HTTP_HOST=0.0.0.0 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --graphql-http-port= + ``` + +=== "Example" + + ```bash + # to listen on port 6175 + --graphql-http-port=6175 + ``` + +=== "Environment variable" + + ```bash + # to listen on port 6175 + BESU_GRAPHQL_HTTP_PORT=6175 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + -h, --help + ``` + +Show the help message and exit. + +### `host-allowlist` + +=== "Syntax" + + ```bash + --host-allowlist=[,...]... or "*" + ``` + +=== "Example" + + ```bash + --host-allowlist=medomain.com,meotherdomain.com + ``` + +=== "Environment variable" + + ```bash + BESU_HOST_ALLOWLIST=medomain.com,meotherdomain.com + ``` + +=== "Configuration file" + + ```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`. + +!!! important + + This isn't a permissioning feature. + If you want 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` + +=== "Syntax" + + ```bash + --identity= + ``` + +=== "Example" + + ```bash + --identity=MyNode + ``` + +=== "Environment variable" + + ```bash + BESU_IDENTITY=MyNode + ``` + +=== "Configuration file" + + ```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`. + +### `key-value-storage` + +=== "Syntax" + + ```bash + --key-value-storage= + ``` + +=== "Example" + + ```bash + --key-value-storage=rocksdb + ``` + +=== "Environment variable" + + ```bash + BESU_KEY_VALUE_STORAGE=rocksdb + ``` + +=== "Configuration file" + + ```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. + +### `logging` + +=== "Syntax" + + ```bash + -l, --logging= + ``` + +=== "Example" + + ```bash + --logging=DEBUG + ``` + +=== "Environment variable" + + ```bash + BESU_LOGGING=DEBUG + ``` + +=== "Example configuration file" + + ```bash + logging="DEBUG" + ``` + +Sets logging verbosity. Log levels are `OFF`, `FATAL`, `ERROR`, `WARN`, `INFO`, `DEBUG`, `TRACE`, +`ALL`. The default is `INFO`. + +### `max-peers` + +=== "Syntax" + + ```bash + --max-peers= + ``` + +=== "Example" + + ```bash + --max-peers=42 + ``` + +=== "Environment variable" + + ```bash + BESU_MAX_PEERS=42 + ``` + +=== "Configuration file" + + ```bash + max-peers=42 + ``` + +The maximum number of P2P connections you can establish. The default is 25. + +### `metrics-category` + +=== "Syntax" + + ```bash + --metrics-category=[,metrics-category...]... + ``` + +=== "Example" + + ```bash + --metrics-category=BLOCKCHAIN,PEERS,PROCESS + ``` + +=== "Environment variable" + + ```bash + BESU_METRICS_CATEGORY=BLOCKCHAIN,PEERS,PROCESS + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + ---metrics-enabled[=] + ``` + +=== "Example" + + ```bash + --metrics-enabled + ``` + +=== "Environment variable" + + ```bash + BESU_METRICS_ENABLED=true + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --metrics-host= + ``` + +=== "Example" + + ```bash + --metrics-host=127.0.0.1 + ``` + +=== "Environment variable" + + ```bash + BESU_METRICS_HOST=127.0.0.1 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --metrics-port= + ``` + +=== "Example" + + ```bash + --metrics-port=6174 + ``` + +=== "Environment variable" + + ```bash + BESU_METRICS_PORT=6174 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --metrics-protocol= + ``` + +=== "Example" + + ```bash + --metrics-protocol=OPENTELEMETRY + ``` + +=== "Environment variable" + + ```bash + BESU_METRICS_PROTOCOL=OPENTELEMETRY + ``` + +=== "Configuration file" + + ```bash + metrics-protocol="OPENTELEMETRY" + ``` + +Metrics protocol to use: `PROMETHEUS`, `OPENTELEMETRY`, or `NONE`. +The default is `PROMETHEUS`. + +### `metrics-push-enabled` + +=== "Syntax" + + ```bash + --metrics-push-enabled[=] + ``` + +=== "Example" + + ```bash + --metrics-push-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_METRICS_PUSH_ENABLED=true + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --metrics-push-host= + ``` + +=== "Example" + + ```bash + --metrics-push-host=127.0.0.1 + ``` + +=== "Environment variable" + + ```bash + BESU_METRICS_PUSH_HOST=127.0.0.1 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --metrics-push-interval= + ``` + +=== "Example" + + ```bash + --metrics-push-interval=30 + ``` + +=== "Environment variable" + + ```bash + BESU_METRICS_PUSH_INTERVAL=30 + ``` + +=== "Configuration file" + + ```bash + metrics-push-interval=30 + ``` + +The interval, in seconds, to push metrics when in `push` mode. The default is 15. + +### `metrics-push-port` + +=== "Syntax" + + ```bash + --metrics-push-port= + ``` + +=== "Example" + + ```bash + --metrics-push-port=6174 + ``` + +=== "Environment variable" + + ```bash + BESU_METRICS_PUSH_PORT=6174 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --metrics-push-prometheus-job= + ``` + +=== "Example" + + ```bash + --metrics-push-prometheus-job="my-custom-job" + ``` + +=== "Environment variable" + + ```bash + BESU_METRICS_PUSH_PROMETHEUS_JOB="my-custom-job" + ``` + +=== "Configuration file" + + ```bash + metrics-push-prometheus-job="my-custom-job" + ``` + +The job name when in `push` mode. The default is `besu-client`. + +### `min-block-occupancy-ratio` + +=== "Syntax" + + ```bash + --min-block-occupancy-ratio= + ``` + +=== "Example" + + ```bash + --min-block-occupancy-ratio=0.5 + ``` + +=== "Environment variable" + + ```bash + BESU_MIN_BLOCK_OCCUPANCY_RATIO=0.5 + ``` + +=== "Configuration file" + + ```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. + +### `miner-coinbase` + +=== "Syntax" + + ```bash + --miner-coinbase= + ``` + +=== "Example" + + ```bash + --miner-coinbase=fe3b557e8fb62b89f4916b721be55ceb828dbd73 + ``` + +=== "Environment variable" + + ```bash + BESU_MINER_COINBASE=fe3b557e8fb62b89f4916b721be55ceb828dbd73 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --miner-enabled[=] + ``` + +=== "Example" + + ```bash + --miner-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_MINER_ENABLED=true + ``` + +=== "Configuration file" + + ```bash + miner-enabled=true + ``` + +Enables or disables mining when you start the node. +The default is `false`. + +### `miner-extra-data` + +=== "Syntax" + + ```bash + --miner-extra-data= + ``` + +=== "Example" + + ```bash + --miner-extra-data=0x444F4E27542050414E4943202120484F444C2C20484F444C2C20484F444C2021 + ``` + +=== "Environment variable" + + ```bash + BESU_MINER_EXTRA_DATA=0x444F4E27542050414E4943202120484F444C2C20484F444C2C20484F444C2021 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --miner-stratum-enabled + ``` + +=== "Environment variable" + + ```bash + BESU_MINER_STRATUM_ENABLED=true + ``` + +=== "Configuration file" + + ```bash + miner-stratum-enabled=true + ``` + +Enables a node to perform stratum mining. +The default is `false`. + +### `miner-stratum-host` + +=== "Syntax" + + ```bash + --miner-stratum-host= + ``` + +=== "Example" + + ```bash + --miner-stratum-host=192.168.1.132 + ``` + +=== "Environment variable" + + ```bash + BESU_MINER_STRATUM_HOST=192.168.1.132 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --miner-stratum-port= + ``` + +=== "Example" + + ```bash + --miner-stratum-port=8010 + ``` + +=== "Environment variable" + + ```bash + BESU_MINER_STRATUM_PORT=8010 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --min-gas-price= + ``` + +=== "Example" + + ```bash + --min-gas-price=1337 + ``` + +=== "Environment variable" + + ```bash + BESU_MIN_GAS_PRICE=1337 + ``` + +=== "Configuration file" + + ```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. + +!!! important + 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). + +### `nat-method` + +=== "Syntax" + + ```bash + --nat-method=UPNP + ``` + +=== "Example configuration file" + + ```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. + +!!!notes + + 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` + +=== "Syntax" + + ```bash + --network= + ``` + +=== "Example" + + ```bash + --network=rinkeby + ``` + +=== "Environment variable" + + ```bash + BESU_NETWORK=rinkeby + ``` + +=== "Configuration file" + + ```bash + network="rinkeby" + ``` + +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 | +| `kiln` | ETH | Test | [FAST](#sync-mode) | A PoS network similar to the main Ethereum network post-[Merge](../../concepts/the-merge.md) | +| `ropsten` | ETH | Test | [FAST](#sync-mode) | A PoS network similar to the main Ethereum network post-[Merge](../../concepts/the-merge.md) | +| `rinkeby` | ETH | Test | [FAST](#sync-mode) | A PoA network using Clique | +| `goerli` | ETH | Test | [FAST](#sync-mode) | A PoA network using Clique | +| `sepolia` | ETH | Test | [FAST](#sync-mode) | A PoW 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 | +| `kotti` | ETC | Test | [FAST](#sync-mode) | A PoA network using Clique | +| `astor` | ETC | Test | [FAST](#sync-mode) | A PoW network | + +!!!tip + + Values are case insensitive, so either `mainnet` or `MAINNET` works. + +!!!important + + You cannot use the [`--network`](#network) and [`--genesis-file`](#genesis-file) options at the + same time. + +### `network-id` + +=== "Syntax" + + ```bash + --network-id= + ``` + +=== "Example" + + ```bash + --network-id=8675309 + ``` + +=== "Environment variable" + + ```bash + BESU_NETWORK_ID=8675309 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --node-private-key-file= + ``` + +=== "Example" + + ```bash + --node-private-key-file=/home/me/me_node/myPrivateKey + ``` + +=== "Environment variable" + + ```bash + BESU_NODE_PRIVATE_KEY_FILE=/home/me/me_node/myPrivateKey + ``` + +=== "Configuration file" + + ```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. + +!!!attention + + The private key is not encrypted. + +This option is ignored if [`--security-module`](#security-module) is set to +a non-default value. + +### `p2p-enabled` + +=== "Syntax" + + ```bash + --p2p-enabled[=] + ``` + +=== "Example" + + ```bash + --p2p-enabled=false + ``` + +=== "Environment variable" + + ```bash + BESU_P2P_ENABLED=false + ``` + +=== "Configuration file" + + ```bash + p2p-enabled=false + ``` + +Enables or disables all P2P communication. +The default is `true`. + +### `p2p-host` + +=== "Syntax" + + ```bash + --p2p-host= + ``` + +=== "Example" + + ```bash + # to listen on all interfaces + --p2p-host=0.0.0.0 + ``` + +=== "Environment variable" + + ```bash + # to listen on all interfaces + BESU_P2P_HOST=0.0.0.0 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --p2p-interface= + ``` + +=== "Example" + + ```bash + --p2p-interface=192.168.1.132 + ``` + +=== "Environment variable" + + ```bash + BESU_P2P_INTERFACE=192.168.1.132 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --p2p-port= + ``` + +=== "Example" + + ```bash + # to listen on port 1789 + --p2p-port=1789 + ``` + +=== "Environment variable" + + ```bash + # to listen on port 1789 + BESU_P2P_PORT=1789 + ``` + +=== "Configuration file" + + ```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). + +### `pruning-block-confirmations` + +=== "Syntax" + + ```bash + --pruning-block-confirmations= + ``` + +=== "Example" + + ```bash + --pruning-block-confirmations=5 + ``` + +=== "Environment variable" + + ```bash + BESU_PRUNING_BLOCK_CONFIRMATIONS=5 + ``` + +=== "Configuration file" + + ```bash + pruning-block-confirmations=5 + ``` + +The minimum number of confirmations on a block before marking of newly-stored or in-use state trie +nodes that cannot be pruned. The default is 10. + +!!! important + Using pruning with [private transactions](../../../private-networks/concepts/privacy/index.md) is not + supported. + +### `pruning-blocks-retained` + +=== "Syntax" + + ```bash + --pruning-blocks-retained= + ``` + +=== "Example" + + ```bash + --pruning-blocks-retained=10000 + ``` + +=== "Environment variable" + + ```bash + BESU_PRUNING_BLOCKS_RETAINED=10000 + ``` + +=== "Configuration file" + + ```bash + pruning-blocks-retained=10000 + ``` + +The minimum number of recent blocks to keep the entire world state for. The default is 1024. + +!!! important + Using pruning with [private transactions](../../../private-networks/concepts/privacy/index.md) is not + supported. + +### `pruning-enabled` + +=== "Syntax" + + ```bash + --pruning-enabled + ``` + +=== "Example" + + ```bash + --pruning-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_PRUNING_ENABLED=true + ``` + +=== "Configuration file" + + ```bash + pruning-enabled=true + ``` + +Enables [pruning](../../../global/concepts/Pruning.md) to reduce storage required for the world state. +The default is `false`. + +!!! important + + Using pruning with [private transactions](../../private-networks/concepts/privacy/index.md) isn't + supported. + +!!! Important + + Pruning is being deprecated for [Bonsai Tries](../../public-networks/concepts/data-storage-formats.md#bonsai-tries) + and is currently not being updated. + +### `random-peer-priority-enabled` + +=== "Syntax" + + ```bash + --random-peer-priority-enabled[=] + ``` + +=== "Example" + + ```bash + --random-peer-priority-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_RANDOM_PEER_PRIORITY_ENABLED=true + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --remote-connections-limit-enabled[=] + ``` + +=== "Example" + + ```bash + --remote-connections-limit-enabled=false + ``` + +=== "Environment variable" + + ```bash + BESU_REMOTE_CONNECTIONS_LIMIT_ENABLED=false + ``` + +=== "Configuration file" + + ```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. + +!!! important + + 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` + +=== "Syntax" + + ```bash + --remote-connections-max-percentage= + ``` + +=== "Example" + + ```bash + --remote-connections-max-percentage=25 + ``` + +=== "Environment variable" + + ```bash + BESU_REMOTE_CONNECTIONS_MAX_PERCENTAGE=25 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --reorg-logging-threshold= + ``` + +=== "Example" + + ```bash + --reorg-logging-threshold=3 + ``` + +=== "Environment variable" + + ```bash + BESU_REORG_LOGGING_THRESHOLD=3 + ``` + +=== "Configuration file" + + ```bash + reorg-logging-threshold=3 + ``` + +Minimum depth of chain reorganizations to log. The default is 6. + +### `required-block` + +=== "Syntax" + + ```bash + --required-block, --required-blocks[=BLOCK=HASH[,BLOCK=HASH...]...] + ``` + +=== "Example" + + ```bash + --required-block=6485846=0x43f0cd1e5b1f9c4d5cda26c240b59ee4f1b510d0a185aa8fd476d091b0097a80 + ``` + +=== "Environment variable" + + ```bash + BESU_REQUIRED_BLOCK=6485846=0x43f0cd1e5b1f9c4d5cda26c240b59ee4f1b510d0a185aa8fd476d091b0097a80 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --revert-reason-enabled[=] + ``` + +=== "Example" + + ```bash + --revert-reason-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_REVERT_REASON_ENABLED=true + ``` + +=== "Configuration file" + + ```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-http-api` + +=== "Syntax" + + ```bash + --rpc-http-api=[,...]... + ``` + +=== "Example" + + ```bash + --rpc-http-api=ETH,NET,WEB3 + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_API=ETH,NET,WEB3 + ``` + +=== "Configuration file" + + ```bash + rpc-http-api=["ETH","NET","WEB3"] + ``` + +A comma-separated list of APIs to enable on the HTTP JSON-RPC 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-authentication-credentials-file` + +=== "Syntax" + + ```bash + --rpc-http-authentication-credentials-file= + ``` + +=== "Example" + + ```bash + --rpc-http-authentication-credentials-file=/home/me/me_node/auth.toml + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_AUTHENTICATION_CREDENTIALS_FILE=/home/me/me_node/auth.toml + ``` + +=== "Configuration file" + + ```bash + rpc-http-authentication-credentials-file="/home/me/me_node/auth.toml" + ``` + +The [credentials file](../../how-to/use-besu-api/authenticate.md#credentials-file) for JSON-RPC +API [authentication](../../how-to/use-besu-api/authenticate.md). + +### `rpc-http-authentication-enabled` + +=== "Syntax" + + ```bash + --rpc-http-authentication-enabled[=] + ``` + +=== "Example" + + ```bash + --rpc-http-authentication-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_AUTHENTICATION_ENABLED=true + ``` + +=== "Configuration file" + + ```bash + rpc-http-authentication-enabled=true + ``` + +Enables or disables [authentication](../../how-to/use-besu-api/authenticate.md) for the HTTP JSON-RPC +service. + +### `rpc-http-authentication-jwt-public-key-file` + +=== "Syntax" + + ```bash + --rpc-http-authentication-jwt-public-key-file= + ``` + +=== "Example" + + ```bash + --rpc-http-authentication-jwt-public-key-file=publicKey.pem + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_AUTHENTICATION_JWT_PUBLIC_KEY_FILE="publicKey.pem" + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --rpc-http-cors-origins=[,...]... or all or "*" + ``` + +=== "Example" + + ```bash + + $# You can allow one or more domains with a comma-separated list. + + --rpc-http-cors-origins=http://medomain.com,https://meotherdomain.com + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_CORS_ORIGINS=http://medomain.com,https://meotherdomain.com + ``` + +=== "Configuration file" + + ```bash + rpc-http-cors-origins=["http://medomain.com","https://meotherdomain.com"] + ``` + +=== "Remix example" + + ```bash + + $# The following allows Remix to interact with your Besu node. + + --rpc-http-cors-origins=http://remix.ethereum.org + ``` + +A 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` + +=== "Syntax" + + ```bash + --rpc-http-enabled[=] + ``` + +=== "Example" + + ```bash + --rpc-http-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_ENABLED=true + ``` + +=== "Configuration file" + + ```bash + rpc-http-enabled=true + ``` + +Enables or disables the HTTP JSON-RPC service. +The default is `false`. + +### `rpc-http-host` + +=== "Syntax" + + ```bash + --rpc-http-host= + ``` + +=== "Example" + + ```bash + # to listen on all interfaces + --rpc-http-host=0.0.0.0 + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_HOST=0.0.0.0 + ``` + +=== "Configuration file" + + ```bash + rpc-http-host="0.0.0.0" + ``` + +The host on which HTTP JSON-RPC 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` + +=== "Syntax" + + ```bash + --rpc-http-max-active-connections= + ``` + +=== "Example" + + ```bash + --rpc-http-max-active-connections=100 + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_MAX_ACTIVE_CONNECTIONS=100 + ``` + +=== "Configuration file" + + ```toml + rpc-http-max-active-connections=100 + ``` + +The maximum number of allowed HTTP JSON-RPC connections. Once this limit is reached, incoming connections are rejected. The default is 80. + +### `rpc-http-port` + +=== "Syntax" + + ```bash + --rpc-http-port= + ``` + +=== "Example" + + ```bash + # to listen on port 3435 + --rpc-http-port=3435 + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_PORT=3435 + ``` + +=== "Configuration file" + + ```bash + rpc-http-port="3435" + ``` + +The port (TCP) on which HTTP JSON-RPC listens. The default is `8545`. You must +[expose ports appropriately](../../how-to/connect/configure-ports.md). + +### `rpc-http-tls-ca-clients-enabled` + +=== "Syntax" + + ```bash + --rpc-http-tls-ca-clients-enabled[=] + ``` + +=== "Example" + + ```bash + --rpc-http-tls-ca-clients-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_TLS_CA_CLIENTS_ENABLED=true + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --rpc-http-tls-client-auth-enabled[=] + ``` + +=== "Example" + + ```bash + --rpc-http-tls-client-auth-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_TLS_CLIENT_AUTH_ENABLED=true + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --rpc-http-tls-cipher-suite=[, ...] + ``` + +=== "Example" + + ```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 + ``` + +=== "Environment variable" + + ```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 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --rpc-http-tls-enabled[=] + ``` + +=== "Example" + + ```bash + --rpc-http-tls-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_TLS_ENABLED=true + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --rpc-http-tls-keystore-file= + ``` + +=== "Example" + + ```bash + --rpc-http-tls-keystore-file=/home/me/me_node/keystore.pfx + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_TLS_KEYSTORE_FILE=/home/me/me_node/keystore.pfx + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --rpc-http-tls-keystore-password-file= + ``` + +=== "Example" + + ```bash + --rpc-http-tls-keystore-password-file=/home/me/me_node/password + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_TLS_KEYSTORE_PASSWORD_FILE=/home/me/me_node/password + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --rpc-http-tls-known-clients-file= + ``` + +=== "Example" + + ```bash + --rpc-http-tls-known-clients-file=/home/me/me_node/knownClients + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_TLS_KNOWN_CLIENTS_FILE=/home/me/me_node/knownClients + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --rpc-http-tls-protocol=[, ...] + ``` + +=== "Example" + + ```bash + --rpc-http-tls-protocol=TLSv1.3,TLSv1.2 + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_TLS_PROTOCOL=TLSv1.3,TLSv1.2 + ``` + +=== "Configuration file" + + ```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-tx-feecap` + +=== "Syntax" + + ```bash + --rpc-tx-feecap= + ``` + +=== "Example" + + ```bash + --rpc-tx-feecap=1200000000000000000 + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_TX_FEECAP=1200000000000000000 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --rpc-ws-api=[,...]... + ``` + +=== "Example" + + ```bash + --rpc-ws-api=ETH,NET,WEB3 + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_WS_API=ETH,NET,WEB3 + ``` + +=== "Configuration file" + + ```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-authentication-credentials-file` + +=== "Syntax" + + ```bash + --rpc-ws-authentication-credentials-file= + ``` + +=== "Example" + + ```bash + --rpc-ws-authentication-credentials-file=/home/me/me_node/auth.toml + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_WS_AUTHENTICATION_CREDENTIALS_FILE=/home/me/me_node/auth.toml + ``` + +=== "Configuration file" + + ```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#credentials-file) +for JSON-RPC API [authentication](../../how-to/use-besu-api/authenticate.md). + +### `rpc-ws-authentication-enabled` + +=== "Syntax" + + ```bash + --rpc-ws-authentication-enabled[=] + ``` + +=== "Example" + + ```bash + --rpc-ws-authentication-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_WS_AUTHENTICATION_ENABLED=true + ``` + +=== "Configuration file" + + ```bash + rpc-ws-authentication-enabled=true + ``` + +Enables or disables [authentication](../../how-to/use-besu-api/authenticate.md) for the WebSocket JSON-RPC +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-public-key-file` + +=== "Syntax" + + ```bash + --rpc-http-authentication-jwt-public-key-file= + ``` + +=== "Example" + + ```bash + --rpc-http-authentication-jwt-public-key-file=publicKey.pem + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_HTTP_AUTHENTICATION-JWT-PUBLIC-KEY-FILE="publicKey.pem" + ``` + +=== "Configuration file" + + ```bash + rpc-http-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` + +=== "Syntax" + + ```bash + --rpc-ws-enabled[=] + ``` + +=== "Example" + + ```bash + --rpc-ws-enabled=true + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_WS_ENABLED=true + ``` + +=== "Configuration file" + + ```bash + rpc-ws-enabled=true + ``` + +Enables or disables the WebSocket JSON-RPC service. The default is `false`. + +### `rpc-ws-host` + +=== "Syntax" + + ```bash + --rpc-ws-host= + ``` + +=== "Example" + + ```bash + # to listen on all interfaces + --rpc-ws-host=0.0.0.0 + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_WS_HOST=0.0.0.0 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --rpc-ws-max-active-connections= + ``` + +=== "Example" + + ```bash + --rpc-ws-max-active-connections=100 + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_WS_MAX_ACTIVE_CONNECTIONS=100 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --rpc-ws-max-frame-size= + ``` + +=== "Example" + + ```bash + --rpc-ws-max-frame-size=65536 + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_WS_MAX_FRAME_SIZE=65536 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --rpc-ws-port= + ``` + +=== "Example" + + ```bash + # to listen on port 6174 + --rpc-ws-port=6174 + ``` + +=== "Environment variable" + + ```bash + BESU_RPC_WS_PORT=6174 + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --security-module= + ``` + +=== "Example" + + ```bash + --security-module=security_module + ``` + +=== "Environment variable" + + ```bash + BESU_SECURITY_MODULE=security_module + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --static-nodes-file= + ``` + +=== "Example" + + ```bash + --static-nodes-file=~/besudata/static-nodes.json + ``` + +=== "Environment variable" + + ```bash + BESU_STATIC_NODES_FILE=~/besudata/static-nodes.json + ``` + +=== "Configuration file" + + ```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` + +=== "Syntax" + + ```bash + --strict-tx-replay-protection-enabled[=] + ``` + +=== "Example" + + ```bash + --strict-tx-replay-protection-enabled=false + ``` + +=== "Environment variable" + + ```bash + STRICT_TX_REPLAY_PROTECTION_ENABLED=false + ``` + +=== "Configuration file" + + ```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-mode` + +=== "Syntax" + + ```bash + --sync-mode=X_SNAP + ``` + +=== "Example" + + ```bash + --sync-mode=X_SNAP + ``` + +=== "Environment variable" + + ```bash + BESU_SYNC_MODE=X_SNAP + ``` + +=== "Configuration file" + + ```bash + sync-mode="X_SNAP" + ``` + +The synchronization mode. +Use `FAST` for [fast sync](../../how-to/connect/sync-node.md#fast-synchronization), `FULL` for +[full sync](../../how-to/connect/sync-node.md#run-an-archive-node), `X_SNAP` for +[snap sync](../../how-to/connect/sync-node.md#snap-synchronization), and `X_CHECKPOINT` for +[checkpoint sync](../../how-to/connect/sync-node.md#checkpoint-synchronization). + +* 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 `FAST` when using the [`--network`](#network) option with named networks, except for the `dev` + development network. + `FAST` is also the default if running Besu on the default network (Ethereum Mainnet) by specifying neither + [network](#network) nor [genesis file](#genesis-file). + +!!! important + + Snap sync and checkpoint sync are experimental features. + + We recommend using snap sync over fast sync even in certain production environments (for example, staking), because + snap sync can be faster by several days. + If your snap sync completes successfully, you have the correct world state. + +### `target-gas-limit` + +=== "Syntax" + + ```bash + --target-gas-limit= + ``` + +=== "Example" + + ```bash + --target-gas-limit=8000000 + ``` + +=== "Environment variable" + + ```bash + BESU_TARGET_GAS_LIMIT=8000000 + ``` + +=== "Configuration file" + + ```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-max-size` + +=== "Syntax" + + ```bash + --tx-pool-max-size= + ``` + +=== "Example" + + ```bash + --tx-pool-max-size=2000 + ``` + +=== "Environment variable" + + ```bash + BESU_TX_POOL_MAX_SIZE=2000 + ``` + +=== "Configuration file" + + ```bash + tx-pool-max-size="2000" + ``` + +The maximum number of transactions kept in the transaction pool. The default is 4096. + +### `tx-pool-hashes-max-size` + +=== "Syntax" + + ```bash + --tx-pool-hashes-max-size= + ``` + +=== "Example" + + ```bash + --tx-pool-hashes-max-size=2000 + ``` + +=== "Environment variable" + + ```bash + BESU_TX_POOL_HASHES_MAX_SIZE=2000 + ``` + +=== "Configuration file" + + ```bash + tx-pool-hashes-max-size="2000" + ``` + +!!! important + + `tx-pool-hashes-max-size` is deprecated. The option will be removed in a future release. + +The maximum number of transaction hashes kept in the transaction pool. The default is 4096. + +### `tx-pool-price-bump` + +=== "Syntax" + + ```bash + --tx-pool-price-bump= + ``` + +=== "Example" + + ```bash + --tx-pool-price-bump=25 + ``` + +=== "Environment variable" + + ```bash + BESU_TX_POOL_PRICE_BUMP=25 + ``` + +=== "Configuration file" + + ```bash + tx-pool-price-bump=25 + ``` + +The price bump percentage to replace an existing transaction. The default is 10. + +### `tx-pool-retention-hours` + +=== "Syntax" + + ```bash + --tx-pool-retention-hours= + ``` + +=== "Example" + + ```bash + --tx-pool-retention-hours=5 + ``` + +=== "Environment variable" + + ```bash + BESU_TX_POOL_RETENTION_HOURS=5 + ``` + +=== "Configuration file" + + ```bash + tx-pool-retention-hours=5 + ``` + +The maximum period, in hours, to hold pending transactions in the transaction pool. The default is +13. + +### `Xhelp` + +=== "Syntax" + + ```bash + -X, --Xhelp + ``` + +Displays the experimental options and their descriptions, and exit. + +!!! warning + + The displayed options are unstable and may change between releases. + +### `version` + +=== "Syntax" + + ```bash + -V, --version + ``` + +Prints version information and exit. + + +[push gateway integration]: ../../how-to/monitor/metrics.md#running-prometheus-with-besu-in-push-mode +[JWT provider's public key file]: ../../how-to/use-besu-api/authenticate.md#jwt-public-key-authentication +[plugin]: ../../../global/reference/Plugin-API-Interfaces.md diff --git a/docs/public-networks/reference/cli/subcommands.md b/docs/public-networks/reference/cli/subcommands.md index 8b3bba39ebe..f670d2934ac 100644 --- a/docs/public-networks/reference/cli/subcommands.md +++ b/docs/public-networks/reference/cli/subcommands.md @@ -1 +1,243 @@ -{!global/reference/cli/subcommands.md!} +--- +description: Hyperledger Besu command line interface subcommands +--- + +# Subcommands + +This reference describes the syntax of the Hyperledger Besu command line interface (CLI) subcommands. + +!!! attention + + 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` + +=== "Syntax" + + ```bash + besu blocks import [--skip-pow-validation-enabled] [--start-block=] [--end-block=] --from= + ``` + +=== "Example" + + ```bash + besu blocks import --skip-pow-validation-enabled --start-block=100 --end-block=300 --from=/home/me/me_project/mainnet.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 will be imported. + +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` + +=== "Syntax" + + ```bash + besu blocks export [--start-block=] [--end-block=] --to= + ``` + +=== "Example" + + ```bash + besu --network=rinkeby --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. + +## `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` + +=== "Syntax" + + ```bash + besu public-key export [--node-private-key-file=] [--to=] [--ec-curve=] + ``` + +=== "Example (to standard output)" + + ```bash + besu --data-path= public-key export --node-private-key-file=/home/me/me_node/myPrivateKey --ec-curve=secp256k1 + ``` + +=== "Example (to file)" + + ```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` + +=== "Syntax" + + ```bash + besu public-key export-address [--node-private-key-file=] [--to=] [--ec-curve=] + ``` + +=== "Example (to standard output)" + + ```bash + besu --data-path= public-key export-address --node-private-key-file=/home/me/me_node/myPrivateKey --ec-curve=secp256k1 + ``` + +=== "Example (to file)" + + ```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`. + +## `password` + +Provides password related actions. + +### `hash` + +=== "Syntax" + + ```bash + besu password hash --password= + ``` + +=== "Example" + + ```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). + +## `operator` + +Provides operator actions. + +### `generate-log-bloom-cache` + +=== "Syntax" + + ```bash + besu operator generate-log-bloom-cache [--start-block=] [--end-block=] + ``` + +=== "Example" + + ```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. + +## `retesteth` + +=== "Syntax" + + ```bash + besu retesteth [--data-path=] [--rpc-http-host=] [--rpc-http-port=] [-l=] [--host-allowlist=[,…]… or * or all] + ``` + +=== "Example" + + ```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) + +## `validate-config` + +=== "Syntax" + + ```bash + besu validate-config --config-file + ``` + +=== "Example" + + ```bash + besu validate-config --config-file ../besu-local-nodes/config/besu/besu1.conf + ``` + +Performs basic syntax validation of the specified +[TOML configuration file](../../how-to/configuration-file.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/docs/public-networks/reference/disclosure.md b/docs/public-networks/reference/disclosure.md index 2b3e8710985..cc512df4dc1 100644 --- a/docs/public-networks/reference/disclosure.md +++ b/docs/public-networks/reference/disclosure.md @@ -1 +1,13 @@ -{!global/reference/disclosure.md!} +--- +description: Hyperledger Besu responsible disclosure statement +--- + +# 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/docs/public-networks/reference/engine-api/objects.md b/docs/public-networks/reference/engine-api/objects.md index a14d6a37aaf..fd01ee20bcb 100644 --- a/docs/public-networks/reference/engine-api/objects.md +++ b/docs/public-networks/reference/engine-api/objects.md @@ -24,7 +24,7 @@ Returned by [`engine_getPayloadV1`](index.md#engine_getpayloadv1). | `gasUsed` | *Quantity*, 64 Bits | Total gas used by all transactions in this block. | | `timestamp` | *Quantity*, 64 Bits | Unix timestamp 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](../../../global/concepts/Transactions/Transaction-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). | +| `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). | diff --git a/docs/public-networks/reference/evm-tool.md b/docs/public-networks/reference/evm-tool.md index 37560ee6349..b5f22bdacfc 100644 --- a/docs/public-networks/reference/evm-tool.md +++ b/docs/public-networks/reference/evm-tool.md @@ -1 +1,375 @@ -{!global/reference/evm-tool.md!} +--- +description: Hyperledger Besu EVM tool reference +--- + +# EVM tool reference + +Options for running: + +* [Arbitrary EVM programs](#run-options) +* [Ethereum State Tests](#state-test-options). + +## Run options + +The first mode of the EVM tool runs an arbitrary EVM and is invoked without an extra command. Command Line +Options specify the code and other contextual information. + +### `code` + +=== "Syntax" + + ```bash + --code= + ``` + +=== "Example" + + ```bash + --code=5B600080808060045AFA50600056 + ``` + +The code to be executed, in compiled hex code form. + +No default value: execution fails if this is not set. + +### `gas` + +=== "Syntax" + + ```bash + --gas= + ``` + +=== "Example" + + ```bash + --gas=100000000 + ``` + +Amount of gas to make available to the EVM. The default value is 10 Billion, an incredibly large number +unlikely to be seen in any production blockchain. + +### `price` + +=== "Syntax" + + ```bash + --price= + ``` + +=== "Example" + + ```bash + --price=10 + ``` + +Price of gas in GWei. +The default is zero. +If set to a non-zero value, the sender account must have enough value to cover the gas fees. + +### `sender` + +=== "Syntax" + + ```bash + --sender=
+ ``` + +=== "Example" + + ```bash + --sender=0xfe3b557e8fb62b89f4916b721be55ceb828dbd73 + ``` + +The account the invocation is sent from. +The specified account must exist in the world state, which unless specified by `--genesis` +or `--prestate` is the set of [accounts used for testing](../../private-networks/reference/accounts-for-testing.md). + +### `receiver` + +=== "Syntax" + + ```bash + --receiver=
+ ``` + +=== "Example" + + ```bash + --receiver=0x588108d3eab34e94484d7cda5a1d31804ca96fe7 + ``` + +The account the invocation is sent to. +The specified account does not need to exist. + +### `input` + +=== "Syntax" + + ```bash + --input= + ``` + +=== "Example" + + ```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` + +=== "Syntax" + + ```bash + --value= + ``` + +=== "Example" + + ```bash + --value=1000000000000000000 + ``` + +The value of Ether 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` + +=== "Syntax" + + ```bash + --json= + ``` + +=== "Example" + + ```bash + --json=true + ``` + +Provide an operation-by-operation trace of the command in JSON when set to true. + +### `nomemory` + +=== "Syntax" + + ```bash + --nomemory= + ``` + +=== "Example" + + ```bash + --nomemory=true + ``` + +By default, when tracing operations the memory is traced for each operation. +For memory heavy scripts, setting this option may reduce the volume of JSON output. + +### `genesis` + +=== "Syntax" + + ```bash + --genesis= + ``` + +=== "Example" + + ```bash + --genesis=/opt/besu/genesis.json + ``` + +The Besu Genesis file to use when evaluating the EVM. +Most useful are the `alloc` items that set up accounts and their stored memory states. +For a complete description of this file see [Genesis file items](genesis-items.md). + +`--prestate` is a deprecated alternative option name. + +### `chain` + +=== "Syntax" + + ```bash + --chain= + ``` + +=== "Example" + + ```bash + --chain=goerli + ``` + +The well-known network genesis file to use when evaluating the EVM. +These values are an alternative to the `--genesis` option for well known networks. + +### `repeat` + +=== "Syntax" + + ```bash + --repeat= + ``` + +=== "Example" + + ```bash + --repeat=1000 + ``` + +Number of times to repeat the contract before gathering timing information. +This is useful when benchmarking EVM operations. + +### `revert-reason-enabled` + +=== "Syntax" + + ```bash + --revert-reason-enabled= + ``` + +=== "Example" + + ```bash + --revert-reason-enabled=true + ``` + +If enabled, the JSON tracing includes the reason included in `REVERT` operations. + +### `key-value-storage` + +=== "Syntax" + + ```bash + --key-value-storage= + ``` + +=== "Example" + + ```bash + --key-value-storage=rocksdb + ``` + +Kind of key value storage to use. + +Occasionally it may be useful to execute isolated EVM calls in context of an actual world state. +The default is `memory`, which executes the call only in context of the world provided by `--genesis` +or `--network` at block zero. +When set to `rocksdb` and combined with `--data-path`, `--block-number`, and `--genesis` a Besu +node that is not currently running can be used to provide the appropriate world state for a transaction. +Useful when evaluating consensus failures. + +### `data-path` + +=== "Syntax" + + ```bash + --data-path= + ``` + +=== "Example" + + ```bash + --data-path=/opt/besu/data + ``` + +When using `rocksdb` for `key-value-storage`, specifies the location of the database on disk. + +### `block-number` + +=== "Syntax" + + ```bash + --block-number= + ``` + +=== "Example" + + ```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 +specific world state when running with `rocksdb` for `key-value-storage`. + +## State test options + +The `state-test` subcommand allows the [Ethereum state tests](https://github.com/ethereum/tests/tree/develop/GeneralStateTests) to be evaluated. +Most of the options from EVM execution do not apply. + +### Applicable options + +#### `json` + +=== "Syntax" + + ```bash + --json= + ``` + +=== "Example" + + ```bash + --json=true + ``` + +Provide an operation by operation trace of the command in JSON when set to true. +Set to `true` for EVMLab Fuzzing. +Whether or not `json` is set, a summary JSON object is printed to standard output for each +state test executed. + +#### `nomemory` + +=== "Syntax" + + ```bash + --nomemory= + ``` + +=== "Example" + + ```bash + --nomemory=true + ``` + +By default, when tracing operations the memory is traced for each operation. +For memory heavy scripts, setting this option to `true` may reduce the volume of JSON output. + +### Using 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. + +=== "Docker example" + + ```bash + docker run --rm -v ${PWD}:/opt/referencetests hyperledger/besu-evmtool:develop --json state-test /opt/referencetests/GeneralStateTests/stExample/add11.json + ``` + +=== "CLI example" + + ```bash + evm --json state-test stExample/add11.json + ``` + +### Using 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. + +=== "Docker example" + + ```bash + docker run --rm -i hyperledger/besu-evmtool:develop --json state-test < stExample/add11.json + ``` + +=== "CLI example" + + ```bash + evm --json state-test < stExample/add11.json + ``` diff --git a/docs/public-networks/reference/genesis-items.md b/docs/public-networks/reference/genesis-items.md index c19fa7018b2..d24a625033b 100644 --- a/docs/public-networks/reference/genesis-items.md +++ b/docs/public-networks/reference/genesis-items.md @@ -1 +1,153 @@ -{!global/reference/genesis-items.md!} +--- +description: Configuration items specified in the Hyperledger Besu genesis file +--- + +# 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`. | +| `isQuorum` | Set to `true` to allow [interoperable private transactions] between Hyperledger Besu and [GoQuorum clients] using the Tessera private transaction manager. | +| `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. | + +## 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). | + +## 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. + +!!! example "Ethereum Mainnet milestone blocks" + + ```json + { + "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, + ... + }, + } + ``` + +In private networks, the milestone block defines the protocol version for the network. + +!!! example "Private network milestone block" + + ```json + { + "config": { + ... + "berlinBlock": 0, + ... + }, + } + ``` + +!!! note + + We recommend specifying the latest milestone block for private networks. + It is implied this includes the preceding milestones. + This ensures you are using 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. + +!!! example + + ```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. + +!!! example + + ```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" + } + } + } + ``` + + +[GoQuorum clients]: https://consensys.net/docs/goquorum/en/stable/ +[interoperable private transactions]: ../../private-networks/how-to/use-privacy/goquorum-compatible.md diff --git a/docs/public-networks/reference/projects-using-besu.md b/docs/public-networks/reference/projects-using-besu.md index 3c77731158a..aa52e076bfa 100644 --- a/docs/public-networks/reference/projects-using-besu.md +++ b/docs/public-networks/reference/projects-using-besu.md @@ -1 +1,11 @@ -{!global/reference/projects-using-besu.md!} +--- +description: Projects using Besu. +--- + +# Projects using Besu + +## Block explorers + +- [BlockScout](https://github.com/blockscout/blockscout#readme) is a Besu-compatible blockchain explorer for inspecting + and analyzing Ethereum-based blockchains. + See the [project documentation](https://docs.blockscout.com/) for setup instructions. diff --git a/docs/public-networks/reference/trace-types.md b/docs/public-networks/reference/trace-types.md index 56c97baf60d..7b3a093a924 100644 --- a/docs/public-networks/reference/trace-types.md +++ b/docs/public-networks/reference/trace-types.md @@ -1 +1,172 @@ -{!global/reference/trace-types.md!} +--- +description: Transaction trace types +--- + +# 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. + +!!!example "`trace` example" + + ```json + "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. + +!!!example "`vmTrace` example" + + ```json + "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. + +!!!example "`stateDiff` example" + + ```json + "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/docs/global/reference/web3js-quorum.md b/docs/public-networks/reference/web3js-quorum.md similarity index 100% rename from docs/global/reference/web3js-quorum.md rename to docs/public-networks/reference/web3js-quorum.md diff --git a/docs/public-networks/tutorials/merge-testnet.md b/docs/public-networks/tutorials/merge-testnet.md index e7ed2d93710..0bfd54a3bf9 100644 --- a/docs/public-networks/tutorials/merge-testnet.md +++ b/docs/public-networks/tutorials/merge-testnet.md @@ -30,7 +30,7 @@ openssl rand -hex 32 | tr -d "\n" > jwtsecret.hex You will specify `jwtsecret.hex` when starting both 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 and stake ETH If you're running a [validator client](#beacon-node-and-validator-client), create a test Ethereum address (you can do @@ -71,9 +71,9 @@ besu \ ``` Specify the path to the `jwtsecret.hex` file generated in [step 2](#2-generate-the-shared-secret) using the -[`--engine-jwt-secret`](../../global/reference/cli/options.md#engine-jwt-secret) option. +[`--engine-jwt-secret`](../reference/cli/options.md#engine-jwt-secret) option. -See the [`--engine-*`](../../global/reference/cli/options.md#engine-host-allowlist) options for more information on running +See the [`--engine-*`](../reference/cli/options.md#engine-host-allowlist) options for more information on running Besu as an execution client. ## 5. Start Teku @@ -141,7 +141,7 @@ After starting Besu and Teku, your node should start syncing and connecting to p !!! example === "Besu logs" - + ```bash 2022-03-21 20:42:09.295-07:00 | EthScheduler-Timer-0 | INFO | FullSyncTargetManager | No sync target, waiting for peers. Current peers: 0 2022-03-21 20:42:14.298-07:00 | EthScheduler-Timer-0 | INFO | FullSyncTargetManager | No sync target, waiting for peers. Current peers: 0 @@ -149,9 +149,9 @@ After starting Besu and Teku, your node should start syncing and connecting to p 2022-03-21 20:42:18.452-07:00 | nioEventLoopGroup-3-8 | INFO | SyncTargetManager | Found common ancestor with peer Peer 0xab3a286b181721c794... at block 55127 2022-03-21 20:42:18.454-07:00 | nioEventLoopGroup-3-8 | INFO | PipelineChainDownloader | PipelineChain download complete ``` - + === "Teku logs" - + ```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 diff --git a/mkdocs.navigation.yml b/mkdocs.navigation.yml index 22297786390..9596c9bd3e0 100644 --- a/mkdocs.navigation.yml +++ b/mkdocs.navigation.yml @@ -47,7 +47,7 @@ nav: - Use client libraries: public-networks/how-to/develop/client-libraries.md - Use proof of work: - Configure mining: public-networks/how-to/use-pow/mining.md - - Upgrade Besu: public-networks/how-to/node.md + - Upgrade Besu: public-networks/how-to/upgrade-node.md - Troubleshoot: - Use EVM tool: public-networks/how-to/troubleshoot/evm-tool.md - Use Java Flight Recorder: public-networks/how-to/troubleshoot/java-flight-recorder.md @@ -55,6 +55,10 @@ nav: - Concepts: - The Merge: public-networks/concepts/the-merge.md - Data storage formats: public-networks/concepts/data-storage-formats.md + - Transactions: + - Transaction types: public-networks/concepts/transactions/types.md + - Transaction pool: public-networks/concepts/transactions/pool.md + - Transaction validation: public-networks/concepts/transactions/validation.md - Network ID and chain ID: public-networks/concepts/network-and-chain-id.md - Events and logs: public-networks/concepts/events-and-logs.md - Genesis file: public-networks/concepts/genesis-file.md @@ -86,6 +90,7 @@ nav: - Install binary distribution: private-networks/get-started/install/binary-distribution.md - Start Besu: private-networks/get-started/start-node.md - How to: + - Index: private-networks/how-to/index.md - Configure: - Consensus: - Index: private-networks/how-to/configure/consensus/index.md @@ -94,6 +99,7 @@ nav: - Clique: private-networks/how-to/configure/consensus/clique.md - Add and remove validators without voting: private-networks/how-to/configure/consensus/add-validators-without-voting.md - Free gas network: private-networks/how-to/configure/free-gas.md + - Bootnodes: private-networks/how-to/configure/bootnodes.md - Validators: private-networks/how-to/configure/validators.md - Pre-deploy a contract: private-networks/how-to/configure/contracts.md - TLS: @@ -101,35 +107,17 @@ nav: - Peer-to-peer TLS: private-networks/how-to/configure/tls/p2p.md - Block proposal permissioning: private-networks/how-to/configure/block-proposal-permissioning.md - Alternative elliptic curves: private-networks/how-to/configure/curves.md - - Use a configuration file: private-networks/how-to/configure/configuration-file.md - - Pass JVM options: private-networks/how-to/configure/pass-jvm-options.md - - Mining: private-networks/how-to/configure/mining.md - - Use the Besu API: - - Index: private-networks/how-to/use-besu-api/index.md - - Use JSON-RPC over HTTP, WS, and IPC: private-networks/how-to/use-besu-api/json-rpc.md - - Use RPC Pub/Sub over WS: private-networks/how-to/use-besu-api/rpc-pubsub.md - - Use GraphQL over HTTP: private-networks/how-to/use-besu-api/graphql.md - - Authenticate JSON-RPC requests: private-networks/how-to/use-besu-api/authenticate.md - - Access logs using JSON-RPC: private-networks/how-to/use-besu-api/access-logs.md - Create and send transactions: - Index: private-networks/how-to/send-transactions/index.md - Create and send private transactions: private-networks/how-to/send-transactions/private-transactions.md - Send concurrent private transactions: private-networks/how-to/send-transactions/concurrent-private-transactions.md - Include revert reason: private-networks/how-to/send-transactions/revert-reason.md - - Find and connect to peers: - - Configure bootnodes: private-networks/how-to/connect/bootnodes.md - - Configure static nodes: private-networks/how-to/connect/static-nodes.md - - Configure ports: private-networks/how-to/connect/configure-ports.md - - Manage peers: private-networks/how-to/connect/manage-peers.md - - Specify NAT method: private-networks/how-to/connect/specify-nat.md - Monitor nodes: - Index: private-networks/how-to/monitor/index.md - - Use metrics: private-networks/how-to/monitor/metrics.md - Use Elastic Stack: private-networks/how-to/monitor/elastic-stack.md - Use Quorum Hibernate: private-networks/how-to/monitor/quorum-hibernate.md - Use Splunk: private-networks/how-to/monitor/splunk.md - Use OpenTelemtry: private-networks/how-to/monitor/opentelemetry.md - - Configure logging: private-networks/how-to/monitor/logging.md - Use privacy: - Use EEA-compliant privacy: private-networks/how-to/use-privacy/eea-compliant.md - Use Besu-extended privacy: private-networks/how-to/use-privacy/besu-extended.md @@ -149,20 +137,11 @@ nav: - Use Ansible: private-networks/how-to/deploy/ansible.md - Use Kubernetes: private-networks/how-to/deploy/kubernetes.md - Use Ethstats network monitor: private-networks/how-to/deploy/ethstats.md - - Develop dapps: - - Use Truffle: private-networks/how-to/develop/truffle.md - - Use client libraries: private-networks/how-to/develop/client-libraries.md - Backup and restore: private-networks/how-to/backup.md - - Upgrade: - - Upgrade node: private-networks/how-to/upgrade/node.md - - Upgrade protocol: private-networks/how-to/upgrade/protocol.md - - Troubleshoot: - - Use EVM tool: private-networks/how-to/troubleshoot/evm-tool.md - - Use Java Flight Recorder: private-networks/how-to/troubleshoot/java-flight-recorder.md - - Trace transactions: private-networks/how-to/troubleshoot/trace-transactions.md + - Upgrade: private-networks/how-to/upgrade.md - Concepts: + - Index: private-networks/concepts/index.md - Proof of authority consensus: private-networks/concepts/poa.md - - Genesis file: private-networks/concepts/genesis-file.md - Privacy: - Index: private-networks/concepts/privacy/index.md - Private transactions: @@ -177,9 +156,6 @@ nav: - Onchain permissioning: private-networks/concepts/permissioning/onchain.md - Permissioning plugin: private-networks/concepts/permissioning/plugin.md - Public key infrastructure: private-networks/concepts/pki.md - - Network ID and chain ID: private-networks/concepts/network-and-chain-id.md - - Events and logs: private-networks/concepts/events-and-logs.md - - Node keys: private-networks/concepts/node-keys.md - Tutorials: - Quorum Developer Quickstart: private-networks/tutorials/quickstart.md - Create a QBFT network: private-networks/tutorials/qbft.md @@ -212,15 +188,11 @@ nav: - Configure Kubernetes mode in NAT manager: private-networks/tutorials/kubernetes/nat-manager.md - Deploy using Microsoft Azure: private-networks/tutorials/azure.md - Reference: + - Index: private-networks/reference/index.md - Besu command line: - - Options: private-networks/reference/cli/options.md - - Subcommands: private-networks/reference/cli/subcommands.md + - Private network options: private-networks/reference/cli/options.md + - Private network subcommands: private-networks/reference/cli/subcommands.md - Besu API: - Index: private-networks/reference/api/index.md - - Objects: private-networks/reference/api/objects.md - - Genesis file items: private-networks/reference/genesis-items.md + - Private network API objects: private-networks/reference/api/objects.md - Accounts for testing: private-networks/reference/accounts-for-testing.md - - EVM tool options: private-networks/reference/evm-tool.md - - Transaction trace types: private-networks/reference/trace-types.md - - Projects using Besu: private-networks/reference/projects-using-besu.md - - Security disclosure policy: private-networks/reference/disclosure.md diff --git a/mkdocs.redirects.yml b/mkdocs.redirects.yml index c842d192315..c003012a51a 100644 --- a/mkdocs.redirects.yml +++ b/mkdocs.redirects.yml @@ -25,7 +25,7 @@ plugins: HowTo/Get-Started/Run-Docker-Image.md: public-networks/get-started/install/run-docker-image.md # HowTo/Deploy/High-Availability.md: global/how-to/configure/Configure-HA/High-Availability.md HowTo/Deploy/Monitoring-Performance.md: public-networks/how-to/monitor/metrics.md - HowTo/Upgrade/Upgrade-Network.md: public-networks/how-to/node.md + HowTo/Upgrade/Upgrade-Network.md: public-networks/how-to/upgrade-node.md HowTo/Find-and-Connect/Using-UPnP.md: public-networks/how-to/connect/specify-nat.md HowTo/Use-Privacy/Run-Orion-With-Besu.md: private-networks/how-to/use-privacy/tessera.md Concepts/Transactions/Trace-Types.md: public-networks/reference/trace-types.md @@ -70,7 +70,7 @@ plugins: HowTo/Send-Transactions/Creating-Sending-Private-Transactions.md: private-networks/how-to/send-transactions/private-transactions.md HowTo/Send-Transactions/Concurrent-Private-Transactions.md: private-networks/how-to/send-transactions/concurrent-private-transactions.md HowTo/Send-Transactions/Revert-Reason.md: private-networks/how-to/send-transactions/revert-reason.md - HowTo/Find-and-Connect/Bootnodes.md: private-networks/how-to/connect/bootnodes.md + HowTo/Find-and-Connect/Bootnodes.md: private-networks/how-to/configure/bootnodes.md HowTo/Find-and-Connect/Static-Nodes.md: public-networks/how-to/connect/static-nodes.md HowTo/Find-and-Connect/Configuring-Ports.md: public-networks/how-to/connect/configure-ports.md HowTo/Find-and-Connect/Managing-Peers.md: public-networks/how-to/connect/manage-peers.md @@ -89,8 +89,8 @@ plugins: Concepts/NetworkID-And-ChainID.md: public-networks/concepts/network-and-chain-id.md Concepts/Events-and-Logs.md: public-networks/concepts/events-and-logs.md HowTo/Configure/Genesis-File.md: public-networks/concepts/genesis-file.md - HowTo/Upgrade/Upgrade-Node.md: public-networks/how-to/node.md - HowTo/Upgrade/Upgrade-Protocol.md: private-networks/how-to/upgrade/protocol.md + HowTo/Upgrade/Upgrade-Node.md: public-networks/how-to/upgrade-node.md + HowTo/Upgrade/Upgrade-Protocol.md: private-networks/how-to/upgrade.md HowTo/Troubleshoot/Use-EVM-Tool.md: public-networks/how-to/troubleshoot/evm-tool.md HowTo/Troubleshoot/Java-Flight-Recording.md: public-networks/how-to/troubleshoot/java-flight-recorder.md HowTo/Troubleshoot/Trace-Transactions.md: public-networks/how-to/troubleshoot/trace-transactions.md @@ -117,11 +117,11 @@ plugins: HowTo/Configure/Contracts-in-Genesis.md: private-networks/how-to/configure/contracts.md HowTo/Configure/Alternative-EC-Curves.md: private-networks/how-to/configure/curves.md HowTo/Configure/Block-Proposal-Permissioning.md: private-networks/how-to/configure/block-proposal-permissioning.md - HowTo/Deploy/Bootnodes.md: private-networks/how-to/connect/bootnodes.md + HowTo/Deploy/Bootnodes.md: private-networks/how-to/configure/bootnodes.md Concepts/ArchitectureOverview.md: index.md Concepts/Mining.md: public-networks/how-to/use-pow/mining.md HowTo/Troubleshoot/Troubleshooting.md: public-networks/how-to/troubleshoot/evm-tool.md - Concepts/Protocol-Upgrades.md: private-networks/how-to/upgrade/protocol.md + Concepts/Protocol-Upgrades.md: private-networks/how-to/upgrade.md Reference/Resources.md: index.md HowTo/Use-Privacy/EEA-compliant.md: private-networks/how-to/use-privacy/eea-compliant.md HowTo/Use-Privacy/Privacy.md: private-networks/how-to/use-privacy/besu-extended.md @@ -188,3 +188,6 @@ plugins: Tutorials/Private-Network-Example-Azure.md: private-networks/tutorials/azure.md Reference/Accounts-for-Testing.md: private-networks/reference/accounts-for-testing.md Concepts/Monitoring.md: public-networks/how-to/monitor/index.md + Concepts/Transactions/Transaction-Pool.md: public-networks/concepts/transactions/pool.md + Concepts/Transactions/Transaction-Types.md: public-networks/concepts/transactions/types.md + Concepts/Transctions/Transction-Validation.md: public-networks/concepts/transactions/validation.md From 3b431e487af4b2d20c7737882e1f776f7835edec Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Sun, 24 Jul 2022 05:30:46 -0700 Subject: [PATCH 21/31] update private network links Signed-off-by: Alexandra Tran --- .../concepts/permissioning/onchain.md | 6 +-- .../concepts/permissioning/plugin.md | 4 +- .../concepts/privacy/index.md | 2 +- .../concepts/privacy/plugin.md | 10 ++-- .../privacy/private-transactions/index.md | 10 ++-- .../private-transactions/processing.md | 12 ++--- .../get-started/install/run-docker-image.md | 20 ++++---- .../get-started/start-node.md | 8 ++-- .../how-to/configure/bootnodes.md | 4 +- .../add-validators-without-voting.md | 4 +- .../how-to/configure/consensus/clique.md | 16 +++---- .../how-to/configure/consensus/ibft.md | 18 +++---- .../how-to/configure/consensus/qbft.md | 22 ++++----- .../how-to/configure/free-gas.md | 6 +-- .../how-to/configure/tls/client-and-server.md | 12 ++--- .../how-to/configure/tls/p2p.md | 2 +- .../private-networks/how-to/monitor/splunk.md | 12 ++--- .../concurrent-private-transactions.md | 14 +++--- .../send-transactions/private-transactions.md | 26 +++++----- .../how-to/send-transactions/revert-reason.md | 6 +-- .../how-to/use-permissioning/local.md | 48 +++++++++---------- .../how-to/use-permissioning/onchain.md | 8 ++-- .../how-to/use-privacy/privacy-groups.md | 10 ++-- .../how-to/use-privacy/sign-pmts.md | 10 ++-- docs/private-networks/reference/api/index.md | 6 +-- .../private-networks/reference/cli/options.md | 2 +- docs/private-networks/tutorials/clique.md | 12 ++--- docs/private-networks/tutorials/ethash.md | 6 +-- docs/private-networks/tutorials/ibft/index.md | 8 ++-- .../tutorials/kubernetes/nat-manager.md | 12 ++--- .../tutorials/permissioning/index.md | 12 ++--- .../tutorials/privacy/index.md | 12 ++--- .../tutorials/privacy/multi-tenancy.md | 16 +++---- .../tutorials/privacy/web3js-quorum.md | 2 +- docs/private-networks/tutorials/qbft.md | 10 ++-- docs/private-networks/tutorials/quickstart.md | 4 +- 36 files changed, 196 insertions(+), 196 deletions(-) diff --git a/docs/private-networks/concepts/permissioning/onchain.md b/docs/private-networks/concepts/permissioning/onchain.md index 5fb83b591c3..423f4da5ba2 100644 --- a/docs/private-networks/concepts/permissioning/onchain.md +++ b/docs/private-networks/concepts/permissioning/onchain.md @@ -64,16 +64,16 @@ Permissioning implements three allowlists: [privacy marker transactions](../privacy/private-transactions/processing.md). If using account permissioning and privacy, a signing key must be specified using the - [`--privacy-marker-transaction-signing-key-file`](../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) + [`--privacy-marker-transaction-signing-key-file`](../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) command line option and the corresponding public key included in the accounts allowlist. !!! tip - If nodes are not connecting as expected, set the [log level to `TRACE`](../../../reference/cli/options.md#logging) + If nodes are not connecting as expected, set the [log level to `TRACE`](../../../public-networks/reference/cli/options.md#logging) and search for messages containing `Node permissioning` to identify the issue. - Ensure the [`--p2p-host`](../../../reference/cli/options.md#p2p-host) command line option has been + Ensure the [`--p2p-host`](../../../public-networks/reference/cli/options.md#p2p-host) command line option has been correctly configured for all nodes with the externally accessible address. diff --git a/docs/private-networks/concepts/permissioning/plugin.md b/docs/private-networks/concepts/permissioning/plugin.md index 86e0ec09bd8..fc4935b352d 100644 --- a/docs/private-networks/concepts/permissioning/plugin.md +++ b/docs/private-networks/concepts/permissioning/plugin.md @@ -4,7 +4,7 @@ description: Plugin based permissioning # Permissioning plugin -You can define complex [permissioning](index.md) solutions by [building a plugin](../../../global/concepts/Plugins.md) that +You can define complex [permissioning](index.md) solutions by building a plugin that extends Hyperledger Besu functionality. The plugin API provides a `PermissioningService` interface that currently supports connection permissioning and @@ -19,7 +19,7 @@ Use connection permissioning when deciding whether to restrict node access to kn Use message permissioning to propagate different types of devP2P messages to particular nodes. For example, this can be used to prevent pending transactions from being forwarded to other nodes. -## Registering your plugin +## Register your plugin To enable permissioning in your plugin, implement the `PermissioningService` interface and register your providers. diff --git a/docs/private-networks/concepts/privacy/index.md b/docs/private-networks/concepts/privacy/index.md index e6759313aab..928764cf335 100644 --- a/docs/private-networks/concepts/privacy/index.md +++ b/docs/private-networks/concepts/privacy/index.md @@ -22,7 +22,7 @@ participants. Other participants cannot access the transaction content or list o * Tessera must be [highly available and run in a separate instance to Besu]. Using private transactions with [pruning] or - [fast sync](../../../reference/cli/options.md#sync-mode) is not supported. + [fast sync](../../../public-networks/reference/cli/options.md#sync-mode) is not supported. ## Private transaction manager diff --git a/docs/private-networks/concepts/privacy/plugin.md b/docs/private-networks/concepts/privacy/plugin.md index 99a7541abf4..f800842bee5 100644 --- a/docs/private-networks/concepts/privacy/plugin.md +++ b/docs/private-networks/concepts/privacy/plugin.md @@ -4,7 +4,7 @@ description: Privacy plugin # Privacy plugin -You can define your own strategy for private transactions by [building a plugin](../../../global/concepts/Plugins.md) that extends +You can define your own strategy for private transactions by building a plugin that extends Hyperledger Besu functionality. The plugin can take many forms, but it must provide Besu with a private transaction when required. @@ -18,7 +18,7 @@ The plugin can take many forms, but it must provide Besu with a private transact Enable the privacy plugin by starting Besu and including the `--Xprivacy-plugin-enabled` command line option. The registered plugin must implement the `PrivacyPluginPayloadProvider` interface. -## Using the payload provider interface +## Use the payload provider interface The privacy plugin must define the [privacy marker transaction (PMT)] payload. Use the payload to retrieve the contents of the private transaction which could be a link to a location in @@ -27,7 +27,7 @@ an enclave, or an encrypted form of the private payload itself. Besu doesn't need to know how the private transaction is distributed, it just needs to know what the private transaction for the PMT is. -### Sending transactions +### Send transactions When submitting a private transaction using [`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction), the signed transaction must be sent to `0x000000000000000000000000000000000000007a` to indicate which @@ -43,7 +43,7 @@ The transaction flow is as follows: 5. The private transaction handler creates a PMT for the private transaction, and propagates the PMT using devP2P in the same way as a public Ethereum transaction. -### Mining transactions +### Mine transactions The process of mining transactions happens in reverse to sending transactions. @@ -74,7 +74,7 @@ to the transaction pool. The responsibility then lies with the plugin to sign an [privacy marker transaction (PMT)]: ../../how-to/use-privacy/access-private-transactions.md -## Registering your plugin +## Register your plugin To enable Besu to use your privacy plugin, you must implement the `PrivacyPluginService` interface and you must call `setPayloadProvider`. diff --git a/docs/private-networks/concepts/privacy/private-transactions/index.md b/docs/private-networks/concepts/privacy/private-transactions/index.md index 9acf48239ef..41b84f8dee2 100644 --- a/docs/private-networks/concepts/privacy/private-transactions/index.md +++ b/docs/private-networks/concepts/privacy/private-transactions/index.md @@ -42,7 +42,7 @@ You can [create and send private transactions](../../../how-to/send-transactions Besu and Tessera nodes both have public/private key pairs identifying them. A Besu node sending a private transaction to a Tessera node signs the transaction with the Besu node private key. The `privateFrom` and `privateFor` parameters specified in the RLP-encoded transaction string for -[`eea_sendRawTransaction`](../../../../public-networks/reference/api/index.md#eea_sendrawtransaction) are the public keys of the Tessera +[`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) are the public keys of the Tessera nodes sending and receiving the transaction. !!! important @@ -83,7 +83,7 @@ The following private transaction flow illustrates when nonce validation occurs: 1. Submit a private transaction with a [nonce value](#private-transaction-nonce). 1. The private transaction is distributed to all participants in the privacy group. 1. The PMT is created and submitted to the transaction pool with a nonce of `0` if using one-time accounts. - If using a specific account with [`--privacy-marker-transaction-signing-key-file`](../../../../public-networks/reference/cli/options.md#privacy-marker-transaction-signing-key-file), + If using a specific account with [`--privacy-marker-transaction-signing-key-file`](../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file), the public nonce for that account is obtained and used for the PMT. 1. The PMT is mined and included in the block. 1. After the block containing the PMT is imported, and the PMT is processed, the private transaction is retrieved from @@ -95,7 +95,7 @@ The following private transaction flow illustrates when nonce validation occurs: ### Private nonce management In Besu, you call [`eth_getTransactionCount`](../../../../public-networks/reference/api/index.md#eth_gettransactioncount) to get a nonce, -then use that nonce with [`eea_sendRawTransaction`](../../../../public-networks/reference/api/index.md#eea_sendrawtransaction) to send a +then use that nonce with [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction) to send a private transaction. However, when you send multiple transactions in row, if a subsequent call to `getTransactionCount` happens before a @@ -118,8 +118,8 @@ You can manage private nonces in multiple ways: !!! note - You can use [`priv_getTransactionCount`](../../../../reference/api/index.md#priv_gettransactioncount) or - [`priv_getEeaTransactionCount`](../../../../reference/api/index.md#priv_geteeatransactioncount) to get the nonce for + You can use [`priv_getTransactionCount`](../../../reference/api/index.md#priv_gettransactioncount) or + [`priv_getEeaTransactionCount`](../../../reference/api/index.md#priv_geteeatransactioncount) to get the nonce for an account for the specified privacy group or participants. * Use [Orchestrate](https://docs.orchestrate.consensys.net/en/stable/) for nonce management. diff --git a/docs/private-networks/concepts/privacy/private-transactions/processing.md b/docs/private-networks/concepts/privacy/private-transactions/processing.md index ca84a071d80..0388d2714e6 100644 --- a/docs/private-networks/concepts/privacy/private-transactions/processing.md +++ b/docs/private-networks/concepts/privacy/private-transactions/processing.md @@ -17,7 +17,7 @@ Processing [private transactions](index.md) involves the following: * **Privacy marker transaction (PMT)**: A public Ethereum transaction with a payload of the enclave key. The enclave key is a pointer to the private transaction in Tessera. - The `to` attribute of the PMT is the [address of the privacy precompiled contract](../../../../public-networks/reference/api/index.md#priv_getprivacyprecompileaddress). + The `to` attribute of the PMT is the [address of the privacy precompiled contract](../../../reference/api/index.md#priv_getprivacyprecompileaddress). The PMT is [signed with a random key or the key specified on the command line]. @@ -25,7 +25,7 @@ Private transaction processing is illustrated and described in the following dia ![Processing Private Transactions](../../../../images/PrivateTransactionProcessing.png) -1. Submit a private transaction using [`eea_sendRawTransaction`](../../../../public-networks/reference/api/index.md#eea_sendrawtransaction). +1. Submit a private transaction using [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction). The signed transaction includes transaction parameters specific to private transactions, including: * `privateFor` or `privacyGroupId`, which specifies the list of recipients. @@ -50,12 +50,12 @@ Private transaction processing is illustrated and described in the following dia If you want to sign the PMT outside of Besu, use [`priv_distributeRawTransaction`](../../../how-to/send-transactions/private-transactions.md#priv_distributerawtransaction) - instead of [`eea_sendRawTransaction`](../../../../reference/api/index.md#eea_sendrawtransaction). + instead of [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction). 1. Besu mines the PMT into a block and the PMT is distributed to all Ethereum nodes in the network. 1. The Mainnet Transaction Processor processes the PMT in the same way as any other public transaction. - On nodes containing the [privacy precompile contract](../../../../public-networks/reference/api/index.md#priv_getprivacyprecompileaddress) + On nodes containing the [privacy precompile contract](../../../reference/api/index.md#priv_getprivacyprecompileaddress) specified in the `to` attribute of the PMT, the Mainnet Transaction Processor passes the PMT to the privacy precompile contract. @@ -78,10 +78,10 @@ Private transaction processing is illustrated and described in the following dia [IBFT 2.0](../../../how-to/configure/consensus/ibft.md). * Tessera must be [highly available and run in a separate instance to Besu](../../../how-to/use-privacy/tessera.md). - Using private transactions with [pruning] or [fast sync](../../../../reference/cli/options.md#sync-mode) + Using private transactions with [pruning] or [fast sync](../../../../public-networks/reference/cli/options.md#sync-mode) is not supported. [signed with a random key or the key specified on the command line]: ../../../how-to/use-privacy/sign-pmts.md [highly available and run in a separate instance to Besu]: ../../../how-to/use-privacy/tessera.md -[pruning]: ../../../../global/concepts/Pruning.md +[pruning]: ../../../../public-networks/concepts/data-storage-formats.md diff --git a/docs/private-networks/get-started/install/run-docker-image.md b/docs/private-networks/get-started/install/run-docker-image.md index 02833bf336d..4edb0a3f7e9 100644 --- a/docs/private-networks/get-started/install/run-docker-image.md +++ b/docs/private-networks/get-started/install/run-docker-image.md @@ -38,12 +38,12 @@ docker run hyperledger/besu:latest 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. +[`--rpc-http-port`](../../../public-networks/reference/cli/options.md#rpc-http-port), +[`--p2p-port`](../../../public-networks/reference/cli/options.md#p2p-port), +[`--rpc-ws-port`](../../../public-networks/reference/cli/options.md#rpc-ws-port), +[`--metrics-port`](../../../public-networks/reference/cli/options.md#metrics-port), +[`--graphql-http-port`](../../../public-networks/reference/cli/options.md#graphql-http-port), and +[`--metrics-push-port`](../../../public-networks/reference/cli/options.md#metrics-push-port) options. To run Besu exposing local ports for access: @@ -78,15 +78,15 @@ docker run -p :8545 -p :8546 -p :3 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 + [`--data-path`](../../../public-networks/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) + When running in a Docker container, [`--nat-method`](../../../public-networks/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`. + [`--nat-method`](../../../public-networks/how-to/connect/specify-nat.md) to `NONE` or `UPNP`. You can specify -[Besu environment variables](../../reference/cli/options.md#besu-environment-variables) with the +[Besu environment variables](../../../public-networks/reference/cli/options.md#besu-environment-variables) with the Docker image instead of the command line options. !!! example diff --git a/docs/private-networks/get-started/start-node.md b/docs/private-networks/get-started/start-node.md index 50c5a48b821..a1754f6c978 100644 --- a/docs/private-networks/get-started/start-node.md +++ b/docs/private-networks/get-started/start-node.md @@ -119,13 +119,13 @@ data-path="/tmp/tmpdata-path" 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-http-enabled`](../../public-networks/reference/cli/options.md#rpc-http-enabled)) and setting + [`--rpc-http-host`](../../public-networks/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 `"*"` + * Setting [`--host-allowlist`](../../public-networks/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 + [`--rpc-http-cors-origins`](../../public-networks/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 Ropsten testnet diff --git a/docs/private-networks/how-to/configure/bootnodes.md b/docs/private-networks/how-to/configure/bootnodes.md index 390abb736b1..cc8a01782fb 100644 --- a/docs/private-networks/how-to/configure/bootnodes.md +++ b/docs/private-networks/how-to/configure/bootnodes.md @@ -17,13 +17,13 @@ In production networks, [configure two or more nodes as bootnodes](#configure-bo you can use only bootnodes, only static nodes, or both bootnodes and statics nodes. To find peers, configure one or more bootnodes. To configure a specific set - of peer connections, use [static nodes](../../../how-to/connect/static-nodes.md). + of peer connections, use [static nodes](../../../public-networks/how-to/connect/static-nodes.md). !!! note "Mainnet and public testnets" For Mainnet and the Rinkeby, Ropsten, Sepolia, and Goerli testnets, Hyperledger Besu has an internal list of enode URLs and uses this list automatically when you specify the - [`--network`](../../../reference/cli/options.md#network) option. + [`--network`](../../../public-networks/reference/cli/options.md#network) option. ## Specify a bootnode diff --git a/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md b/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md index 3d825bb4b58..3510c0a5cd6 100644 --- a/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md +++ b/docs/private-networks/how-to/configure/consensus/add-validators-without-voting.md @@ -145,8 +145,8 @@ To add or remove validators without voting: 1. Restart all nodes in the network using the updated genesis file. You can make a rolling update of the nodes, as long as they're all up before the transition block is processed. 1. To verify the changes after the transition block, call - [`qbft_getValidatorsByBlockNumber`](../../../../public-networks/reference/api/index.md#qbft_getvalidatorsbyblocknumber) or - [`ibft_getValidatorsByBlockNumber`](../../../../public-networks/reference/api/index.md#ibft_getvalidatorsbyblocknumber), + [`qbft_getValidatorsByBlockNumber`](../../../reference/api/index.md#qbft_getvalidatorsbyblocknumber) or + [`ibft_getValidatorsByBlockNumber`](../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. !!! caution diff --git a/docs/private-networks/how-to/configure/consensus/clique.md b/docs/private-networks/how-to/configure/consensus/clique.md index c48293be2a6..c8a229858e3 100644 --- a/docs/private-networks/how-to/configure/consensus/clique.md +++ b/docs/private-networks/how-to/configure/consensus/clique.md @@ -116,17 +116,17 @@ To enable them, specify the [`--rpc-http-api`](../../../../public-networks/refer The methods to add or remove signers are: -* [`clique_propose`](../../../../public-networks/reference/api/index.md#clique_propose). -* [`clique_getSigners`](../../../../public-networks/reference/api/index.md#clique_getsigners). -* [`clique_discard`](../../../../public-networks/reference/api/index.md#clique_discard). +* [`clique_propose`](../../../reference/api/index.md#clique_propose). +* [`clique_getSigners`](../../../reference/api/index.md#clique_getsigners). +* [`clique_discard`](../../../reference/api/index.md#clique_discard). To view signer metrics for a specified block range, call -[`clique_getSignerMetrics`](../../../../public-networks/reference/api/index.md#clique_getsignermetrics). +[`clique_getSignerMetrics`](../../../reference/api/index.md#clique_getsignermetrics). ### Add a signer To propose adding a signer to a Clique network, call -[`clique_propose`](../../../../public-networks/reference/api/index.md#clique_propose), specifying the address of the proposed signer and `true`. +[`clique_propose`](../../../reference/api/index.md#clique_propose), specifying the address of the proposed signer and `true`. A majority of signers must execute the call. !!! example "JSON-RPC `clique_propose` request example" @@ -141,7 +141,7 @@ When more than 50% of the existing signers propose adding the signer, with their signer can begin signing blocks. To return a list of signers and confirm the addition of a proposed signer, call -[`clique_getSigners`](../../../../public-networks/reference/api/index.md#clique_getsigners). +[`clique_getSigners`](../../../reference/api/index.md#clique_getsigners). !!! example "JSON-RPC `clique_getSigners` request example" @@ -150,7 +150,7 @@ To return a list of signers and confirm the addition of a proposed signer, call ``` To discard your proposal after confirming the addition of a signer, call -[`clique_discard`](../../../../public-networks/reference/api/index.md#clique_discard) specifying the address of the proposed signer. +[`clique_discard`](../../../reference/api/index.md#clique_discard) specifying the address of the proposed signer. !!! example "JSON-RPC `clique_discard` request example" @@ -161,7 +161,7 @@ To discard your proposal after confirming the addition of a signer, call ### Remove a signer The process for removing a signer from a Clique network is the same as [adding a signer](#add-a-signer), except you -specify `false` as the second parameter of [`clique_propose`](../../../../public-networks/reference/api/index.md#clique_propose). +specify `false` as the second parameter of [`clique_propose`](../../../reference/api/index.md#clique_propose). ### Epoch transition diff --git a/docs/private-networks/how-to/configure/consensus/ibft.md b/docs/private-networks/how-to/configure/consensus/ibft.md index cc1caefbe8d..b3fb51e016b 100644 --- a/docs/private-networks/how-to/configure/consensus/ibft.md +++ b/docs/private-networks/how-to/configure/consensus/ibft.md @@ -171,7 +171,7 @@ To tune the block timeout for your network deployment: !!! tip - View [`TRACE` logs](../../../../reference/api/index.md#trace-methods) to see round change + View [`TRACE` logs](../../../../public-networks/reference/api/index.md#trace-methods) to see round change log messages. Use a [transition](#transitions) to update the `blockperiodseconds` in an existing network. @@ -205,9 +205,9 @@ To enable them, specify the [`--rpc-http-api`](../../../../public-networks/refer The methods to add or remove validators are: -* [`ibft_getPendingVotes`](../../../../public-networks/reference/api/index.md#ibft_getpendingvotes). -* [`ibft_proposeValidatorVote`](../../../../public-networks/reference/api/index.md#ibft_proposevalidatorvote). -* [`ibft_discardValidatorVote`](../../../../public-networks/reference/api/index.md#ibft_discardvalidatorvote). +* [`ibft_getPendingVotes`](../../../reference/api/index.md#ibft_getpendingvotes). +* [`ibft_proposeValidatorVote`](../../../reference/api/index.md#ibft_proposevalidatorvote). +* [`ibft_discardValidatorVote`](../../../reference/api/index.md#ibft_discardvalidatorvote). To view validator metrics for a specified block range, use [`ibft_getSignerMetrics`](../../../../public-networks/reference/api/index.md#ibft_getsignermetrics). @@ -220,7 +220,7 @@ To view validator metrics for a specified block range, use ### Add a validator To propose adding a validator to an IBFT 2.0 network, call -[`ibft_proposeValidatorVote`](../../../../public-networks/reference/api/index.md#ibft_proposevalidatorvote), specifying the address of the +[`ibft_proposeValidatorVote`](../../../reference/api/index.md#ibft_proposevalidatorvote), specifying the address of the proposed validator and `true`. A majority of validators must execute the call. @@ -231,14 +231,14 @@ A majority of validators must execute the call. ``` When the validator proposes the next block, the protocol inserts one proposal received from -[`ibft_proposeValidatorVote`](../../../../public-networks/reference/api/index.md#ibft_proposevalidatorvote) into the block. +[`ibft_proposeValidatorVote`](../../../reference/api/index.md#ibft_proposevalidatorvote) into the block. If blocks include all proposals, subsequent blocks proposed by the validator will not contain a vote. When more than 50% of the existing validators have published a matching proposal, the protocol adds the proposed validator to the validator pool and the validator can begin validating blocks. To return a list of validators and confirm the addition of a proposed validator, use -[`ibft_getValidatorsByBlockNumber`](../../../../public-networks/reference/api/index.md#ibft_getvalidatorsbyblocknumber). +[`ibft_getValidatorsByBlockNumber`](../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber). !!! example "JSON-RPC `ibft_getValidatorsByBlockNumber` request example" @@ -247,7 +247,7 @@ To return a list of validators and confirm the addition of a proposed validator, ``` To discard your proposal after confirming the addition of a validator, call -[`ibft_discardValidatorVote`](../../../../public-networks/reference/api/index.md#ibft_discardvalidatorvote), +[`ibft_discardValidatorVote`](../../../reference/api/index.md#ibft_discardvalidatorvote), specifying the address of the proposed validator. !!! example "JSON-RPC `ibft_discardValidatorVote` request example" @@ -260,7 +260,7 @@ specifying the address of the proposed validator. The process for removing a validator from an IBFT 2.0 network is the same as [adding a validator](#add-a-validator) except you specify `false` as the second parameter of -[`ibft_proposeValidatorVote`](../../../../public-networks/reference/api/index.md#ibft_proposevalidatorvote). +[`ibft_proposeValidatorVote`](../../../reference/api/index.md#ibft_proposevalidatorvote). ### Epoch transition diff --git a/docs/private-networks/how-to/configure/consensus/qbft.md b/docs/private-networks/how-to/configure/consensus/qbft.md index 17246b07c37..a65a30d704e 100644 --- a/docs/private-networks/how-to/configure/consensus/qbft.md +++ b/docs/private-networks/how-to/configure/consensus/qbft.md @@ -200,7 +200,7 @@ Formally, `extraData` in the genesis block contains: #### Generate extra data To generate the `extraData` RLP string for inclusion in the genesis file, -use the [`rlp encode`](../../../../public-networks/reference/cli/subcommands.md#rlp) Besu subcommand. +use the [`rlp encode`](../../../reference/cli/subcommands.md#rlp) Besu subcommand. !!! example @@ -320,12 +320,12 @@ To enable them, specify the [`--rpc-http-api`](../../../../public-networks/refer The methods to add or remove validators are: -* [`qbft_getPendingVotes`](../../../../public-networks/reference/api/index.md#qbft_getpendingvotes). -* [`qbft_proposeValidatorVote`](../../../../public-networks/reference/api/index.md#qbft_proposevalidatorvote). -* [`qbft_discardValidatorVote`](../../../../public-networks/reference/api/index.md#qbft_discardvalidatorvote). +* [`qbft_getPendingVotes`](../../../reference/api/index.md#qbft_getpendingvotes). +* [`qbft_proposeValidatorVote`](../../../reference/api/index.md#qbft_proposevalidatorvote). +* [`qbft_discardValidatorVote`](../../../reference/api/index.md#qbft_discardvalidatorvote). To view validator metrics for a specified block range, use -[`qbft_getSignerMetrics`](../../../../public-networks/reference/api/index.md#qbft_getsignermetrics). +[`qbft_getSignerMetrics`](../../../reference/api/index.md#qbft_getsignermetrics). !!! note @@ -335,7 +335,7 @@ To view validator metrics for a specified block range, use #### Add a validator To propose adding a validator, call -[`qbft_proposeValidatorVote`](../../../../public-networks/reference/api/index.md#qbft_proposevalidatorvote), +[`qbft_proposeValidatorVote`](../../../reference/api/index.md#qbft_proposevalidatorvote), specifying the address of the proposed validator and `true`. A majority of validators must execute the call. @@ -346,7 +346,7 @@ the call. ``` When the validator proposes the next block, the protocol inserts one proposal received from -[`qbft_proposeValidatorVote`](../../../../public-networks/reference/api/index.md#qbft_proposevalidatorvote) into the +[`qbft_proposeValidatorVote`](../../../reference/api/index.md#qbft_proposevalidatorvote) into the block. If blocks include all proposals, subsequent blocks proposed by the validator will not contain a vote. @@ -354,7 +354,7 @@ When more than 50% of the existing validators have published a matching proposal adds the proposed validator to the validator pool and the validator can begin validating blocks. To return a list of validators and confirm the addition of a proposed validator, use -[`qbft_getValidatorsByBlockNumber`](../../../../public-networks/reference/api/index.md#qbft_getvalidatorsbyblocknumber). +[`qbft_getValidatorsByBlockNumber`](../../../reference/api/index.md#qbft_getvalidatorsbyblocknumber). !!! example "JSON-RPC `qbft_getValidatorsByBlockNumber` request example" @@ -363,7 +363,7 @@ To return a list of validators and confirm the addition of a proposed validator, ``` To discard your proposal after confirming the addition of a validator, call -[`qbft_discardValidatorVote`](../../../../public-networks/reference/api/index.md#qbft_discardvalidatorvote), +[`qbft_discardValidatorVote`](../../../reference/api/index.md#qbft_discardvalidatorvote), specifying the address of the proposed validator. !!! example "JSON-RPC `qbft_discardValidatorVote` request example" @@ -376,7 +376,7 @@ specifying the address of the proposed validator. The process for removing a validator is the same as adding a validator except you specify `false` as the second parameter of -[`qbft_proposeValidatorVote`](../../../../public-networks/reference/api/index.md#qbft_proposevalidatorvote). +[`qbft_proposeValidatorVote`](../../../reference/api/index.md#qbft_proposevalidatorvote). #### Epoch transition @@ -491,7 +491,7 @@ To update an existing network with a new `blockperiodseconds`: 3. Restart all nodes in the network using the updated genesis file. 4. To verify the changes after the transition block, call - [`qbft_getValidatorsByBlockNumber`](../../../../public-networks/reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. + [`qbft_getValidatorsByBlockNumber`](../../../reference/api/index.md#ibft_getvalidatorsbyblocknumber), specifying `latest`. ### Configure block rewards on an existing network deployment diff --git a/docs/private-networks/how-to/configure/free-gas.md b/docs/private-networks/how-to/configure/free-gas.md index d63e1e379e6..90d74e66e62 100644 --- a/docs/private-networks/how-to/configure/free-gas.md +++ b/docs/private-networks/how-to/configure/free-gas.md @@ -30,7 +30,7 @@ to limit resource use. In a free gas network, transactions still use gas but the gas price is zero, meaning the transaction cost is zero. Transaction cost = gas used * 0 (the gas price). -## Configuring free gas in Hyperledger Besu +## Configure free gas in Besu When gas is free, limiting block and contract sizes is less important. In free gas networks, we increase the block size limit and set the contract size limit to the maximum value. @@ -95,7 +95,7 @@ to zero. 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`](../../../public-networks/reference/api/index.md#eth_gasprice). -## Configuring free gas in Truffle +## Configure free gas in Truffle If using Truffle to develop on your free gas network, you also need to configure free gas in Truffle. @@ -106,7 +106,7 @@ gas limit in Truffle to the maximum possible. !!! important Besu does not support private key management. To use Besu with Truffle, you must configure - a [Truffle wallet](../../../how-to/develop/truffle.md). + a [Truffle wallet](../../../public-networks/how-to/develop/truffle.md). ### Update `truffle-config.js` diff --git a/docs/private-networks/how-to/configure/tls/client-and-server.md b/docs/private-networks/how-to/configure/tls/client-and-server.md index 2ab0d882be2..41e93fe98c4 100644 --- a/docs/private-networks/how-to/configure/tls/client-and-server.md +++ b/docs/private-networks/how-to/configure/tls/client-and-server.md @@ -2,7 +2,7 @@ description: Configure TLS --- -# Configure TLS +# Configure client and server TLS Hyperledger Besu supports TLS for client and server communication. For example, you can configure TLS for communication between @@ -85,7 +85,7 @@ The command line: !!! note - Set [`--rpc-http-tls-ca-clients-enabled`](../../../../reference/cli/options.md#rpc-http-tls-ca-clients-enabled) + Set [`--rpc-http-tls-ca-clients-enabled`](../../../../public-networks/reference/cli/options.md#rpc-http-tls-ca-clients-enabled) to `true` to allow access to clients with signed and trusted root CAs. ## Configure server TLS @@ -127,14 +127,14 @@ besu --privacy-tls-enabled --privacy-tls-keystore-file=/Users/me/my_node/keystor The command line: * Enables TLS with the server using the - [`--privacy-tls-enabled`](../../../../public-networks/reference/cli/options.md#privacy-tls-enabled) option. + [`--privacy-tls-enabled`](../../../reference/cli/options.md#privacy-tls-enabled) option. * Specifies the keystore using the - [`--privacy-tls-keystore-file`](../../../../public-networks/reference/cli/options.md#privacy-tls-keystore-file) + [`--privacy-tls-keystore-file`](../../../reference/cli/options.md#privacy-tls-keystore-file) option. * Specifies the file that contains the password to decrypt the keystore using the - [`--privacy-tls-keystore-password-file`](../../../../public-networks/reference/cli/options.md#privacy-tls-keystore-password-file) option. + [`--privacy-tls-keystore-password-file`](../../../reference/cli/options.md#privacy-tls-keystore-password-file) option. * Specifies the trusted servers using the - [`--privacy-tls-known-enclave-file`](../../../../public-networks/reference/cli/options.md#privacy-tls-known-enclave-file) option. + [`--privacy-tls-known-enclave-file`](../../../reference/cli/options.md#privacy-tls-known-enclave-file) option. [Configure the client for TLS]: https://docs.ethsigner.consensys.net/en/latest/HowTo/Configure-TLS/#server-tls-connection diff --git a/docs/private-networks/how-to/configure/tls/p2p.md b/docs/private-networks/how-to/configure/tls/p2p.md index 58ae4fb2545..4ffa6402ec1 100644 --- a/docs/private-networks/how-to/configure/tls/p2p.md +++ b/docs/private-networks/how-to/configure/tls/p2p.md @@ -2,7 +2,7 @@ description: Configure P2P TLS communication --- -# P2P TLS +# Configure P2P TLS You can configure TLS to secure the P2P communication between nodes by ensuring only authorized nodes can communicate with each other. Use certificates issued by a trusted authority to connect authorized nodes in the network. diff --git a/docs/private-networks/how-to/monitor/splunk.md b/docs/private-networks/how-to/monitor/splunk.md index 2bdedcc796d..60d3ecf05e0 100644 --- a/docs/private-networks/how-to/monitor/splunk.md +++ b/docs/private-networks/how-to/monitor/splunk.md @@ -53,9 +53,9 @@ Docker Compose environment provided by Splunk. !!! note Splunk enterprise takes some time to start. - + Run `docker ps` and wait for the `STATUS` of the 3 containers to be `Up [number] seconds (healthy)`. - + ``` CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 127600dd1173 splunkdlt/ethlogger:latest "ethlogger" 53 seconds ago Up 51 seconds (healthy) ethlogger @@ -65,7 +65,7 @@ Docker Compose environment provided by Splunk. ## Use Splunk Enterprise as a Docker container -### Requirements +### Prerequisites - [Docker](https://docs.docker.com/compose/install/) - [Besu 1.4.4](https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/CHANGELOG.md#144) or later [installed](../../get-started/install/binary-distribution.md) @@ -77,7 +77,7 @@ Docker Compose environment provided by Splunk. !!! note - If running [Besu as a Docker container](../../../get-started/install/run-docker-image.md), consider using + If running [Besu as a Docker container](../../get-started/install/run-docker-image.md), consider using [Splunk Connect for Ethereum Docker Compose](#splunk-connect-for-ethereum-docker-compose) or [Kubernetes](../deploy/kubernetes.md) instead of the Splunk Enterprise trial container. @@ -103,7 +103,7 @@ Docker Compose environment provided by Splunk. !!! tip To follow the logs of the Splunk container: - + ```bash docker logs -f splunk-demo ``` @@ -147,7 +147,7 @@ Docker Compose environment provided by Splunk. ## Run a Splunk Enterprise instance -### Requirements +### Prerequisites - [Splunk Enterprise license](https://www.splunk.com/) - [Besu 1.4.4](https://github.com/hyperledger/besu/blob/master/CHANGELOG.md#144) or later [installed](../../get-started/install/binary-distribution.md) diff --git a/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md b/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md index f073f3a8acb..fec907309e9 100644 --- a/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md +++ b/docs/private-networks/how-to/send-transactions/concurrent-private-transactions.md @@ -2,7 +2,7 @@ description: Creating and sending concurrent private transactions with Hyperledger Besu --- -# Sending concurrent private transactions +# Send concurrent private transactions Private transaction processing involves two transactions, the private transaction and the [privacy marker transaction (PMT)](../../concepts/privacy/private-transactions/processing.md). @@ -10,22 +10,22 @@ The private transaction and the PMT each have their own [nonce](../../concepts/p If your private transaction rate requires sending private transactions without waiting for the previous private transaction to be mined, using [`eth_getTransactionCount`](../../../public-networks/reference/api/index.md#eth_gettransactioncount) -and [`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction) may result in +and [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) may result in [incorrect nonces](../../concepts/privacy/private-transactions/index.md#private-nonce-management). In this case, use [`priv_distributeRawTransaction`](private-transactions.md#priv_distributerawtransaction) -instead of [`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction). +instead of [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction). !!! note - You can use [`priv_getTransactionCount`](../../../reference/api/index.md#priv_gettransactioncount) or - [`priv_getEeaTransactionCount`](../../../reference/api/index.md#priv_geteeatransactioncount) to get the nonce for + You can use [`priv_getTransactionCount`](../../reference/api/index.md#priv_gettransactioncount) or + [`priv_getEeaTransactionCount`](../../reference/api/index.md#priv_geteeatransactioncount) to get the nonce for an account for the specified privacy group or participants. Send the corresponding PMT using [`eth_sendRawTransaction`](../../../public-networks/reference/api/index.md#eth_sendrawtransaction), specifying the public PMT nonce. This method allows you to create and send the PMT yourself rather than -[`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction) handling the PMT. +[`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) handling the PMT. !!! important @@ -38,5 +38,5 @@ This method allows you to create and send the PMT yourself rather than The [web3js-quorum library](https://github.com/ConsenSys/web3js-quorum/tree/master/example/concurrentPrivateTransactions) includes an example of how to send concurrent private transactions. The example uses [offchain privacy groups](../../concepts/privacy/privacy-groups.md). - Use [`priv_getPrivacyPrecompileAddress`](../../../reference/api/index.md#priv_getprivacyprecompileaddress) to get the + Use [`priv_getPrivacyPrecompileAddress`](../../reference/api/index.md#priv_getprivacyprecompileaddress) to get the precompile address to specify in the `to` field when creating the PMT. diff --git a/docs/private-networks/how-to/send-transactions/private-transactions.md b/docs/private-networks/how-to/send-transactions/private-transactions.md index 7ea59ce43b1..5de03231b5c 100644 --- a/docs/private-networks/how-to/send-transactions/private-transactions.md +++ b/docs/private-networks/how-to/send-transactions/private-transactions.md @@ -2,7 +2,7 @@ description: Creating and sending private transactions with Hyperledger Besu --- -# Creating and sending private transactions +# Create and send private transactions Create and send [private transactions](../../concepts/privacy/index.md) using: @@ -26,7 +26,7 @@ The `gas` and `gasPrice` specified when sending a private transaction are used b ## `eea_sendRawTransaction` -[`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction) distributes the +[`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) distributes the private transaction to the participating nodes, and signs and submits the PMT, as described in [Private transaction processing](../../concepts/privacy/private-transactions/processing.md). @@ -34,27 +34,27 @@ private transaction to the participating nodes, and signs and submits the PMT, a If [sending concurrent transactions](concurrent-private-transactions.md), you must use [`priv_distributeRawTransaction`](#priv_distributerawtransaction) instead of - [`eea_sendRawTransaction`](../../../reference/api/index.md#eea_sendrawtransaction). + [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction). ## `priv_distributeRawTransaction` -Use [`priv_distributeRawTransaction`](../../../public-networks/reference/api/index.md#priv_distributerawtransaction) instead of +Use [`priv_distributeRawTransaction`](../../reference/api/index.md#priv_distributerawtransaction) instead of [`eea_sendRawTransaction`](#eea_sendrawtransaction) when sending [concurrent private transactions](concurrent-private-transactions.md). -[`priv_distributeRawTransaction`](../../../public-networks/reference/api/index.md#priv_distributerawtransaction) +[`priv_distributeRawTransaction`](../../reference/api/index.md#priv_distributerawtransaction) distributes the private transaction to the participating nodes but does not sign and submit the PMT. -That is, it performs steps 1 to 5 of [Private Transaction Processing](../../concepts/privacy/private-transactions/processing.md). +That is, it performs steps 1 to 5 of [private transaction processing](../../concepts/privacy/private-transactions/processing.md). If using -[`priv_distributeRawTransaction`](../../../public-networks/reference/api/index.md#priv_distributerawtransaction) -instead of [`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction), use +[`priv_distributeRawTransaction`](../../reference/api/index.md#priv_distributerawtransaction) +instead of [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction), use the value returned by -[`priv_distributeRawTransaction`](../../../public-networks/reference/api/index.md#priv_distributerawtransaction), +[`priv_distributeRawTransaction`](../../reference/api/index.md#priv_distributerawtransaction), which is the enclave key to the private transaction in [Tessera](https://docs.tessera.consensys.net/), in the `data` field of a call to [`eth_sendRawTransaction`](../../../public-networks/reference/api/index.md#eth_sendrawtransaction). Use the value returned by -[`priv_getPrivacyPrecompileAddress`](../../../public-networks/reference/api/index.md#priv_getprivacyprecompileaddress), which is the +[`priv_getPrivacyPrecompileAddress`](../../reference/api/index.md#priv_getprivacyprecompileaddress), which is the address of the [privacy precompiled contract](../../concepts/privacy/private-transactions/processing.md), in the `to` field of the call. @@ -111,15 +111,15 @@ and submitting the PMT yourself instead of having it signed by the Besu node, gi To create an [EEA-compliant private transaction], specify `privateFor` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction). To create a [Besu-extended private transaction], specify a `privacyGroupId` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction). ## Unsigned and unencoded private transactions -The [`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction) parameter is +The [`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction) parameter is a signed RLP-encoded private transaction. Shown below are examples of unsigned and unencoded private transactions to create a contract. diff --git a/docs/private-networks/how-to/send-transactions/revert-reason.md b/docs/private-networks/how-to/send-transactions/revert-reason.md index 23864d54a3e..a7e8bde0188 100644 --- a/docs/private-networks/how-to/send-transactions/revert-reason.md +++ b/docs/private-networks/how-to/send-transactions/revert-reason.md @@ -39,7 +39,7 @@ client an optional string message containing information about the error. } ``` -## Enabling revert reason +## Enable revert reason Use the [`--revert-reason-enabled`](../../../public-networks/reference/cli/options.md#revert-reason-enabled) command line option to include the revert reason in the transaction receipt, @@ -52,7 +52,7 @@ command line option to include the revert reason in the transaction receipt, Enabling revert reason may use a significant amount of memory. We do not recommend enabling revert reason when connected to public Ethereum networks. -## Where is the revert reason included +## Where the revert reason is included With revert reason enabled, the transaction receipt returned by [`eth_getTransactionReceipt`](../../../public-networks/reference/api/index.md#eth_gettransactionreceipt) includes @@ -64,7 +64,7 @@ the revert reason as an ABI-encoded string. revert reason in the transactions receipt's root hash means the revert reason is only available to nodes that execute the transaction when importing the block. That is, the revert reason is not available if using fast synchronization - ([`--sync-mode=FAST`](../../../reference/cli/options.md#sync-mode)). + ([`--sync-mode=FAST`](../../../public-networks/reference/cli/options.md#sync-mode)). !!! example diff --git a/docs/private-networks/how-to/use-permissioning/local.md b/docs/private-networks/how-to/use-permissioning/local.md index e7ba76c24d3..bd4b168c521 100644 --- a/docs/private-networks/how-to/use-permissioning/local.md +++ b/docs/private-networks/how-to/use-permissioning/local.md @@ -32,7 +32,7 @@ Local permissioning doesn't check that the node using the permissions configurat allowlist, it only checks that the remote end of the connection is in the allowlist. Use [onchain permissioning] if you need to check both ends of the connection. -### Specifying bootnodes in the allowlist +### Specify bootnodes in the allowlist The nodes permissions list must include the [bootnodes](../configure/bootnodes.md) or Hyperledger Besu doesn't start with node permissions enabled. @@ -54,34 +54,34 @@ start with node permissions enabled. (for example, if you use Kubernetes implementing a load balancer for ingress and a NAT gateway IP address for egress), add both addresses to the allowlist, using the same public key for each IP address. This will allow the node to connect. -### Enabling node allowlisting +### Enable node allowlisting To enable node allowlisting, specify the -[`--permissions-nodes-config-file-enabled`](../../../public-networks/reference/cli/options.md#permissions-nodes-config-file-enabled) +[`--permissions-nodes-config-file-enabled`](../../reference/cli/options.md#permissions-nodes-config-file-enabled) option when starting Besu. The `PERM` API methods are not enabled by default. To enable the `PERM` API methods, use the [`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) or [`--rpc-ws-api`](../../../public-networks/reference/cli/options.md#rpc-ws-api) options. -### Updating the node allowlist +### Update the node allowlist To update the nodes allowlist while the node is running, use the following JSON-RPC API methods: -* [perm_addNodesToAllowlist](../../../public-networks/reference/api/index.md#perm_addnodestoallowlist) -* [perm_removeNodesFromAllowlist](../../../public-networks/reference/api/index.md#perm_removenodesfromallowlist) +* [perm_addNodesToAllowlist](../../reference/api/index.md#perm_addnodestoallowlist) +* [perm_removeNodesFromAllowlist](../../reference/api/index.md#perm_removenodesfromallowlist) You can also update the [`permissions_config.toml`](#permissions-configuration-file) file directly and then update the allowlist using the -[`perm_reloadPermissionsFromFile`](../../../public-networks/reference/api/index.md#perm_reloadpermissionsfromfile) +[`perm_reloadPermissionsFromFile`](../../reference/api/index.md#perm_reloadpermissionsfromfile) method. Updates to the permissions configuration file persist across node restarts. -### Viewing the node allowlist +### View the node allowlist To view the nodes allowlist, use the -[perm_getNodesAllowlist](../../../public-networks/reference/api/index.md#perm_getnodesallowlist) method. +[perm_getNodesAllowlist](../../reference/api/index.md#perm_getnodesallowlist) method. !!! note @@ -120,7 +120,7 @@ Account allowlisting is at the node level. That is, each node in the network has [privacy marker transactions](../../concepts/privacy/private-transactions/processing.md). If using account permissioning and privacy, a signing key must be specified using the - [`--privacy-marker-transaction-signing-key-file`](../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) + [`--privacy-marker-transaction-signing-key-file`](../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) command line option and the corresponding public key included in the accounts allowlist. Transaction validation against the accounts allowlist occurs at the following points: @@ -162,7 +162,7 @@ The following diagram illustrates applying local and onchain permissioning rules by Node B to which it's propagated if the account is not in the Node B allowlist. We recommend each node in the network has the same accounts allowlist. -### Enabling account allowlisting +### Enable account allowlisting To enable account allowlisting, specify the [`--permissions-accounts-config-file-enabled`](../../../public-networks/reference/cli/options.md#permissions-accounts-config-file-enabled) @@ -172,30 +172,30 @@ The `PERM` API methods are not enabled by default. To enable the `PERM` API meth [`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) or [`--rpc-ws-api`](../../../public-networks/reference/cli/options.md#rpc-ws-api) options. -### Updating the account allowlist +### Update the account allowlist To update the accounts allowlist when the node is running, use the JSON-RPC API methods: -* [`perm_addAccountsToAllowlist`](../../../public-networks/reference/api/index.md#perm_addaccountstoallowlist) -* [`perm_removeAccountsFromAllowlist`](../../../public-networks/reference/api/index.md#perm_removeaccountsfromallowlist). +* [`perm_addAccountsToAllowlist`](../../reference/api/index.md#perm_addaccountstoallowlist) +* [`perm_removeAccountsFromAllowlist`](../../reference/api/index.md#perm_removeaccountsfromallowlist). You can also update the [`permissions_config.toml`](#permissions-configuration-file) file directly and use the -[`perm_reloadPermissionsFromFile`](../../../public-networks/reference/api/index.md#perm_reloadpermissionsfromfile) +[`perm_reloadPermissionsFromFile`](../../reference/api/index.md#perm_reloadpermissionsfromfile) method to update the allowlists. Updates to the permissions configuration file persist across node restarts. -### Viewing the account allowlist +### View the account allowlist To view the accounts allowlist, use the -[`perm_getAccountsAllowlist`](../../../public-networks/reference/api/index.md#perm_getaccountsallowlist) method. +[`perm_getAccountsAllowlist`](../../reference/api/index.md#perm_getaccountsallowlist) method. ## Permissions configuration file The permissions configuration file contains the nodes and accounts allowlists. If the -[`--permissions-accounts-config-file`](../../../public-networks/reference/cli/options.md#permissions-accounts-config-file) -and [`--permissions-nodes-config-file`](../../../public-networks/reference/cli/options.md#permissions-nodes-config-file) +[`--permissions-accounts-config-file`](../../reference/cli/options.md#permissions-accounts-config-file) +and [`--permissions-nodes-config-file`](../../reference/cli/options.md#permissions-nodes-config-file) options are not specified, the name of the permissions configuration file must be [`permissions_config.toml`](#permissions-configuration-file) and must be in the [data directory](../../../public-networks/reference/cli/options.md#data-path) for the node. @@ -205,17 +205,17 @@ accounts and nodes. To specify a permissions configuration file (or separate files for accounts and nodes) in any location, use the -[`--permissions-accounts-config-file`](../../../public-networks/reference/cli/options.md#permissions-accounts-config-file) +[`--permissions-accounts-config-file`](../../reference/cli/options.md#permissions-accounts-config-file) and -[`--permissions-nodes-config-file`](../../../public-networks/reference/cli/options.md#permissions-nodes-config-file) +[`--permissions-nodes-config-file`](../../reference/cli/options.md#permissions-nodes-config-file) options. !!!note - The [`--permissions-accounts-config-file`](../../../reference/cli/options.md#permissions-accounts-config-file) - and [`permissions-nodes-config-file`](../../../reference/cli/options.md#permissions-nodes-config-file) + The [`--permissions-accounts-config-file`](../../reference/cli/options.md#permissions-accounts-config-file) + and [`permissions-nodes-config-file`](../../reference/cli/options.md#permissions-nodes-config-file) options are not used when running Besu from the - [Docker image](../../../get-started/install/run-docker-image.md). Use a bind mount to + [Docker image](../../get-started/install/run-docker-image.md). Use a bind mount to [specify a permissions configuration file with Docker]. !!! example "Sample permissions configuration file" diff --git a/docs/private-networks/how-to/use-permissioning/onchain.md b/docs/private-networks/how-to/use-permissioning/onchain.md index 53305f5ee25..85b37d02fdd 100644 --- a/docs/private-networks/how-to/use-permissioning/onchain.md +++ b/docs/private-networks/how-to/use-permissioning/onchain.md @@ -72,17 +72,17 @@ To remove a node from the nodes allowlist: If you add a running node, the node does not attempt to reconnect to the bootnode and synchronize until peer discovery restarts. To add an allowlisted node as a peer without waiting for peer discovery to restart, use - [`admin_addPeer`](../../../reference/api/index.md#admin_addpeer). + [`admin_addPeer`](../../../public-networks/reference/api/index.md#admin_addpeer). If you add the node to the allowlist before starting the node, using `admin_addPeer` is not required because peer discovery is run on node startup. !!! tip - If nodes are not connecting as expected, set the [log level to `TRACE`](../../../reference/cli/options.md#logging) + If nodes are not connecting as expected, set the [log level to `TRACE`](../../../public-networks/reference/cli/options.md#logging) and search for messages containing `Node permissioning` to identify the issue. - Ensure the [`--p2p-host`](../../../reference/cli/options.md#p2p-host) command line option has been + Ensure the [`--p2p-host`](../../../public-networks/reference/cli/options.md#p2p-host) command line option has been correctly configured for all nodes with the externally accessible address. @@ -108,7 +108,7 @@ You can add or remove admins in the same way as [accounts](#update-accounts-allo ## Specify the permissioning contract interface version -Use the [`--permissions-nodes-contract-version`](../../../public-networks/reference/cli/options.md#permissions-nodes-contract-version) +Use the [`--permissions-nodes-contract-version`](../../reference/cli/options.md#permissions-nodes-contract-version) command line option to specify the version of the [permissioning contract interface](../../concepts/permissioning/onchain.md#permissioning-contracts). The default is 1. diff --git a/docs/private-networks/how-to/use-privacy/privacy-groups.md b/docs/private-networks/how-to/use-privacy/privacy-groups.md index 08e827e9c1d..18394276534 100644 --- a/docs/private-networks/how-to/use-privacy/privacy-groups.md +++ b/docs/private-networks/how-to/use-privacy/privacy-groups.md @@ -13,13 +13,13 @@ description: Create and manage privacy groups with Hyperledger Besu Hyperledger Besu-extended privacy provides JSON-RPC API methods for creating and managing privacy groups: -* [`priv_createPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_createprivacygroup) -* [`priv_findPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_findprivacygroup) -* [`priv_deletePrivacyGroup`](../../../public-networks/reference/api/index.md#priv_deleteprivacygroup). +* [`priv_createPrivacyGroup`](../../reference/api/index.md#priv_createprivacygroup) +* [`priv_findPrivacyGroup`](../../reference/api/index.md#priv_findprivacygroup) +* [`priv_deletePrivacyGroup`](../../reference/api/index.md#priv_deleteprivacygroup). !!! tip You can find and delete [EEA-compliant privacy groups](../../concepts/privacy/privacy-groups.md) using - [`priv_findPrivacyGroup`](../../../reference/api/index.md#priv_findprivacygroup) and - [`priv_deletePrivacyGroup`](../../../reference/api/index.md#priv_deleteprivacygroup). + [`priv_findPrivacyGroup`](../../reference/api/index.md#priv_findprivacygroup) and + [`priv_deletePrivacyGroup`](../../reference/api/index.md#priv_deleteprivacygroup). diff --git a/docs/private-networks/how-to/use-privacy/sign-pmts.md b/docs/private-networks/how-to/use-privacy/sign-pmts.md index b54748ff426..7417c8ee44d 100644 --- a/docs/private-networks/how-to/use-privacy/sign-pmts.md +++ b/docs/private-networks/how-to/use-privacy/sign-pmts.md @@ -2,11 +2,11 @@ description: How to sign a privacy marker transaction with Hyperledger Besu --- -# Signing privacy marker transactions +# Sign privacy marker transactions -You can sign privacy marker transactions with either a random key or a specified key. To sign +You can sign privacy marker transactions (PMTs) with either a random key or a specified key. To sign privacy marker transactions with a specified private key, use -[`--privacy-marker-transaction-signing-key-file`](../../../public-networks/reference/cli/options.md#privacy-marker-transaction-signing-key-file) +[`--privacy-marker-transaction-signing-key-file`](../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) when starting Hyperledger Besu. !!! note @@ -20,7 +20,7 @@ adequate funds. In [free gas networks](../configure/free-gas.md), to provide further anonymity by signing each privacy marker transaction with a different random key, exclude the -[`--privacy-marker-transaction-signing-key-file`](../../../public-networks/reference/cli/options.md#privacy-marker-transaction-signing-key-file) +[`--privacy-marker-transaction-signing-key-file`](../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) command line option when starting Besu. !!! caution "Using account permissioning and privacy" @@ -28,7 +28,7 @@ command line option when starting Besu. You can't use [account permissioning] with random key signing. If using account permissioning and privacy, a signing key must be specified using the - [`--privacy-marker-transaction-signing-key-file`](../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) + [`--privacy-marker-transaction-signing-key-file`](../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) command line option and the corresponding public key included in the accounts allowlist. !!! note diff --git a/docs/private-networks/reference/api/index.md b/docs/private-networks/reference/api/index.md index cc733080676..11a16b45d42 100644 --- a/docs/private-networks/reference/api/index.md +++ b/docs/private-networks/reference/api/index.md @@ -322,10 +322,10 @@ transaction data using `eea_sendRawTransaction`. For production systems requiring private transactions, use a network with a consensus mechanism supporting transaction finality to make sure the private state does not become inconsistent - with the chain. For example, [IBFT 2.0](../how-to/configure/consensus/ibft.md) - and [QBFT](../how-to/configure/consensus/qbft.md) provide the required finality. + with the chain. For example, [IBFT 2.0](../../how-to/configure/consensus/ibft.md) + and [QBFT](../../how-to/configure/consensus/qbft.md) provide the required finality. - Using private transactions with [pruning](../../public-networks/how-to/connect/sync-node.md) or + Using private transactions with [pruning](../../../public-networks/how-to/connect/sync-node.md) or [fast sync](../../../public-networks/reference/cli/options.md#sync-mode) is not supported. Besu doesn't implement diff --git a/docs/private-networks/reference/cli/options.md b/docs/private-networks/reference/cli/options.md index 86b93eeaf1f..beba98e4f2e 100644 --- a/docs/private-networks/reference/cli/options.md +++ b/docs/private-networks/reference/cli/options.md @@ -31,7 +31,7 @@ You can specify Besu options: For example, set `--miner-coinbase` using the `BESU_MINER_COINBASE` environment variable. -* In a [configuration file](../../how-to/configuration-file.md). +* In a [configuration file](../../../public-networks/how-to/configuration-file.md). If you specify an option in more than one place, the order of priority is command line, environment variable, configuration file. diff --git a/docs/private-networks/tutorials/clique.md b/docs/private-networks/tutorials/clique.md index a81df6cb94a..51df5dcfa0a 100644 --- a/docs/private-networks/tutorials/clique.md +++ b/docs/private-networks/tutorials/clique.md @@ -113,7 +113,7 @@ Copy the following genesis definition to a file called `cliqueGenesis.json` and !!! note - We recommend specifying the latest [milestone](../../reference/genesis-items.md#milestone-blocks) when creating + We recommend specifying the latest [milestone](../../public-neteworks/reference/genesis-items.md#milestone-blocks) when creating the genesis file for a private network. This ensures you are using the most up-to-date protocol and have access to the most recent opcodes. @@ -194,7 +194,7 @@ The command line specifies: [`--bootnodes`](../../public-networks/reference/cli/options.md#bootnodes) option. * The data directory for Node-2 using the [`--data-path`](../../public-networks/reference/cli/options.md#data-path) option. -* Other options as for [Node-1](#5-start-first-node-as-bootnode). +* Other options as for [Node-1](#4-start-the-first-node-as-the-bootnode). ### 6. Start Node-3 @@ -254,14 +254,14 @@ Use the [Clique API to add] Node-2 or Node-3 as a signer. !!! note To add Node-2 or Node-3 as a signer you need the - [node address as when specifying Node-1](#2-get-address-for-node-1) as the initial signer. + [node address as when specifying Node-1](#2-get-the-address-for-node-1) as the initial signer. Import accounts to MetaMask and send transactions, as described in the [Quickstart tutorial](quickstart.md#create-a-transaction-using-metamask). !!! info - Besu doesn't support [private key management](../../how-to/send-transactions.md). + Besu doesn't support [private key management](../../public-networks/how-to/send-transactions.md). ## Stop the nodes @@ -270,8 +270,8 @@ When finished using the private network, stop all nodes using ++ctrl+c++ in each !!!tip To restart the Clique network in the future, start from - [4. Start First Node as Bootnode](#4-start-first-node-as-bootnode). + [4. Start First Node as Bootnode](#4-start-the-first-node-as-the-bootnode). [Clique (proof of authority) consensus protocol]: ../how-to/configure/consensus/clique.md -[Clique API to add]: ../how-to/configure/consensus/clique.md#adding-and-removing-signers +[Clique API to add]: ../how-to/configure/consensus/clique.md#add-and-remove-signers diff --git a/docs/private-networks/tutorials/ethash.md b/docs/private-networks/tutorials/ethash.md index fa9676d2b3b..dab4721d83f 100644 --- a/docs/private-networks/tutorials/ethash.md +++ b/docs/private-networks/tutorials/ethash.md @@ -84,13 +84,13 @@ the `Private-Network` directory: !!! note - We recommend specifying the latest [milestone](../../reference/genesis-items.md#milestone-blocks) when creating + We recommend specifying the latest [milestone](../../public-networks/reference/genesis-items.md#milestone-blocks) when creating the genesis file for a private network. This ensures you are using the most up-to-date protocol and have access to the most recent opcodes. !!! warning - Do not use the accounts in `alloc` in the genesis file on Mainnet or any public network except + Don't use the accounts in `alloc` in the genesis file on Mainnet or any public network except for testing. The private keys display, which means the accounts are not secure. ### 3. Start the first node as a bootnode @@ -209,7 +209,7 @@ Import accounts to MetaMask and send transactions as described in the !!! info - Besu doesn't support [private key management](../../how-to/send-transactions.md). + Besu doesn't support [private key management](../../public-networks/how-to/send-transactions.md). Send transactions using `eth_sendRawTransaction` to [send ether or, deploy or invoke contracts](../how-to/send-transactions/index.md). diff --git a/docs/private-networks/tutorials/ibft/index.md b/docs/private-networks/tutorials/ibft/index.md index 100c81a6aeb..e3e62074a5a 100644 --- a/docs/private-networks/tutorials/ibft/index.md +++ b/docs/private-networks/tutorials/ibft/index.md @@ -105,7 +105,7 @@ in the `IBFT-Network` directory: !!! note - We recommend specifying the latest [milestone](../../../reference/genesis-items.md#milestone-blocks) + We recommend specifying the latest [milestone](../../../public-networks/reference/genesis-items.md#milestone-blocks) when creating the configuration file for a private network. This ensures you are using the most up-to-date protocol and have access to the most recent opcodes. @@ -300,7 +300,7 @@ The command line specifies: ### 10. Confirm the private network is working Start another terminal, use curl to call the JSON-RPC API -[`ibft_getvalidatorsbyblocknumber`](../../../public-networks/reference/api/index.md#ibft_getvalidatorsbyblocknumber) +[`ibft_getvalidatorsbyblocknumber`](../../reference/api/index.md#ibft_getvalidatorsbyblocknumber) method and confirm the network has four validators: ```bash @@ -349,7 +349,7 @@ Look at the logs to confirm Besu is producing blocks: ## Next steps -Use the [IBFT API](../../../public-networks/reference/api/index.md#ibft-20-methods) to remove or add validators. +Use the [IBFT API](../../reference/api/index.md#ibft-20-methods) to remove or add validators. !!! note @@ -365,7 +365,7 @@ Import accounts to MetaMask and send transactions as described in the !!! info - Besu doesn't support [private key management](../../../how-to/send-transactions.md). + Besu doesn't support [private key management](../../../public-networks/how-to/send-transactions.md). ## Stop the nodes diff --git a/docs/private-networks/tutorials/kubernetes/nat-manager.md b/docs/private-networks/tutorials/kubernetes/nat-manager.md index fa213c44a86..7c31f8cbf59 100644 --- a/docs/private-networks/tutorials/kubernetes/nat-manager.md +++ b/docs/private-networks/tutorials/kubernetes/nat-manager.md @@ -30,9 +30,9 @@ mode if automatic configuration fails. Follow 3 steps to configure Besu for automatic IP address and ports detection on Kubernetes: -1. [Create a load balancer](#1---create-a-load-balancer) -1. [Check if the load balancer is properly deployed](#2---check-if-the-load-balancer-is-properly-deployed) -1. [Deploy Besu](#3---deploy-besu) +1. [Create a load balancer](#1-create-a-load-balancer) +1. [Check if the load balancer is properly deployed](#2-check-if-the-load-balancer-is-properly-deployed) +1. [Deploy Besu](#3-deploy-besu) ### 1. Create a load balancer @@ -153,8 +153,8 @@ When steps 1 and 2 are completed, deploy Besu using the following YAML example: Automatic detection error messages do not prevent you to use Besu. - Try the fix indicated for each error or use [`--nat-method=KUBERNETES`](../../../how-to/connect/specify-nat.md#kubernetes) CLI option - and [set IP address and port manually](../../../how-to/connect/configure-ports.md). + Try the fix indicated for each error or use [`--nat-method=KUBERNETES`](../../../public-networks/how-to/connect/specify-nat.md#kubernetes) CLI option + and [set IP address and port manually](../../../public-networks/how-to/connect/configure-ports.md). Possible errors messages for Kubernetes automatic detection failure: @@ -207,7 +207,7 @@ Possible errors messages for Kubernetes automatic detection failure: - **Error message:** `Nat manager failed to configure itself automatically due to the following reason Ingress not found. NONE mode will be used` - **Cause:** Load balancer did not finish to recover an IP address. -- **Fix:** [Check that the load balancer is properly deployed](#check-that-the-load-balancer-is-properly-deployed) before launching Besu. +- **Fix:** [Check that the load balancer is properly deployed](#2-check-if-the-load-balancer-is-properly-deployed) before launching Besu. !!!example "Example error log" diff --git a/docs/private-networks/tutorials/permissioning/index.md b/docs/private-networks/tutorials/permissioning/index.md index 95b398e59e3..274193ee5fd 100644 --- a/docs/private-networks/tutorials/permissioning/index.md +++ b/docs/private-networks/tutorials/permissioning/index.md @@ -184,7 +184,7 @@ Copy the following permissions configuration to a file called `permissions_confi The permissions configuration file includes the first two accounts from the genesis file. -Use the [`perm_addNodesToAllowlist`](../../../public-networks/reference/api/index.md#perm_addnodestoallowlist) JSON-RPC API method to add permissioned nodes after starting the nodes. +Use the [`perm_addNodesToAllowlist`](../../reference/api/index.md#perm_addnodestoallowlist) JSON-RPC API method to add permissioned nodes after starting the nodes. ### 7. Start Node-1 @@ -204,8 +204,8 @@ Use the following command: The command line allows you to enable: -- Nodes and accounts permissions using [`--permissions-nodes-config-file-enabled`](../../../public-networks/reference/cli/options.md#permissions-nodes-config-file-enabled) - and [`--permissions-accounts-config-file-enabled`](../../../public-networks/reference/cli/options.md#permissions-accounts-config-file-enabled). +- Nodes and accounts permissions using [`--permissions-nodes-config-file-enabled`](../../reference/cli/options.md#permissions-nodes-config-file-enabled) + and [`--permissions-accounts-config-file-enabled`](../../reference/cli/options.md#permissions-accounts-config-file-enabled). - The JSON-RPC API using [`--rpc-http-enabled`](../../../public-networks/reference/cli/options.md#rpc-http-enabled). - The `ADMIN`, `ETH`, `NET`, `PERM`, and `IBFT` APIs using [`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api). @@ -301,7 +301,7 @@ the enode URL to update the permissions configuration file in the following step ### 11. Add enode URLs for nodes to permissions configuration file Start another terminal and use the -[`perm_addNodesToAllowlist`](../../../public-networks/reference/api/index.md#perm_addnodestoallowlist) JSON-RPC API +[`perm_addNodesToAllowlist`](../../reference/api/index.md#perm_addnodestoallowlist) JSON-RPC API method to add the nodes to the permissions configuration file for each node. Replace ``, ``, ``, and `` with the enode URL displayed when @@ -420,7 +420,7 @@ Import the first account from the genesis file into MetaMask and send transactio !!! info - Besu doesn't support [private key management](../../../how-to/send-transactions.md). + Besu doesn't support [private key management](../../../public-networks/how-to/send-transactions.md). ### Try sending a transaction from an account not in the accounts allowlist @@ -476,7 +476,7 @@ window. !!!tip - To restart the permissioned network in the future, start from [step 5](#5-start-node-1). + To restart the permissioned network in the future, start from [step 7](#7-start-node-1). [IBFT 2.0 proof of authority consensus protocol]: ../../how-to/configure/consensus/ibft.md diff --git a/docs/private-networks/tutorials/privacy/index.md b/docs/private-networks/tutorials/privacy/index.md index b1dcae5e21a..84398709986 100644 --- a/docs/private-networks/tutorials/privacy/index.md +++ b/docs/private-networks/tutorials/privacy/index.md @@ -344,10 +344,10 @@ In the `Node-1` directory, start Besu Node-1: The command line specifies privacy options: -* [`--privacy-enabled`](../../../public-networks/reference/cli/options.md#privacy-enabled) enables privacy -* [`--privacy-url`](../../../public-networks/reference/cli/options.md#privacy-url) specifies the Q2T server address +* [`--privacy-enabled`](../../reference/cli/options.md#privacy-enabled) enables privacy +* [`--privacy-url`](../../reference/cli/options.md#privacy-url) specifies the Q2T server address of the Tessera node (`Q2T` in `tessera.conf`) -* [`--privacy-public-key-file`](../../../public-networks/reference/cli/options.md#privacy-public-key-file) +* [`--privacy-public-key-file`](../../reference/cli/options.md#privacy-public-key-file) specifies the file containing Tessera node public key (created in [3. Generate Tessera Keys](#2-generate-tessera-keys)) * [`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) includes `EEA` and `PRIV` in @@ -358,7 +358,7 @@ The command line specifies privacy options: !!! note Use the - [`--privacy-marker-transaction-signing-key-file`](../../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) + [`--privacy-marker-transaction-signing-key-file`](../../reference/cli/options.md#privacy-marker-transaction-signing-key-file) command line option to sign [privacy marker transactions](../../concepts/privacy/private-transactions/processing.md) using a supplied key. The command line option is mandatory in privacy-enabled paid gas networks. @@ -390,8 +390,8 @@ The [`--bootnodes`](../../../public-networks/reference/cli/options.md#bootnodes) !!! note - When running Besu from the [Docker image](../../../get-started/install/run-docker-image.md), - [expose ports](../../../get-started/install/run-docker-image.md#expose-ports). + When running Besu from the [Docker image](../../get-started/install/run-docker-image.md), + [expose ports](../../get-started/install/run-docker-image.md#expose-ports). ## 7. Start Besu Node-3 diff --git a/docs/private-networks/tutorials/privacy/multi-tenancy.md b/docs/private-networks/tutorials/privacy/multi-tenancy.md index ab4ca8de1e7..a0037946bbe 100644 --- a/docs/private-networks/tutorials/privacy/multi-tenancy.md +++ b/docs/private-networks/tutorials/privacy/multi-tenancy.md @@ -45,7 +45,7 @@ IBFT-Network/ In the `Node-1` directory, [generate the private and public key pair]. The key pair, which must be in `.pem` format, belongs to the operator who uses the key pair to authenticate the -[tenant JWTs](#7-generate-the-tenant-jwts). +[tenant JWTs](#6-generate-the-tenant-jwts). !!! note @@ -157,22 +157,22 @@ The command line specifies privacy options: enables authentication for JSON-RPC APIs. * [`--rpc-http-authentication-jwt-public-key-file`](../../../public-networks/reference/cli/options.md#rpc-http-authentication-jwt-public-key-file) specifies the Operator's [public key file](#1-generate-a-private-and-public-key-pair). Used to - authenticate the [tenant JWTs](#7-generate-the-tenant-jwts). -* [`--privacy-enabled`](../../../public-networks/reference/cli/options.md#privacy-enabled) enables privacy. -* [`--privacy-url`](../../../public-networks/reference/cli/options.md#privacy-url) specifies the + authenticate the [tenant JWTs](#6-generate-the-tenant-jwts). +* [`--privacy-enabled`](../../reference/cli/options.md#privacy-enabled) enables privacy. +* [`--privacy-url`](../../reference/cli/options.md#privacy-url) specifies the [Quorum to Tessera (Q2T)] server address of the Tessera node (`Q2T` in `tessera.conf`). -* [`--privacy-multi-tenancy-enabled`](../../../public-networks/reference/cli/options.md#privacy-multi-tenancy-enabled) +* [`--privacy-multi-tenancy-enabled`](../../reference/cli/options.md#privacy-multi-tenancy-enabled) enables multi-tenancy. !!! note - [`--rpc-http-authentication-jwt-public-key-file`](../../../reference/cli/options.md#rpc-http-authentication-jwt-public-key-file) + [`--rpc-http-authentication-jwt-public-key-file`](../../../public-networks/reference/cli/options.md#rpc-http-authentication-jwt-public-key-file) is only required when using [JWT public key authentication]. If using [username and password authentication], use - [`--rpc-http-authentication-credentials-file`](../../../reference/cli/options.md#rpc-http-authentication-credentials-file) + [`--rpc-http-authentication-credentials-file`](../../../public-networks/reference/cli/options.md#rpc-http-authentication-credentials-file) instead. -[Start the remaining Besu nodes](index.md#7-start-besu-node-2). +[Start the remaining Besu nodes](index.md#6-start-besu-node-2). ## 6. Generate the tenant JWTs diff --git a/docs/private-networks/tutorials/privacy/web3js-quorum.md b/docs/private-networks/tutorials/privacy/web3js-quorum.md index 03901a311b6..c8265b55b9e 100644 --- a/docs/private-networks/tutorials/privacy/web3js-quorum.md +++ b/docs/private-networks/tutorials/privacy/web3js-quorum.md @@ -58,7 +58,7 @@ To use the examples provided in the web3js-quorum library with !!! note If you receive a `Method not enabled` error, ensure you enabled the appropriate APIs - using the [`--rpc-http-api`](../../../reference/cli/options.md#rpc-http-api) + using the [`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) 1. Copy the contract address from the private transaction receipt and set the `CONTRACT_ADDRESS` environment variable: diff --git a/docs/private-networks/tutorials/qbft.md b/docs/private-networks/tutorials/qbft.md index 6ab1f94e91a..acbae961b99 100644 --- a/docs/private-networks/tutorials/qbft.md +++ b/docs/private-networks/tutorials/qbft.md @@ -109,7 +109,7 @@ in the `QBFT-Network` directory: !!! note - We recommend specifying the latest [milestone](../../reference/genesis-items.md#milestone-blocks) + We recommend specifying the latest [milestone](../../public-networks/reference/genesis-items.md#milestone-blocks) when creating the genesis file for a private network. This ensures you are using the most up-to-date protocol and have access to the most recent opcodes. @@ -304,7 +304,7 @@ The command line specifies: ### 10. Confirm the private network is working Start another terminal, use curl to call the JSON-RPC API -[`qbft_getvalidatorsbyblocknumber`](../../public-networks/reference/api/index.md#qbft_getvalidatorsbyblocknumber) +[`qbft_getvalidatorsbyblocknumber`](../reference/api/index.md#qbft_getvalidatorsbyblocknumber) method and confirm the network has four validators: ```bash @@ -353,7 +353,7 @@ Look at the logs to confirm Besu is producing blocks: ## Next steps -Use the [QBFT API](../../public-networks/reference/api/index.md#qbft-methods) to remove or add validators, or import accounts +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). @@ -363,7 +363,7 @@ to MetaMask and send transactions as described in the [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](../../how-to/send-transactions.md). + 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]. @@ -375,7 +375,7 @@ When finished using the private network, stop all nodes using ++ctrl+c++ in each !!!tip To restart the QBFT network in the future, start from - [6. Start First Node as Bootnode](#6-start-the-first-node-as-the-bootnode). + [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 diff --git a/docs/private-networks/tutorials/quickstart.md b/docs/private-networks/tutorials/quickstart.md index 3def137571a..4c0b09ee368 100644 --- a/docs/private-networks/tutorials/quickstart.md +++ b/docs/private-networks/tutorials/quickstart.md @@ -98,7 +98,7 @@ When execution is successfully finished, the process lists the available service [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](../../public-networks/how-to/monitor/elastic-stack.md). + [Read more about log management](../how-to/monitor/elastic-stack.md). To display the list of endpoints again, run: @@ -249,7 +249,7 @@ You can use [MetaMask](https://metamask.io/) to send a transaction on your priva !!! note - Besu doesn't incorporate [account management](../../how-to/send-transactions.md). + 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 From c1f1ae6ee584c0a9144fec1678d799f99c3fb22c Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Sun, 24 Jul 2022 17:47:19 -0700 Subject: [PATCH 22/31] fix private network links + md Signed-off-by: Alexandra Tran --- .../how-to/configure/consensus/qbft.md | 4 +- .../send-transactions/private-transactions.md | 2 +- .../how-to/use-permissioning/local.md | 2 +- .../private-networks/reference/api/objects.md | 1 - .../private-networks/reference/cli/options.md | 6 +-- docs/private-networks/tutorials/clique.md | 2 +- .../concepts/data-storage-formats.md | 6 +-- docs/public-networks/concepts/node-keys.md | 4 +- .../public-networks/get-started/start-node.md | 8 ++-- .../how-to/configuration-file.md | 4 +- .../how-to/connect/configure-ports.md | 2 +- .../how-to/connect/static-nodes.md | 8 ++-- .../how-to/connect/sync-node.md | 5 +- docs/public-networks/reference/cli/options.md | 17 ++++--- mkdocs.navigation.yml | 46 +++++++++---------- 15 files changed, 58 insertions(+), 59 deletions(-) diff --git a/docs/private-networks/how-to/configure/consensus/qbft.md b/docs/private-networks/how-to/configure/consensus/qbft.md index a65a30d704e..965102f0e42 100644 --- a/docs/private-networks/how-to/configure/consensus/qbft.md +++ b/docs/private-networks/how-to/configure/consensus/qbft.md @@ -24,7 +24,7 @@ You can [create a private network using QBFT](../../../tutorials/qbft.md). !!! tip You can use a plugin to securely store a validator's key using the - [`--security-module`](../../../../reference/cli/options.md#security-module) option. + [`--security-module`](../../../../public-networks/reference/cli/options.md#security-module) option. ## Genesis file @@ -270,7 +270,7 @@ To tune the block timeout for your network deployment: !!! tip - View [`TRACE` logs](../../../../reference/api/index.md#admin_changeloglevel) to see round change + View [`TRACE` logs](../../../../public-networks/reference/api/index.md#admin_changeloglevel) to see round change log messages. Use a [transition](#transitions) to update the `blockperiodseconds` in an existing network. diff --git a/docs/private-networks/how-to/send-transactions/private-transactions.md b/docs/private-networks/how-to/send-transactions/private-transactions.md index 5de03231b5c..0f6801c75a5 100644 --- a/docs/private-networks/how-to/send-transactions/private-transactions.md +++ b/docs/private-networks/how-to/send-transactions/private-transactions.md @@ -90,7 +90,7 @@ and submitting the PMT yourself instead of having it signed by the Besu node, gi } ``` - Send the enclave key in the `data` field, and the [privacy precompile address](../../../reference/api/index.md#priv_getprivacyprecompileaddress) in the `to` field of `eth_sendRawTransaction`: + Send the enclave key in the `data` field, and the [privacy precompile address](../../reference/api/index.md#priv_getprivacyprecompileaddress) in the `to` field of `eth_sendRawTransaction`: ```json { diff --git a/docs/private-networks/how-to/use-permissioning/local.md b/docs/private-networks/how-to/use-permissioning/local.md index bd4b168c521..0df2bed4117 100644 --- a/docs/private-networks/how-to/use-permissioning/local.md +++ b/docs/private-networks/how-to/use-permissioning/local.md @@ -227,6 +227,6 @@ options. ``` -[specify a permissions configuration file with Docker]: ../../../global/get-started/install/run-docker-image.md#permissions-configuration-file +[specify a permissions configuration file with Docker]: ../../get-started/install/run-docker-image.md#permissions-configuration-file [support domain names]: ../../../public-networks/concepts/node-keys.md#domain-name-support [onchain permissioning]: ../../concepts/permissioning/onchain.md diff --git a/docs/private-networks/reference/api/objects.md b/docs/private-networks/reference/api/objects.md index 0899a004330..ed99a79d4f8 100644 --- a/docs/private-networks/reference/api/objects.md +++ b/docs/private-networks/reference/api/objects.md @@ -53,4 +53,3 @@ Returned by [`priv_getTransactionReceipt`](index.md#priv_gettransactionreceipt). | **privateFrom** | Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) public key of the sender. | | **privateFor** or **privacyGroupId** | Array or Data, 32 bytes | [Tessera](https://docs.tessera.consensys.net/) public keys or privacy group ID of the recipients. | | **logsBloom** | Data, 256 bytes | Bloom filter for light clients to quickly retrieve related logs. | - diff --git a/docs/private-networks/reference/cli/options.md b/docs/private-networks/reference/cli/options.md index beba98e4f2e..0e0a5b0a593 100644 --- a/docs/private-networks/reference/cli/options.md +++ b/docs/private-networks/reference/cli/options.md @@ -25,9 +25,9 @@ You can specify Besu options: * As an environment variable. For each command line option, the equivalent environment variable is: - * Uppercase. - * `_` replaces `-`. - * Has a `BESU_` prefix. + * Uppercase. + * `_` replaces `-`. + * Has a `BESU_` prefix. For example, set `--miner-coinbase` using the `BESU_MINER_COINBASE` environment variable. diff --git a/docs/private-networks/tutorials/clique.md b/docs/private-networks/tutorials/clique.md index 51df5dcfa0a..342b8bf630d 100644 --- a/docs/private-networks/tutorials/clique.md +++ b/docs/private-networks/tutorials/clique.md @@ -113,7 +113,7 @@ Copy the following genesis definition to a file called `cliqueGenesis.json` and !!! note - We recommend specifying the latest [milestone](../../public-neteworks/reference/genesis-items.md#milestone-blocks) when creating + We recommend specifying the latest [milestone](../../public-networks/reference/genesis-items.md#milestone-blocks) when creating the genesis file for a private network. This ensures you are using the most up-to-date protocol and have access to the most recent opcodes. diff --git a/docs/public-networks/concepts/data-storage-formats.md b/docs/public-networks/concepts/data-storage-formats.md index 0e3f9cf44ad..cc783389952 100644 --- a/docs/public-networks/concepts/data-storage-formats.md +++ b/docs/public-networks/concepts/data-storage-formats.md @@ -24,7 +24,7 @@ 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](../../global/concepts/Pruning.md) orphaned nodes and old branches. +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). @@ -36,9 +36,9 @@ To run a node with Bonsai Tries data storage format, use the command line option ### Storage requirements Forest mode uses significantly more memory than Bonsai. -With an [archive node](Node-Types.md#run-an-archive-node), forest mode uses an estimated 12 TB of +With an [archive node](../how-to/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](Node-Types.md#run-a-full-node), forest mode uses an estimated 7 TB of storage, +With a [full node](../how-to/connect/sync-node.md#run-a-full-node), forest mode uses an estimated 7 TB of storage, while Bonsai uses an estimated 790 GB of storage. ### Accessing data diff --git a/docs/public-networks/concepts/node-keys.md b/docs/public-networks/concepts/node-keys.md index 7546f182710..4c867e19c48 100644 --- a/docs/public-networks/concepts/node-keys.md +++ b/docs/public-networks/concepts/node-keys.md @@ -37,7 +37,7 @@ bytes of the hash as the node address. It is also displayed in the logs after st 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. -## Specifying a custom node private key file +## 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. @@ -101,7 +101,7 @@ defined by [`--nat-method`](../how-to/connect/specify-nat.md). !!! warning Enode URL domain name support is an experimental feature that you can use in private - [permissioned networks](../private-networks/concepts/permissioning/index.md) only. + [permissioned networks](../../private-networks/concepts/permissioning/index.md) only. To use domain names in enode URLs: diff --git a/docs/public-networks/get-started/start-node.md b/docs/public-networks/get-started/start-node.md index 1d6c005a92e..dd2e5e096d5 100644 --- a/docs/public-networks/get-started/start-node.md +++ b/docs/public-networks/get-started/start-node.md @@ -119,13 +119,13 @@ data-path="/tmp/tmpdata-path" 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-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 `"*"` + * 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 + [`--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 Ropsten testnet diff --git a/docs/public-networks/how-to/configuration-file.md b/docs/public-networks/how-to/configuration-file.md index 7af1dcc2240..e468f0c0265 100644 --- a/docs/public-networks/how-to/configuration-file.md +++ b/docs/public-networks/how-to/configuration-file.md @@ -11,7 +11,7 @@ use the [`--config-file`](../reference/cli/options.md#config-file) option. To override an option specified in the configuration file, either specify the same option on the command line or as an -[environment variable](../reference/cli/options.md#specifying-options). For options +[environment variable](../reference/cli/options.md#specify-options). For options specified in more than one place, the order of precedence is command line, environment variable, configuration file. @@ -28,7 +28,7 @@ differences between the command line and the TOML file format are: !!!tip - The [command line reference](../../reference/cli/options.md) includes configuration file + The [command line reference](../reference/cli/options.md) includes configuration file examples for each option. !!!example "Sample TOML configuration file" diff --git a/docs/public-networks/how-to/connect/configure-ports.md b/docs/public-networks/how-to/connect/configure-ports.md index a4c9a37e310..bbc4b50e01a 100644 --- a/docs/public-networks/how-to/connect/configure-ports.md +++ b/docs/public-networks/how-to/connect/configure-ports.md @@ -52,7 +52,7 @@ and `8546`. ## Metrics To enable -[Prometheus to access Besu](../../../global/how-to/monitor/metrics.md#monitor-node-performance-using-prometheus), open +[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 diff --git a/docs/public-networks/how-to/connect/static-nodes.md b/docs/public-networks/how-to/connect/static-nodes.md index 3ca1b160050..8284d9e6faf 100644 --- a/docs/public-networks/how-to/connect/static-nodes.md +++ b/docs/public-networks/how-to/connect/static-nodes.md @@ -5,8 +5,8 @@ description: Configuring static nodes # Static nodes Static nodes are a configured set of trusted nodes. Static nodes are exempt from -[maximum peer](manage-peers.md#limiting-peers) and -[remote connection](manage-peers.md#limiting-remote-connections) limits. +[maximum peer](manage-peers.md#limit-peers) and +[remote connection](manage-peers.md#limit-remote-connections) limits. Besu attempts to maintain connections with static nodes by periodically initiating a connection to any unconnected static node. @@ -18,7 +18,7 @@ any unconnected static node. example, you run multiple nodes on Mainnet (discovery using bootnodes), but want to ensure your nodes are always connected (using static nodes). - To find peers, configure one or more [bootnodes](../../private-networks/how-to/connect/bootnodes.md). + To find peers, configure one or more [bootnodes](../../../private-networks/how-to/connect/bootnodes.md). To configure a specific set of peer connections, use static nodes. ## Configure static nodes @@ -46,7 +46,7 @@ To update the list of static peers at run time, use the 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). + from connecting, use [Permissioning](../../../private-networks/concepts/permissioning/index.md). !!! tip diff --git a/docs/public-networks/how-to/connect/sync-node.md b/docs/public-networks/how-to/connect/sync-node.md index 5c2c43ba724..9f500e38777 100644 --- a/docs/public-networks/how-to/connect/sync-node.md +++ b/docs/public-networks/how-to/connect/sync-node.md @@ -15,7 +15,8 @@ Archive nodes have all of this and they also store the intermediary state of eve contract for every block since the genesis block. An archive node can do everything a full node does, and it can access historical state data. -For Besu on Mainnet, archive nodes [require more disk space](Data-Storage-Formats.md#storage-requirements) than full nodes. +For Besu on Mainnet, archive nodes [require more disk space](../../concepts/data-storage-formats.md#storage-requirements) +than full nodes. !!! note @@ -47,7 +48,7 @@ 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](../../../global/how-to/monitor/metrics.md#metrics-list) to monitor fast sync. +[metrics](../monitor/metrics.md#metrics-list) to monitor fast sync. !!! warning diff --git a/docs/public-networks/reference/cli/options.md b/docs/public-networks/reference/cli/options.md index 9458b735e9d..3d850b8f248 100644 --- a/docs/public-networks/reference/cli/options.md +++ b/docs/public-networks/reference/cli/options.md @@ -1410,9 +1410,9 @@ using the [`--miner-enabled`](#miner-enabled) option or the !!!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. + [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` @@ -1972,17 +1972,17 @@ The minimum number of recent blocks to keep the entire world state for. The defa pruning-enabled=true ``` -Enables [pruning](../../../global/concepts/Pruning.md) to reduce storage required for the world state. +Enables [pruning](../../concepts/data-storage-formats.md) to reduce storage required for the world state. The default is `false`. !!! important - Using pruning with [private transactions](../../private-networks/concepts/privacy/index.md) isn't + Using pruning with [private transactions](../../../private-networks/concepts/privacy/index.md) isn't supported. -!!! Important +!!! important - Pruning is being deprecated for [Bonsai Tries](../../public-networks/concepts/data-storage-formats.md#bonsai-tries) + Pruning is being deprecated for [Bonsai Tries](../../concepts/data-storage-formats.md#bonsai-tries) and is currently not being updated. ### `random-peer-priority-enabled` @@ -3073,7 +3073,7 @@ The port (TCP) on which WebSocket JSON-RPC listens. The default is `8546`. You m security-module="security_module" ``` -Name of the security module [plugin] to use. For example, a Hardware Security Module (HSM) or V3 filestore +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 @@ -3369,4 +3369,3 @@ Prints version information and exit. [push gateway integration]: ../../how-to/monitor/metrics.md#running-prometheus-with-besu-in-push-mode [JWT provider's public key file]: ../../how-to/use-besu-api/authenticate.md#jwt-public-key-authentication -[plugin]: ../../../global/reference/Plugin-API-Interfaces.md diff --git a/mkdocs.navigation.yml b/mkdocs.navigation.yml index 9596c9bd3e0..0e0cb6de31d 100644 --- a/mkdocs.navigation.yml +++ b/mkdocs.navigation.yml @@ -11,18 +11,18 @@ INHERIT: mkdocs.extra.yml # DO NOT MODIFY THIS LINE nav: - Public networks: - - Index: public-networks/index.md + - public-networks/index.md - Get started: - System requirements: public-networks/get-started/system-requirements.md - Install Besu: - - Index: public-networks/get-started/install/index.md + - public-networks/get-started/install/index.md - Run Besu from Docker image: public-networks/get-started/install/run-docker-image.md - Install binary distribution: public-networks/get-started/install/binary-distribution.md - Start Besu: public-networks/get-started/start-node.md - How to: - Prepare for The Merge: public-networks/how-to/prepare-for-the-merge.md - Use the Besu API: - - Index: public-networks/how-to/use-besu-api/index.md + - public-networks/how-to/use-besu-api/index.md - Use JSON-RPC over HTTP, WS, and IPC: public-networks/how-to/use-besu-api/json-rpc.md - Use RPC Pub/Sub over WS: public-networks/how-to/use-besu-api/rpc-pubsub.md - Use GraphQL over HTTP: public-networks/how-to/use-besu-api/graphql.md @@ -37,7 +37,7 @@ nav: - Manage peers: public-networks/how-to/connect/manage-peers.md - Specify NAT method: public-networks/how-to/connect/specify-nat.md - Monitor nodes: - - Index: public-networks/how-to/monitor/index.md + - public-networks/how-to/monitor/index.md - Use metrics: public-networks/how-to/monitor/metrics.md - Configure logging: public-networks/how-to/monitor/logging.md - Use a configuration file: public-networks/how-to/configuration-file.md @@ -70,10 +70,10 @@ nav: - Options: public-networks/reference/cli/options.md - Subcommands: public-networks/reference/cli/subcommands.md - Besu API: - - Index: public-networks/reference/api/index.md + - public-networks/reference/api/index.md - Objects: public-networks/reference/api/objects.md - Engine API: - - Index: public-networks/reference/engine-api/index.md + - public-networks/reference/engine-api/index.md - Objects: public-networks/reference/engine-api/objects.md - Genesis file items: public-networks/reference/genesis-items.md - EVM tool options: public-networks/reference/evm-tool.md @@ -81,19 +81,19 @@ nav: - Projects using Besu: public-networks/reference/projects-using-besu.md - Security disclosure policy: public-networks/reference/disclosure.md - Private networks: - - Index: private-networks/index.md + - private-networks/index.md - Get started: - System requirements: private-networks/get-started/system-requirements.md - Install Besu: - - Index: private-networks/get-started/install/index.md + - private-networks/get-started/install/index.md - Run Besu from Docker image: private-networks/get-started/install/run-docker-image.md - Install binary distribution: private-networks/get-started/install/binary-distribution.md - Start Besu: private-networks/get-started/start-node.md - How to: - - Index: private-networks/how-to/index.md + - private-networks/how-to/index.md - Configure: - Consensus: - - Index: private-networks/how-to/configure/consensus/index.md + - private-networks/how-to/configure/consensus/index.md - QBFT: private-networks/how-to/configure/consensus/qbft.md - IBFT: private-networks/how-to/configure/consensus/ibft.md - Clique: private-networks/how-to/configure/consensus/clique.md @@ -108,12 +108,12 @@ nav: - Block proposal permissioning: private-networks/how-to/configure/block-proposal-permissioning.md - Alternative elliptic curves: private-networks/how-to/configure/curves.md - Create and send transactions: - - Index: private-networks/how-to/send-transactions/index.md + - private-networks/how-to/send-transactions/index.md - Create and send private transactions: private-networks/how-to/send-transactions/private-transactions.md - Send concurrent private transactions: private-networks/how-to/send-transactions/concurrent-private-transactions.md - Include revert reason: private-networks/how-to/send-transactions/revert-reason.md - Monitor nodes: - - Index: private-networks/how-to/monitor/index.md + - private-networks/how-to/monitor/index.md - Use Elastic Stack: private-networks/how-to/monitor/elastic-stack.md - Use Quorum Hibernate: private-networks/how-to/monitor/quorum-hibernate.md - Use Splunk: private-networks/how-to/monitor/splunk.md @@ -140,19 +140,19 @@ nav: - Backup and restore: private-networks/how-to/backup.md - Upgrade: private-networks/how-to/upgrade.md - Concepts: - - Index: private-networks/concepts/index.md + - private-networks/concepts/index.md - Proof of authority consensus: private-networks/concepts/poa.md - Privacy: - - Index: private-networks/concepts/privacy/index.md + - private-networks/concepts/privacy/index.md - Private transactions: - - Index: private-networks/concepts/privacy/private-transactions/index.md + - private-networks/concepts/privacy/private-transactions/index.md - Processing private transactions: private-networks/concepts/privacy/private-transactions/processing.md - Privacy groups: private-networks/concepts/privacy/privacy-groups.md - Flexible privacy groups: private-networks/concepts/privacy/flexible-privacy.md - Multi-tenancy: private-networks/concepts/privacy/multi-tenancy.md - Privacy plugin: private-networks/concepts/privacy/plugin.md - Permissioning: - - Index: private-networks/concepts/permissioning/index.md + - private-networks/concepts/permissioning/index.md - Onchain permissioning: private-networks/concepts/permissioning/onchain.md - Permissioning plugin: private-networks/concepts/permissioning/plugin.md - Public key infrastructure: private-networks/concepts/pki.md @@ -160,25 +160,25 @@ nav: - Quorum Developer Quickstart: private-networks/tutorials/quickstart.md - Create a QBFT network: private-networks/tutorials/qbft.md - Create an IBFT 2.0 network: - - Index: private-networks/tutorials/ibft/index.md + - private-networks/tutorials/ibft/index.md - Add and remove IBFT 2.0 validators: private-networks/tutorials/ibft/validators.md - Create a Clique network: private-networks/tutorials/clique.md - Create an Ethash network: private-networks/tutorials/ethash.md - Create a privacy-enabled network: - - Index: private-networks/tutorials/privacy/index.md + - private-networks/tutorials/privacy/index.md - Create a privacy-enabled network using the Quickstart: private-networks/tutorials/privacy/quickstart.md - Configure a multi-tenant network: private-networks/tutorials/privacy/multi-tenancy.md - Use the web3js-quorum multi-node example: private-networks/tutorials/privacy/web3js-quorum.md - Create a permissioned network: - - Index: private-networks/tutorials/permissioning/index.md + - private-networks/tutorials/permissioning/index.md - Get started with onchain permissioning: private-networks/tutorials/permissioning/onchain.md - Upgrade permissioning contracts: private-networks/tutorials/permissioning/upgrade-contracts.md - Deploy a smart contract: - - Index: private-networks/tutorials/contracts/index.md + - private-networks/tutorials/contracts/index.md - Transfer account funds: private-networks/tutorials/contracts/transfer-funds.md - Interact with a deployed contract: private-networks/tutorials/contracts/interact.md - Deploy using Kubernetes: - - Index: private-networks/tutorials/kubernetes/index.md + - private-networks/tutorials/kubernetes/index.md - Local playground: private-networks/tutorials/kubernetes/playground.md - Create a cluster: private-networks/tutorials/kubernetes/cluster.md - Deploy charts: private-networks/tutorials/kubernetes/charts.md @@ -188,11 +188,11 @@ nav: - Configure Kubernetes mode in NAT manager: private-networks/tutorials/kubernetes/nat-manager.md - Deploy using Microsoft Azure: private-networks/tutorials/azure.md - Reference: - - Index: private-networks/reference/index.md + - private-networks/reference/index.md - Besu command line: - Private network options: private-networks/reference/cli/options.md - Private network subcommands: private-networks/reference/cli/subcommands.md - Besu API: - - Index: private-networks/reference/api/index.md + - private-networks/reference/api/index.md - Private network API objects: private-networks/reference/api/objects.md - Accounts for testing: private-networks/reference/accounts-for-testing.md From 214feaf7b14a2744083a6bcc16e06eecbdfd9aeb Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Mon, 25 Jul 2022 13:02:18 -0700 Subject: [PATCH 23/31] update headings Signed-off-by: Alexandra Tran --- .../concepts/permissioning/index.md | 2 +- docs/private-networks/concepts/poa.md | 2 +- .../privacy/private-transactions/processing.md | 2 +- .../get-started/system-requirements.md | 2 +- docs/private-networks/how-to/backup.md | 4 ++-- .../how-to/configure/consensus/clique.md | 2 +- .../how-to/configure/consensus/ibft.md | 2 +- .../how-to/configure/consensus/qbft.md | 2 +- .../private-networks/how-to/configure/contracts.md | 2 +- docs/private-networks/how-to/configure/curves.md | 2 +- docs/private-networks/how-to/configure/free-gas.md | 2 +- .../how-to/configure/validators.md | 2 +- docs/private-networks/how-to/deploy/ansible.md | 4 ++-- docs/private-networks/how-to/deploy/cloud.md | 2 +- docs/private-networks/how-to/deploy/ethstats.md | 8 ++++---- docs/private-networks/how-to/deploy/kubernetes.md | 2 +- .../how-to/monitor/elastic-stack.md | 2 +- .../how-to/monitor/opentelemetry.md | 2 +- .../how-to/monitor/quorum-hibernate.md | 2 +- docs/private-networks/how-to/monitor/splunk.md | 2 +- .../how-to/use-permissioning/local.md | 4 ++-- .../use-privacy/access-private-transactions.md | 6 +++--- .../how-to/use-privacy/besu-extended.md | 12 ++++++------ .../how-to/use-privacy/eea-compliant.md | 8 ++++---- .../how-to/use-privacy/flexible.md | 14 +++++++------- .../how-to/use-privacy/goquorum-compatible.md | 2 +- .../use-privacy/performance-best-practices.md | 2 +- .../private-networks/how-to/use-privacy/tessera.md | 1 - .../how-to/use-privacy/web3js-quorum.md | 4 ++-- docs/private-networks/tutorials/azure.md | 4 ++-- docs/private-networks/tutorials/clique.md | 2 +- docs/private-networks/tutorials/contracts/index.md | 10 +++++----- .../tutorials/contracts/interact.md | 2 +- .../tutorials/contracts/transfer-funds.md | 6 +++--- docs/private-networks/tutorials/ethash.md | 2 +- docs/private-networks/tutorials/ibft/index.md | 2 +- .../tutorials/kubernetes/charts.md | 4 ++++ .../private-networks/tutorials/kubernetes/index.md | 6 +++--- .../tutorials/kubernetes/maintenance.md | 4 ++++ .../tutorials/kubernetes/playground.md | 4 ++-- .../tutorials/kubernetes/production.md | 4 ++++ .../tutorials/kubernetes/quorum-explorer.md | 6 +++++- .../tutorials/permissioning/upgrade-contracts.md | 4 ++-- docs/private-networks/tutorials/qbft.md | 2 +- .../concepts/transactions/validation.md | 2 +- .../get-started/system-requirements.md | 2 +- .../public-networks/how-to/connect/static-nodes.md | 2 +- .../how-to/develop/client-libraries.md | 2 +- docs/public-networks/how-to/develop/truffle.md | 2 +- docs/public-networks/how-to/monitor/index.md | 2 +- docs/public-networks/how-to/monitor/logging.md | 2 +- docs/public-networks/how-to/monitor/metrics.md | 14 +++++++------- .../how-to/troubleshoot/evm-tool.md | 8 ++++---- .../how-to/troubleshoot/java-flight-recorder.md | 4 ++-- .../how-to/use-besu-api/authenticate.md | 4 ++-- .../public-networks/how-to/use-besu-api/graphql.md | 2 +- .../how-to/use-besu-api/json-rpc.md | 2 +- .../how-to/use-besu-api/rpc-pubsub.md | 8 ++++---- docs/public-networks/how-to/use-pow/mining.md | 2 +- mkdocs.navigation.yml | 2 +- 60 files changed, 120 insertions(+), 105 deletions(-) diff --git a/docs/private-networks/concepts/permissioning/index.md b/docs/private-networks/concepts/permissioning/index.md index 0e21d7c397b..2c3a67baa6f 100644 --- a/docs/private-networks/concepts/permissioning/index.md +++ b/docs/private-networks/concepts/permissioning/index.md @@ -35,7 +35,7 @@ Use account permissioning to: ![Account Permissioning](../../../images/enterprise-ethereum-account-permissioning.png) -## Specifying permissioning +## Specify permissioning You can specify permissioning [locally](#local) or [onchain](#onchain). diff --git a/docs/private-networks/concepts/poa.md b/docs/private-networks/concepts/poa.md index 0693c0dc099..3f41017de26 100644 --- a/docs/private-networks/concepts/poa.md +++ b/docs/private-networks/concepts/poa.md @@ -2,7 +2,7 @@ description: Besu proof of authority consensus protocols comparison --- -# Comparing proof of authority consensus protocols +# Proof of authority consensus Besu implements the QBFT, IBFT 2.0, and Clique proof of authority (PoA) [consensus protocols](../how-to/configure/consensus/index.md). PoA consensus protocols work when participants know each other and there is a level of trust diff --git a/docs/private-networks/concepts/privacy/private-transactions/processing.md b/docs/private-networks/concepts/privacy/private-transactions/processing.md index 0388d2714e6..74871133edf 100644 --- a/docs/private-networks/concepts/privacy/private-transactions/processing.md +++ b/docs/private-networks/concepts/privacy/private-transactions/processing.md @@ -2,7 +2,7 @@ description: Private transaction processing --- -# Processing private transactions +# Private transaction processing !!! warning diff --git a/docs/private-networks/get-started/system-requirements.md b/docs/private-networks/get-started/system-requirements.md index b07f7af2acc..02586df3f08 100644 --- a/docs/private-networks/get-started/system-requirements.md +++ b/docs/private-networks/get-started/system-requirements.md @@ -3,7 +3,7 @@ title: Hyperledger Besu system requirements description: System requirements to sync and run Besu --- -# System requirements for private networks +# System requirements Private network system requirements depend on many factors, including: diff --git a/docs/private-networks/how-to/backup.md b/docs/private-networks/how-to/backup.md index d937ceb040e..ba6f2f6da1b 100644 --- a/docs/private-networks/how-to/backup.md +++ b/docs/private-networks/how-to/backup.md @@ -2,7 +2,7 @@ description: Backing up and restoring Besu --- -# Backups +# Backup and restore Besu In a decentralized blockchain, data replicates between nodes so it's not lost. But backing up configuration and data ensures a smoother recovery from corrupted data or other failures. @@ -46,7 +46,7 @@ If log messages signify a corrupt database, the cleanest way to recover is: 1. Restore the data from a [previous backup](#data-backups). 1. Restart the node. -## Finding peers after restarting +## Find peers after restarting The process for finding peers after restarting is the same as for [finding peers after upgrading and restarting]. diff --git a/docs/private-networks/how-to/configure/consensus/clique.md b/docs/private-networks/how-to/configure/consensus/clique.md index c8a229858e3..a1d763ac1e5 100644 --- a/docs/private-networks/how-to/configure/consensus/clique.md +++ b/docs/private-networks/how-to/configure/consensus/clique.md @@ -4,7 +4,7 @@ path: blob/master/config/src/main/resources/ source: rinkeby.json --- -# Clique +# Configure Clique consensus Besu implements the [Clique](https://eips.ethereum.org/EIPS/eip-225) proof of authority (PoA) [consensus protocol](index.md). The Rinkeby and Goerli testnets uses Clique and private networks can also use Clique. diff --git a/docs/private-networks/how-to/configure/consensus/ibft.md b/docs/private-networks/how-to/configure/consensus/ibft.md index b3fb51e016b..22ec29fd54a 100644 --- a/docs/private-networks/how-to/configure/consensus/ibft.md +++ b/docs/private-networks/how-to/configure/consensus/ibft.md @@ -2,7 +2,7 @@ description: Hyperledger Besu IBFT 2.0 proof of authority (PoA) consensus protocol implementation --- -# IBFT 2.0 +# Configure IBFT 2.0 consensus Besu implements the IBFT 2.0 proof of authority (PoA) [consensus protocol](index.md). IBFT 2.0 is supported for existing private networks, but [QBFT](qbft.md) is the recommended enterprise-grade diff --git a/docs/private-networks/how-to/configure/consensus/qbft.md b/docs/private-networks/how-to/configure/consensus/qbft.md index 965102f0e42..4eea296a0e2 100644 --- a/docs/private-networks/how-to/configure/consensus/qbft.md +++ b/docs/private-networks/how-to/configure/consensus/qbft.md @@ -2,7 +2,7 @@ description: Hyperledger Besu QBFT proof of authority (PoA) consensus protocol implementation --- -# QBFT +# Configure QBFT consensus Hyperledger Besu implements the QBFT proof of authority (PoA) [consensus protocol](index.md). QBFT is the recommended enterprise-grade consensus protocol for private networks. diff --git a/docs/private-networks/how-to/configure/contracts.md b/docs/private-networks/how-to/configure/contracts.md index 4f70a8e1e32..20badad55df 100644 --- a/docs/private-networks/how-to/configure/contracts.md +++ b/docs/private-networks/how-to/configure/contracts.md @@ -2,7 +2,7 @@ description: Pre-deploying contracts in the genesis file --- -# Pre-deploying contracts in the genesis file +# Pre-deploy contracts in the genesis file To pre-deploy contracts when starting Besu, specify the contract code in the [genesis file](../../../public-networks/concepts/genesis-file.md). diff --git a/docs/private-networks/how-to/configure/curves.md b/docs/private-networks/how-to/configure/curves.md index 65c5a8a2cba..5545eb2c004 100644 --- a/docs/private-networks/how-to/configure/curves.md +++ b/docs/private-networks/how-to/configure/curves.md @@ -2,7 +2,7 @@ description: Using alternative elliptic curves in Besu --- -# Using alternative elliptic curves +# Configure alternative elliptic curves !!! caution diff --git a/docs/private-networks/how-to/configure/free-gas.md b/docs/private-networks/how-to/configure/free-gas.md index 90d74e66e62..c1827aa1414 100644 --- a/docs/private-networks/how-to/configure/free-gas.md +++ b/docs/private-networks/how-to/configure/free-gas.md @@ -2,7 +2,7 @@ description: Configuring free gas networks --- -# Free gas networks +# Configure free gas networks Transactions use computational resources so have an associated cost. Gas is the cost unit and the gas price is the price per gas unit. The transaction cost is the gas used * gas price. diff --git a/docs/private-networks/how-to/configure/validators.md b/docs/private-networks/how-to/configure/validators.md index c90808f86a7..1878c573e0e 100644 --- a/docs/private-networks/how-to/configure/validators.md +++ b/docs/private-networks/how-to/configure/validators.md @@ -2,7 +2,7 @@ description: Configuring validators in production networks --- -# Configuring validators in a production network +# Configure validators in a production network As when [configuring bootnodes](bootnodes.md): diff --git a/docs/private-networks/how-to/deploy/ansible.md b/docs/private-networks/how-to/deploy/ansible.md index adbcb7f4b8c..ee4f6a6970a 100644 --- a/docs/private-networks/how-to/deploy/ansible.md +++ b/docs/private-networks/how-to/deploy/ansible.md @@ -3,9 +3,9 @@ title: Deploy Hyperledger Besu with Ansible description: Deploying Hyperledger Besu with Ansible role on Galaxy --- -# Deploying Hyperledger Besu with Ansible +# Deploy Besu with Ansible -To deploy Hyperledger Besu using Ansible, use the +To deploy Besu using Ansible, use the [Hyperledger Besu role](https://galaxy.ansible.com/consensys/hyperledger_besu) published on Galaxy. For more information, see the "Read Me" button on the diff --git a/docs/private-networks/how-to/deploy/cloud.md b/docs/private-networks/how-to/deploy/cloud.md index ba5ce00d1d2..5e4fe35dcf5 100644 --- a/docs/private-networks/how-to/deploy/cloud.md +++ b/docs/private-networks/how-to/deploy/cloud.md @@ -2,7 +2,7 @@ description: Deploying Besu to the cloud --- -# Deploying Hyperledger Besu to the cloud +# Deploy Besu to the cloud When deploying Besu to the cloud: diff --git a/docs/private-networks/how-to/deploy/ethstats.md b/docs/private-networks/how-to/deploy/ethstats.md index 69b64b4c606..cecd16bdd2e 100644 --- a/docs/private-networks/how-to/deploy/ethstats.md +++ b/docs/private-networks/how-to/deploy/ethstats.md @@ -2,10 +2,10 @@ description: Ethstats network monitor --- -# Ethstats network monitor +# Connect to Ethstats network monitor Connect to [Ethstats](https://ethstats.net) to display real time and historical [statistics](#statistics) about the network and nodes. -You can connect to the Ethstats dashboard by [connecting to a client and server](#connecting-through-a-client-and-server) or by [connecting through the command line](#connecting-through-the-command-line). +You can connect to the Ethstats dashboard by [connecting to a client and server](#connect-through-a-client-and-server) or by [connecting through the command line](#connect-through-the-command-line). ## Components @@ -27,12 +27,12 @@ Statistics displayed by Ethstats include: - Node logs, which display the data sent by a node. - Block history, which provides the ability to go back in time and playback the block propagation through the nodes. -## Connecting through a client and server +## Connect through a client and server Refer to the external [Ethstats client](https://github.com/goerli/ethstats-client) and [Ethstats server](https://github.com/goerli/ethstats-server) documentation for installing those components and connecting to a dashboard. -## Connecting through the command line +## Connect through the command line You can use command line options to connect a node directly to a [dashboard](https://github.com/goerli/ethstats-client#available-dashboards), without using a client. diff --git a/docs/private-networks/how-to/deploy/kubernetes.md b/docs/private-networks/how-to/deploy/kubernetes.md index c4f835a38a1..3327a0f6b09 100644 --- a/docs/private-networks/how-to/deploy/kubernetes.md +++ b/docs/private-networks/how-to/deploy/kubernetes.md @@ -3,7 +3,7 @@ title: Deploy a Hyperledger Besu private network with Kubernetes description: Deploying Hyperledger Besu with Kubernetes --- -# Deploying Hyperledger Besu with Kubernetes +# Deploy Besu with Kubernetes Use the [reference implementations](https://github.com/ConsenSys/quorum-kubernetes) to install private networks using Kubernetes (K8s). The repository has full support for cloud providers like diff --git a/docs/private-networks/how-to/monitor/elastic-stack.md b/docs/private-networks/how-to/monitor/elastic-stack.md index 8ea5a40eedc..82bcd5d9d90 100644 --- a/docs/private-networks/how-to/monitor/elastic-stack.md +++ b/docs/private-networks/how-to/monitor/elastic-stack.md @@ -2,7 +2,7 @@ description: Using Elastick Stack (ELK) with Hyperledger Besu --- -# Elastic Stack +# Use Elastic Stack [Elastic Stack] (ELK) is an open-source log management platform that is available when using the [Developer Quickstart](../../tutorials/quickstart.md). diff --git a/docs/private-networks/how-to/monitor/opentelemetry.md b/docs/private-networks/how-to/monitor/opentelemetry.md index c78224d9b6f..4318d41a292 100644 --- a/docs/private-networks/how-to/monitor/opentelemetry.md +++ b/docs/private-networks/how-to/monitor/opentelemetry.md @@ -2,7 +2,7 @@ description: Collect Besu information with the OpenTelemetry Collector --- -# OpenTelemetry +# Use OpenTelemetry You can use the OpenTelemetry monitoring and tracing service to gather node metrics and traces. To enable OpenTelemetry to access Hyperledger Besu, use the [`--metrics-enabled`](../../../public-networks/reference/cli/options.md#metrics-enabled) diff --git a/docs/private-networks/how-to/monitor/quorum-hibernate.md b/docs/private-networks/how-to/monitor/quorum-hibernate.md index 1a29474b619..8af6ccffaff 100644 --- a/docs/private-networks/how-to/monitor/quorum-hibernate.md +++ b/docs/private-networks/how-to/monitor/quorum-hibernate.md @@ -2,7 +2,7 @@ description: Use Quorum Hibernate with Hyperledger Besu --- -# Quorum Hibernate +# Use Quorum Hibernate [Quorum Hibernate] is a proxy that monitors a node's API traffic and hibernates the node when inactive. This reduces infrastructure costs by ensuring only nodes receiving API requests or nodes required to establish consensus diff --git a/docs/private-networks/how-to/monitor/splunk.md b/docs/private-networks/how-to/monitor/splunk.md index 60d3ecf05e0..64080b7a953 100644 --- a/docs/private-networks/how-to/monitor/splunk.md +++ b/docs/private-networks/how-to/monitor/splunk.md @@ -2,7 +2,7 @@ description: Send Hyperledger Besu logs to Splunk --- -# Splunk +# Use Splunk [Splunk](https://splunkbase.splunk.com/app/4866/) is a third-party monitoring solution compatible with Besu. A Splunk server can receive Besu logs and enable complex search, visualization, and analysis. diff --git a/docs/private-networks/how-to/use-permissioning/local.md b/docs/private-networks/how-to/use-permissioning/local.md index 0df2bed4117..e0724c88a2c 100644 --- a/docs/private-networks/how-to/use-permissioning/local.md +++ b/docs/private-networks/how-to/use-permissioning/local.md @@ -165,7 +165,7 @@ The following diagram illustrates applying local and onchain permissioning rules ### Enable account allowlisting To enable account allowlisting, specify the -[`--permissions-accounts-config-file-enabled`](../../../public-networks/reference/cli/options.md#permissions-accounts-config-file-enabled) +[`--permissions-accounts-config-file-enabled`](../../reference/cli/options.md#permissions-accounts-config-file-enabled) option when starting Besu. The `PERM` API methods are not enabled by default. To enable the `PERM` API methods, use the @@ -227,6 +227,6 @@ options. ``` -[specify a permissions configuration file with Docker]: ../../get-started/install/run-docker-image.md#permissions-configuration-file +[specify a permissions configuration file with Docker]: ../../get-started/install/run-docker-image.md [support domain names]: ../../../public-networks/concepts/node-keys.md#domain-name-support [onchain permissioning]: ../../concepts/permissioning/onchain.md diff --git a/docs/private-networks/how-to/use-privacy/access-private-transactions.md b/docs/private-networks/how-to/use-privacy/access-private-transactions.md index 5b9aaca2d87..b500a5d328a 100644 --- a/docs/private-networks/how-to/use-privacy/access-private-transactions.md +++ b/docs/private-networks/how-to/use-privacy/access-private-transactions.md @@ -3,7 +3,7 @@ description: Methods for accessing and managing private transactions and privacy Hyperledger Besu --- -# Accessing private and privacy marker transactions +# Access private and privacy marker transactions !!! warning @@ -21,7 +21,7 @@ With the transaction hash returned when submitting the private transaction, to g receipt for the: * Private transaction, use - [`priv_getTransactionReceipt`](../../../public-networks/reference/api/index.md#priv_gettransactionreceipt). + [`priv_getTransactionReceipt`](../../reference/api/index.md#priv_gettransactionreceipt). * Privacy marker transaction, use [`eth_getTransactionReceipt`](../../../public-networks/reference/api/index.md#eth_gettransactionreceipt). @@ -40,6 +40,6 @@ was invalid (`0x2`). With the transaction hash returned when submitting the private transaction, to get the: * Private transaction, use - [`priv_getPrivateTransaction`](../../../public-networks/reference/api/index.md#priv_getprivatetransaction). + [`priv_getPrivateTransaction`](../../reference/api/index.md#priv_getprivatetransaction). * Privacy marker transaction, use [`eth_getTransactionByHash`](../../../public-networks/reference/api/index.md#eth_gettransactionbyhash). diff --git a/docs/private-networks/how-to/use-privacy/besu-extended.md b/docs/private-networks/how-to/use-privacy/besu-extended.md index f2be4bcac8c..32a7f93bdee 100644 --- a/docs/private-networks/how-to/use-privacy/besu-extended.md +++ b/docs/private-networks/how-to/use-privacy/besu-extended.md @@ -2,7 +2,7 @@ description: Hyperledger Besu-extended privacy --- -# Using Hyperledger Besu-extended privacy +# Use Besu-extended privacy !!! warning @@ -14,23 +14,23 @@ Hyperledger Besu provides an extended implementation of privacy allowing you to [create a privacy group for a set of participants](../../concepts/privacy/privacy-groups.md). You must specify the privacy group ID when sending private transactions. -To enable the [`PRIV` API methods](../../../public-networks/reference/api/index.md#priv-methods), use the +To enable the [`PRIV` API methods](../../reference/api/index.md#priv-methods), use the [`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) or [`--rpc-ws-api`](../../../public-networks/reference/cli/options.md#rpc-ws-api) command line options. To create the privacy group containing the recipients of a private transaction, use -[`priv_createPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_createprivacygroup). +[`priv_createPrivacyGroup`](../../reference/api/index.md#priv_createprivacygroup). To create an EEA-compliant private transaction, specify `privacyGroupId` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction). ## Privacy group type Privacy groups created using -[`priv_createPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_createprivacygroup) +[`priv_createPrivacyGroup`](../../reference/api/index.md#priv_createprivacygroup) have a `BESU` privacy group type when returned by -[`priv_findPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_findprivacygroup). +[`priv_findPrivacyGroup`](../../reference/api/index.md#priv_findprivacygroup). !!! example diff --git a/docs/private-networks/how-to/use-privacy/eea-compliant.md b/docs/private-networks/how-to/use-privacy/eea-compliant.md index 95e6cb76fa9..26c6b213f08 100644 --- a/docs/private-networks/how-to/use-privacy/eea-compliant.md +++ b/docs/private-networks/how-to/use-privacy/eea-compliant.md @@ -2,7 +2,7 @@ description: Hyperledger Besu JSON-RPC methods to use for EEA-compliant privacy --- -# Using EEA-compliant privacy +# Use EEA-compliant privacy !!! warning @@ -14,19 +14,19 @@ When using Hyperledger Besu [EEA-compliant privacy](../../concepts/privacy/priva group of nodes specified by `privateFrom` and `privateFor` form a privacy group, to which Tessera assigns a unique privacy group ID. -To enable the [`EEA` API methods](../../../public-networks/reference/api/index.md#eea-methods), use the +To enable the [`EEA` API methods](../../reference/api/index.md#eea-methods), use the [`--rpc-http-api`](../../../public-networks/reference/cli/options.md#rpc-http-api) or [`--rpc-ws-api`](../../../public-networks/reference/cli/options.md#rpc-ws-api) command line options. To create an EEA-compliant private transaction, specify `privateFor` when creating the signed transaction passed as an input parameter to -[`eea_sendRawTransaction`](../../../public-networks/reference/api/index.md#eea_sendrawtransaction). +[`eea_sendRawTransaction`](../../reference/api/index.md#eea_sendrawtransaction). ## Privacy group type Privacy groups created when specifying `privateFrom` and `privateFor` have a `LEGACY` privacy group type when returned by -[`priv_findPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_findprivacygroup). +[`priv_findPrivacyGroup`](../../reference/api/index.md#priv_findprivacygroup). !!! example diff --git a/docs/private-networks/how-to/use-privacy/flexible.md b/docs/private-networks/how-to/use-privacy/flexible.md index 3a972e40b18..18295d69173 100644 --- a/docs/private-networks/how-to/use-privacy/flexible.md +++ b/docs/private-networks/how-to/use-privacy/flexible.md @@ -2,7 +2,7 @@ description: Use flexible privacy groups --- -# Using flexible privacy groups +# Use flexible privacy groups !!! warning @@ -30,13 +30,13 @@ membership of [flexible privacy groups](../../concepts/privacy/flexible-privacy. We don't recommend creating flexible privacy groups in a chain with existing [offchain privacy groups](../../concepts/privacy/privacy-groups.md). -## Enabling flexible privacy groups +## Enable flexible privacy groups -Use the [`--privacy-flexible-groups-enabled`](../../../public-networks/reference/cli/options.md#privacy-flexible-groups-enabled) +Use the [`--privacy-flexible-groups-enabled`](../../reference/cli/options.md#privacy-flexible-groups-enabled) command line option to enable [flexible privacy groups](../../concepts/privacy/flexible-privacy.md). -When flexible privacy groups are enabled, the [`priv_createPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_createprivacygroup), -[`priv_deletePrivacyGroup`](../../../public-networks/reference/api/index.md#priv_deleteprivacygroup), -and [`priv_findPrivacyGroup`](../../../public-networks/reference/api/index.md#priv_findprivacygroup) methods for +When flexible privacy groups are enabled, the [`priv_createPrivacyGroup`](../../reference/api/index.md#priv_createprivacygroup), +[`priv_deletePrivacyGroup`](../../reference/api/index.md#priv_deleteprivacygroup), +and [`priv_findPrivacyGroup`](../../reference/api/index.md#priv_findprivacygroup) methods for [offchain privacy groups](../../concepts/privacy/privacy-groups.md) are disabled. ## Simple flexible privacy group example @@ -62,7 +62,7 @@ the [`web3js-quorum` library](https://github.com/ConsenSys/web3js-quorum): expected behavior because private transactions check offchain and onchain to find the privacy group for a private transaction. -## Adding and removing members +## Add and remove members To add and remove members from a [flexible privacy group](../../concepts/privacy/flexible-privacy.md), use the `addTo` and `removeFrom` methods in the [`web3js-quorum` library](https://github.com/ConsenSys/web3js-quorum) diff --git a/docs/private-networks/how-to/use-privacy/goquorum-compatible.md b/docs/private-networks/how-to/use-privacy/goquorum-compatible.md index 4b06f1c9283..3c01d0d801e 100644 --- a/docs/private-networks/how-to/use-privacy/goquorum-compatible.md +++ b/docs/private-networks/how-to/use-privacy/goquorum-compatible.md @@ -2,7 +2,7 @@ description: Use GoQuorum-compatible privacy --- -# Using GoQuorum-compatible privacy +# Use GoQuorum-compatible privacy GoQuorum-compatible privacy mode enables interoperable private transactions between Hyperledger Besu and [GoQuorum clients] using the Tessera private transaction manager. diff --git a/docs/private-networks/how-to/use-privacy/performance-best-practices.md b/docs/private-networks/how-to/use-privacy/performance-best-practices.md index 3855be8aa09..0acd469ccd5 100644 --- a/docs/private-networks/how-to/use-privacy/performance-best-practices.md +++ b/docs/private-networks/how-to/use-privacy/performance-best-practices.md @@ -26,7 +26,7 @@ When submitting a private transaction using [web3js-quorum](https://github.com/C This limits the throughput to at most one private transaction per block when submitting from a single thread. To increase throughput, use web3js-quorum from multiple concurrent threads or processes. -### Colocate Besu and Tessera +### Co-locate Besu and Tessera Besu has to talk to its local Tessera node frequently while handling a block. While we do not recommend running them on the same node, minimizing the latency between Besu and Tessera will improve block processing times. diff --git a/docs/private-networks/how-to/use-privacy/tessera.md b/docs/private-networks/how-to/use-privacy/tessera.md index c175f74e362..5125404384c 100644 --- a/docs/private-networks/how-to/use-privacy/tessera.md +++ b/docs/private-networks/how-to/use-privacy/tessera.md @@ -47,4 +47,3 @@ enough memory. [configure Tessera for high availability]: https://consensys.net/docs/goquorum//en/stable/configure-and-manage/configure/high-availability/ -[configure Besu for high availability]: ../../../global/how-to/configure/Configure-HA diff --git a/docs/private-networks/how-to/use-privacy/web3js-quorum.md b/docs/private-networks/how-to/use-privacy/web3js-quorum.md index 552f999a1f6..7378c5e3890 100644 --- a/docs/private-networks/how-to/use-privacy/web3js-quorum.md +++ b/docs/private-networks/how-to/use-privacy/web3js-quorum.md @@ -2,7 +2,7 @@ description: web3js-quorum client library --- -# web3js-quorum client library +# Use the web3js-quorum client library The [web3js-quorum library](https://github.com/ConsenSys/web3js-quorum) adds a property to your web3 instance by extending [web3](https://github.com/ethereum/web3.js/). Use the library to create and @@ -60,7 +60,7 @@ Initialize your client where: When migrating from web3js-eea to web3js-quorum, use `Web3Quorum`. The constructor doesn't require the chain ID anymore. Chain ID is automatically retrieved from the chain using the specified JSON-RPC HTTP endpoint. -## Deploying a contract with `generateAndSendRawTransaction` +## Deploy a contract with `generateAndSendRawTransaction` To deploy a private contract, you need the contract binary. You can use [Solidity](https://solidity.readthedocs.io/en/develop/using-the-compiler.html) to get the diff --git a/docs/private-networks/tutorials/azure.md b/docs/private-networks/tutorials/azure.md index ee742a7faea..bd7ab78cd15 100644 --- a/docs/private-networks/tutorials/azure.md +++ b/docs/private-networks/tutorials/azure.md @@ -23,7 +23,7 @@ The following is a high-level overview of the deployed network. ![Image landing](../../images/sampleNetworks-poa.png) -## Deploying +## Deploy To deploy the private network example on Azure: @@ -85,7 +85,7 @@ To display the dashboard: The dashboard provides a visual way to monitor your network and nodes as the chain progresses. Alerting can also be configured. -## Connecting to VM RPC endpoint +## Connect to VM RPC endpoint You can connect dapps or develop directly from the IDE by using VSCode and connecting to the VM RPC endpoint. The endpoint is the DNS name appended with `/jsonrpc`: `http:///jsonrpc`. diff --git a/docs/private-networks/tutorials/clique.md b/docs/private-networks/tutorials/clique.md index 342b8bf630d..ea802ebbaca 100644 --- a/docs/private-networks/tutorials/clique.md +++ b/docs/private-networks/tutorials/clique.md @@ -2,7 +2,7 @@ description: Hyperledger Besu private network using the Clique (proof of authority) consensus protocol --- -# Create a private network using the Clique (proof of authority) consensus protocol +# Create a private network using Clique A private network provides a configurable network for testing. This private network uses the [Clique (proof of authority) consensus protocol]. diff --git a/docs/private-networks/tutorials/contracts/index.md b/docs/private-networks/tutorials/contracts/index.md index e7e7400bb54..1d832171ed3 100644 --- a/docs/private-networks/tutorials/contracts/index.md +++ b/docs/private-networks/tutorials/contracts/index.md @@ -2,7 +2,7 @@ description: deploying smart contracts --- -# Deploying smart contracts to an Ethereum chain +# Deploy smart contracts to an Ethereum chain This tutorial shows you how to deploy smart contracts as transactions to a network. @@ -13,7 +13,7 @@ You can use the [Developer Quickstart](../quickstart.md) to rapidly generate one If deploying a private contract, enable privacy on the network (public contracts can also be deployed on privacy-enabled networks). -## Using `eth_sendSignedTransaction` +## Use `eth_sendSignedTransaction` To deploy a smart contract using [`eth_sendSignedTransaction`](https://web3js.readthedocs.io/en/v1.2.0/web3-eth.html#sendsignedtransaction), use an @@ -138,7 +138,7 @@ node public_tx.js This example code creates the transaction `tx`, signs it with the private key of the account, serializes it, then calls `eth_sendSignedTransaction` to deploy the contract. -## Using `eth_sendTransaction` +## Use `eth_sendTransaction` You can use [`eth_sendTransaction`](https://ethereum.github.io/execution-apis/api-documentation) as an alternative to `eth_sendSignedTransaction`. However, Hyperledger Besu does not support the `eth_sendTransaction` API call and keeps account management separate for @@ -184,7 +184,7 @@ Make the request using `eth_sendTransaction`: curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{"from":"0x9b790656b9ec0db1936ed84b3bea605873558198", "to":null, "gas":"0x7600","gasPrice":"0x9184e72a000", "data":"0x608060405234801561001057600080fd5b5060405161014d38038061014d8339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806000819055505060f38061005a6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c80632a1afcd914604157806360fe47b114605d5780636d4ce63c146088575b600080fd5b604760a4565b6040518082815260200191505060405180910390f35b608660048036036020811015607157600080fd5b810190808035906020019092919050505060aa565b005b608e60b4565b6040518082815260200191505060405180910390f35b60005481565b8060008190555050565b6000805490509056fea2646970667358221220e6966e446bd0af8e6af40eb0d8f323dd02f771ba1f11ae05c65d1624ffb3c58264736f6c63430007060033"}], "id":1}' ``` -## Using `eea_sendRawTransaction` for private contracts with web3js-quorum +## Use `eea_sendRawTransaction` for private contracts with web3js-quorum To deploy a private contract to another node or [privacy group](../../concepts/privacy/privacy-groups.md) member, use the [web3js-quorum](https://www.npmjs.com/package/web3js-quorum) library and @@ -251,7 +251,7 @@ the contract's address. The Developer Quickstart provides an [example of a private transaction with a privacy group](https://github.com/ConsenSys/quorum-dev-quickstart/blob/b72a0f64d685c851bf8be399a8e33bbdf0e09982/files/besu/smart_contracts/privacy/scripts/private_tx_privacy_group.js). -## Using `eea_sendRawTransaction` for private contracts with web3js-eea +## Use `eea_sendRawTransaction` for private contracts with web3js-eea !!! warning diff --git a/docs/private-networks/tutorials/contracts/interact.md b/docs/private-networks/tutorials/contracts/interact.md index b4e372ee8df..94a8bb6ff9b 100644 --- a/docs/private-networks/tutorials/contracts/interact.md +++ b/docs/private-networks/tutorials/contracts/interact.md @@ -2,7 +2,7 @@ description: calling smart contracts functions --- -# Interacting with deployed smart contracts +# Interact with deployed smart contracts You can get started with the [Developer Quickstart](../quickstart.md) to rapidly generate local blockchain networks. diff --git a/docs/private-networks/tutorials/contracts/transfer-funds.md b/docs/private-networks/tutorials/contracts/transfer-funds.md index 7e5bb4b5fb1..befdc3c2a2f 100644 --- a/docs/private-networks/tutorials/contracts/transfer-funds.md +++ b/docs/private-networks/tutorials/contracts/transfer-funds.md @@ -2,7 +2,7 @@ description: funds transfer transactions --- -# Transferring funds between accounts in a transaction +# Transfer funds between accounts in a transaction You can get started with the [Developer Quickstart](../quickstart.md) to rapidly generate local blockchain networks. @@ -13,7 +13,7 @@ This tutorial shows you how to transfer funds (ETH) between accounts in a transa * A [private network](../quickstart.md) -## Using `eth_sendSignedTransaction` +## Use `eth_sendSignedTransaction` The simplest way to transfer funds between externally-owned accounts is using [`eth_sendSignedTransaction`](https://web3js.readthedocs.io/en/v1.2.11/web3-eth.html#sendsignedtransaction). @@ -80,7 +80,7 @@ console.log("Account B has an updatedbalance of: " + accountBBalance); A [full example](https://github.com/ConsenSys/quorum-dev-quickstart/blob/1e8cc281098923802845cd829ec20c88513c2e1c/files/besu/smart_contracts/privacy/scripts/eth_tx.js) can be found in the Developer Quickstart. -## Using `eth_sendTransaction` +## Use `eth_sendTransaction` An alternative to using `eth_sendSignedTransaction` is [`eth_sendTransaction`](https://web3js.readthedocs.io/en/v1.2.11/web3-eth.html#sendtransaction). diff --git a/docs/private-networks/tutorials/ethash.md b/docs/private-networks/tutorials/ethash.md index dab4721d83f..016a9922409 100644 --- a/docs/private-networks/tutorials/ethash.md +++ b/docs/private-networks/tutorials/ethash.md @@ -2,7 +2,7 @@ description: Hyperledger Besu private network using Ethash (proof of work) Consensus Protocol tutorial --- -# Create a private network using the Ethash (proof of work) consensus protocol +# Create a private network using Ethash A private network provides a configurable network for testing. By configuring a low difficulty and enabling mining, this allows for fast block creation. diff --git a/docs/private-networks/tutorials/ibft/index.md b/docs/private-networks/tutorials/ibft/index.md index e3e62074a5a..78dcb51b7d1 100644 --- a/docs/private-networks/tutorials/ibft/index.md +++ b/docs/private-networks/tutorials/ibft/index.md @@ -2,7 +2,7 @@ description: Hyperledger Besu private network using the IBFT 2.0 (Proof of Authority) consensus protocol --- -# Create a private network using the IBFT 2.0 (proof of authority) consensus protocol +# Create a private network using IBFT 2.0 A private network provides a configurable network for testing. This private network uses the [IBFT 2.0 (proof of authority) consensus protocol](../../how-to/configure/consensus/ibft.md). diff --git a/docs/private-networks/tutorials/kubernetes/charts.md b/docs/private-networks/tutorials/kubernetes/charts.md index b034a287a97..9d3845138c8 100644 --- a/docs/private-networks/tutorials/kubernetes/charts.md +++ b/docs/private-networks/tutorials/kubernetes/charts.md @@ -3,6 +3,10 @@ title: Besu Kubernetes - Deploying Charts description: Deploying Besu Helm Charts for a Kubernetes cluster --- +# Deploy charts + +You can deploy Besu Helm charts for a Kubernetes cluster. + ## Prerequisites * Clone the [Quorum-Kubernetes](https://github.com/ConsenSys/quorum-kubernetes) repository diff --git a/docs/private-networks/tutorials/kubernetes/index.md b/docs/private-networks/tutorials/kubernetes/index.md index b5cded1b284..94d9014d489 100644 --- a/docs/private-networks/tutorials/kubernetes/index.md +++ b/docs/private-networks/tutorials/kubernetes/index.md @@ -3,7 +3,7 @@ title: Deploy a Hyperledger Besu private network with Kubernetes description: Deploying Hyperledger Besu with Kubernetes --- -# Deploying Hyperledger Besu with Kubernetes +# Deploy Besu using Kubernetes Use the [reference implementations](https://github.com/ConsenSys/besu-kubernetes) to install private networks using Kubernetes (K8s). Reference implementations are available using: @@ -104,9 +104,9 @@ across namespaces don't need to be. Consider using StatefulSets instead of Deployments for Besu. The term 'client node' refers to bootnode, validator and member/RPC nodes. For Besu nodes, we only use CLI arguments to keep things consistent. -### Role Based Access Controls +### Role-based access controls -We encourage using RBACs for access to the private key of each node, that is, only a specific pod or statefulset is +We encourage using role-based access controls (RBACs) for access to the private key of each node, that is, only a specific pod or statefulset is allowed to access a specific secret. If you need to specify a Kube configuration file for each pod, use the KUBE_CONFIG_PATH variable. diff --git a/docs/private-networks/tutorials/kubernetes/maintenance.md b/docs/private-networks/tutorials/kubernetes/maintenance.md index a785a210674..33932fc92f6 100644 --- a/docs/private-networks/tutorials/kubernetes/maintenance.md +++ b/docs/private-networks/tutorials/kubernetes/maintenance.md @@ -3,6 +3,10 @@ title: Besu Kubernetes Maintenance description: Maintenance for Besu on a Kubernetes cluster --- +# Maintenance + +You can perform maintenance for Besu on a Kubernetes cluster. + ## Prerequisites * Clone the [Quorum-Kubernetes](https://github.com/ConsenSys/quorum-kubernetes) repository diff --git a/docs/private-networks/tutorials/kubernetes/playground.md b/docs/private-networks/tutorials/kubernetes/playground.md index 0e9a0047c2b..c39c1b61beb 100644 --- a/docs/private-networks/tutorials/kubernetes/playground.md +++ b/docs/private-networks/tutorials/kubernetes/playground.md @@ -3,7 +3,7 @@ title: Deploy a Hyperledger Besu private network locally with Kubernetes description: Deploying a Hyperledger Besu private network locally with Kubernetes --- -# Deploy Besu with Kubernetes in a Local Environment +# Deploy in a local environment The [playground](https://github.com/ConsenSys/quorum-kubernetes/tree/master/playground) was created to provide an opportunity to deploy [quorum-kubernetes](https://github.com/ConsenSys/quorum-kubernetes/) in a local environment before @@ -12,7 +12,7 @@ Local deployment can be done with any local Kubernetes tool. Minikube and Rancher Desktop have been tested to work, but any complete Kubernetes solution with support for `kubectl` should suffice. -## How to deploy locally +## Steps 1. Navigate to the playground [`README`](https://github.com/ConsenSys/quorum-kubernetes/tree/master/playground). 1. Ensure that your system meets the requirements specified. diff --git a/docs/private-networks/tutorials/kubernetes/production.md b/docs/private-networks/tutorials/kubernetes/production.md index 108e0f47efb..b37a54300e4 100644 --- a/docs/private-networks/tutorials/kubernetes/production.md +++ b/docs/private-networks/tutorials/kubernetes/production.md @@ -3,6 +3,10 @@ title: Besu Kubernetes - Getting ready for production description: Deploying Besu Helm Charts for production on a Kubernetes cluster --- +# Deploy for production + +You can deploy Besu for production on a Kubernetes cluster. + ## Prerequisites * Clone the [Quorum-Kubernetes](https://github.com/ConsenSys/quorum-kubernetes) repository diff --git a/docs/private-networks/tutorials/kubernetes/quorum-explorer.md b/docs/private-networks/tutorials/kubernetes/quorum-explorer.md index cde20e91cd4..d7ef8d0ef9c 100644 --- a/docs/private-networks/tutorials/kubernetes/quorum-explorer.md +++ b/docs/private-networks/tutorials/kubernetes/quorum-explorer.md @@ -3,6 +3,10 @@ title: Besu Kubernetes - Quorum Explorer description: Using the Quorum Explorer on a Kubernetes cluster --- +# Use the Quorum Explorer + +You can use the Quorum Explorer on a Kubernetes cluster. + ## Prerequisites * Clone the [Quorum-Kubernetes](https://github.com/ConsenSys/quorum-kubernetes) repository @@ -11,7 +15,7 @@ description: Using the Quorum Explorer on a Kubernetes cluster * [Helm3](https://helm.sh/docs/intro/install/) * [Existing network](charts.md) -## Deploying the Quorum Explorer helm chart +## Deploy the Quorum Explorer helm chart [Quorum-Explorer](https://github.com/ConsenSys/quorum-explorer) as a lightweight blockchain explorer. The Quorum Explorer is **not** recommended for use in production and is intended for diff --git a/docs/private-networks/tutorials/permissioning/upgrade-contracts.md b/docs/private-networks/tutorials/permissioning/upgrade-contracts.md index fc6aa4d8821..d6117f773fa 100644 --- a/docs/private-networks/tutorials/permissioning/upgrade-contracts.md +++ b/docs/private-networks/tutorials/permissioning/upgrade-contracts.md @@ -2,7 +2,7 @@ description: Upgrade the permissioning contracts for onchain permissioning --- -# Upgrade the permissioning contracts +# Upgrade permissioning contracts The following tutorial describes the steps to upgrade the onchain permissioning contracts to the latest version. @@ -108,7 +108,7 @@ the file must be in the `permissioning-smart-contracts` directory. RETAIN_ADMIN_CONTRACT=true RETAIN_NODE_RULES_CONTRACT=false RETAIN_ACCOUNT_RULES_CONTRACT=false - ``` + ``` ### 5. Deploy the contracts diff --git a/docs/private-networks/tutorials/qbft.md b/docs/private-networks/tutorials/qbft.md index acbae961b99..ff63ae1202a 100644 --- a/docs/private-networks/tutorials/qbft.md +++ b/docs/private-networks/tutorials/qbft.md @@ -2,7 +2,7 @@ description: Hyperledger Besu private network using the QBFT (proof of authority) consensus protocol --- -# Create a private network using the QBFT (proof of authority) consensus protocol +# Create a private network using QBFT A private network provides a configurable network for testing. This private network uses the [QBFT (proof of authority) consensus protocol](../how-to/configure/consensus/qbft.md). diff --git a/docs/public-networks/concepts/transactions/validation.md b/docs/public-networks/concepts/transactions/validation.md index d1c3dc3fcb2..82f0589754e 100644 --- a/docs/public-networks/concepts/transactions/validation.md +++ b/docs/public-networks/concepts/transactions/validation.md @@ -2,7 +2,7 @@ description: What transaction validation and when --- -# Validating transactions +# Transaction validation For transactions submitted and added to a block, Besu validates the transactions, as illustrated in the following diagram. diff --git a/docs/public-networks/get-started/system-requirements.md b/docs/public-networks/get-started/system-requirements.md index 4051d2d55b7..8bc061a4fc0 100644 --- a/docs/public-networks/get-started/system-requirements.md +++ b/docs/public-networks/get-started/system-requirements.md @@ -3,7 +3,7 @@ title: Hyperledger Besu System Requirements description: System requirements to sync and run Besu --- -# System requirements for public networks +# System requirements Determine public network system requirements by checking CPU and disk space requirements using [Prometheus](../how-to/monitor/metrics.md). diff --git a/docs/public-networks/how-to/connect/static-nodes.md b/docs/public-networks/how-to/connect/static-nodes.md index 8284d9e6faf..3179b1108ef 100644 --- a/docs/public-networks/how-to/connect/static-nodes.md +++ b/docs/public-networks/how-to/connect/static-nodes.md @@ -18,7 +18,7 @@ any unconnected static node. example, you run multiple nodes on Mainnet (discovery using bootnodes), but want to ensure your nodes are always connected (using static nodes). - To find peers, configure one or more [bootnodes](../../../private-networks/how-to/connect/bootnodes.md). + 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 diff --git a/docs/public-networks/how-to/develop/client-libraries.md b/docs/public-networks/how-to/develop/client-libraries.md index 32a2ee191af..51ce2004778 100644 --- a/docs/public-networks/how-to/develop/client-libraries.md +++ b/docs/public-networks/how-to/develop/client-libraries.md @@ -2,7 +2,7 @@ description: Hyperledger Besu client libraries --- -# Client libraries +# 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 diff --git a/docs/public-networks/how-to/develop/truffle.md b/docs/public-networks/how-to/develop/truffle.md index 997dbd03ae1..7047db4a397 100644 --- a/docs/public-networks/how-to/develop/truffle.md +++ b/docs/public-networks/how-to/develop/truffle.md @@ -2,7 +2,7 @@ description: Using Hyperledger Besu with Truffle --- -# Using Hyperledger Besu with Truffle +# Use Truffle Developing for Hyperledger Besu using Truffle is the same as developing for public Ethereum networks using Truffle. Truffle supports Besu with the only difference being Besu does not support diff --git a/docs/public-networks/how-to/monitor/index.md b/docs/public-networks/how-to/monitor/index.md index 1e35e1750d5..51681d27527 100644 --- a/docs/public-networks/how-to/monitor/index.md +++ b/docs/public-networks/how-to/monitor/index.md @@ -2,7 +2,7 @@ description: Monitoring using metrics and logging --- -# Monitoring +# Monitor Besu Monitoring enables identification of node and network issues. Specifically, configuring metrics and logging enables: diff --git a/docs/public-networks/how-to/monitor/logging.md b/docs/public-networks/how-to/monitor/logging.md index 04d19c60ed1..65a239e009a 100644 --- a/docs/public-networks/how-to/monitor/logging.md +++ b/docs/public-networks/how-to/monitor/logging.md @@ -4,7 +4,7 @@ path: blob/master/besu/src/main/resources/ source: log4j2.xml --- -# Logging +# Use logging Hyperledger Besu uses Log4J2 for logging and provides two methods to configure logging behavior: diff --git a/docs/public-networks/how-to/monitor/metrics.md b/docs/public-networks/how-to/monitor/metrics.md index 923e3875b08..de588cee71e 100644 --- a/docs/public-networks/how-to/monitor/metrics.md +++ b/docs/public-networks/how-to/monitor/metrics.md @@ -36,7 +36,7 @@ On MacOS, install with [Homebrew](https://formulae.brew.sh/formula/prometheus): Additional configuration is not required for these components because Prometheus handles and analyzes data directly from the feed. -## Setting up and running Prometheus with Besu +## Set up and run Prometheus with Besu To configure Prometheus and run with Besu: @@ -46,7 +46,7 @@ To configure Prometheus and run with Besu: !!! example === "Fragment to insert in prometheus.yml" - + ```yml - job_name: besu scrape_interval: 15s @@ -57,13 +57,13 @@ To configure Prometheus and run with Besu: - targets: - localhost:9545 ``` - + === "Full prometheus.yml example" - + ```yml global: scrape_interval: 15s - + scrape_configs: - job_name: "prometheus" static_configs: @@ -77,7 +77,7 @@ To configure Prometheus and run with Besu: - targets: - localhost:9545 ``` - + Prometheus requires 3 MB of space per node per hour for metrics, with a `scrape_interval` of 15 seconds. 1. Start Besu with the [`--metrics-enabled`](../../reference/cli/options.md#metrics-enabled) option. @@ -119,7 +119,7 @@ To configure Prometheus and run with Besu: Use a log ingestion tool, such as Logstash, to parse the logs and alert you to configured anomalies. -## Running Prometheus with Besu in push mode +## 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). diff --git a/docs/public-networks/how-to/troubleshoot/evm-tool.md b/docs/public-networks/how-to/troubleshoot/evm-tool.md index 4950024cf57..759599ccf1e 100644 --- a/docs/public-networks/how-to/troubleshoot/evm-tool.md +++ b/docs/public-networks/how-to/troubleshoot/evm-tool.md @@ -2,17 +2,17 @@ description: Hyperledger Besu EVM tool --- -# EVM tool +# 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. -## Getting the EVM tool +## Get the EVM tool The Besu EVM tool does not have a standard zip file distribution. To use, you need to either build from the source repository or use a pre-published docker image. -### Building from source +### Build from source To build from source, run the following from the root of the Besu repository: @@ -29,7 +29,7 @@ Execute the EVM tool: ethereum/evmtool/build/install/evmtool/bin/evm ``` -### Executing with Docker +### Execute with Docker To run the Besu EVM tool in a container: diff --git a/docs/public-networks/how-to/troubleshoot/java-flight-recorder.md b/docs/public-networks/how-to/troubleshoot/java-flight-recorder.md index 45a8559f32b..c20c1b3998f 100644 --- a/docs/public-networks/how-to/troubleshoot/java-flight-recorder.md +++ b/docs/public-networks/how-to/troubleshoot/java-flight-recorder.md @@ -2,13 +2,13 @@ description: Using Java Flight Recorder with Hyperledger Besu --- -# Java Flight Recorder +# 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. -## Enabling Java Flight Recorder +## Enable Java Flight Recorder To enable JFR, set `BESU_OPTS` to the JFR tags as follows: diff --git a/docs/public-networks/how-to/use-besu-api/authenticate.md b/docs/public-networks/how-to/use-besu-api/authenticate.md index 6a395f29dcf..18e9a66c4f8 100644 --- a/docs/public-networks/how-to/use-besu-api/authenticate.md +++ b/docs/public-networks/how-to/use-besu-api/authenticate.md @@ -2,7 +2,7 @@ description: Hyperledger Besu authentication and authorization for JSON-RPC --- -# Authentication and authorization for JSON-RPC +# Authenticate and authorize JSON-RPC Authentication identifies a user, and authorization verifies user access to requested JSON-RPC methods. Hyperledger Besu verifies users using @@ -251,7 +251,7 @@ With authentication enabled, to explicitly specify a user cannot access any meth 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. -## Using an authentication token to make requests +## Use an authentication token to make requests Specify the authentication token as a `Bearer` token in the JSON-RPC request header. diff --git a/docs/public-networks/how-to/use-besu-api/graphql.md b/docs/public-networks/how-to/use-besu-api/graphql.md index 44759c17baa..c2d7d3fa5f4 100644 --- a/docs/public-networks/how-to/use-besu-api/graphql.md +++ b/docs/public-networks/how-to/use-besu-api/graphql.md @@ -2,7 +2,7 @@ description: How to access the Hyperledger Besu API using GraphQL --- -# GraphQL over HTTP +# 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. diff --git a/docs/public-networks/how-to/use-besu-api/json-rpc.md b/docs/public-networks/how-to/use-besu-api/json-rpc.md index c863094bd69..8f61c9e2701 100644 --- a/docs/public-networks/how-to/use-besu-api/json-rpc.md +++ b/docs/public-networks/how-to/use-besu-api/json-rpc.md @@ -2,7 +2,7 @@ description: How to access the Hyperledger Besu API using JSON-RPC --- -# JSON-RPC over HTTP, WebSocket, and IPC +# Use JSON-RPC over HTTP, WebSocket, and IPC To enable JSON-RPC over HTTP or WebSocket, use the [`--rpc-http-enabled`](../../reference/cli/options.md#rpc-http-enabled) and diff --git a/docs/public-networks/how-to/use-besu-api/rpc-pubsub.md b/docs/public-networks/how-to/use-besu-api/rpc-pubsub.md index e8124afe1db..1f16d253363 100644 --- a/docs/public-networks/how-to/use-besu-api/rpc-pubsub.md +++ b/docs/public-networks/how-to/use-besu-api/rpc-pubsub.md @@ -2,7 +2,7 @@ description: Using RPC Pub/Sub with Hyperledger Besu WebSockets --- -# RPC Pub/Sub over WebSockets +# Use RPC Pub/Sub over WebSockets ## Introduction @@ -24,7 +24,7 @@ Methods specific to RPC Pub/Sub are: [`--rpc-ws-enabled`](../../reference/cli/options.md#rpc-ws-enabled) option to enable the WebSockets JSON-RPC service. -### Using RPC Pub/Sub +### Use RPC Pub/Sub [WebSockets](json-rpc.md#http-and-websocket-requests) supports the RPC Pub/Sub API. @@ -64,7 +64,7 @@ Notifications include the subscription ID. Subscribing to some events (for example, logs) can cause a flood of notifications while the node is synchronizing. -## Subscribing +## Subscribe Use `eth_subscribe` to create subscriptions for the following event types: @@ -457,7 +457,7 @@ synchronization progress. When fully synchronized, returns `false`. } ``` -## Unsubscribing +## 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. diff --git a/docs/public-networks/how-to/use-pow/mining.md b/docs/public-networks/how-to/use-pow/mining.md index d81da8583a5..18e095a7a26 100644 --- a/docs/public-networks/how-to/use-pow/mining.md +++ b/docs/public-networks/how-to/use-pow/mining.md @@ -2,7 +2,7 @@ description: Using Hyperledger Besu for PoW CPU mining --- -# Mining +# Configure mining Hyperledger Besu supports CPU and GPU mining, which are configured using command line options. diff --git a/mkdocs.navigation.yml b/mkdocs.navigation.yml index 0e0cb6de31d..d633d2ec953 100644 --- a/mkdocs.navigation.yml +++ b/mkdocs.navigation.yml @@ -146,7 +146,7 @@ nav: - private-networks/concepts/privacy/index.md - Private transactions: - private-networks/concepts/privacy/private-transactions/index.md - - Processing private transactions: private-networks/concepts/privacy/private-transactions/processing.md + - Private transaction processing: private-networks/concepts/privacy/private-transactions/processing.md - Privacy groups: private-networks/concepts/privacy/privacy-groups.md - Flexible privacy groups: private-networks/concepts/privacy/flexible-privacy.md - Multi-tenancy: private-networks/concepts/privacy/multi-tenancy.md From 300ecdaaa24a4967ec6abc18576aa12af72fa7d1 Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Mon, 25 Jul 2022 22:56:24 -0700 Subject: [PATCH 24/31] remove dead link Signed-off-by: Alexandra Tran --- docs/global/how-to/troubleshoot/Troubleshooting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/global/how-to/troubleshoot/Troubleshooting.md b/docs/global/how-to/troubleshoot/Troubleshooting.md index 5addf583bb5..a38d5d95faa 100644 --- a/docs/global/how-to/troubleshoot/Troubleshooting.md +++ b/docs/global/how-to/troubleshoot/Troubleshooting.md @@ -188,7 +188,7 @@ following symptoms: ## Unsupported address exception while running from Docker -While [running Besu from a Docker image](../../get-started/install/run-docker-image.md), you might get the following exception: +While [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. From fa5cbecd0080e54de1b3ec0d8350d0d8346edd1d Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Wed, 27 Jul 2022 12:25:52 -0700 Subject: [PATCH 25/31] minor homepage fix Signed-off-by: Alexandra Tran --- docs/index.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/index.md b/docs/index.md index 42cd22048b7..00eff8f8b4b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -3,9 +3,6 @@ title: Hyperledger Besu Ethereum client description: Besu is an open-source Ethereum client developed under the Apache 2.0 license and written in Java. It runs on the Ethereum public network, private networks, and test networks. -hide: - - navigation - - toc --- # Hyperledger Besu Ethereum client From e34ae8ff24a7c2865685d8deb6f0648f99a08a0e Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Thu, 4 Aug 2022 19:14:23 -0700 Subject: [PATCH 26/31] fix links and address feedback Signed-off-by: Alexandra Tran --- docs/index.md | 4 ++-- docs/private-networks/how-to/monitor/index.md | 2 +- docs/public-networks/get-started/migrate-to-besu.md | 10 ++++++---- .../how-to/troubleshoot/trace-transactions.md | 4 ++-- docs/public-networks/how-to/use-pow/mining.md | 3 ++- docs/public-networks/reference/api/index.md | 2 +- 6 files changed, 14 insertions(+), 11 deletions(-) diff --git a/docs/index.md b/docs/index.md index 00eff8f8b4b..b52bc56c883 100644 --- a/docs/index.md +++ b/docs/index.md @@ -16,7 +16,7 @@ It runs on public and private networks: --- - You can run Besu as an execution client on Ethereum Mainnet and Ethereum public testnets, such as Goerli and Sepolia. + Run Besu as an execution client on Ethereum Mainnet and Ethereum public testnets, such as Goerli and Sepolia. [:octicons-arrow-right-24: Get started](public-networks/index.md) @@ -24,7 +24,7 @@ It runs on public and private networks: --- - You can create or join a network not connected to Mainnet or a public testnet. Use private networks to develop enterprise applications requiring secure, high-performance transaction processing. + Create or join a private, permissioned network. Use private networks to develop enterprise applications requiring secure, high-performance transaction processing. [:octicons-arrow-right-24: Get started](private-networks/index.md) diff --git a/docs/private-networks/how-to/monitor/index.md b/docs/private-networks/how-to/monitor/index.md index b208b4c1df1..b076bf4df87 100644 --- a/docs/private-networks/how-to/monitor/index.md +++ b/docs/private-networks/how-to/monitor/index.md @@ -4,7 +4,7 @@ description: Monitoring using metrics and logging # Monitoring -Monitoring enables identification of node and network issues. In private networks, you can +Use monitoring to identify node and network issues. In private networks, you can [configure metrics and logging](../../../public-networks/how-to/monitor/index.md) as in public networks. diff --git a/docs/public-networks/get-started/migrate-to-besu.md b/docs/public-networks/get-started/migrate-to-besu.md index ea8f6e4de90..227b7af7e45 100644 --- a/docs/public-networks/get-started/migrate-to-besu.md +++ b/docs/public-networks/get-started/migrate-to-besu.md @@ -4,13 +4,15 @@ description: Migrate to Besu guide # Migrate to Besu -Migrate from a different Ethereum [execution client](../../Concepts/Merge.md#execution-and-consensus-clients) +Migrate from a different Ethereum [execution client](../concepts/the-merge.md#execution-clients) to Besu to contribute to [client diversity](https://clientdiversity.org/). -When migrating from a different client, you are [configuring Besu as an execution client](../Upgrade/Prepare-for-The-Merge.md#configure-besu-as-an-execution-client) -and connecting your [consensus client](../../Concepts/Merge.md#consensus-clients) to Besu instead of your original execution client. +To migrate from a different client, +[configure Besu as an execution client](../how-to/prepare-for-the-merge.md#configure-besu-as-an-execution-client) +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](../../Concepts/Node-Types.md) and avoid downtime penalties, +To minimize downtime while [Besu syncs](../how-to/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. diff --git a/docs/public-networks/how-to/troubleshoot/trace-transactions.md b/docs/public-networks/how-to/troubleshoot/trace-transactions.md index 5530af84b09..817d13afded 100644 --- a/docs/public-networks/how-to/troubleshoot/trace-transactions.md +++ b/docs/public-networks/how-to/troubleshoot/trace-transactions.md @@ -15,8 +15,8 @@ The `TRACE` API has two sets of trace calls, [ad-hoc tracing APIs](#ad-hoc-traci ## Ad-hoc tracing APIs -These APIs allow different diagnostic options when tracing calls or transactions. -The options are [`trace`, `vmTrace`, or `stateDiff`](../../reference/trace-types.md). +These APIs allow you to use the [`trace`, `vmTrace`, or `stateDiff`](../../reference/trace-types.md) +diagnostic options when tracing calls or transactions. To use the ad-hoc tracing APIs, the requested block or transaction must be within the number of [blocks retained](../../reference/cli/options.md#pruning-blocks-retained) with [pruning enabled](../../reference/cli/options.md#pruning-enabled) diff --git a/docs/public-networks/how-to/use-pow/mining.md b/docs/public-networks/how-to/use-pow/mining.md index 18e095a7a26..428a91a7be4 100644 --- a/docs/public-networks/how-to/use-pow/mining.md +++ b/docs/public-networks/how-to/use-pow/mining.md @@ -6,7 +6,8 @@ description: Using Hyperledger Besu for PoW CPU mining Hyperledger Besu supports CPU and GPU mining, which are configured using command line options. -GPU mining support testing used [Ethminer](https://github.com/ethereum-mining/ethminer) with the + +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), diff --git a/docs/public-networks/reference/api/index.md b/docs/public-networks/reference/api/index.md index f61c04315d3..3e84a1a5c1d 100644 --- a/docs/public-networks/reference/api/index.md +++ b/docs/public-networks/reference/api/index.md @@ -4861,7 +4861,7 @@ None !!! note - For almost all networks network ID and chain ID are the same. + 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`. From a292910dd82c07dfaf6851e110f8380731f60172 Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Fri, 5 Aug 2022 11:49:26 -0700 Subject: [PATCH 27/31] add HA and plugins material Signed-off-by: Alexandra Tran --- .../concepts/plugins.md} | 2 +- .../reference/plugin-api-interfaces.md} | 4 +- .../how-to/configure-ha/index.md} | 60 +++++++++---------- .../configure-ha/sample-configuration.md} | 4 +- docs/public-networks/how-to/use-pow/mining.md | 1 - mkdocs.navigation.yml | 5 ++ mkdocs.redirects.yml | 6 +- 7 files changed, 45 insertions(+), 37 deletions(-) rename docs/{global/concepts/Plugins.md => private-networks/concepts/plugins.md} (94%) rename docs/{global/reference/Plugin-API-Interfaces.md => private-networks/reference/plugin-api-interfaces.md} (97%) rename docs/{global/how-to/configure/Configure-HA/High-Availability.md => public-networks/how-to/configure-ha/index.md} (58%) rename docs/{global/how-to/configure/Configure-HA/Sample-Configuration.md => public-networks/how-to/configure-ha/sample-configuration.md} (92%) diff --git a/docs/global/concepts/Plugins.md b/docs/private-networks/concepts/plugins.md similarity index 94% rename from docs/global/concepts/Plugins.md rename to docs/private-networks/concepts/plugins.md index ba6b8f67f93..64b5f97d33c 100644 --- a/docs/global/concepts/Plugins.md +++ b/docs/private-networks/concepts/plugins.md @@ -20,7 +20,7 @@ third-party application. The API exposes data about the following components: ![Besu plugin API](../../images/Hyperledger-Besu-Plugin-API.png) -The plugin API provides access to [interfaces](../reference/Plugin-API-Interfaces.md) allowing you +The plugin API provides access to [interfaces](../reference/plugin-api-interfaces.md) allowing you to build the plugin. !!! tip diff --git a/docs/global/reference/Plugin-API-Interfaces.md b/docs/private-networks/reference/plugin-api-interfaces.md similarity index 97% rename from docs/global/reference/Plugin-API-Interfaces.md rename to docs/private-networks/reference/plugin-api-interfaces.md index bf783c9c3bf..2ad22358d2f 100644 --- a/docs/global/reference/Plugin-API-Interfaces.md +++ b/docs/private-networks/reference/plugin-api-interfaces.md @@ -4,7 +4,7 @@ description: Plugin interfaces # Plugin API interfaces -API interfaces in Hyperledger Besu allow users to [build plugins](../concepts/Plugins.md) to +API interfaces in Hyperledger Besu allow users to [build plugins](../concepts/plugins.md) to extend Besu functionality, such as the [Quorum Besu plugins](https://doc.quorumplugins.consensys.net/en/latest/Concepts/Besu-Plugins/Event-Streams/). For more information about the available interfaces, see the @@ -59,4 +59,4 @@ the `https://hyperledger.jfrog.io/hyperledger/besu-maven` repository and the `pl The `start` step can be ignored and your plugin module will be instantiated when the command line interface is parsed and available. -[privacy marker transactions]: ../../private-networks/concepts/privacy/private-transactions/processing.md +[privacy marker transactions]: ../concepts/privacy/private-transactions/processing.md diff --git a/docs/global/how-to/configure/Configure-HA/High-Availability.md b/docs/public-networks/how-to/configure-ha/index.md similarity index 58% rename from docs/global/how-to/configure/Configure-HA/High-Availability.md rename to docs/public-networks/how-to/configure-ha/index.md index acdf56fc23c..382f0224e2f 100644 --- a/docs/global/how-to/configure/Configure-HA/High-Availability.md +++ b/docs/public-networks/how-to/configure-ha/index.md @@ -5,12 +5,12 @@ description: Hyperledger Besu high availability # High availability of JSON-RPC and RPC Pub/Sub APIs To enable high availability to the -[RPC Pub/Sub API over WebSockets](../../../../public-networks/how-to/use-besu-api/rpc-pubsub.md) or the -[JSON-RPC API](../../../../public-networks/how-to/use-besu-api/json-rpc.md), run and synchronize more than one +[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](../../../../images/LoadBalancer.png) +![Load Balancer](../../../images/LoadBalancer.png) !!! important @@ -22,15 +22,15 @@ Use a load balancer to distribute requests across nodes in the cluster that are 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], - [`net_enode`], - [`net_peerCount`], and - [`eth_syncing`]). + 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)). -## Determining when a node is ready +## Determine when a node is ready Use the -[readiness endpoint](../../../../public-networks/how-to/use-besu-api/json-rpc.md#readiness-and-liveness-endpoints) to +[readiness endpoint](../use-besu-api/json-rpc.md#readiness-and-liveness-endpoints) to determine when a node is ready. !!! note @@ -41,23 +41,23 @@ determine when a node is ready. ## Transaction nonces Besu obtains the nonce for the next transaction using -[`eth_getTransactionCount`](../../../../public-networks/reference/api/index.md#eth_gettransactioncount). The nonce +[`eth_getTransactionCount`](../../reference/api/index.md#eth_gettransactioncount). The nonce depends on the transactions in the -[transaction pool](../../../../public-networks/concepts/transactions/pool.md). If sending -[`eth_getTransactionCount`](../../../../public-networks/reference/api/index.md#eth_gettransactioncount) and -[`eth_sendRawTransaction`](../../../../public-networks/reference/api/index.md#eth_sendrawtransaction) requests for a +[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`](../../../../public-networks/reference/api/index.md#eth_gettransactioncount) results +[`eth_getTransactionCount`](../../reference/api/index.md#eth_gettransactioncount) results might be incorrect. !!! note - If using [private transactions], retrieve the - nonce using - [`priv_getTransactionCount`] or - [`priv_getEeaTransactionCount`] + 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`]. + [`eea_sendRawTransaction`](../../../private-networks/reference/api/index.md#eea_sendrawtransaction). To get correct nonces when distributing requests across a cluster, either: @@ -69,17 +69,17 @@ To get correct nonces when distributing requests across a cluster, either: You can subscribe to events using: -* [RPC Pub/Sub over WebSockets](../../../../public-networks/how-to/use-besu-api/rpc-pubsub.md). -* [Filters over HTTP](../../../../public-networks/how-to/use-besu-api/access-logs.md). +* [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 WebSockets](../../../../public-networks/how-to/use-besu-api/rpc-pubsub.md) because +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](../../../../public-networks/how-to/use-besu-api/access-logs.md), configure +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. -## Recovering from dropped subscriptions +## Recover from dropped subscriptions Dropped subscriptions can occur because of: @@ -88,7 +88,7 @@ Dropped subscriptions can occur because of: 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](../../../../public-networks/how-to/use-besu-api/rpc-pubsub.md#subscribing): +[subscription type](../use-besu-api/rpc-pubsub.md#subscribe): * [`newHeads`](#new-headers) * [`logs`](#logs) @@ -100,17 +100,17 @@ node. To recover dropped messages, create another subscription and follow the pr 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`](../../../../public-networks/reference/api/index.md#eth_getblockbynumber). +[`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`](../../../../public-networks/reference/api/index.md#eth_getlogs). +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`](../../../../public-networks/reference/api/index.md#txpool_besutransactions). +[`txpool_besuTransactions`](../../reference/api/index.md#txpool_besutransactions). !!! note @@ -119,7 +119,7 @@ To request all pending transactions for the new node, use ### Dropped pending transactions To request all pending transactions for the new node, use -[`txpool_besuTransactions`](../../../../public-networks/reference/api/index.md#txpool_besutransactions). +[`txpool_besuTransactions`](../../reference/api/index.md#txpool_besutransactions). !!! note @@ -128,4 +128,4 @@ To request all pending transactions for the new node, use ### Syncing The syncing state of each node is specific to that node. To retrieve the syncing state of the new -node, use [`eth_syncing`](../../../../public-networks/reference/api/index.md#eth_syncing). +node, use [`eth_syncing`](../../reference/api/index.md#eth_syncing). diff --git a/docs/global/how-to/configure/Configure-HA/Sample-Configuration.md b/docs/public-networks/how-to/configure-ha/sample-configuration.md similarity index 92% rename from docs/global/how-to/configure/Configure-HA/Sample-Configuration.md rename to docs/public-networks/how-to/configure-ha/sample-configuration.md index 7c8ec23d91d..83fd72bacd1 100644 --- a/docs/global/how-to/configure/Configure-HA/Sample-Configuration.md +++ b/docs/public-networks/how-to/configure-ha/sample-configuration.md @@ -8,7 +8,7 @@ description: Sample load balancers 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](../../../../public-networks/how-to/use-besu-api/json-rpc.md#readiness-and-liveness-endpoints) for +[liveness endpoint](../use-besu-api/json-rpc.md#readiness-and-liveness-endpoints) for health checks. For finer grain control, use the Application Load Balancer: @@ -17,7 +17,7 @@ For finer grain control, use the Application Load Balancer: * Configure multiple listeners with one per port (for example, `30303`, `8545`) you are using and route to the target group. * Use the - [liveness endpoint](../../../../public-networks/how-to/use-besu-api/json-rpc.md#readiness-and-liveness-endpoints) + [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). diff --git a/docs/public-networks/how-to/use-pow/mining.md b/docs/public-networks/how-to/use-pow/mining.md index 428a91a7be4..acc92288b91 100644 --- a/docs/public-networks/how-to/use-pow/mining.md +++ b/docs/public-networks/how-to/use-pow/mining.md @@ -6,7 +6,6 @@ description: Using Hyperledger Besu for PoW CPU 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. diff --git a/mkdocs.navigation.yml b/mkdocs.navigation.yml index 5e2bc1d9b34..7009d66ef2e 100644 --- a/mkdocs.navigation.yml +++ b/mkdocs.navigation.yml @@ -43,6 +43,9 @@ nav: - Configure logging: public-networks/how-to/monitor/logging.md - Use a configuration file: public-networks/how-to/configuration-file.md - Pass JVM options: public-networks/how-to/pass-jvm-options.md + - Configure high availability: + - public-networks/how-to/configure-ha/index.md + - Sample load balancer configurations: public-networks/how-to/configure-ha/sample-configuration.md - Develop dapps: - Use Truffle: public-networks/how-to/develop/truffle.md - Use client libraries: public-networks/how-to/develop/client-libraries.md @@ -157,6 +160,7 @@ nav: - Onchain permissioning: private-networks/concepts/permissioning/onchain.md - Permissioning plugin: private-networks/concepts/permissioning/plugin.md - Public key infrastructure: private-networks/concepts/pki.md + - Plugins: private-networks/concepts/plugins.md - Tutorials: - Quorum Developer Quickstart: private-networks/tutorials/quickstart.md - Create a QBFT network: private-networks/tutorials/qbft.md @@ -197,3 +201,4 @@ nav: - private-networks/reference/api/index.md - Private network API objects: private-networks/reference/api/objects.md - Accounts for testing: private-networks/reference/accounts-for-testing.md + - Plugin API interfaces: private-networks/reference/plugin-api-interfaces.md diff --git a/mkdocs.redirects.yml b/mkdocs.redirects.yml index c003012a51a..e1c013ab984 100644 --- a/mkdocs.redirects.yml +++ b/mkdocs.redirects.yml @@ -23,7 +23,7 @@ plugins: HowTo/Get-Started/Install-Binaries.md: public-networks/get-started/install/binary-distribution.md HowTo/Get-Started/Build-from-source.md: public-networks/get-started/install/index.md HowTo/Get-Started/Run-Docker-Image.md: public-networks/get-started/install/run-docker-image.md - # HowTo/Deploy/High-Availability.md: global/how-to/configure/Configure-HA/High-Availability.md + HowTo/Deploy/index.md: public-networks/how-to/configure-ha/index.md HowTo/Deploy/Monitoring-Performance.md: public-networks/how-to/monitor/metrics.md HowTo/Upgrade/Upgrade-Network.md: public-networks/how-to/upgrade-node.md HowTo/Find-and-Connect/Using-UPnP.md: public-networks/how-to/connect/specify-nat.md @@ -191,3 +191,7 @@ plugins: Concepts/Transactions/Transaction-Pool.md: public-networks/concepts/transactions/pool.md Concepts/Transactions/Transaction-Types.md: public-networks/concepts/transactions/types.md Concepts/Transctions/Transction-Validation.md: public-networks/concepts/transactions/validation.md + Concepts/Plugins.md: private-networks/concepts/plugins.md + Reference/Plugin-API-Interfaces.md: private-networks/reference/plugin-api-interfaces.md + HowTo/Configure/Configure-HA/High-Availability.md: public-networks/how-to/configure-ha/index.md + HowTo/Configure/Configure-HA/Sample-Configuration.md: pubic-networks/how-to/configure-ha/sample-configuration.md From f7a739a63352f5f22d5a6fb12befb97502080446 Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Fri, 5 Aug 2022 11:49:36 -0700 Subject: [PATCH 28/31] minor addition Signed-off-by: Alexandra Tran --- docs/private-networks/how-to/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/private-networks/how-to/index.md b/docs/private-networks/how-to/index.md index 8d7cbd89fac..8119a544167 100644 --- a/docs/private-networks/how-to/index.md +++ b/docs/private-networks/how-to/index.md @@ -12,6 +12,7 @@ content can be found in the public networks section: - Configuration: - [Use a configuration file](../../public-networks/how-to/configuration-file.md) - [Pass JVM options](../../public-networks/how-to/pass-jvm-options.md) + - [Configure high availability](../../public-networks/how-to/configure-ha/index.md) - [Configure mining](../../public-networks/how-to/use-pow/mining.md) - [Use the Besu API](../../public-networks/how-to/use-besu-api/index.md): - [Use JSON-RPC over HTTP, WS, and IPC](../../public-networks/how-to/use-besu-api/json-rpc.md) From 21535bc1b9511fae4500a6df9a7e32101e7eb984 Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Fri, 5 Aug 2022 11:52:08 -0700 Subject: [PATCH 29/31] fix typo Signed-off-by: Alexandra Tran --- mkdocs.redirects.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs.redirects.yml b/mkdocs.redirects.yml index e1c013ab984..35dfb4d168e 100644 --- a/mkdocs.redirects.yml +++ b/mkdocs.redirects.yml @@ -194,4 +194,4 @@ plugins: Concepts/Plugins.md: private-networks/concepts/plugins.md Reference/Plugin-API-Interfaces.md: private-networks/reference/plugin-api-interfaces.md HowTo/Configure/Configure-HA/High-Availability.md: public-networks/how-to/configure-ha/index.md - HowTo/Configure/Configure-HA/Sample-Configuration.md: pubic-networks/how-to/configure-ha/sample-configuration.md + HowTo/Configure/Configure-HA/Sample-Configuration.md: public-networks/how-to/configure-ha/sample-configuration.md From 9c1e27a68de3edad4ad271412909dc710e46df0b Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Fri, 5 Aug 2022 11:58:25 -0700 Subject: [PATCH 30/31] Integrate more feedback Signed-off-by: Alexandra Tran --- docs/public-networks/how-to/connect/manage-peers.md | 3 ++- mkdocs.navigation.yml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/public-networks/how-to/connect/manage-peers.md b/docs/public-networks/how-to/connect/manage-peers.md index 9874afd7135..d71c26f9bfc 100644 --- a/docs/public-networks/how-to/connect/manage-peers.md +++ b/docs/public-networks/how-to/connect/manage-peers.md @@ -16,7 +16,8 @@ in small, stable networks. You can use [`admin_addPeer`](../../reference/cli/options.md#admin_addpeer) to attempt a specific connection, but this isn't P2P discovery. -We recommend [using bootnodes](../../../private-networks/how-to/configure/bootnodes.md) to initially discover peers. +In private networks, we recommend [using bootnodes](../../../private-networks/how-to/configure/bootnodes.md) +to initially discover peers. ## Limit peers diff --git a/mkdocs.navigation.yml b/mkdocs.navigation.yml index 7009d66ef2e..aac76c60b54 100644 --- a/mkdocs.navigation.yml +++ b/mkdocs.navigation.yml @@ -30,6 +30,7 @@ nav: - Authenticate JSON-RPC requests: public-networks/how-to/use-besu-api/authenticate.md - Access logs using JSON-RPC: public-networks/how-to/use-besu-api/access-logs.md - Use the Engine API: public-networks/how-to/use-engine-api.md + - Use a configuration file: public-networks/how-to/configuration-file.md - Create and send transactions: public-networks/how-to/send-transactions.md - Connect to a network: - Sync Besu: public-networks/how-to/connect/sync-node.md @@ -41,7 +42,6 @@ nav: - public-networks/how-to/monitor/index.md - Use metrics: public-networks/how-to/monitor/metrics.md - Configure logging: public-networks/how-to/monitor/logging.md - - Use a configuration file: public-networks/how-to/configuration-file.md - Pass JVM options: public-networks/how-to/pass-jvm-options.md - Configure high availability: - public-networks/how-to/configure-ha/index.md From 1a93fa0e0b942dd9ab4edec1f4c462327f60f4fa Mon Sep 17 00:00:00 2001 From: Alexandra Tran Date: Fri, 5 Aug 2022 12:16:55 -0700 Subject: [PATCH 31/31] minor edits Signed-off-by: Alexandra Tran --- docs/private-networks/get-started/start-node.md | 4 +--- docs/public-networks/get-started/start-node.md | 4 ++-- docs/public-networks/index.md | 9 ++++++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/private-networks/get-started/start-node.md b/docs/private-networks/get-started/start-node.md index a1754f6c978..6b4b3cb57a8 100644 --- a/docs/private-networks/get-started/start-node.md +++ b/docs/private-networks/get-started/start-node.md @@ -2,9 +2,7 @@ description: Starting Hyperledger Besu --- -# Start Hyperledger Besu - -Nodes can connect to the Ethereum Mainnet, public testnets such as Ropsten, or private networks. +# Start Besu Use the [`besu`](../reference/cli/options.md) command with the required command line options to start a node. Alternatively, use the [launcher](#besu-launcher) to start Besu interactively diff --git a/docs/public-networks/get-started/start-node.md b/docs/public-networks/get-started/start-node.md index dd2e5e096d5..5c89370e408 100644 --- a/docs/public-networks/get-started/start-node.md +++ b/docs/public-networks/get-started/start-node.md @@ -2,9 +2,9 @@ description: Starting Hyperledger Besu --- -# Start Hyperledger Besu +# Start Besu -Nodes can connect to the Ethereum Mainnet, public testnets such as Ropsten, or private networks. +Nodes can connect to Ethereum Mainnet and public testnets such as Ropsten. Use the [`besu`](../reference/cli/options.md) command with the required command line options to start a node. Alternatively, use the [launcher](#besu-launcher) to start Besu interactively diff --git a/docs/public-networks/index.md b/docs/public-networks/index.md index 9954271be9b..84dfb1cc8ed 100644 --- a/docs/public-networks/index.md +++ b/docs/public-networks/index.md @@ -4,7 +4,10 @@ description: Public networks overview # Hyperledger Besu for public networks -Besu serves as an [execution client](concepts/the-merge.md) on public proof-of-stake Ethereum -networks such as Ethereum Mainnet, Ropsten, Goerli, Sepolia, and the Merge testnet. +Besu serves as an [execution client](concepts/the-merge.md#execution-clients) on public +proof-of-stake Ethereum networks such as Ethereum Mainnet, Ropsten, Goerli, Sepolia, and the Merge +testnet. -You can also run Besu using proof of work on [Ethereum Classic](how-to/use-pow/mining.md). +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).