diff --git a/_data/clients-execution.yml b/_data/clients-execution.yml index 86100be9..86727f68 100644 --- a/_data/clients-execution.yml +++ b/_data/clients-execution.yml @@ -79,12 +79,12 @@ lang: .NET donate: https://protocol-guild.readthedocs.io/en/latest/03-donate.html opensource: true -- name: Nimbus +- name: Nimbus (w/Nimbus CL) link: https://nimbus.team/ github: https://github.com/status-im/nimbus-eth1 docs: https://github.com/status-im/nimbus-eth1/tree/master/doc chat: https://discord.gg/qnjVyhatUa - status: pre-alpha + status: alpha support: lang: Nim donate: diff --git a/_data/clients-lean-consensus.yml b/_data/clients-lean-consensus.yml new file mode 100644 index 00000000..898eccf7 --- /dev/null +++ b/_data/clients-lean-consensus.yml @@ -0,0 +1,106 @@ +# - name: # client name +# link: # link to website +# github: # link to github +# docs: # link to documentation +# chat: # link to community chat +# status: # (select one) deprecated, pre-alpha, alpha, beta, stable +# support: # Linux, Win, macOS, ARM +# lang # programming language it's written in +# donate: # link to gitcoin or etherscan address +# opensource: # true/false + + +# template +# - name: +# link: +# github: +# docs: +# chat: +# # status: +# # support: +# lang: +# # donate: +# opensource: true + + +- name: Peam + link: + github: https://github.com/malik672/Peam + docs: + chat: + status: R&D + # support: + lang: Rust + # donate: + opensource: true +- name: Ream + link: https://reamlabs.com/ + github: https://github.com/ReamLabs/ream + docs: https://hackmd.io/@reamlabs + chat: https://t.me/ReamLabs + status: R&D + # support: + lang: Rust + # donate: + opensource: true +- name: Zeam + link: + github: https://github.com/blockblaz/zeam + docs: + chat: https://t.me/zeamETH + status: R&D + # support: + lang: Zig + # donate: + opensource: true +- name: Qlean-mini + link: https://qdrvm.io/ + github: https://github.com/qdrvm/qlean-mini + docs: + chat: + status: R&D + # support: + lang: C++ + # donate: + opensource: true +- name: Lantern + link: https://piertwo.com/ + github: https://github.com/Pier-Two/lantern + docs: + chat: + status: R&D + # support: + lang: C + # donate: + opensource: true +- name: Lighthouse + link: https://lighthouse.sigmaprime.io/ + github: https://github.com/hopinheimer/lighthouse + docs: https://lighthouse-book.sigmaprime.io/ + chat: https://discord.gg/cyAszAh + status: R&D + # support: + lang: Rust + # donate: + opensource: true +- name: ethlambda + link: https://lambdaclass.com/ + github: https://github.com/lambdaclass/ethlambda + docs: + chat: + status: R&D + # support: + lang: Rust + # donate: + opensource: true +- name: gean + link: https://geanlabs.com/ + github: https://github.com/geanlabs/gean + docs: + chat: + status: R&D + # support: + lang: Go + # donate: + opensource: true + diff --git a/_includes/css/base.css b/_includes/css/base.css index a48696ae..c834d4cb 100644 --- a/_includes/css/base.css +++ b/_includes/css/base.css @@ -109,4 +109,16 @@ root { } +#supermajorityDataIssue .accordion-button { + color: var(--bs-warning-text-emphasis); + background-color: var(--bs-warning-bg-subtle); + border-color: var(--bs-warning-border-subtle); + box-shadow: none; +} +#supermajorityDataIssue .accordion-item { + border-color: var(--bs-warning-border-subtle); + --bs-accordion-btn-padding-x: 1rem; + --bs-accordion-btn-padding-y: 0.55rem; +} + diff --git a/_includes/partials/content/client-resource.html b/_includes/partials/content/client-resource.html index ff115149..d199a8fb 100644 --- a/_includes/partials/content/client-resource.html +++ b/_includes/partials/content/client-resource.html @@ -5,7 +5,8 @@

