- One of the following operating systems is required:
- Linux on x86_64 architecture
- macOS on an Intel processor (M1 processor not supported yet)
- Windows 64-bit edition, with:
- Windows Subsystem for Linux 2
- Docker desktop configured to use the WSL2-based engine
- Docker and Docker-compose
- Node.js version 12 or higher
You can follow this walk-through which details the entire process.
To create the docker-compose file and artifacts, run:
Follow the prompts displayed.
When installation is complete, refer to
README.md in the installation directory for more information
on your test network. Optionally, refer to the previously mentioned walk-through.
At the prompt Do you wish to enable support for private transactions?, enter
Y to get three Besu nodes, with each
node having a corresponding Tessera node for privacy. You can access the Besu member nodes for API calls and
Follow the privacy walk-through which details how to send private transactions, and interact with deployed private contracts.
At the prompt Do you wish to enable support for logging with Splunk or ELK?, choose None to use only the default monitoring tools, Prometheus and Grafana, which let you visualize node health and usage. The quickstart tutorial contains Prometheus and Grafana usage and configuration information.
Choose Splunk to use the default monitoring tools and Splunk monitoring.
Choose ELK to use the default monitoring tools and ELK logging.
At the prompt Do you wish to enable support for monitoring your network with BlockScout?, enter
Y to start
BlockScout’s Docker image is resource heavy when running. Ensure you have adequate CPU resources dedicated to the container.
The quickstart BlockScout configuration is available as a reference for your own network.
Smart contracts and dapps
You can use the Pet Shop demo dapp provided by Truffle which runs a local website using Docker, and uses smart contracts deployed on the network.
The directory created by
quorum-dev-quickstart includes a
dapps/pet-shop directory which contains
the source code for the dapp, including the smart contracts, website, and configurations to run
Follow the dapp walk-through which details how to deploy the dapp and interact with the network.
Add a new node to the network
New nodes joining an existing network require the following:
- The same genesis file used by all other nodes on the running network.
- A list of nodes to connect to; this is done by specifying bootnodes, or by providing a list of static nodes.
- A node key pair and optionally an account. If the running network is using permissions, then you need to add the new node’s enode details to the permissions file used by existing nodes, or update the onchain permissioning contract.
The following steps describe the process to add a new node to the Developer Quickstart.
1. Create the node key files
Create a node key pair and account for a new node by running the following script:
cd ./extra npm install node generate_node_keys.js --password "Password"
--password parameter is optional.
2. Create new node directory
Navigate to the directory where the configuration files for the network were created.
The directory was specified in an earlier step when running
npx quorum-dev-quickstart. The default
config/nodes directory, create a subdirectory for the new node (for example,
newnode), and move the
accountkey files from the previous step into this directory.
3. Update docker-compose
Add an entry for the new node into the docker-compose file:
newnode: <<: *besu-def container_name: newnode volumes: - public-keys:/opt/besu/public-keys/ - ./config/besu/:/config - ./config/nodes/newnode:/opt/besu/keys - ./logs/besu:/tmp/besu depends_on: - validator1 networks: quorum-dev-quickstart: ipv4_address: 172.16.239.41
Select an IP address and port map not being used for the other containers. Additionally mount the newly created
./config/nodes/newnode to the
/opt/besu/keys directory of the new node, as seen in the example above.
4. Update Prometheus configuration
prometheus.yml in the
./config/prometheus/ directory to configure metrics to display in Grafana.
Insert the following under
scrape_configs section in the file. Ensure you change
appropriately if you’ve updated them.
- job_name: newnode scrape_interval: 15s scrape_timeout: 10s metrics_path: /metrics scheme: http static_configs: - targets: [newnode:9545]
5. Update files with the enode address
Add the new node’s enode address to the static nodes file and permissions file.
The enode uses the format
4540ea...9c1d78 and the IP address is
172.16.239.41, then the enode
address would be
which must be added to both files.
Alternatively, call the
API method on existing nodes to add the new node without requiring a restart.
Please note that calling the API method by itself will only persist for as long as the nodes remain online and will be lost on next restart.
On a live network, the new node must be added to the permissions file so that subsequent restarts of the nodes are aware of the change.