Repository navigation
Canoe
Pre-releaseSummary
This is Anchor's second alpha release, focusing on increased compatibility between Anchor and the original SSV client. Anchor now uses the same key format as the Go implementation, which allows you to easily test Anchor with your existing operator keys!
Please carefully read the details below if you want to migrate your Anchor v0.1.0 instance to v0.2.0, as this release contains breaking changes.
As a reminder, Anchor can currently not be used on mainnet.
The documentation at https://anchor-book.sigmaprime.io/ was updated for this release.
We hope to gather the community's feedback. Please report issues or suggestions on GitHub. If you have any questions or feedback, the best place to reach us is the #anchor channel in the Lighthouse discord server.
📊 Network Scoring
Anchor now scores peers by their behaviour, increasing resiliency to attacks.
This is an experimental feature. If you experience any issues where Anchor reports having peers via the Network status log line, but most duties time out despite the other operators being online, try disabling scoring via the --disable-gossipsub-peer-scoring flag. We are grateful for any reports if you encounter issues with this feature.
🔑 Key compatibility
Anchor now uses the same key format as the original SSV implementation! This allows you to easily switch between clients and to use the DKG ceremony client for Distributed Key Generation!
If you upgrade an existing Anchor instance, your key will be converted on the first launch of your upgraded node. Note that the converted key will be placed in another file, and the original key will be removed after successful conversion. To switch to an encrypted key, specify a password file on startup (see below).
If you want to use an existing key file with Anchor, simply drop your existing encrypted_private_key.json into an empty directory and use that directory as Anchor's --datadir, or point to it with the new CLI options (see below). For unencrypted keys, create a file called unencrypted_private_key.txt and place the key as specified in Go-SSV's config inside.
Our keygen CLI subcommand was also updated to use the new key format.
🐳🚢 Separate key and password files
Anchor now supports password files, additionally to the interactive specification via the console.
Docker and Kubernetes users often manage secrets with separately mouted files. Furthermore, interactively entering passwords on startup is often undesired.
Encrypted keys can now be unlocked by specifying a file containing the password via the --password-file CLI option. Furthermore, keys can now also be placed in a separate location instead of having to be located inside the --datadir. To point Anchor to a private key, use --key-file. Note that the file must have an appropriate file name extension (.txt for unencrypted keys, .json for encrypted keys).
🔌 Changed default ports
Anchor previously used ports 9100 and 9101. Unfortunately, 9100 collided with the widely used Prometheus node_exporter.
In this release, we switch to the default ports as used by Go-SSV: 12001 UDP for discovery and 13001 TCP for general network traffic. Port 13002 UDP is used for communication using QUIC, which is currently only supported by Anchor.
If you use the default values, you might need to adjust your firewall and/or Docker command accordingly. If you explicitly specify a port via the --port CLI option, this change does not affect you.
Known Issues
- Anchor currently can not use Lodestar due to a bug in Lodestar. We expect this to be fixed with Lodestar's next release.
All Changes
- Release v0.2.0 (#425)
- Fix port selection (#423)
- Avoid penalizing decided messages (#413)
- Set topic parameters (#406)
- Use Go-SSV key formats, convert legacy keys (#404)
- Remove
fuzz(#421) - Also allow comma separated CLI values (#412)
- Switch to Go-SSV default ports (#414)
- recursive clone for submodules (#415)
- Use the correct role and encoding for sync committee contributions (#395)
- Do not log full data when proposing (#401)
- Adjust documentation for
v0.2.0(#408) - Add message rate (#402)
- Reduce memory usage in validator (#379)
- Add
operator_keycrate to bundle key serialization functionality (#390) - Fetch batches while processing (#365)
- Correctly use the workspace edition everywhere (#398)
- Add topic score params (#394)
- Merge immediately if branch is up to date and passes tests (#397)
- Fix Rust 1.88 lints (#396)
- Create scoring mod (#393)
- Reduce logging during sync (#364)
- Return references instead of cloning in
MultiIndexMap(#378) - Avoid unnecessary allocations and conversions in database (#361)
- Convert SQL statements to constants (#359)
- Fix permissions of check_success_job.sh (#383)
- Merge branch 'stable' into unstable
- Add peer score params and thresholds (#368)
- Add mergify config (#338)
- Fix discord invite link (#373)
- Delete unused
network_actionsmodule (#360) - Add role to ExcessiveDutyCount error (#366)
- Do not warn if a validator is removed before index is set (#356)
Binaries
The binaries are signed with Sigma Prime's PGP key: 15E66D941F697E28F49381F426416DC3F30674B0
| System | Architecture | Binary | PGP Signature |
|---|---|---|---|
| x86_64 | anchor-v0.2.0-x86_64-apple-darwin.tar.gz | PGP Signature | |
| aarch64 | anchor-v0.2.0-aarch64-apple-darwin.tar.gz | PGP Signature | |
| x86_64 | anchor-v0.2.0-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
| aarch64 | anchor-v0.2.0-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
| System | Option | - | Resource |
| Docker | v0.2.0 | sigp/anchor |