Client Resources

-
+ +

Consensus Clients

@@ -22,7 +23,8 @@

Consensus Clients

- {%- for client in site.data.clients-consensus -%} + {%- assign clients-consensus = site.data.clients-consensus | sort_natural: "name" -%} + {%- for client in clients-consensus -%} {%- assign opacity = "" -%} {%- if client.status == "deprecated" -%} {%- assign opacity = "opacity-50" -%} @@ -118,8 +120,14 @@

Consensus Clients

+
+
+

Note: Donations made to Protocol Guild are distributed among Ethereum protocol contributors, including client teams. All recipients and splits can be seen here.

+
+
-
+ +

Execution Clients

@@ -136,7 +144,8 @@

Execution Clients

- {%- for client in site.data.clients-execution -%} + {%- assign clients-execution = site.data.clients-execution | sort_natural: "name" -%} + {%- for client in clients-execution -%} {%- assign opacity = "" -%} {%- if client.status == "deprecated" -%} {%- assign opacity = "opacity-50" -%} @@ -232,11 +241,208 @@

Execution Clients

+
+
+

Note: Donations made to Protocol Guild are distributed among Ethereum protocol contributors, including client teams. All recipients and splits can be seen here.

+
+
-
-
-
-

Note: Donations made to Protocol Guild are distributed among Ethereum protocol contributors, including client teams. All recipients and splits can be seen here.

+ +
+

Lean Consensus Clients

+
+ + + + + + + + + + + + + + + {%- assign clients-lean-consensus = site.data.clients-lean-consensus | sort_natural: "name" -%} + {%- for client in clients-lean-consensus -%} + {%- assign opacity = "" -%} + {%- if client.status == "deprecated" -%} + {%- assign opacity = "opacity-50" -%} + {%- endif -%} + + + {%- if client.github -%} + + {%- else -%} + + {%- endif -%} + {%- if client.docs -%} + + {%- else -%} + + {%- endif -%} + {%- if client.chat -%} + {%- assign chat_icon = site.data.icons.chat -%} + {%- if client.chat contains "discord" -%} + {%- assign chat_icon = site.data.icons.discord -%} + {%- endif -%} + {%- if client.chat contains "t.me" -%} + {%- assign chat_icon = site.data.icons.telegram -%} + {%- endif -%} + + {%- else -%} + + {%- endif -%} + {%- if client.status -%} + + {%- else -%} + + {%- endif -%} + + {%- if client.lang -%} + + {%- else -%} + + {%- endif -%} + + + {%- endfor -%} + +
ClientGithubDocsChatStatusLanguage
+ {%- if client.link -%} + + {{client.name}} + + {%- else -%} + {{client.name}} + {%- endif -%} + + + {{site.data.icons.github}} + + - + + {{site.data.icons.docs}} + + - + + {{chat_icon}} + + -{{client.status}}-{{client.lang}}-
+
+
+ +
+

Multinode Clients

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Feature / Property + Vero + + Vouch +
Attestation StrategiesM of NM of N, First, Best
SignerWeb3SignerDirk
Distributed Validator KeysNo, uses whole keyYes, uses sharded keys
Active-active RedundancyVero Sponsors onlyYes
Ethereum Remote Signing APIYesNo
Slashing ProtectionYesYes
Slashing DetectionYesNo
Ease of MigrationDesigned for simple adoption and rollbackMore complex setup and integration
Eth Docker SupportYesYes
Open SourceYesYes
Dependency SurfaceMinimal codebase and external dependencies; single maintainerLarge/complex codebase (~5x Vero) and external dependencies; creator retired, codebase maintained by Bitwise
Typical Use CaseSimple way to protect validators from client consensus bugsHighly-configurable multi-node validator setups with sharded validator keys
+
diff --git a/_includes/partials/content/distribution.html b/_includes/partials/content/distribution.html index 1b1664a0..023257c5 100644 --- a/_includes/partials/content/distribution.html +++ b/_includes/partials/content/distribution.html @@ -130,6 +130,27 @@

