Documentation; 'deposits create' can now ask for a private key

This commit is contained in:
Zahary Karadjov 2020-07-10 18:18:14 +03:00
parent d16676b294
commit 87928e0069
No known key found for this signature in database
GPG Key ID: C8936F8A3073D609
6 changed files with 42 additions and 25 deletions

View File

@ -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 \

View File

@ -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/).

View File

@ -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)

View File

@ -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 " &

View File

@ -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()),

View File

@ -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/ && \