Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions _data/clients-execution.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
106 changes: 106 additions & 0 deletions _data/clients-lean-consensus.yml
Original file line number Diff line number Diff line change
@@ -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

12 changes: 12 additions & 0 deletions _includes/css/base.css
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}


222 changes: 214 additions & 8 deletions _includes/partials/content/client-resource.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
<h2 class="h1 fw-bold mb-2">Client Resources</h2>
</div>
<div class="row justify-content-evenly mt-4">
<div class="col col-xxl-8 col-xl-9 col-lg-10 col-md-11">
<!-- Consensus Clients -->
<div id="consensus-clients" class="col col-xxl-8 col-xl-9 col-lg-10 col-md-11">
<h3 class="mb-3">Consensus Clients</h3>
<div class="table-responsive">
<table class="table table-bordered mb-2">
Expand All @@ -22,7 +23,8 @@ <h3 class="mb-3">Consensus Clients</h3>
</tr>
</thead>
<tbody>
{%- 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" -%}
Expand Down Expand Up @@ -118,8 +120,14 @@ <h3 class="mb-3">Consensus Clients</h3>
</tbody>
</table>
</div>
<div class="row justify-content-center mt-3">
<div class="col-md-11 text-md-center">
<p><strong>Note</strong>: Donations made to <a href="https://protocolguild.org" target="_blank">Protocol Guild</a> are distributed among Ethereum protocol contributors, including client teams. All recipients and splits can be <a href="https://github.com/protocolguild/documentation/blob/main/docs/01-membership.md" target="_blank">seen here</a>.</p>
</div>
</div>
</div>
<div class="col col-xxl-8 col-xl-9 col-lg-10 col-md-11 mt-5">
<!-- Execution Clients -->
<div id="execution-clients" class="col col-xxl-8 col-xl-9 col-lg-10 col-md-11 mt-5">
<h3 class="mb-3">Execution Clients</h3>
<div class="table-responsive">
<table class="table table-bordered mb-2">
Expand All @@ -136,7 +144,8 @@ <h3 class="mb-3">Execution Clients</h3>
</tr>
</thead>
<tbody>
{%- 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" -%}
Expand Down Expand Up @@ -232,11 +241,208 @@ <h3 class="mb-3">Execution Clients</h3>
</tbody>
</table>
</div>
<div class="row justify-content-center mt-3">
<div class="col-md-11 text-md-center">
<p><strong>Note</strong>: Donations made to <a href="https://protocolguild.org" target="_blank">Protocol Guild</a> are distributed among Ethereum protocol contributors, including client teams. All recipients and splits can be <a href="https://github.com/protocolguild/documentation/blob/main/docs/01-membership.md" target="_blank">seen here</a>.</p>
</div>
</div>
</div>
</div>
<div class="row justify-content-center mt-3">
<div class="col col-xl-6 col-lg-8 col-md-11 mt-3 text-md-center">
<p><strong>Note</strong>: Donations made to <a href="https://protocolguild.org" target="_blank">Protocol Guild</a> are distributed among Ethereum protocol contributors, including client teams. All recipients and splits can be <a href="https://github.com/protocolguild/documentation/blob/main/docs/01-membership.md" target="_blank">seen here</a>.</p>
<!-- Lean Consensus Clients -->
<div id="consensus-lean-clients" class="col col-xxl-8 col-xl-9 col-lg-10 col-md-11 mt-5">
<h3 class="mb-3">Lean Consensus Clients</h3>
<div class="table-responsive">
<table class="table table-bordered mb-2">
<thead class="">
<tr>
<th scope="col" style="min-width: 8rem;">Client</th>
<th scope="col">Github</th>
<th scope="col" style="min-width: 3.8rem;">Docs</th>
<th scope="col">Chat</th>
<th scope="col">Status</th>
<!-- <th scope="col">Support</th> -->
<th scope="col">Language</th>
<!-- <th scope="col">Donate</th> -->
</tr>
</thead>
<tbody>
{%- 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 -%}
<tr class="{{opacity}}">
<th scope="row">
{%- if client.link -%}
<a href="{{client.link}}" class="" target="_blank">
{{client.name}}
</a>
{%- else -%}
{{client.name}}
{%- endif -%}
</th>
{%- if client.github -%}
<td>
<a href="{{client.github}}" class="text-decoration-none" target="_blank">
{{site.data.icons.github}}
</a>
</td>
{%- else -%}
<td>-</td>
{%- endif -%}
{%- if client.docs -%}
<td>
<a href="{{client.docs}}" class="text-decoration-none" target="_blank">
{{site.data.icons.docs}}
</a>
</td>
{%- else -%}
<td>-</td>
{%- 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 -%}
<td>
<a href="{{client.chat}}" class="text-decoration-none" target="_blank">
{{chat_icon}}
</a>
</td>
{%- else -%}
<td>-</td>
{%- endif -%}
{%- if client.status -%}
<td>{{client.status}}</td>
{%- else -%}
<td>-</td>
{%- endif -%}
<!-- {%- if client.support -%}
<td>{{client.support}}</td>
{%- else -%}
<td>-</td>
{%- endif -%} -->
{%- if client.lang -%}
<td>{{client.lang}}</td>
{%- else -%}
<td>-</td>
{%- endif -%}
<!-- {%- if client.donate -%}
{%- if client.donate contains "http" -%}
{%- assign donate_icon = site.data.icons.donate -%}
{%- if client.donate contains "etherscan.io" -%}
{%- assign donate_icon = site.data.icons.etherscan -%}
{%- endif -%}
{%- if client.donate contains "gitcoin.co" -%}
{%- assign donate_icon = site.data.icons.gitcoin -%}
{%- endif -%}
{%- if client.donate contains "protocol-guild" -%}
{%- assign donate_icon = '<img src="/assets/img/protocol-guild.png" style="width:1.4rem;height:1.4rem;">' -%}
{%- endif -%}
<td>
<a href="{{client.donate}}" class="text-decoration-none" target="_blank">
{{donate_icon}}
</a>
</td>
{%- else -%}
{%- if client.donate == "funded" -%}
<td><span class="text-success" title="funded">{{site.data.icons.checkmark}}</span></td>
{%- else -%}
<td>{{client.donate}}</td>
{%- endif -%}
{%- endif -%}
{%- else -%}
<td>-</td>
{%- endif -%} -->
</tr>
{%- endfor -%}
</tbody>
</table>
</div>
</div>
<!-- Multinode Clients -->
<div id="multinode-clients" class="col col-xxl-8 col-xl-9 col-lg-10 col-md-11 mt-5">
<h3 class="mb-3">Multinode Clients</h3>
<div class="table-responsive">
<table class="table table-bordered mb-2">
<thead class="">
<tr>
<th scope="col" style="min-width: 8rem;">Feature / Property</th>
<th scope="col">
<a href="https://vero.docs.serenita.io/" target="_blank">Vero</a>
</th>
<th scope="col">
<a href="https://github.com/attestantio/vouch" target="_blank">Vouch</a>
</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Attestation Strategies</th>
<td>M of N</td>
<td>M of N, First, Best</td>
</tr>
<tr>
<th scope="row">Signer</th>
<td>Web3Signer</td>
<td>Dirk</td>
</tr>
<tr>
<th scope="row">Distributed Validator Keys</th>
<td>No, uses whole key</td>
<td>Yes, uses sharded keys</td>
</tr>
<tr>
<th scope="row">Active-active Redundancy</th>
<td>Vero Sponsors only</td>
<td>Yes</td>
</tr>
<tr>
<th scope="row">Ethereum Remote Signing API</th>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<th scope="row">Slashing Protection</th>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<th scope="row">Slashing Detection</th>
<td>Yes</td>
<td>No</td>
</tr>
<tr>
<th scope="row">Ease of Migration</th>
<td>Designed for simple adoption and rollback</td>
<td>More complex setup and integration</td>
</tr>
<tr>
<th scope="row">Eth Docker Support</th>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<th scope="row">Open Source</th>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<th scope="row">Dependency Surface</th>
<td>Minimal codebase and external dependencies; single maintainer</td>
<td>Large/complex codebase (~5x Vero) and external dependencies; creator retired, codebase maintained by Bitwise</td>
</tr>
<tr>
<th scope="row">Typical Use Case</th>
<td>Simple way to protect validators from client consensus bugs</td>
<td>Highly-configurable multi-node validator setups with sharded validator keys</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
Expand Down
Loading