Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Documentation for Ethereum execution clients #309

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

Karrenbelt
Copy link
Contributor

Updated the documentation to include an overview table, noteworthy features of production clients, distribution insights, and additional resources

Copy link
Contributor

@taxmeifyoucan taxmeifyoucan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks a lot for this one as well! I think it's a great shape now, only some info on clients to be edited

| [Nimbus](https://github.com/status-im/nimbus-eth1) | Nim | Nimbus | Development |
| [Silkworm](https://github.com/erigontech/silkworm) | C++ | Erigon | Development |
| [JS Client](https://github.com/ethereumjs/ethereumjs-monorepo) | Typescript | Paradigm | Development |
| [Akula](https://github.com/akula-bft/akula) | Rust | Akula Developers | Deprecated |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe I would split the table here to have clear overview of current and historical clients. At first glance it just feels weird to have it all in one place but maybe it works just with Status column, I'll let others comment on this.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Btw there is also a rust execution client in development by lambdaclass https://github.com/lambdaclass/ethereum_rust


The overwhelming majority of node operators are currently using Geth as an Execution Client.
In the interest of supporting the health of the Execution Layer (formerly ETH1), it is recommended to use different clients.
[Why?](https://clientdiversity.org/#why)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be directly in the text with link over [client diversity] or so. There is also a great ethereum.org page on client diversity


### Besu
Developed by the Hyperledger Foundation in Java, Besu (Hyperledger Besu) is distinguished for its enterprise-grade features and compatibility with various Hyperledger projects.
It supports both public and private networks such as Rinkeby, Ropsten, and Goerli, offering robust command-line tools and a JSON-RPC API.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all of these testnets are deprecated, it shouldnt even mention them :) I would update this and maybe remove the line about testnets altogether


### Erigon
Initially a fork of Geth (Go Ethereum), Erigon focuses on optimizing performance, fast synchronization capabilities, and reducing disk space usage.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the original name was turbo-geth, worth mentioning here


### Erigon
Initially a fork of Geth (Go Ethereum), Erigon focuses on optimizing performance, fast synchronization capabilities, and reducing disk space usage.
Erigon's architecture allows it to complete a full archive node sync in under three days with less than 2 TB of data storage, making it ideal for resource-efficient node deployments.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the 2tb is old information, now it's almost 3. Also the 3 days are subjective because it depends on the machine. In this part, I would highlight that erigon came up with a new generation of handling MPT archive which enables modern archive nodes to take much less data. With some links to resources on their approach


### Geth
As the official Go implementation of Ethereum, Geth (Go Ethereum) enjoys widespread adoption among developers and users alike.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's called 'official' sometimes but I would avoid this term here, I think it doesnt really makes sense in ethereum context. But it could be mention it's one of the original implementation, therefore the oldest currently maintained EL

## Clients in development
Noteworthy Features:
- [Private Networks](https://docs.nethermind.io/fundamentals/private-networks)
- [Prometheus and Grafana](https://docs.nethermind.io/monitoring/metrics/grafana-and-prometheus)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know about metrics being a higlight here, every single client supports it

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

they have plugin system, snap support, bunch of cool features


### Reth
Reth (Rust Ethereum) is a modular and efficient Ethereum client designed for user-friendliness and high performance.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

here I would put emphasis on the performance and it's inspiration from erigon architecture


### Silkworm

Modular C++ implementation by Erigon team. Also called Erigon++.
Silkworm is a C++ implementation of the Ethereum Execution Layer protocol, aiming to be the fastest Ethereum client.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it aiming to be fastest? I think their sales pitch is modularity


### JS Client
The TypeScript-based JavaScript client by Paradigm, part of the EthereumJS monorepo, offers flexibility and ease of integration for Ethereum's execution layer functionalities.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

js client is not from paradigm lol. At least afaik? It was always developed by EF, led by Holger..
The highlight is that they implement EIPs very soon before hardfork and give people opportunity to test stuff

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants