Releases: sigp/anchor
Canoe
Summary
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_key
crate 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_actions
module (#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 |
Kayak
Summary
This is Anchor's first alpha release, v0.1.0! 🎉
Anchor is the second implementation of the ssv.network DVT protocol. It is written in Rust and builds upon Lighthouse, Sigma Prime's Ethereum consensus client. It can interoperate with SSV Lab's implementation.
Documentation is available at https://anchor-book.sigmaprime.io/. Note that the documentation is work in progess.
In this release, the ability to connect to Mainnet was intentionally disabled, as Anchor is still in development, has known issues, and hasn't been fully audited yet. All features are to be considered WIP and interfaces such as the CLI, HTTP API and Prometheus metrics may change in future releases.
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.
Known Issues
- Sync committee aggregation duties may fail, causing error messages such as
Unable to sign sync committee contribution
andUnexpected error while signing sync committee contribution
. Note that sync committee signatures themselves work and are correctly published, so most sync committee duties should be correctly included on the beacon chain. - Rarely, proposals may fail. Please do not hesitate to reach out if this occurs, as logs will greatly help us troubleshooting this.
- In some cases, internal validation of an outgoing message might fail, causing messages such as
Validation of outgoing message failed (Reject) err=ExcessiveDutyCount
. - During initial sync, the node will emit several
WARN
logs containing the messageTried to update index of unknown validator
. This is expected behaviour and logging will be adjusted in a future release. - During initial sync, the node may repeatedly log
ERROR eth::index_sync: Failed to update validator indices err=SQLPoolError("timed out waiting for connection")
. Sync should complete regardless.
Binaries
The binaries are signed with Sigma Prime's PGP key: 15E66D941F697E28F49381F426416DC3F30674B0
System | Architecture | Binary | PGP Signature |
---|---|---|---|
x86_64 | anchor-v0.1.0-x86_64-apple-darwin.tar.gz | PGP Signature | |
aarch64 | anchor-v0.1.0-aarch64-apple-darwin.tar.gz | PGP Signature | |
x86_64 | anchor-v0.1.0-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
aarch64 | anchor-v0.1.0-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
System | Option | - | Resource |
Docker | v0.1.0 | sigp/anchor |