From c7d0f401b903f4d19ad4b03e47474146bff55404 Mon Sep 17 00:00:00 2001 From: Tan Chee Keong Date: Tue, 11 Nov 2025 11:24:30 +0800 Subject: [PATCH 01/12] update book to include mainnet --- docs/docs/pages/index.mdx | 6 +++--- docs/docs/pages/installation.mdx | 18 +++++++++--------- docs/docs/pages/running_an_operator.mdx | 12 +++++++++++- docs/vocs.config.ts | 2 +- 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/docs/docs/pages/index.mdx b/docs/docs/pages/index.mdx index 49c6cd4e5..4af4b1a02 100644 --- a/docs/docs/pages/index.mdx +++ b/docs/docs/pages/index.mdx @@ -57,7 +57,7 @@ anchor --help ```bash [From Release] # Specify the platform i.e aarch64-apple-darwin (for apple) x86_64-unknown-linux-gnu.tar.gz -wget https://github.com/sigp/anchor/releases/download/v1.0.0-rc.1/anchor-.tar.gz +wget https://github.com/sigp/anchor/releases/download/v1.0.0/anchor-.tar.gz # Extract the file tar -xvf anchor-.tar.gz # Make it executable @@ -74,7 +74,7 @@ chmod +x anchor
-
50
+
54
Stars
@@ -82,7 +82,7 @@ chmod +x anchor
Contributors
-
v1.0.0-rc.1
+
v1.0.0
Version
diff --git a/docs/docs/pages/installation.mdx b/docs/docs/pages/installation.mdx index 1e63b20ff..19fd36a14 100644 --- a/docs/docs/pages/installation.mdx +++ b/docs/docs/pages/installation.mdx @@ -9,11 +9,11 @@ Anchor itself is a light-weight client when run alone. However, as Anchor needs to connect to a beacon node and an execution client, this implies that a complete setup will require the hardware specifications equivalent to running an Ethereum node. -| Hardware | Hoodi testnet | -|--------|---------| -| CPU | AMD Ryzen, Intel Broadwell, ARMv8 or newer | -| Memory | 16 GB RAM | -| Storage | 200 GB | +| Hardware | Mainnet | Hoodi testnet | +|--------|---------|-----------| +| CPU | AMD Ryzen, Intel Broadwell, ARMv8 or newer | AMD Ryzen, Intel Broadwell, ARMv8 or newer | +| Memory | 32 GB RAM | 16 GB RAM | +| Storage | 2 TB | 200 GB | Anchor can be run independently of an Ethereum beacon node and execution client, in which case the requirements are that of a standard validator client. These are very light weight and can run on @@ -35,15 +35,15 @@ wget https://github.com/sigp/anchor/releases/download//anchor- tar -xvf anchor--.tar.gz # Specific version example -wget https://github.com/sigp/anchor/releases/download/v1.0.0-rc.1/anchor-v1.0.0-rc.1-x86_64-unknown-linux-gnu.tar.gz -tar -xvf anchor-v1.0.0-rc.1-x86_64-unknown-linux-gnu.tar.gz +wget https://github.com/sigp/anchor/releases/download/v1.0.0/anchor-v1.0.0-x86_64-unknown-linux-gnu.tar.gz +tar -xvf anchor-v1.0.0-x86_64-unknown-linux-gnu.tar.gz sudo mv anchor /usr/local/bin/ ``` Verify the installation: ```bash -anchor node --version +anchor --version ``` --- @@ -59,7 +59,7 @@ anchor node --version 2. Verify the installation: ```bash - docker run --rm -it sigp/anchor:latest node --version + docker run --rm -it sigp/anchor:latest --version ``` ## 3. Clone and Build Locally diff --git a/docs/docs/pages/running_an_operator.mdx b/docs/docs/pages/running_an_operator.mdx index d923e225b..c3a942096 100644 --- a/docs/docs/pages/running_an_operator.mdx +++ b/docs/docs/pages/running_an_operator.mdx @@ -70,7 +70,7 @@ To register an operator, follow the instructions in the official **Step 3: Configure and run your Anchor node** Create a directory for Anchor-related data and move the generated private key into the directory. By default, Anchor -uses `~/.anchor/`, where `` is `mainnet`, `hoodi` or `holesky`. We use `hoodi` below: +uses `~/.anchor/`, where `` is `mainnet` or `hoodi`. We use `hoodi` below: ```bash mkdir -p ~/.anchor/hoodi @@ -85,6 +85,16 @@ If switching from the go SSV node, simply move the `encrypted_private_key.json` Use the [CLI Reference](./cli) or `--help` to launch the node. If you use an encrypted key, you must specify the password via a password file or interactively input it when starting the node. +Mainnet: +```bash +anchor node \ + --datadir ~/.anchor/hoodi \ + --beacon-nodes http://localhost:5052 \ + --execution-rpc http://localhost:8545 \ + --execution-ws ws://localhost:8546 \ + --password-file /path/to/file +``` + ```bash anchor node \ --network hoodi \ diff --git a/docs/vocs.config.ts b/docs/vocs.config.ts index d00ae3276..b208c0de5 100644 --- a/docs/vocs.config.ts +++ b/docs/vocs.config.ts @@ -34,7 +34,7 @@ export default defineConfig({ { text: 'Documentation', link: '/introduction' }, { text: 'GitHub', link: 'https://github.com/sigp/anchor' }, { - text: 'v1.0.0-rc.1', + text: 'v1.0.0', items: [ { text: 'Releases', From 10dd7df1e1c0fd688ad846e22e5f873dc9ec1cae Mon Sep 17 00:00:00 2001 From: Tan Chee Keong Date: Tue, 11 Nov 2025 11:40:02 +0800 Subject: [PATCH 02/12] update doc --- docs/docs/pages/migrate_to_anchor.mdx | 2 +- docs/docs/pages/running_a_validator_on_ssv.mdx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/pages/migrate_to_anchor.mdx b/docs/docs/pages/migrate_to_anchor.mdx index 71b25f6e6..97c5aaead 100644 --- a/docs/docs/pages/migrate_to_anchor.mdx +++ b/docs/docs/pages/migrate_to_anchor.mdx @@ -31,7 +31,7 @@ To migrate from go-ssv to Anchor, we simply need to move the operator private ke mv ~/ssv-stack/ssv-node-data/encrypted_private_key.json ~/.anchor/mainnet/encrypted_private_key.json ``` -Once this key is moved, Anchor should be able to be run. See the [Node CLI Reference](/cli-node) for a list of CLI parameters required to fully run the Anchor node as an operator. +Once this key is moved, Anchor should be able to be run. See the [Running an Operator](/running_an_operator) for how to fully run the Anchor node as an operator. You will need to put the password that decrypts the operator key into a file and reference it in Anchor's CLI via the `--password-file ` parameter. diff --git a/docs/docs/pages/running_a_validator_on_ssv.mdx b/docs/docs/pages/running_a_validator_on_ssv.mdx index 2832e97d4..469c00ee2 100644 --- a/docs/docs/pages/running_a_validator_on_ssv.mdx +++ b/docs/docs/pages/running_a_validator_on_ssv.mdx @@ -7,10 +7,10 @@ running a validator on the SSV network. ## New Validator As described in the [SSV New Validator Documentation](https://docs.ssv.network/stakers/validator-management/creating-a-new-validator/), the general procedure is a two step process: -1. Generate validator keys and deposit Ethereum +1. Generate validator keys and deposit ETH (minimum 32 ETH for a validator) 2. Register the validator to SSV and split the validator key -The first step follows the standard process for creating an Ethereum validator. The general approach is to use the [Staking Deposit CLI](https://github.com/ethstaker/ethstaker-deposit-cli) to generate keys and create a deposit json, then use the [Staking Launchpad](https://launchpad.ethereum.org/en/) to deposit the Ethereum. Each link contains more detailed information on the process. +The first step follows the standard process for creating an Ethereum validator. The general approach is to use the [ethstaker-deposit-cli](https://github.com/ethstaker/ethstaker-deposit-cli) to generate keys and create a deposit json, then use the [Staking Launchpad](https://launchpad.ethereum.org/en/) to deposit the Ethereum. The second step is the same process as migrating a validator and is covered in the next section. From 23aa754f0cbe71a3b58b06b2b9015987e41c7399 Mon Sep 17 00:00:00 2001 From: Tan Chee Keong Date: Tue, 11 Nov 2025 11:56:47 +0800 Subject: [PATCH 03/12] add some faqs --- docs/docs/pages/faq.mdx | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/docs/docs/pages/faq.mdx b/docs/docs/pages/faq.mdx index 3a3188a0d..1c9670886 100644 --- a/docs/docs/pages/faq.mdx +++ b/docs/docs/pages/faq.mdx @@ -1,7 +1,24 @@ # Frequently Asked Questions - [What is sigp/anchor?](#sigp-anchor) - -## What is sigp/anchor +- [What is a high-level overview of Anchor?](#overview) +- [Who will use Anchor?](#who) +- [How do I know Anchor is working?](#how) +## What is sigp/anchor? The rust implementation of the Secret Shared Validator (SSV) protocol. + +## What is a high-level overview of Anchor? + +Anchor is like a validator client. + +Typically, by having Ethereum validators, you will run an execution client, a beacon node and a validator client. + +However, if you run Anchor, you do not have to run the validator client. This is because, Anchor will combine with other SSV clients (which can be Anchor or the go-ssv client) to perform validator duties. + +## Who will use Anchor? +Any individual that wants to become an operator in the SSV network will need to run a SSV client. Anchor is one of the SSV client that you can run (another being the go-ssv). + +## How do I know Anchor is working? +Logs - from Anchor logs. // give examples of logs +From beaconcha.in, check if the validator is attesting normally. \ No newline at end of file From 968aa4cff190e700019da80c8305206fefa6bb11 Mon Sep 17 00:00:00 2001 From: Tan Chee Keong Date: Wed, 12 Nov 2025 08:12:25 +0800 Subject: [PATCH 04/12] add faq --- docs/docs/pages/faq.mdx | 173 +++++++++++++++++++++++++++++-- docs/docs/pages/installation.mdx | 4 +- docs/vocs.config.ts | 5 - 3 files changed, 164 insertions(+), 18 deletions(-) diff --git a/docs/docs/pages/faq.mdx b/docs/docs/pages/faq.mdx index 1c9670886..d7cd04cf3 100644 --- a/docs/docs/pages/faq.mdx +++ b/docs/docs/pages/faq.mdx @@ -3,22 +3,173 @@ - [What is sigp/anchor?](#sigp-anchor) - [What is a high-level overview of Anchor?](#overview) - [Who will use Anchor?](#who) -- [How do I know Anchor is working?](#how) -## What is sigp/anchor? +- [How do I know if Anchor is working normally?](#how-working) +- [How do I know if anchor is not working normally?](#how-not-working) +- [Why Anchor has to connect to other peers?](#peers) +- [How to enable MEV on Anchor?](#mev) +- [How long does Anchor take to sync from a fresh sync?](#sync) +- [Why does Anchor need to generate key before start using it?](#anchor-key) +- [Anchor sync issue](#sync-issue) + +
+ +## What is sigp/anchor? The rust implementation of the Secret Shared Validator (SSV) protocol. -## What is a high-level overview of Anchor? +
-Anchor is like a validator client. +## What is a high-level overview of Anchor? + +Anchor is like a validator client. Typically, by having Ethereum validators, you will run an execution client, a beacon node and a validator client. -However, if you run Anchor, you do not have to run the validator client. This is because, Anchor will combine with other SSV clients (which can be Anchor or the go-ssv client) to perform validator duties. - -## Who will use Anchor? -Any individual that wants to become an operator in the SSV network will need to run a SSV client. Anchor is one of the SSV client that you can run (another being the go-ssv). +However, if you run Anchor, you do not have to run the validator client. This is because, Anchor will connect with other SSV clients (which can be Anchor or the go-ssv client) to perform validator duties. + +
+ +## Who will use Anchor? +Any individual that wants to become an operator in the SSV network will need to run a SSV client. Anchor is one of the SSV client that you can run. + +
+ +## How do I know if Anchor is working normally? + +A synced and working Anchor has the following logs: + +``` +INFO Operator active operator_id=308 cluster_count=1 +INFO Connected to beacon node(s) primary="http://localhost:5052/" total=1 available=1 synced=1 +INFO All validators active current_epoch_proposers=0 active_validators=2 total_validators=2 epoch=53749 slot=1719971 +INFO Network status subnets=1 peers=7 inbound=1 outbound=6 blocked_peers=0 +INFO Processed contract events from block 1598180 log_count=0 +``` + +When attestation happens, Anchor will log: +``` +INFO Successfully published attestations count=1 validator_indices=[1132617] head_block=0x528d08dda4afd11b7cd18028babe2f3de24b162636478104b776eaa8389a256d committee_index=0 slot=1719971 type="unaggregated" +``` + +The above logs indicate that Anchor is running normally. + +
+ +## How do I know if anchor is not working normally? + +One reason that Anchor is not working normally could be some operators are offline. For example, in a cluster of 4 operators, at most 1 operator can be offline. +If 2 operators are offline at the same time, then the validator will not be able to perform its duties. Anchor will log: + +``` +WARN Signing selection proof timed out - other operators might be offline +ERROR Failed to produce duty and proof error=FailedToProduceSelectionProof(SpecificError(Timeout)) msg="may impair attestation duties" +WARN No attestations were published +``` + +Another reason that Anchor is not ready is that the beacon node or the execution client is still syncing. If the beacon node is syncing, you will see the log: +``` +ERROR No synced beacon nodes total=1 available=1 synced=0 +ERROR Failed to update slot metadata err="Some endpoints failed, num_failed: 2 http://localhost:5052/ => RequestFailed(\"Failed to produce attestation data: ServerMessage(ErrorMessage { code: 503, message: \\\"SERVICE_UNAVAILABLE: beacon node is syncing: head slot is 1720767, current slot is 1720858\\\", stacktraces: [] })\"), http://localhost:5052/ => RequestFailed(\"Failed to produce attestation data: ServerMessage(ErrorMessage { code: 503, message: \\\"SERVICE_UNAVAILABLE: beacon node is syncing: head slot is 1720767, current slot is 1720858\\\", stacktraces: [] })\")" +``` + +If the execution client is syncing, Anchor logs: + +``` +WARN Waiting for EL to finish syncing +``` +The error or warning Logs will go away once the beacon node and the execution client are synced. +Anchor will sync simultaneously at the same time and will be ready to perform duty soon when the beacon node and the execution client are synced. + +
+ +## Why Anchor has to connect to other peers? + +The peers that Anchor connects to are not beacon nodes. In Anchor, it connects to other SSV peers (other Anchor/go-ssv nodes). + +If an operator operates for a cluster, then Anchor will subscribe to 1 subnet. +It will connect to peers in the same subnet that are in the same committee so that it can perform validator duties. This is why Anchor needs to connect to other peers. + +In practice, an operator may run validators for two or more clusters. In this case, Anchor will subscribe to more subnets and connect to more peers. + +THe following log shows how many peers Anchor is connected to: + +``` +INFO Network status subnets=1 peers=5 inbound=1 outbound=4 blocked_peers=0 +``` + +Anchor dynamically adjust the target peer count based on the subnets subscribed. However, if you frequently see the log: + +``` +WARN Round timer elapsed +``` + +and the node is already at the target peer count (60), you may consider increasing the peer count using `--target-peers`. + +
+ +## How to enable MEV on Anchor? + +To enable MEV on Anchor, use the flag `--builder-proposals`. + +If the node is selected to be a leader during a proposal, it will request for mev blocks. If the node is not a leader during a proposal, Anchor will sign MEV blocks proposed by other nodes regardless of whether this flag is set. + +The following log: + +``` +ERROR Unexpected error while signing validator registration err=SpecificError(SignatureCollectionFailed(QueueClosedError)) +``` + +might happen if the other operators in the same committee do not have the `--builder-proposals` flag set or the node is still looking for peers. The error should go away once the node connects to other peers. + +
+ +## How long does Anchor take to sync from a fresh sync? + +Anchor takes a few minutes on Hoodi, and about 15 minutes on mainnet to sync. When Anchor is syncing, it will log: + +``` +INFO Syncing +INFO Historical sync in progress processing_block=501064 +INFO Operator present on chain, waiting for sync operator_id=307 +INFO Processed all events up to block 1599236 +INFO Starting live sync +INFO Sync complete, starting services... +``` + +Once you see `Sync complete`, then Anchor is ready. + +
+ +## Why does Anchor need to generate key before start using it? + +It is true that Anchor does not hold any validator keys (not even the partial split key), which raises the question above. + +The key that Anchor generates is a public-private key pair. The operator will use public key to register as an operator in the SSV network. +Anchor then uses the private key to decrypt and to be identified as a valid operator on the SSV network (that corresponds to the public key registered). + +The private key is a proof that an operator holds the key corresponds to the public key that is used to register to be an operator in the SSV network. +This is why safe keeping of the private key is important, as losing the private key implies that the operator can no longer operate on the SSV network. + +
+ +## Anchor sync issue + +If Anchor shows: + +``` +INFO Synced, waiting for operator key to appear on chain +``` + +but you have already registered as an operator on the SSV network, one reason could be due to using Reth as the execution client. + +This is because Reth currently prunes receipts of smart contracts by default. This prevents Anchor (or any SSV node) from syncing. +If you are using Reth as the execution client, you will to run as [full node](https://reth.rs/run/faq/pruning/) or switch to another execution client. +A resync may be required by deleting the Anchor database `anchor_db.sqlite` in the database directory. + + + + + + + -## How do I know Anchor is working? -Logs - from Anchor logs. // give examples of logs -From beaconcha.in, check if the validator is attesting normally. \ No newline at end of file diff --git a/docs/docs/pages/installation.mdx b/docs/docs/pages/installation.mdx index 19fd36a14..a2a35c1bb 100644 --- a/docs/docs/pages/installation.mdx +++ b/docs/docs/pages/installation.mdx @@ -35,8 +35,8 @@ wget https://github.com/sigp/anchor/releases/download//anchor- tar -xvf anchor--.tar.gz # Specific version example -wget https://github.com/sigp/anchor/releases/download/v1.0.0/anchor-v1.0.0-x86_64-unknown-linux-gnu.tar.gz -tar -xvf anchor-v1.0.0-x86_64-unknown-linux-gnu.tar.gz +wget https://github.com/sigp/anchor/releases/download/v1.1.0/anchor-v1.1.0-x86_64-unknown-linux-gnu.tar.gz +tar -xvf anchor-v1.1.0-x86_64-unknown-linux-gnu.tar.gz sudo mv anchor /usr/local/bin/ ``` diff --git a/docs/vocs.config.ts b/docs/vocs.config.ts index b208c0de5..61f419c93 100644 --- a/docs/vocs.config.ts +++ b/docs/vocs.config.ts @@ -101,9 +101,4 @@ export default defineConfig({ link: 'https://x.com/sigp_io', }, ], - - editLink: { - pattern: "https://github.com/sigp/anchor/edit/unstable/book/docs/pages/:path", - text: "Edit this page" - }, }) From 3fbd58f40d04eda4adaf57224a536173c10fd428 Mon Sep 17 00:00:00 2001 From: Tan Chee Keong Date: Wed, 12 Nov 2025 08:16:29 +0800 Subject: [PATCH 05/12] add hooxi --- docs/docs/pages/running_an_operator.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/docs/pages/running_an_operator.mdx b/docs/docs/pages/running_an_operator.mdx index c3a942096..51badf7a6 100644 --- a/docs/docs/pages/running_an_operator.mdx +++ b/docs/docs/pages/running_an_operator.mdx @@ -95,6 +95,7 @@ anchor node \ --password-file /path/to/file ``` +Hoodi testnet: ```bash anchor node \ --network hoodi \ From 0c3cec73b91ce7f4c3d7516ab102ac7197a4abb6 Mon Sep 17 00:00:00 2001 From: Tan Chee Keong Date: Wed, 12 Nov 2025 08:21:01 +0800 Subject: [PATCH 06/12] revise --- docs/docs/pages/faq.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/pages/faq.mdx b/docs/docs/pages/faq.mdx index d7cd04cf3..4d8aae418 100644 --- a/docs/docs/pages/faq.mdx +++ b/docs/docs/pages/faq.mdx @@ -97,7 +97,7 @@ THe following log shows how many peers Anchor is connected to: INFO Network status subnets=1 peers=5 inbound=1 outbound=4 blocked_peers=0 ``` -Anchor dynamically adjust the target peer count based on the subnets subscribed. However, if you frequently see the log: +Anchor dynamically adjusts the target peer count based on the subnets subscribed. However, if you frequently see the log: ``` WARN Round timer elapsed @@ -119,7 +119,7 @@ The following log: ERROR Unexpected error while signing validator registration err=SpecificError(SignatureCollectionFailed(QueueClosedError)) ``` -might happen if the other operators in the same committee do not have the `--builder-proposals` flag set or the node is still looking for peers. The error should go away once the node connects to other peers. +might happen if the node is still looking for peers. The error should go away once the node connects to other peers.
From be4cf7c26b5bee6cbcfbcefafdaa7c41e97b9b89 Mon Sep 17 00:00:00 2001 From: Tan Chee Keong Date: Wed, 12 Nov 2025 08:58:13 +0800 Subject: [PATCH 07/12] revise faq a bit --- docs/docs/pages/faq.mdx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/docs/pages/faq.mdx b/docs/docs/pages/faq.mdx index 4d8aae418..83fdb6864 100644 --- a/docs/docs/pages/faq.mdx +++ b/docs/docs/pages/faq.mdx @@ -4,7 +4,7 @@ - [What is a high-level overview of Anchor?](#overview) - [Who will use Anchor?](#who) - [How do I know if Anchor is working normally?](#how-working) -- [How do I know if anchor is not working normally?](#how-not-working) +- [Why the validator is not attesting?](#how-not-working) - [Why Anchor has to connect to other peers?](#peers) - [How to enable MEV on Anchor?](#mev) - [How long does Anchor take to sync from a fresh sync?](#sync) @@ -55,10 +55,10 @@ The above logs indicate that Anchor is running normally.
-## How do I know if anchor is not working normally? +## Why the validator is not attesting? -One reason that Anchor is not working normally could be some operators are offline. For example, in a cluster of 4 operators, at most 1 operator can be offline. -If 2 operators are offline at the same time, then the validator will not be able to perform its duties. Anchor will log: +One reason the validator that you operate on is not performing its duties could be due to some operators are offline. For example, in a cluster of 4 operators, at most 1 operator can be offline. +If 2 operators are offline at the same time, then the validator will not be able to perform its duties. If your Anchor is running normally, it will log: ``` WARN Signing selection proof timed out - other operators might be offline @@ -66,7 +66,9 @@ ERROR Failed to produce duty and proof error=FailedToProduceSel WARN No attestations were published ``` -Another reason that Anchor is not ready is that the beacon node or the execution client is still syncing. If the beacon node is syncing, you will see the log: +If otherwise the logs on Anchor are normal, then there is no action required on your side. Once other operators came back online, the validator should resume attesting. + +Another reason is the Anchor on your node is not ready. It could be due to the beacon node or the execution client is still syncing. If the beacon node is syncing, you will see the log: ``` ERROR No synced beacon nodes total=1 available=1 synced=0 ERROR Failed to update slot metadata err="Some endpoints failed, num_failed: 2 http://localhost:5052/ => RequestFailed(\"Failed to produce attestation data: ServerMessage(ErrorMessage { code: 503, message: \\\"SERVICE_UNAVAILABLE: beacon node is syncing: head slot is 1720767, current slot is 1720858\\\", stacktraces: [] })\"), http://localhost:5052/ => RequestFailed(\"Failed to produce attestation data: ServerMessage(ErrorMessage { code: 503, message: \\\"SERVICE_UNAVAILABLE: beacon node is syncing: head slot is 1720767, current slot is 1720858\\\", stacktraces: [] })\")" From cba433aa5e766ea42047a741893e360156010931 Mon Sep 17 00:00:00 2001 From: Tan Chee Keong Date: Wed, 12 Nov 2025 09:01:40 +0800 Subject: [PATCH 08/12] address Claude comments --- docs/docs/pages/faq.mdx | 8 ++++---- docs/docs/pages/running_an_operator.mdx | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/docs/pages/faq.mdx b/docs/docs/pages/faq.mdx index 83fdb6864..36be34827 100644 --- a/docs/docs/pages/faq.mdx +++ b/docs/docs/pages/faq.mdx @@ -93,7 +93,7 @@ It will connect to peers in the same subnet that are in the same committee so th In practice, an operator may run validators for two or more clusters. In this case, Anchor will subscribe to more subnets and connect to more peers. -THe following log shows how many peers Anchor is connected to: +The following log shows how many peers Anchor is connected to: ``` INFO Network status subnets=1 peers=5 inbound=1 outbound=4 blocked_peers=0 @@ -146,10 +146,10 @@ Once you see `Sync complete`, then Anchor is ready. It is true that Anchor does not hold any validator keys (not even the partial split key), which raises the question above. -The key that Anchor generates is a public-private key pair. The operator will use public key to register as an operator in the SSV network. +The key that Anchor generates is a public-private key pair. The operator will use the public key to register as an operator in the SSV network. Anchor then uses the private key to decrypt and to be identified as a valid operator on the SSV network (that corresponds to the public key registered). -The private key is a proof that an operator holds the key corresponds to the public key that is used to register to be an operator in the SSV network. +The private key is a proof that an operator holds the key that corresponds to the public key that is used to register to be an operator in the SSV network. This is why safe keeping of the private key is important, as losing the private key implies that the operator can no longer operate on the SSV network.
@@ -165,7 +165,7 @@ INFO Synced, waiting for operator key to appear on chain but you have already registered as an operator on the SSV network, one reason could be due to using Reth as the execution client. This is because Reth currently prunes receipts of smart contracts by default. This prevents Anchor (or any SSV node) from syncing. -If you are using Reth as the execution client, you will to run as [full node](https://reth.rs/run/faq/pruning/) or switch to another execution client. +If you are using Reth as the execution client, you will need to run as [full node](https://reth.rs/run/faq/pruning/) or switch to another execution client. A resync may be required by deleting the Anchor database `anchor_db.sqlite` in the database directory. diff --git a/docs/docs/pages/running_an_operator.mdx b/docs/docs/pages/running_an_operator.mdx index 51badf7a6..c497b800a 100644 --- a/docs/docs/pages/running_an_operator.mdx +++ b/docs/docs/pages/running_an_operator.mdx @@ -88,7 +88,7 @@ Use the [CLI Reference](./cli) or `--help` to launch the node. If you use an enc Mainnet: ```bash anchor node \ - --datadir ~/.anchor/hoodi \ + --datadir ~/.anchor/mainnet \ --beacon-nodes http://localhost:5052 \ --execution-rpc http://localhost:8545 \ --execution-ws ws://localhost:8546 \ From 3b283e57a3abaea3b25d53788661211e55c59fc0 Mon Sep 17 00:00:00 2001 From: Tan Chee Keong Date: Wed, 12 Nov 2025 13:04:03 +0800 Subject: [PATCH 09/12] revise --- docs/docs/pages/faq.mdx | 8 -------- 1 file changed, 8 deletions(-) diff --git a/docs/docs/pages/faq.mdx b/docs/docs/pages/faq.mdx index 36be34827..c864fdc44 100644 --- a/docs/docs/pages/faq.mdx +++ b/docs/docs/pages/faq.mdx @@ -115,14 +115,6 @@ To enable MEV on Anchor, use the flag `--builder-proposals`. If the node is selected to be a leader during a proposal, it will request for mev blocks. If the node is not a leader during a proposal, Anchor will sign MEV blocks proposed by other nodes regardless of whether this flag is set. -The following log: - -``` -ERROR Unexpected error while signing validator registration err=SpecificError(SignatureCollectionFailed(QueueClosedError)) -``` - -might happen if the node is still looking for peers. The error should go away once the node connects to other peers. -
## How long does Anchor take to sync from a fresh sync? From 828c9557c898a24eedd5cdd9131f7f8b8d08c94e Mon Sep 17 00:00:00 2001 From: Tan Chee Keong Date: Wed, 12 Nov 2025 22:01:39 +0800 Subject: [PATCH 10/12] revise --- docs/docs/pages/faq.mdx | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/docs/docs/pages/faq.mdx b/docs/docs/pages/faq.mdx index c864fdc44..90a8ff826 100644 --- a/docs/docs/pages/faq.mdx +++ b/docs/docs/pages/faq.mdx @@ -1,7 +1,6 @@ # Frequently Asked Questions - [What is sigp/anchor?](#sigp-anchor) -- [What is a high-level overview of Anchor?](#overview) - [Who will use Anchor?](#who) - [How do I know if Anchor is working normally?](#how-working) - [Why the validator is not attesting?](#how-not-working) @@ -15,17 +14,12 @@ ## What is sigp/anchor? -The rust implementation of the Secret Shared Validator (SSV) protocol. +Anchor is a Rust implementation of the Secret Shared Validator (SSV) protocol. -
+The SSV Network is a protocol built on Ethereum that allows a validator’s duties to be distributed among multiple operators (hence multiple nodes) in a trustless way. +In SSV, a set of operators collectively run an Ethereum validator by sharing the key (via cryptographic secret sharing) and coordinating actions via a consensus algorithm. -## What is a high-level overview of Anchor? - -Anchor is like a validator client. - -Typically, by having Ethereum validators, you will run an execution client, a beacon node and a validator client. - -However, if you run Anchor, you do not have to run the validator client. This is because, Anchor will connect with other SSV clients (which can be Anchor or the go-ssv client) to perform validator duties. +Anchor, as a SSV client, is run by node operators. Anchor communicates with other operators in a cluster to perform validator duties.
From c72bc1bf55bb502c02f78b6eec26f1eee652118b Mon Sep 17 00:00:00 2001 From: Tan Chee Keong Date: Fri, 14 Nov 2025 07:42:00 +0800 Subject: [PATCH 11/12] address review comments --- docs/docs/pages/faq.mdx | 23 +++++++---------------- docs/docs/pages/index.mdx | 6 +++--- docs/docs/pages/installation.mdx | 4 ++-- docs/vocs.config.ts | 2 +- 4 files changed, 13 insertions(+), 22 deletions(-) diff --git a/docs/docs/pages/faq.mdx b/docs/docs/pages/faq.mdx index 90a8ff826..6c9ee26d4 100644 --- a/docs/docs/pages/faq.mdx +++ b/docs/docs/pages/faq.mdx @@ -3,7 +3,7 @@ - [What is sigp/anchor?](#sigp-anchor) - [Who will use Anchor?](#who) - [How do I know if Anchor is working normally?](#how-working) -- [Why the validator is not attesting?](#how-not-working) +- [Why is the validator not attesting?](#how-not-working) - [Why Anchor has to connect to other peers?](#peers) - [How to enable MEV on Anchor?](#mev) - [How long does Anchor take to sync from a fresh sync?](#sync) @@ -30,7 +30,7 @@ Any individual that wants to become an operator in the SSV network will need to ## How do I know if Anchor is working normally? -A synced and working Anchor has the following logs: +A synced and working Anchor node has the following logs: ``` INFO Operator active operator_id=308 cluster_count=1 @@ -40,7 +40,7 @@ INFO Network status subnets=1 peers=7 inbound INFO Processed contract events from block 1598180 log_count=0 ``` -When attestation happens, Anchor will log: +When an attestation happens, Anchor will log: ``` INFO Successfully published attestations count=1 validator_indices=[1132617] head_block=0x528d08dda4afd11b7cd18028babe2f3de24b162636478104b776eaa8389a256d committee_index=0 slot=1719971 type="unaggregated" ``` @@ -49,9 +49,9 @@ The above logs indicate that Anchor is running normally.
-## Why the validator is not attesting? +## Why is the validator not attesting? -One reason the validator that you operate on is not performing its duties could be due to some operators are offline. For example, in a cluster of 4 operators, at most 1 operator can be offline. +One reason the validator that you operate on is not performing its duties could be due to some operators being offline. For example, in a cluster of 4 operators, at most 1 operator can be offline. If 2 operators are offline at the same time, then the validator will not be able to perform its duties. If your Anchor is running normally, it will log: ``` @@ -60,7 +60,7 @@ ERROR Failed to produce duty and proof error=FailedToProduceSel WARN No attestations were published ``` -If otherwise the logs on Anchor are normal, then there is no action required on your side. Once other operators came back online, the validator should resume attesting. +Check that Anchor is connected to [sufficient peers](./faq#peers). If Anchor is connected to sufficient peers, then once other operators came back online, the validator should resume attesting. Another reason is the Anchor on your node is not ready. It could be due to the beacon node or the execution client is still syncing. If the beacon node is syncing, you will see the log: ``` @@ -74,7 +74,6 @@ If the execution client is syncing, Anchor logs: WARN Waiting for EL to finish syncing ``` The error or warning Logs will go away once the beacon node and the execution client are synced. -Anchor will sync simultaneously at the same time and will be ready to perform duty soon when the beacon node and the execution client are synced.
@@ -99,7 +98,7 @@ Anchor dynamically adjusts the target peer count based on the subnets subscribed WARN Round timer elapsed ``` -and the node is already at the target peer count (60), you may consider increasing the peer count using `--target-peers`. +you may consider increasing the peer count using `--target-peers`.
@@ -153,11 +152,3 @@ but you have already registered as an operator on the SSV network, one reason co This is because Reth currently prunes receipts of smart contracts by default. This prevents Anchor (or any SSV node) from syncing. If you are using Reth as the execution client, you will need to run as [full node](https://reth.rs/run/faq/pruning/) or switch to another execution client. A resync may be required by deleting the Anchor database `anchor_db.sqlite` in the database directory. - - - - - - - - diff --git a/docs/docs/pages/index.mdx b/docs/docs/pages/index.mdx index 4af4b1a02..211bb2a62 100644 --- a/docs/docs/pages/index.mdx +++ b/docs/docs/pages/index.mdx @@ -57,7 +57,7 @@ anchor --help ```bash [From Release] # Specify the platform i.e aarch64-apple-darwin (for apple) x86_64-unknown-linux-gnu.tar.gz -wget https://github.com/sigp/anchor/releases/download/v1.0.0/anchor-.tar.gz +wget https://github.com/sigp/anchor/releases/download/v1.1.0/anchor-.tar.gz # Extract the file tar -xvf anchor-.tar.gz # Make it executable @@ -78,11 +78,11 @@ chmod +x anchor
Stars
-
14
+
15
Contributors
-
v1.0.0
+
v1.1.0
Version
diff --git a/docs/docs/pages/installation.mdx b/docs/docs/pages/installation.mdx index a2a35c1bb..6f599d424 100644 --- a/docs/docs/pages/installation.mdx +++ b/docs/docs/pages/installation.mdx @@ -35,8 +35,8 @@ wget https://github.com/sigp/anchor/releases/download//anchor- tar -xvf anchor--.tar.gz # Specific version example -wget https://github.com/sigp/anchor/releases/download/v1.1.0/anchor-v1.1.0-x86_64-unknown-linux-gnu.tar.gz -tar -xvf anchor-v1.1.0-x86_64-unknown-linux-gnu.tar.gz +wget https://github.com/sigp/anchor/releases/download/v1.1.0/anchor-v1.1.0-unknown-linux-gnu.tar.gz +tar -xvf anchor-v1.1.0-unknown-linux-gnu.tar.gz sudo mv anchor /usr/local/bin/ ``` diff --git a/docs/vocs.config.ts b/docs/vocs.config.ts index 61f419c93..8d6214a3a 100644 --- a/docs/vocs.config.ts +++ b/docs/vocs.config.ts @@ -34,7 +34,7 @@ export default defineConfig({ { text: 'Documentation', link: '/introduction' }, { text: 'GitHub', link: 'https://github.com/sigp/anchor' }, { - text: 'v1.0.0', + text: 'v1.1.0', items: [ { text: 'Releases', From b5c5cfe49b661b717974914634613de5954244af Mon Sep 17 00:00:00 2001 From: Tan Chee Keong Date: Fri, 14 Nov 2025 08:36:22 +0800 Subject: [PATCH 12/12] grammar --- docs/docs/pages/faq.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/pages/faq.mdx b/docs/docs/pages/faq.mdx index 6c9ee26d4..ccc0e475c 100644 --- a/docs/docs/pages/faq.mdx +++ b/docs/docs/pages/faq.mdx @@ -51,7 +51,7 @@ The above logs indicate that Anchor is running normally. ## Why is the validator not attesting? -One reason the validator that you operate on is not performing its duties could be due to some operators being offline. For example, in a cluster of 4 operators, at most 1 operator can be offline. +One reason the validator that you operate for is not performing its duties could be due to some operators being offline. For example, in a cluster of 4 operators, at most 1 operator can be offline. If 2 operators are offline at the same time, then the validator will not be able to perform its duties. If your Anchor is running normally, it will log: ```