Documentation; 'deposits create' can now ask for a private key
This commit is contained in:
parent
d16676b294
commit
87928e0069
9
Makefile
9
Makefile
|
@ -20,6 +20,7 @@ BASE_PORT := 9000
|
||||||
BASE_RPC_PORT := 9190
|
BASE_RPC_PORT := 9190
|
||||||
BASE_METRICS_PORT := 8008
|
BASE_METRICS_PORT := 8008
|
||||||
GOERLI_WEB3_URL := "wss://goerli.infura.io/ws/v3/6224f3c792cc443fafb64e70a98f871e"
|
GOERLI_WEB3_URL := "wss://goerli.infura.io/ws/v3/6224f3c792cc443fafb64e70a98f871e"
|
||||||
|
VALIDATORS := 1
|
||||||
|
|
||||||
# unconditionally built by the default Make target
|
# unconditionally built by the default Make target
|
||||||
TOOLS := \
|
TOOLS := \
|
||||||
|
@ -162,8 +163,6 @@ clean-testnet0:
|
||||||
clean-testnet1:
|
clean-testnet1:
|
||||||
rm -rf build/data/testnet1*
|
rm -rf build/data/testnet1*
|
||||||
|
|
||||||
# - we're getting the preset from a testnet-specific .env file
|
|
||||||
# - try SCRIPT_PARAMS="--skipGoerliKey"
|
|
||||||
testnet0 testnet1: | beacon_node build deps
|
testnet0 testnet1: | beacon_node build deps
|
||||||
build/beacon_node \
|
build/beacon_node \
|
||||||
--network=$@ \
|
--network=$@ \
|
||||||
|
@ -175,7 +174,11 @@ clean-altona:
|
||||||
rm -rf build/data/shared_altona*
|
rm -rf build/data/shared_altona*
|
||||||
|
|
||||||
altona-deposit: | beacon_node build deps
|
altona-deposit: | beacon_node build deps
|
||||||
build/beacon_node deposits create --network=altona
|
build/beacon_node deposits create \
|
||||||
|
--network=altona \
|
||||||
|
--count=$(VALIDATORS) \
|
||||||
|
--ask-for-key \
|
||||||
|
--web3-url=$(GOERLI_WEB3_URL)
|
||||||
|
|
||||||
altona: | beacon_node build deps
|
altona: | beacon_node build deps
|
||||||
build/beacon_node \
|
build/beacon_node \
|
||||||
|
|
32
README.md
32
README.md
|
@ -109,36 +109,34 @@ apt install build-essential git libpcre3-dev
|
||||||
|
|
||||||
### Connecting to testnets
|
### Connecting to testnets
|
||||||
|
|
||||||
Nimbus connects to any of the testnets published in the [eth2-clients/eth2-testnets repo](https://github.com/eth2-clients/eth2-testnets/tree/master/nimbus).
|
Once the [prerequisites](#prerequisites) are installed you can connect to the [Altona testnet](https://github.com/goerli/altona) with the following commands:
|
||||||
|
|
||||||
Once the [prerequisites](#prerequisites) are installed you can connect to the [Witti testnet](https://github.com/goerli/witti) with the following commands:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/status-im/nim-beacon-chain
|
git clone https://github.com/status-im/nim-beacon-chain
|
||||||
cd nim-beacon-chain
|
cd nim-beacon-chain
|
||||||
make witti # This will build Nimbus and all other dependencies
|
make altona # This will build Nimbus and all other dependencies
|
||||||
# and connect you to Witti
|
# and connect you to Altona
|
||||||
```
|
|
||||||
|
|
||||||
Sometimes, you may want to disable the interactive prompt asking you for a Goerli key in order to become a validator:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
make SCRIPT_PARAMS="--skipGoerliKey" witti # not a validator
|
|
||||||
```
|
```
|
||||||
|
|
||||||
You can also start multiple local nodes, in different terminal windows/tabs, by specifying their numeric IDs:
|
You can also start multiple local nodes, in different terminal windows/tabs, by specifying their numeric IDs:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make SCRIPT_PARAMS="--nodeID=0" witti # the default
|
make altona NODE_ID=0 # the default
|
||||||
make SCRIPT_PARAMS="--nodeID=1" witti
|
make altona NODE_ID=1
|
||||||
make SCRIPT_PARAMS="--nodeID=2" witti
|
make altona NODE_ID=2
|
||||||
|
```
|
||||||
|
|
||||||
|
If you wish to make a deposit, execute the following command:
|
||||||
|
|
||||||
|
```
|
||||||
|
make altona-deposit VALIDATORS=2 # The default is just 1 deposit
|
||||||
```
|
```
|
||||||
|
|
||||||
### Getting metrics from a local testnet client
|
### Getting metrics from a local testnet client
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# the primitive HTTP server started to serve the metrics is considered insecure
|
# the primitive HTTP server started to serve the metrics is considered insecure
|
||||||
make NIMFLAGS="-d:insecure" witti
|
make NIMFLAGS="-d:insecure" altona
|
||||||
```
|
```
|
||||||
|
|
||||||
You can now see the raw metrics on http://127.0.0.1:8008/metrics but they're not very useful like this, so let's feed them to a Prometheus instance:
|
You can now see the raw metrics on http://127.0.0.1:8008/metrics but they're not very useful like this, so let's feed them to a Prometheus instance:
|
||||||
|
@ -216,7 +214,7 @@ make eth2_network_simulation WAIT_GENESIS=yes
|
||||||
You can also separate the output from each beacon node in its own panel, using [multitail](http://www.vanheusden.com/multitail/):
|
You can also separate the output from each beacon node in its own panel, using [multitail](http://www.vanheusden.com/multitail/):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make USE_MULTITAIL="yes" eth2_network_simulation
|
make eth2_network_simulation USE_MULTITAIL="yes"
|
||||||
```
|
```
|
||||||
|
|
||||||
You can find out more about it in the [development update](https://our.status.im/nimbus-development-update-2018-12-2/).
|
You can find out more about it in the [development update](https://our.status.im/nimbus-development-update-2018-12-2/).
|
||||||
|
@ -435,4 +433,4 @@ or
|
||||||
|
|
||||||
* Apache License, Version 2.0, ([LICENSE-APACHEv2](LICENSE-APACHEv2) or http://www.apache.org/licenses/LICENSE-2.0)
|
* Apache License, Version 2.0, ([LICENSE-APACHEv2](LICENSE-APACHEv2) or http://www.apache.org/licenses/LICENSE-2.0)
|
||||||
|
|
||||||
at your option. These files may not be copied, modified, or distributed except according to those terms.
|
at your option. These files may not be copied, modified, or distributed except according to those terms.
|
||||||
|
|
|
@ -1331,6 +1331,19 @@ programMain:
|
||||||
of deposits:
|
of deposits:
|
||||||
case config.depositsCmd
|
case config.depositsCmd
|
||||||
of DepositsCmd.create:
|
of DepositsCmd.create:
|
||||||
|
if config.askForKey and config.depositPrivateKey.len == 0:
|
||||||
|
let
|
||||||
|
depositsWord = if config.totalDeposits > 1: "deposits"
|
||||||
|
else: "deposit"
|
||||||
|
totalEthNeeded = 32 * config.totalDeposits
|
||||||
|
|
||||||
|
echo "Please enter your Goerli Eth1 private key in hex form " &
|
||||||
|
"(e.g. 0x1a2...f3c) in order to make your $1 (you'll need " &
|
||||||
|
"access to $2 GoETH)" % [depositsWord, $totalEthNeeded]
|
||||||
|
|
||||||
|
if not readPasswordFromStdin("> ", TaintedString config.depositPrivateKey):
|
||||||
|
error "Failed to read an Eth1 private key from standard input"
|
||||||
|
|
||||||
createDir(config.outValidatorsDir)
|
createDir(config.outValidatorsDir)
|
||||||
createDir(config.outSecretsDir)
|
createDir(config.outSecretsDir)
|
||||||
|
|
||||||
|
|
|
@ -308,6 +308,11 @@ type
|
||||||
desc: "Output folder for randomly generated keystore passphrases"
|
desc: "Output folder for randomly generated keystore passphrases"
|
||||||
name: "out-secrets-dir" }: string
|
name: "out-secrets-dir" }: string
|
||||||
|
|
||||||
|
askForKey* {.
|
||||||
|
defaultValue: false
|
||||||
|
desc: "Ask for an Eth1 private key used to fund the deposits"
|
||||||
|
name: "ask-for-key" }: bool
|
||||||
|
|
||||||
dontSend* {.
|
dontSend* {.
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
desc: "By default, all created deposits are also immediately sent " &
|
desc: "By default, all created deposits are also immediately sent " &
|
||||||
|
|
|
@ -182,7 +182,6 @@ proc sendDeposits*(deposits: seq[Deposit],
|
||||||
|
|
||||||
let depositContract = web3.contractSender(DepositContract,
|
let depositContract = web3.contractSender(DepositContract,
|
||||||
Address depositContractAddress)
|
Address depositContractAddress)
|
||||||
|
|
||||||
for i, dp in deposits:
|
for i, dp in deposits:
|
||||||
let status = await depositContract.deposit(
|
let status = await depositContract.deposit(
|
||||||
Bytes48(dp.data.pubKey.toRaw()),
|
Bytes48(dp.data.pubKey.toRaw()),
|
||||||
|
|
|
@ -9,14 +9,13 @@ cd "$(dirname "${BASH_SOURCE[0]}")/../.."
|
||||||
|
|
||||||
[[ -z "$1" ]] && { echo "Usage: $(basename $0) YOUR_ETH1_PRIVATE_GOERLI_KEY"; exit 1; }
|
[[ -z "$1" ]] && { echo "Usage: $(basename $0) YOUR_ETH1_PRIVATE_GOERLI_KEY"; exit 1; }
|
||||||
|
|
||||||
# TODO: make "witti" a parameter
|
|
||||||
|
|
||||||
echo -ne "About to delete \"build/data/shared_witti_0\".\nMake a backup, if you need to, then press Enter. >"
|
echo -ne "About to delete \"build/data/shared_witti_0\".\nMake a backup, if you need to, then press Enter. >"
|
||||||
read TMP
|
read TMP
|
||||||
make clean-witti
|
make clean-altona
|
||||||
|
make beacon_node
|
||||||
|
|
||||||
for N in $(seq 6 9); do
|
for N in $(seq 6 9); do
|
||||||
make SCRIPT_PARAMS="--becomeValidatorOnly --privateGoerliKey=$1" witti && \
|
build/beacon_node deposits create --deposit-private-key=$1 --dont-send && \
|
||||||
ssh node-0${N}.aws-eu-central-1a.nimbus.test.statusim.net "sudo rm -rf /docker/beacon-node-testnet2-1/data/nim-beacon-chain/build/data/shared_witti_0/secrets" && \
|
ssh node-0${N}.aws-eu-central-1a.nimbus.test.statusim.net "sudo rm -rf /docker/beacon-node-testnet2-1/data/nim-beacon-chain/build/data/shared_witti_0/secrets" && \
|
||||||
ssh node-0${N}.aws-eu-central-1a.nimbus.test.statusim.net "sudo rm -rf /docker/beacon-node-testnet2-1/data/nim-beacon-chain/build/data/shared_witti_0/validators" && \
|
ssh node-0${N}.aws-eu-central-1a.nimbus.test.statusim.net "sudo rm -rf /docker/beacon-node-testnet2-1/data/nim-beacon-chain/build/data/shared_witti_0/validators" && \
|
||||||
rsync -a -zz --rsync-path="sudo rsync" build/data/shared_witti_0/{secrets,validators} node-0${N}.aws-eu-central-1a.nimbus.test.statusim.net:/docker/beacon-node-testnet2-1/data/nim-beacon-chain/build/data/shared_witti_0/ && \
|
rsync -a -zz --rsync-path="sudo rsync" build/data/shared_witti_0/{secrets,validators} node-0${N}.aws-eu-central-1a.nimbus.test.statusim.net:/docker/beacon-node-testnet2-1/data/nim-beacon-chain/build/data/shared_witti_0/ && \
|
||||||
|
|
Loading…
Reference in New Issue