bump version (#1964)

* bump version

* update version format to "standard" style

* remove zinken/attacknet (both networks deprecated)

* add mainnet warning
This commit is contained in:
Jacek Sieka 2020-11-07 08:45:55 +01:00 committed by GitHub
parent fb6ce5c804
commit d2476b643a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 40 additions and 305 deletions

View File

@ -309,65 +309,6 @@ medalla-deposit: | beacon_node_spec_0_12_3 signing_process deposit_contract
clean-medalla:
$(call CLEAN_NETWORK,medalla)
###
### zinken
###
zinken: | beacon_node signing_process
$(call CONNECT_TO_NETWORK,zinken,beacon_node)
zinken-vc: | beacon_node signing_process validator_client
$(call CONNECT_TO_NETWORK_WITH_VALIDATOR_CLIENT,zinken,beacon_node)
ifneq ($(LOG_LEVEL), TRACE)
zinken-dev:
+ "$(MAKE)" LOG_LEVEL=TRACE $@
else
zinken-dev: | beacon_node signing_process
$(call CONNECT_TO_NETWORK_IN_DEV_MODE,zinken,beacon_node)
endif
zinken-deposit-data: | beacon_node signing_process deposit_contract
$(call MAKE_DEPOSIT_DATA,zinken)
zinken-deposit: | beacon_node signing_process deposit_contract
$(call MAKE_DEPOSIT,zinken)
clean-zinken:
$(call CLEAN_NETWORK,zinken)
###
### spadina
###
clean-spadina:
$(call CLEAN_NETWORK,spadina)
###
### attacknet-beta1-mc-0
###
attacknet-beta1-mc-0: | beacon_node signing_process
$(call CONNECT_TO_NETWORK,attacknet-beta1-mc-0,beacon_node)
attacknet-beta1-mc-0-vc: | beacon_node signing_process validator_client
$(call CONNECT_TO_NETWORK_WITH_VALIDATOR_CLIENT,attacknet-beta1-mc-0,beacon_node)
ifneq ($(LOG_LEVEL), TRACE)
attacknet-beta1-mc-0-dev:
+ "$(MAKE)" LOG_LEVEL=TRACE $@
else
attacknet-beta1-mc-0-dev: | beacon_node signing_process
$(call CONNECT_TO_NETWORK_IN_DEV_MODE,attacknet-beta1-mc-0,beacon_node)
endif
attacknet-beta1-mc-0-deposit-data: | beacon_node signing_process deposit_contract
$(call MAKE_DEPOSIT_DATA,attacknet-beta1-mc-0)
attacknet-beta1-mc-0-deposit: | beacon_node signing_process deposit_contract
$(call MAKE_DEPOSIT,attacknet-beta1-mc-0)
clean-attacknet-beta1-mc-0:
$(call CLEAN_NETWORK,attacknet-beta1-mc-0)
ctail: | build deps
mkdir -p vendor/.nimble/bin/
$(ENV_SCRIPT) nim -d:danger -o:vendor/.nimble/bin/ctail c vendor/nim-chronicles-tail/ctail.nim

View File

@ -1115,6 +1115,8 @@ programMain:
echo "Wrote ", bootstrapFile
of noCommand:
warn "You are running an alpha version of Nimbus - it is not suitable for mainnet!",
version = fullVersionStr
info "Launching beacon node",
version = fullVersionStr,
bls_backend = $BLS_BACKEND,

View File

@ -167,10 +167,8 @@ template eth2testnet(path: string): Eth2NetworkMetadata =
const
medallaMetadata* = eth2testnet "shared/medalla"
zinkenMetadata* = eth2testnet "shared/zinken"
testnet0Metadata* = eth2testnet "nimbus/testnet0"
testnet1Metadata* = eth2testnet "nimbus/testnet1"
attacknetMc0Metadata* = eth2testnet "shared/attacknet-beta1-mc-0"
{.pop.} # the following pocedures raise more than just `Defect`
@ -181,10 +179,6 @@ proc getMetadataForNetwork*(networkName: string): Eth2NetworkMetadata =
mainnetMetadata
of "medalla":
medallaMetadata
of "zinken":
zinkenMetadata
of "attacknet-beta1-mc-0":
attacknetMc0Metadata
of "testnet0":
testnet0Metadata
of "testnet1":

View File

@ -802,7 +802,8 @@ func init*(T: type GraffitiBytes, input: string): GraffitiBytes
distinctBase(result)[0 ..< input.len] = toBytes(input)
func defaultGraffitiBytes*(): GraffitiBytes =
let graffitiBytes = toBytes("Nimbus " & fullVersionStr)
let graffitiBytes =
toBytes("Nimbus/" & fullVersionStr & " \"" & versionBlob & "\"")
distinctBase(result)[0 ..< graffitiBytes.len] = graffitiBytes
proc writeValue*(w: var JsonWriter, value: GraffitiBytes)

View File

@ -8,8 +8,9 @@ when not defined(nimscript):
const
versionMajor* = 0
versionMinor* = 5
versionMinor* = 6
versionBuild* = 0
versionBlob* = "hope" # This ends up in the default graffitti
useInsecureFeatures* = defined(insecure)
@ -20,8 +21,7 @@ const
versionAsStr* =
$versionMajor & "." & $versionMinor & "." & $versionBuild
fullVersionStr* =
versionAsStr & " (" & gitRevision & ")"
fullVersionStr* = "v" & versionAsStr & "-" & gitRevision
func shortNimBanner*(): string =
const gitPrefix = "git hash: "

View File

@ -30,6 +30,5 @@
- [Contribute](./contribute.md)
- [Resources](./resources.md)
# Archived
- [Become a Zinken validator](./zinken.md)
- [Become a Medalla validator](./medalla.md)

View File

@ -10,7 +10,7 @@ While we do support Infura to process incoming validator deposits, we recommend
## How it works
When you join an eth2 testnet by running `make zinken` or `make medalla`, the beacon node actually launches with an Infura endpoint supplied by us.
When you join an eth2 testnet by running `make medalla`, the beacon node actually launches with an Infura endpoint supplied by us.
This endpoint is passed through the `web3-url` option (which takes as input the url of the web3 server from which you'd like to observe the eth1 chain).
@ -19,12 +19,12 @@ If you look at the initial logs you should see something similar to the followin
```
DBG 2020-09-29 12:15:41.969+02:00 Launching beacon node
topics="beacnde" tid=8941404 file=beacon_node.nim:1190 version="0.5.0 (78ceeed8)" bls_backend=BLST
topics="beacnde" tid=8941404 file=beacon_node.nim:1190 version="0.5.0 (78ceeed8)" bls_backend=BLST
cmdParams="@[
\"--network=zinken\",
\"--network=medalla\",
\"--log-level=DEBUG\",
\"--log-file=build/data/shared_zinken_0/nbc_bn_20200929121541.log\",
\"--data-dir=build/data/shared_zinken_0\",
\"--log-file=build/data/shared_medalla_0/nbc_bn_20200929121541.log\",
\"--data-dir=build/data/shared_medalla_0\",
\"--web3-url=wss://goerli.infura.io/ws/v3/809a18497dd74102b5f37d25aae3c85a\",
\"--tcp-port=9000\",
\"--udp-port=9000\",
@ -36,7 +36,7 @@ cmdParams="@[
...
```
This allows us to deduce that the default endpoint is given by:
This allows us to deduce that the default endpoint is given by:
```
--web3-url=wss://goerli.infura.io/ws/v3/809a18497dd74102b5f37d25aae3c85a\"
@ -49,7 +49,7 @@ Because Infura caps the requests per endpoint per day to 100k, and all Nimbus no
To know if our endpoint has reached its limit for the day, keep your eye out for error messages that look like the following:
```
ERR 2020-09-29 14:04:33.313+02:00 Mainchain monitor failure, restarting tid=8941404
ERR 2020-09-29 14:04:33.313+02:00 Mainchain monitor failure, restarting tid=8941404
file=eth1_monitor.nim:812 err="{\"code\":-32005,
\"data\":{\"rate\":{\"allowed_rps\":1,
\"backoff_seconds\":24,
@ -64,16 +64,16 @@ To get around this problem, we recommend launching the beacon node with your own
> **Note:** In a previous version of the software it wasn't possible to manually override the web3 endpoint when running `make zinken` or `make medalla`. For the instructions below to work, make sure you've updated to the latest version of the software (run `git pull && make update` from the `master` branch of the `nimbus-eth2` repository).
> **Note:** In a previous version of the software it wasn't possible to manually override the web3 endpoint when running `make medalla`. For the instructions below to work, make sure you've updated to the latest version of the software (run `git pull && make update` from the `master` branch of the `nimbus-eth2` repository).
### 1. Visit Infura.io
Go to:
[https://infura.io/](https://infura.io/)
[https://infura.io/](https://infura.io/)
and click on `Get Started For Free`
![](https://i.imgur.com/BtStgup.png)
### 2. Sign up
@ -129,11 +129,11 @@ Run the beacon node on your favourite testnet, pasting in your websocket endpoin
make NODE_PARAMS="--web3-url=wss://goerli.infura.io/ws/v3/83b9d67f81ca401b8f9651441b43f29e"
<TESTNET_NAME>
```
> Remember to replace <TESTNET_NAME> with either `medalla` or `zinken`.
> Remember to replace <TESTNET_NAME> with either `medalla`.
### 9. Check stats
Visit your project's stats page to see a summary of your eth1 related activity and method calls
Visit your project's stats page to see a summary of your eth1 related activity and method calls
![](https://i.imgur.com/MZVTHHV.png)

View File

@ -66,7 +66,7 @@ Make a cup of coffee :)
### 5. Set up wireless LAN
Since you have loaded Raspberry Pi OS onto a blank SD card, you will have two partitions. The first one, which is the smaller one, is the `boot` partition.
Since you have loaded Raspberry Pi OS onto a blank SD card, you will have two partitions. The first one, which is the smaller one, is the `boot` partition.
Create a `wpa_supplicant` configuration file in the `boot` partition with the following content:
@ -85,14 +85,14 @@ network={
> **Note:** Don't forget to replace the placeholder `country`, `ssid`, and `psk` values. See [Wikipedia](https://en.wikipedia.org/wiki/ISO_3166-1) for a list of 2 letter `ISO 3166-1` country codes.
### 6. Enable SSH (using Linux or macOS)
You can [access the command line](https://www.raspberrypi.org/documentation/remote-access/ssh/) of a Raspberry Pi remotely from another computer or device on the same network using [SSH](https://en.wikipedia.org/wiki/Ssh_(Secure_Shell)).
While SSH is not enabled by default, you can enable it by placing a file named `ssh`, without any extension, onto the boot partition of the SD card.
While SSH is not enabled by default, you can enable it by placing a file named `ssh`, without any extension, onto the boot partition of the SD card.
When the Pi boots, it will look for the `ssh` file. If it is found, SSH is enabled and the file is deleted. The content of the file does not matter; it can contain text, or nothing at all.
@ -159,12 +159,12 @@ This is a security risk - please login as the 'pi' user and type 'passwd' to set
Followed by a command-line prompt indicating a successful connection:
```
pi@raspberrypi:~ $
pi@raspberrypi:~ $
```
### 9. Increase swap size to 2GB
The first step is to increase the [swap size](https://itsfoss.com/swap-size/) to 2GB (2048MB).
The first step is to increase the [swap size](https://itsfoss.com/swap-size/) to 2GB (2048MB).
> **Note:** Swap acts as a breather to your system when the RAM is exhausted. When the RAM is exhausted, your Linux system uses part of the hard disk memory and allocates it to the running application.
@ -275,21 +275,21 @@ As usual, replace `195.177.101.93` with your Pi's IP address, and `<VALIDATOR_KE
To import your signing key into Nimbus, from the `nimbus-eth2` directory run:
```
build/beacon_node deposits import --data-dir=build/data/shared_medalla_0 ../validator_keys
build/beacon_node deposits import --data-dir=build/data/shared_medalla_0 ../validator_keys
```
You'll be asked to enter the password you created to encrypt your keystore(s). Don't worry, this is entirely normal. Your validator client needs both your signing keystore(s) and the password encrypting it to import your [key](https://blog.ethereum.org/2020/05/21/keys/) (since it needs to decrypt the keystore in order to be able to use it to sign on your behalf).
### 17. Run Screen
From the `nimbus-eth2` directory, run:
From the `nimbus-eth2` directory, run:
```
screen
```
You should see output that looks like the following:
You should see output that looks like the following:
```
GNU Screen version 4.06.02 (GNU) 23-Oct-17
@ -342,7 +342,7 @@ If you look near the top of the logs printed to your console, you should see con
INF 2020-10-07 17:04:09.213+02:00 Initializing networking topics="networking" tid=11688398 file=eth2_network.nim:1335 hostAddress=/ip4/0.0.0.0/tcp/9000 network_public_key=0802122102defb020c8e47dd8f5da89f51ed6c3998aaa0dd59eeb2784e29d47fdbdab69235 announcedAddresses=@[/ip4/195.177.101.93/tcp/9000]
WRN 2020-10-07 17:04:09.215+02:00 Ignoring invalid bootstrap address tid=11688398 file=eth2_discovery.nim:45 bootstrapAddr= reason="an empty string is not a valid bootstrap node"
NOT 2020-10-07 17:04:09.231+02:00 Local validators attached topics="beacval" tid=11688398 file=validator_duties.nim:65 count=0
NOT 2020-10-07 17:04:09.231+02:00 Starting beacon node topics="beacnde" tid=11688398 file=beacon_node.nim:923 version="0.5.0 (1dec860b)" nim="Nim Compiler Version 1.2.6 [MacOSX: amd64] (bf320ed1)" timeSinceFinalization=0ns head=0814b036:0 finalizedHead=0814b036:0 SLOTS_PER_EPOCH=32 SECONDS_PER_SLOT=12 SPEC_VERSION=0.12.3 dataDir=build/data/shared_zinken_0
NOT 2020-10-07 17:04:09.231+02:00 Starting beacon node topics="beacnde" tid=11688398 file=beacon_node.nim:923 version="0.5.0 (1dec860b)" nim="Nim Compiler Version 1.2.6 [MacOSX: amd64] (bf320ed1)" timeSinceFinalization=0ns head=0814b036:0 finalizedHead=0814b036:0 SLOTS_PER_EPOCH=32 SECONDS_PER_SLOT=12 SPEC_VERSION=0.12.3 dataDir=build/data/shared_medalla_0
```
To keep track of your syncing progress, have a look at the output at the very bottom of the terminal window in which your validator is running. You should see something like:

View File

@ -1,12 +1,12 @@
# Resources
- [ethstaker discord](https://discord.com/invite/e84CFep): great place for tips and discussions
- [Validator launchpad](https://medalla.launchpad.ethereum.org): to send Medalla deposits
- [Beacon chain explorer](https://zinken.beaconcha.in/) : to monitor testnet health
- [Validator launchpad](https://medalla.launchpad.ethereum.org): to send Medalla deposits
- [Beacon chain explorer](https://medalla.beaconcha.in/) : to monitor testnet health
- [Nimbus discord](https://discord.com/invite/XRxWahP) : best place to ask questions and to stay up-to-date with critical updates
- [Ethereum on ARM: Raspberry Pi 4 image + tutorial](https://www.reddit.com/r/ethereum/comments/gf3nhg/ethereum_on_arm_raspberry_pi_4_images_release/) : turn your Raspberry Pi 4 into an eth1 or eth2 node just by flashing the MicroSD card

View File

@ -83,7 +83,7 @@ make BASE_PORT=9100 medalla
If you're seeing one or more error messages that look like the following:
```
ERR 2020-09-29 14:04:33.313+02:00 Eth1 chain monitor failure, restarting tid=8941404
ERR 2020-09-29 14:04:33.313+02:00 Eth1 chain monitor failure, restarting tid=8941404
file=eth1_monitor.nim:812 err="{\"code\":-32005,
\"data\":{\"rate\":{\"allowed_rps\":1,
\"backoff_seconds\":24,
@ -92,11 +92,11 @@ file=eth1_monitor.nim:812 err="{\"code\":-32005,
\"message\":\"daily request count exceeded, request rate limited\"}"
```
This means that our Infura endpoint is overloaded (in other words, the requests on a given day have reached the 100k free tier limit).
This means that our Infura endpoint is overloaded (in other words, the requests on a given day have reached the 100k free tier limit).
You can fix this by passing in [your own Infura endpoint](./infura-guide.md).
To do so, run:
To do so, run:
```
make NODE_PARAMS="--web3-url=<YOUR_WEBSOCKET_ENDPOINT>" medalla
@ -108,9 +108,9 @@ Importantly, make sure you pass in a websocket (`wss`) endpoint, not `https`. If
If you're running different testnets on the same computer, you'll need to specify a different `NODE_ID` to avoid port conflicts (the default is `NODE_ID=0`).
For example, to run `medalla` and `zinken` at the same time:
For example, to run two `medalla` nodes at the same time:
```
make medalla NODE_ID=0 # the default
make zinken NODE_ID=1
make medalla NODE_ID=1
```

View File

@ -1,202 +0,0 @@
# Become a Zinken validator
This page will take you through how to import your key(s) and get your validator(s) ready for [Zinken genesis](https://blog.ethereum.org/2020/09/22/eth2-quick-update-no-17/).
For those of you who are unfamiliar, [Zinken](https://github.com/goerli/medalla/blob/master/zinken/README.md) is a short-lived eth2 testnet that will begin on **Monday, October 12th at 12 UTC** and last for three days or so. Its main objective is to allow us to test the deposit/[genesis](https://hackmd.io/@benjaminion/genesis) flow one more time before mainnet launch.
Although it will mainly be client teams taking part, it's also a chance for you to practice sending a deposit and launching a node under mainnet launch conditions (in order to avoid clogging up the validator queue, we recommend practicing with one, or at most a handful of validators).
## Prerequisites
> ⚠️ If this is your first time playing with Nimbus, please make sure you [install our external dependencies](./install.md) first.
This tutorial assumes basic knowledge of the [command line](https://www.learnenough.com/command-line-tutorial/basics#:~:text=Learn%20Enough%20Command%20Line%20to%20Be%20Dangerous%20is%20an%20introduction,broad%20an%20audience%20as%20possible.).
## 1. Make a deposit
The easiest way to get your deposit in is to follow the Launchpad instructions here:
[https://zinken.launchpad.ethereum.org/](https://zinken.launchpad.ethereum.org/)
You should notice that there have been considerable improvements to the launchpad process since Medalla.
In particular, the Key Generation section is now much clearer, and you no longer have to install dependencies to get the command line app working. As such, it should now be much easier for non-technical folks to generate their key(s).
![](https://i.imgur.com/slELPmk.png)
Once you've sent off your transaction, you should see the following screen.
![](https://i.imgur.com/A4IMlhK.png)
Click on `Beaconchain` to open up a window that will allow you to track of your validator's status.
![](https://i.imgur.com/JHQblna.png)
## 2. Import your key(s)
To import your `zinken` key(s) into Nimbus:
> **Note:** You can skip steps 1 and 2 below if you've already cloned `nimbus-eth2` and built the beacon node for `medalla`: just make sure you run `git pull && make update` from the `master` branch before continuing with step 3.
#### 1. Clone the nim beacon chain repository
```
git clone https://github.com/status-im/nimbus-eth2
cd nimbus-eth2
```
#### 2. Build the beacon node
```
make beacon_node
```
*Patience... this may take a few minutes.*
#### 3. Import keystore(s)
```
build/beacon_node deposits import --data-dir=build/data/shared_zinken_0 <YOUR VALIDATOR KEYS DIRECTORY>
```
Replacing `<YOUR VALIDATOR KEYS DIRECTORY>` with the full pathname of the `validator_keys` directory that was created when you generated your keys using the [Zinken Launchpad](https://zinken.launchpad.ethereum.org/) [command line app](https://github.com/ethereum/eth2.0-deposit-cli/releases/).
> **Tip:** run `pwd` in your `validator_keys` directory to print the full pathname to the console.
You'll be asked to enter the password you created to encrypt your keystore(s).
Don't worry, this is entirely normal. Your validator client needs both your signing keystore(s) and the password encrypting it to import your [key](https://blog.ethereum.org/2020/05/21/keys/) (since it needs to decrypt the keystore in order to be able to use it to sign on your behalf).
## 3. Connect to Zinken
To build Nimbus and its dependencies, and connect to Zinken, run:
```
make zinken
```
If you look near the top of the logs printed to your console, you should see that your beacon node has started, with your local validator attached:
```
INF 2020-10-07 17:04:09.213+02:00 Initializing networking topics="networking" tid=11688398 file=eth2_network.nim:1335 hostAddress=/ip4/0.0.0.0/tcp/9000 network_public_key=0802122102defb020c8e47dd8f5da89f51ed6c3998aaa0dd59eeb2784e29d47fdbdab69235 announcedAddresses=@[/ip4/195.177.101.93/tcp/9000]
WRN 2020-10-07 17:04:09.215+02:00 Ignoring invalid bootstrap address tid=11688398 file=eth2_discovery.nim:45 bootstrapAddr= reason="an empty string is not a valid bootstrap node"
NOT 2020-10-07 17:04:09.231+02:00 Local validators attached topics="beacval" tid=11688398 file=validator_duties.nim:65 count=0
NOT 2020-10-07 17:04:09.231+02:00 Starting beacon node topics="beacnde" tid=11688398 file=beacon_node.nim:923 version="0.5.0 (1dec860b)" nim="Nim Compiler Version 1.2.6 [MacOSX: amd64] (bf320ed1)" timeSinceFinalization=0ns head=0814b036:0 finalizedHead=0814b036:0 SLOTS_PER_EPOCH=32 SECONDS_PER_SLOT=12 SPEC_VERSION=0.12.3 dataDir=build/data/shared_zinken_0
peers: 0 finalized: 0814b036:0 head: 0814b036:0:0 time: 387:2 (12386) INF 2020-10-07 17:04:09.232+02:00 Starting discovery node topics="discv5" tid=11688398 file=protocol.nim:799 node=Node[195.177.101.93:9000] uri=enr:-LK4QCje1Tb8tPIjuIWcAjVRprALNr-fGSmX0ijk2nt4-BgTRSG_q2oekHW9IxbdRi-bcT9RsppI7JtjIxjkm-dG9ZwBh2F0dG5ldHOI__________-EZXRoMpCEe0P1AAAAA___________gmlkgnY0gmlwhMCoC1OJc2VjcDI1NmsxoQLe-wIMjkfdj12on1HtbDmYqqDdWe6yeE4p1H_b2raSNYN0Y3CCIyiDdWRwgiMo bindAddress=0.0.0.0:9000
```
> **Note:** when you run `make zinken`, the beacon node launches with an Infura endpoint supplied by us. This endpoint is passed through the `web3-url` option (which takes as input the url of the web3 server from which you'd like to observe the eth1 chain).
>
> Because Infura caps the requests per endpoint per day to 100k, and all Nimbus nodes use the same Infura endpoint by default, it can happen that our Infura endpoint is overloaded (i.e the requests on a given day reach the 100k limit). If this happens, all requests to Infura using the default endpoint will fail, which means your node will stop processing new deposits.
>
> To pass in your own Infura endpoint, you'll need to run:
>```
> make NODE_PARAMS="--web3-url=<YOUR_WEBSOCKET_ENDPOINT>" medalla
>```
> Importantly, the endpoint must be a websocket (`wss`) endpoint, not `https`. If you're not familiar with Infura, we recommend reading through our [Infura guide](./infura-guide), first.
>
> P.S. We are well aware that Infura is less than ideal from a decentralisation perspective. As such we are in the process of changing our default to [Geth](https://geth.ethereum.org/docs/install-and-build/installing-geth) (with Infura as a fallback). For some rough notes on how to use Geth with Nimbus, see [here](https://gist.github.com/onqtam/aaf883d46f4dab1311ca9c160df12fe4) (we will be adding more complete instructions very soon).
## 4. Keep an eye on your validator
If you deposit after the [genesis](https://hackmd.io/@benjaminion/genesis) state was decided (October 8th, 12pm UTC), your validators will be put in a queue based on deposit time, and will slowly be inducted into the validator set after genesis. Getting through the queue may take a few hours or a day or so.
The best way to keep track of your validator's status is [zinken.beaconcha.in](https:/zinken.beaconcha.in) (click on the orange magnifying glass at the very top and paste in your validator's public key).
You can even [create an account](https://zinken.beaconcha.in/register) to add alerts and keep track of your validator's [performance](https://zinken.beaconcha.in/dashboard).
Finally, makes sure you stay on the lookout for any critical updates to Nimbus. This best way to do so is through the **announcements** channel on our [discord](https://discord.com/invite/XRxWahP).
To update to the latest version, disconnect from `zinken` and run:
```
git pull && make update
```
Once the update is complete, run `make zinken` again to reconnect to the network.
Looking forward to seeing you on Zinken! 💛
----------
## Key management
Keys are stored in the `build/data/shared_zinken_0/` folder, under `secrets` and `validators` - make sure you keep these folders backed up.
The `secrets` folder contains the common secret that gives you access to all your validator keys.
The `validators` folder contains your signing keystore(s) (encrypted keys). Keystores are used by validators as a method for exchanging keys. For more on keys and keystores, see [here](https://blog.ethereum.org/2020/05/21/keys/).
>**Note:** The Nimbus client will only ever import your signing key -- in any case, if you used the deposit launchpad, this is the only key you should have (thanks to the way these keys are derived, you can generate the withdrawal key from your mnemonic whenever you wish to withdraw).
## Metrics
Metrics are not included in the binary by default - to enable them, use the following options when starting the client:
```
make NIMFLAGS="-d:insecure" zinken
```
You can then browse the metrics by connecting to:
[http://localhost:8008/metrics](http://localhost:8008/metrics)
Make sure this port is protected as the http server used is not considered secure (it should not be used by untrusted peers).
For instructions on how to spin up a beautiful and useful monitoring dashboard for your validator and beacon node, see [this page](./metrics-pretty-pictures.md) (note you'll need to replace all mention of `medalla` with `zinken`).
## Advanced options
N.B. All the options you're used to running with `medalla` should work as expected with `zinken`.
### Change the TCP and UDP ports
To change the TCP and UDP ports from their default value of 9000 to 9100, say, run:
```
make BASE_PORT=9100 zinken
```
You may need to do this if you are running another client.
### Node parameters
You can customise your beacon node's parameters using the `NODE_PARAMS` option:
```
make NODE_PARAMS="--tcp-port=9100 --udp-port=9100" zinken
```
>**Note:** the above command has exactly the same effect as `make BASE_PORT=9100 zinken`
A complete list of the available parameters can be found [here](https://github.com/status-im/nimbus-eth2/blob/devel/beacon_chain/conf.nim#L92-L210) (use a parameter's `name` field to set it).
### Logs
Log files are saved in `build/data/shared_zinken_0/`.
### Makefile
If you are comfortable reading [Makefiles](https://en.wikipedia.org/wiki/Makefile#:~:text=A%20makefile%20is%20a%20file,to%20generate%20a%20target%2Fgoal), you can see the commands that `make zinken` executes under the hood, [here](https://github.com/status-im/nimbus-eth2/blob/23bec993414df904e9d7ea9d26e65005b981aee0/Makefile#L184-L197).
Some of the provided options (such as `--network`) are essential while others (such as the ones controlling logging, metrics, ports, and the RPC service) are optional and included for the sake convenience.
The Goerli testnet parameters (`$(GOERLI_TESTNETS_PARAMS`), are defined higher up in the Makefile, [here](https://github.com/status-im/nimbus-eth2/blob/23bec993414df904e9d7ea9d26e65005b981aee0/Makefile#L164-L171).
## Useful Resources
- [ethstaker discord](https://discord.com/invite/e84CFep): great place for tips and discussions
- [Validator launchpad](https://zinken.launchpad.ethereum.org): to send Zinken deposits
- [Beacon chain explorer](https://zinken.beaconcha.in/) : to monitor testnet health
- [Nimbus discord](https://discord.com/invite/XRxWahP) : best place to ask questions and to stay up-to-date with critical updates