You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| jpmorganchase/quorum-builder | build environment | NO |
27
-
| istanbul-tools | IBFT CLI Tool | NO |
28
-
29
-
### Tools
30
-
31
-
`setup.sh` depends upon [jq](https://stedolan.github.io/jq/). Please ensure this `jq` is installed
32
-
33
-
## Generate configuration artifacts and docker-compose.yml
34
-
35
-
```
36
-
cd examples
37
-
./setup.sh
38
-
```
39
-
40
-
The *setup.sh* script creates a basic Quorum network with Raft consensus. There's a whole bunch of things it needs to do in order to achieve this, some specific to Quorum, some common to private Ethereum chains in general.
41
-
42
-
The following arguments are supported:
43
-
```
44
-
-n, --nodes Number of Quorum nodes to generate. Default: 5. Can use "x+y" syntax to specify validators and non-validators. For instance, "./setup.sh -n 3+2 -c ibft" means generating 3 validators and 2 non-validators
45
-
-c, --consensus Consensus to use. Valid values are raft and ibft. Default: raft
46
-
-b, --blockperiod Applicable to IBFT only. The interval to produce blocks. The closely related parameter, istanbul.requesttimeout, will be automatically calculated by adding 10sec to the blockperiod value in order to make the configuration work.
47
-
```
48
-
49
-
1. bootnode
50
-
A bootnode is used in the network so that the geth nodes does not attempt to contact the well-known nodes in the public networks during p2p discovery. The script generates a node key for the bootnode and calculates its public address to be used in the geth node's `--bootnodes` argument.
51
-
52
-
2. for each Quorum node
53
-
The script generates all configuration files for the geth node in the `ethereum` folder. Inside the folder:
| jpmorganchase/quorum-builder | build environment | NO |
54
27
55
-
**nodekey* file to uniquely identify this node on the network.
56
-
**static-nodes.json* file that lists the Enode IDs of nodes that participate in the initial Raft cluster. Additional nodes can be added to the Raft cluster which is described [here](#adding-new-nodes-to-an-existing-network).
57
-
**permissioned-nodes.json* file that captures the list of Enode IDs allowed to connect to each other in this network instance.
58
-
* Ether accounts are generated in the *keystore* directory
59
-
* The accounts get written into the *genesis.json* file with an initial balance
60
-
61
-
3. docker-compose.yml
62
-
This makes it trivial to launch the network
63
-
64
-
Refer to the *setup.sh* file itself for the full code.
65
-
66
-
## Launch the network
28
+
## Launch the sample network
67
29
68
30
run the command below from the `examples` directory
69
31
70
32
```
71
-
docker-compose -f tmp/docker-compose.yml up
33
+
docker-compose up
72
34
```
73
35
74
36
## Advanced Topics
@@ -89,26 +51,4 @@ The configuration files for the Quorum nodes in Quorum are saved under the `ethe
89
51
│ └── permissioned-nodes.json
90
52
└── logs/
91
53
92
-
On the Docker host, a *qdata_N/* directory for each node is created with the structure above. When the network is started, this will be mapped by the *docker-compose.yml* file to each container's internal */qdata/* directory.
93
-
94
-
### Adding new nodes to an existing network
95
-
96
-
The docker image jpmorganchase/quorum uses a startup script that is designed to start the node in one of the following modes:
97
-
1. part of the initial Raft cluster. Notice in the docker-compose.yml file, the following command is used for this purpose:
Note: the number `5` is the placeholder of the Raft node ID returned by calling `raft.addPeer()` in the geth console connected to an existing geth node of the network.
On the Docker host, a _qdata_N/_ directory for each node is created with the structure above. When the network is started, this will be mapped by the _docker-compose.yml_ file to each container's internal _/qdata/_ directory.
0 commit comments