Important Note & Disclaimer
- The master branch (you're here) contains the setup code for a local deployment on your machine.
- The remote branch contains setup code for a remote deployment on different servers; replace IP's and domain names accordingly.
- The code in this repository is highly experimental. Do not use it for anything security-critical. All usage at your own risk.
This repository generates all required preliminaries for a successful election for you to run on your localhost. The setup script is divided into multiple substeps, which are
- Generate a new PoA genesis block holding a fixed amount of pre-allocated accounts. Further, the corresonding private keys are sent to the Mock Identity provider you should be running on port 8090.
- Start a
poa-private-netwith 5 sealer nodes initializing with the previously generated genesis block. Also,
eth-netstatsis started to give an overview of the private network.
├── README.md ├── clean.sh #just deletes genesis.json and privatekeys.json ├── genesis.json # will be overwritten by steps/01-generate-keypairs every time ./setup is run ├── install.sh # inits & updates submodules and installs all npm projects ├── logs │ └── output.log # tail this ├── node_modules # contains relevant modules for step 01 ├── package-lock.json ├── package.json ├── privatekeys.json # will be overwritten by steps/01-generate-keypairs every time ./setup is run ├── resources # contains the submodules │ ├── eth-contracts # smart contract submodule deploying proxy contract │ └── poa-private-net # submodule containing a PoA 5 node private network ├── setup.sh # runs steps 01 - 03 ├── steps │ ├── 01-generate-keypairs │ ├── 02-start-eth-private-net └── teardown.sh # mainly tears down the private network & subsequently created / generated files and processes
The following requirements must be installed / executed
- As a starter, make sure you have the following things installed:
- The backend is running on
- The frontend is running on
- The frontend-voter is running on
eth-netstatswill run on
http://localhost:3002after ./setup sucessfully finished running.
- The mock-identity-provider is running on PORT 8090.
You may be prompted to enter your password.
Invoke the setup script from the root directory:
The most relevant output log can be tailed with
tail -f logs/output.log.
The parameters for the election can be easily configured by directly editing
.envin the project root.
NUMBER_OF_KEYS defines the number of private keys that are generated and then distributed to the eligible voters by the mock identity provider.
MOCK_IDENTITY_PROVIDER defines a hostname and port for the mock-identity-provider.
The rest of
.env are parameters (e.g. GENESIS_CONFIG_*) for the genesis block that is generated for the private network.
You should only change parameters if you know what you're doing. Else refer to Genesis file explained. Be aware:
Puppeth was used to generate the appropriate
genesis.json and is currently hardcoded.
The second step starts the private network with 5 pre-configured sealer nodes which are located in resources/poa-private-net/.
The main script is an adapted version of
eth-private-net by Vincent Chu
The nodes are initialized with the previously generated genesis block. Then, the geth nodes are started with the parameters defined in
poa-private-net on the RPC ports
pm2 has been sucessfully installed and
npm install &
grunt all were sucessful, pm2 is started using provotum.json, pre-defining the 5 nodes. If you want to change anything in the 5 node setup, you need to regenerate the
.json accordingly and also use puppeth to generate valid extradata.
eth-netstats is started on
http://localhost:3002 and should display 5 functioning nodes.
Invoke the teardown script from the root directory: