💎 What is Ethereum?
区分几个概念:
- Blockchain Data:数据,我们通常接触的 Block,Transaction,都是数据。
- Blockchain Network:P2P 网络,分布在世界各地。
- Blockchain Client:这个是个执行以太坊所定义的各种协议的程序。
Ethereum 是一套协议。
运行遵循这套协议的 Ethereum Client,就可以做为一个 Node 参与到 Ethereum Network 中。接收,发送各种信息,通过共识协议来维护 Ethereum Data。
是的,这是以太坊的数据部分。
是的,这是建立在共识协议之上的应用。
Ethereum Node

Ethereum Execution Layer
- 以太坊执行层,是以太坊区块链最核心的部分,负责处理交易,智能合约的执行以及最终状态的存储。
- 之前有一个说法,以太坊 1.0,这个说法并不准确。
- The Merge:PoW 到 PoS 的转变

Ethereum Consensus Layer
- Validator
- 质押 32ETH 成为 Validator,每 12 秒为一个 slot,每 32 个 slot 为一个 epoch (6.4min)
- 每个 epoch 之初,所有 validator 会被分为不同的 committee,每个 committee 负责一个 slot,validator 需要对该 slot 里的 block 进行投票,选出在他们的视角下,当前的 beacon chain header 以及应该被 justify 的 epoch,投出的票,就叫 attestation。

- LMD-GHOST (Latest Message Driven GHOST):分叉选择算法
- 在 proceeding epoch 里,会因为各种原因(比如网络延迟,proposer 下线等等),我们不会得到一个萝卜一个坑那样的 block 排列,需要对不同的 block 分叉进行选择,确定哪个才是 beacon chain header,然后在此之上做进一步建设。
- 根据 Latest Message,即最新的 block 来选择,一个 block 后面附有越多的 Latest Message,说明越多的人在这个 block 之上做建设,说明越多的人把它当作 beacon chain header。

- Casper FFG:将选择出来的分叉固定下来
- 每个 epoch 的第一个 block,作为 checkpoint,在这个 epoch 结束的时候(checkpoint 有最长的收集 attestation 时间),如果这个 checkpoint 收集到了超过 $\frac{2}{3}$ 的总 effective balance 的投票,它就可以被 justified。如果这个 justified checkpoint 的下一个 checkpoint,也被 justified 的话,它就可以被 finalized。
- finalized checkpoint 之间的所有 block 被标记为 finalized;finalized checkpoint 和 justified checkpoint 之间的所有 block 被标记为 justified;
- finalized block 不可被更改,除非至少有 $\frac{1}{3}$ 的 effective balance 更改自己之前的票(Beacon chain slash 机制,validator 或者 proposer 发出自相矛盾的 message 会被 slash 掉,他们的 balance 会被 burn 掉)。
Ethereum Client

Execution layer client
- Geth: 用 Go 语言编写的客户端,是执行层最流行的客户端之一。它最主要的特点是,稳定且功能完整。https://geth.ethereum.org/
- 如果你要长期运行节点,请尽量不要用 Geth!!!
- Nethermind: 用 C# 编写的客户端。https://www.nethermind.io/nethermind-client
- Besu: 用 Java 编写的客户端,最开始它是 Hyperledger 联盟链的客户端,后来也支持了 public network。https://besu.hyperledger.org/public-networks
- Erigon: 也是 Go 语言编写的,是 Geth 的一个 branch,最开始叫 Turbo-Geth,主要优化了原版 Geth 客户端的数据存储与网络性能的优化。https://erigon.tech/
Consensus layer client
- Prysm: 用 Go 语言编写的客户端,用户友好?https://prysmaticlabs.com/
- Lighthouse: 用 Rust 编写的客户端,吃的资源比较少 https://lighthouse.sigmaprime.io/
- Teku: 用 Java 编写的客户端,是 Consensys 的产品,比较吃资源 https://consensys.io/teku
- Nimbus: 用 Nim 编写的客户端,吃的资源很少 https://nimbus.team/index.html
- Lodestar: 用 TypeScript 编写的客户端,代码写的很漂亮 https://lodestar.chainsafe.io/
💻 How to Run an Ethereum Node

Execution Client


Consensus Client



📖 Where to get Ethereum News
1. 以太坊新闻周刊,汇总每周以太坊发生的重要的事件
Week In Ethereum News | Evan Van Ness | Substack
[🔗链接 https://weekinethereum.substack.com/]
2. 以太坊 Reddit 社区论坛
尤其是每次 AMA,都很有看点:
[AMA] We are EF Research
[🔗 https://www.reddit.com/r/ethereum/comments/191kke6/ama_we_are_ef_research_pt_11_10_january_2024/]
3. 以太坊开发者 Reddit 论坛
4. EIP 提案
Home | Ethereum Improvement Proposals
[🔗链接 https://eips.ethereum.org/]
5. EIP 提案论坛,这个可以多逛逛,非常有意思
Fellowship of Ethereum Magicians
[🔗链接 https://ethereum-magicians.org/]
6. ETH 研究论坛,非常硬核
Ethereum Research
[🔗链接 https://ethresear.ch/]
7. Vitalik 个人网站
Vitalik Buterin's website
[🔗链接 https://vitalik.eth.limo/]
欢迎更多热爱开源的学习者加入以太坊协议中文 Wiki [🔗 https://github.com/openbuildxyz/ethereum-protocol-studies-zh],一起 Build!
作者:陈玄