Execution Clients

{%- assign visibility = "" -%} {%- endif -%}
+ + +
+
+

+ +

+
+
+
    +
  • This data set is mostly comprised of mostly time-intensive manually-gathered data which requires reaching out to each entity. Most of this data hasn't been updated in over a year.
  • +
  • Lido curated operator set last updated for Q4 2025 data. This data set does not take into account consolidations so it skews results towards older data.
  • +
  • Graffiti data is updated on an ongoing basis, but accounts for a small portion of the data set.
  • +
+
+
+
+
+ {%- assign supermajority = site.data.supermajority | last -%} {%- assign supermajority_coverage = supermajority.data.other.validators_percentage | times: 100 | round: 1 -%} {%- include partials/components/progress-bar.html data=supermajority.data.distribution round=true -%} diff --git a/_includes/partials/content/resource-links.html b/_includes/partials/content/resource-links.html index 0b09c8f2..605f48d7 100644 --- a/_includes/partials/content/resource-links.html +++ b/_includes/partials/content/resource-links.html @@ -18,9 +18,6 @@
Tools
  • eth-docker
  • -
  • - Vouch -
  • keymanager APIs
  • @@ -36,17 +33,11 @@
    Metrics
    Staking Pool Client Diversity
  • - Miga Labs Dashboard + Miga Labs Dashboard
  • Chainsafe Nodewatch
  • -
  • - Proposer Diversity Data -
  • -
  • - Rated.Network Validator Ratings -
  • Financial Risk Per Consensus Client
  • @@ -56,10 +47,10 @@
    Metrics
    Research
    diff --git a/_includes/partials/content/switch-clients.html b/_includes/partials/content/switch-clients.html index 2ad96fdd..ccdc0df5 100644 --- a/_includes/partials/content/switch-clients.html +++ b/_includes/partials/content/switch-clients.html @@ -1,7 +1,33 @@
    -

    Switch Clients

    + +
    +

    Switch Clients

    +
    + + + +

    Multinode Clients

    +
    (Recommended)
    +
    +
    +

    Multinode validator clients provide protection against client bugs that can cause validators to vote for an invalid fork of the chain. They do so by combining data from multiple consensus and execution clients, requiring M-of-N connected clients to agree before casting their vote.

    + +

    When one client diverges or behaves inconsistently, the validator client continues operating through the rest of the clients as long as M of them agree on which fork to vote for. This way a defect or downtime in any single client does not disrupt validation activity.

    + +

    This approach protects both the operator and the Ethereum network by reducing correlated failures, lowering risks during consensus bugs and improving overall resilience.

    + +

    See the Multinode Clients section to understand if Vero or Vouch is better for you. Under most situations Vero will cover 99% of usecases including institutional staking operations.

    +
    + +
    + + +

    Standalone Clients

    For an automated tool (with a GUI) to switch execution clients,
    see Accidental-Green's Ethereum Client Switcher

    Submit Guide diff --git a/assets/img/execution-clients/erigon-text-logo-original.png b/assets/img/execution-clients/erigon-text-logo-original.png deleted file mode 100644 index 1b28020e..00000000 Binary files a/assets/img/execution-clients/erigon-text-logo-original.png and /dev/null differ diff --git a/assets/img/execution-clients/erigon-text-logo-originl.png b/assets/img/execution-clients/erigon-text-logo-originl.png new file mode 100644 index 00000000..42e531bb Binary files /dev/null and b/assets/img/execution-clients/erigon-text-logo-originl.png differ diff --git a/assets/img/execution-clients/erigon-text-logo.png b/assets/img/execution-clients/erigon-text-logo.png index 42e531bb..a9b8f451 100644 Binary files a/assets/img/execution-clients/erigon-text-logo.png and b/assets/img/execution-clients/erigon-text-logo.png differ diff --git a/assets/img/protocol-guild.png b/assets/img/protocol-guild.png index 0fb7372b..c4590edb 100644 Binary files a/assets/img/protocol-guild.png and b/assets/img/protocol-guild.png differ