Docker-compose based Ethereum Network Validator Nodes set up as a private network (example uses IBFT consensus) with nodes connecting to each other via the public internet.
- Start the network with
docker-compose up
in one terminal npm install
npm run compile
(Optional, the compiled contract is committed)node deploy.js
node index.js
Install go: https://golang.org/dl/
Install the actual tool: go get github.com/getamis/istanbul-tools/cmd/istanbul
This will install it under your $GOPATH, so in order to be able to use istanbul
you need to make sure $GOPATH/bin
is in your $PATH
Now if you type istanbul
, you should see:
NAME:
istanbul - the istanbul-tools command line interface
USAGE:
istanbul [global options] command [command options] [arguments...]
VERSION:
v1.0.0
COMMANDS:
extra Istanbul extraData manipulation
setup Setup your Istanbul network in seconds
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help
--version, -v print the version
COPYRIGHT:
Copyright 2017 The AMIS Authors
istanbul setup --num 4 --docker-compose --save
docker-compose up
- Install geth
geth attach http://localhost:8545
- Run
personnal.newAccount
, enter a password - log into validator-0 container and retrieve the account
- modify docker-compose to include that file in validator-0
- modify docker-compose to give eth to the new account in the genesis block(for each nodes)
- modify docker-compose to unlock at start up(
--unlock '0' --password '/eth/password.txt'
) - if you want the chain data to persist, add a volume for each validator and map it to
/eth
in each validator(or node)
You can look at docker-compose.yml for the end result.