Skip to content

Latest commit

 

History

History
465 lines (342 loc) · 29.6 KB

ghx1104.md

File metadata and controls

465 lines (342 loc) · 29.6 KB
timezone
Asia/Shanghai

ghx1104

  1. 我是一名智能合约开发者,想要学习协议层的知识
  2. 你认为你会完成本次残酷学习吗?
    • 当然可以

Notes

2025.02.06

week0

  • 介绍EPS(Ethereum Protocol Study),讲基础概念比较多,本次学习重在了解概念、底层原理。
  • 需要提前了解一些概念:哈希、公钥密码学、默克尔树、P2P、分布式系统等等

week1

  • 以太坊文化:FOSS (Free and Open Source Software)

  • 以太坊的早期历史与技术决策灵感:以太坊(Ethereum)最早的构思可以追溯到 2013 年,由 Vitalik Buterin(V 神) 提出。他最初的想法是构建一个 比比特币更通用的区块链平台,不仅仅用于交易,而是能够运行智能合约(Turing-complete contracts)。

    1. 以太坊的“前历史”(The Actual Prehistory of the Protocol)

    在以太坊正式启动之前,Vitalik Buterin 发表了一系列博客文章,记录了他的思考过程。这些文章涵盖了: • 比特币的局限性:比特币仅支持简单的交易逻辑,无法灵活执行复杂合约。 • 智能合约的雏形:Vitalik 受到 Colored Coins、Mastercoin 等早期比特币扩展方案的启发,思考如何在区块链上执行复杂逻辑。 • 图灵完备性:比特币的脚本语言不是图灵完备的(有限制),Vitalik 提出构建一个图灵完备的智能合约平台,即 EVM(以太坊虚拟机)。

    1. 关键技术决策的灵感来源(Early Ideas and Inspiration for Technical Decisions)

    Vitalik 的博客详细记录了以太坊的设计选择,主要包括以下几个方面:

    ✅ 账户模型 vs. UTXO • 比特币使用 UTXO 模型(每笔交易是多个输入和输出的组合),但这种方式难以支持复杂合约。 • 以太坊选择了 账户模型,类似于银行账户,用户余额可以动态更新,这种方式更适合智能合约。

    ✅ 智能合约与 EVM(Ethereum Virtual Machine) • 受 Nick Szabo 的 智能合约 概念影响,Vitalik 设计了一个可以执行合约代码的 EVM(以太坊虚拟机),使智能合约可以自动执行。

    ✅ Gas 机制 • 参考比特币的交易费,Vitalik 设计了 Gas 机制,确保计算资源不会被滥用,同时防止“无限循环”代码导致网络瘫痪。

    ✅ PoW 到 PoS 的演进 • 早期以太坊采用 PoW(工作量证明),但 Vitalik 很早就提出 PoS(权益证明) 作为未来发展方向,以减少能耗并提高安全性。

    1. 以太坊的正式提出 • 2013 年 12 月,Vitalik 发布以太坊白皮书,详细描述了 一个去中心化、通用的智能合约平台。 • 2014 年,以太坊团队开始开发,并在 2015 年 7 月 正式发布 Ethereum 1.0(Frontier)。
  • 以太坊的设计、实施、发展:以太坊最初在其白皮书(Whitepaper)中提出构想,并从比特币及其背景(如上所述)汲取灵感,打造了一个通用的基于区块链的计算平台。其技术设计最初在**黄皮书(Yellowpaper)**中进行了正式规范,并随着时间的推移不断发展演变。协议的变更由社区通过 EIP(Ethereum Improvement Proposals,以太坊改进提案) 进行跟踪和讨论。目前,以太坊的技术规范在 Python 语言中实现,包括:Execution specs(执行规范):定义 EVM(以太坊虚拟机)如何执行智能合约和交易。Consensus specs(共识规范):定义以太坊的共识机制,如 PoS(权益证明)如何在网络中达成共识。以太坊协议会随着时间的推移而变化,每次网络升级都会带来新的改进。尽管不断变化,但建筑的演变反映了某些基本原则。这些可以总结如下:简单、通用、模块化、非歧视、敏捷。当前的网络架构是网络升级历史多次迭代的结果。在实施中。执行层(EL)或共识层(CL)的实现被称为客户端。运行此客户端并连接到网络的计算机被称为节点。因此,节点是一对积极参与网络的EL和CL客户端。由于以太坊是正式指定的,它可以在任何语言中以不同的方式实现。这导致多年来出现了各种实施,有些已经弃用,有些刚刚开发中。这种策略被称为客户多样性。以太坊不依赖于单一的“官方”实现,但用户可以选择任何客户端,并确保它能完成工作。如果在单个客户端实现中出现问题,则不会影响网络的其余部分。

  • 以太坊开发测试:随着定期更改和多个客户端实现,测试是网络安全的基础。在任何网络升级之前,都有各种测试工具和场景被大量使用。测试是根据规格生成的,并创建各种场景。有些正在单独测试客户端,有些则使用所有客户端对模拟测试网。开发周期的不同部分和客户端部分有不同的测试工具。这包括状态转换测试、模糊、阴影分叉、RPC测试、客户端单元测试和CI/CD等。

  • 以太坊协调开发:

    1. 以太坊的发展与传统的企业项目大不相同。首先,它都是公开的,任何人都可以审查或贡献它。其次,有许多不同的团队在不同的部分工作。总而言之,来自不同组织的大约20个不同团队在以太坊上工作。与专有技术不同,以太坊开发人员不是在竞争,而是在一起工作。随着复杂性不断增加,基本上没有人会成为整个以太坊的专家。相反,人们在特定领域发展专业知识,并与他人合作。这要归功于以太坊的模块化,并允许开发人员专注于他们个人喜欢的挑战。
    2. 新功能或更改的传统开发周期是Idea - Research - Development - Testing - Adoption。
    3. 然而,在这个周期的任何时刻都可能出现问题,导致从头开始再次迭代。为了能够交付网络升级并就当前的发展重点达成一致,需要进行一定的协调。所有这些都是公开的,任何有兴趣了解核心协议的人都可以关注。协调主要通过PM回购中安排的定期电话进行。有不同类型的开发人员会议,其中最大的会议是All Core Devs(ACD)。这是所有相关团队的代表来讨论共识或执行层的当前发展的地方。社区的想法和拟议的更改是使用EIP流程进行协调的。此外,还有一些讨论论坛。讨论核心升级的最大一个是 https://ethresear.ch 。另一个与EIP流程相关并用于讨论具体提案的论坛是以太坊魔术师。在R&D Discord服务器(在EPFsg discord中ping我们以获取邀请)和客户团队组中也发生了许多重要的讨论。还有一些异地或研讨会,许多核心开发人员会面,面对面地加快流程。

2025.02.07

week2

  • 以太坊的节点:在以太坊(Ethereum)网络中,节点(Nodes) 和 客户端(Clients) 是关键组成部分,它们共同构建了去中心化网络的基础。以太坊网络由分布式节点(Nodes) 组成,这些节点存储区块链数据,并运行以太坊协议。节点可以执行不同的角色,主要分为以下几类:

    1. 全节点(Full Node) • 存储整个区块链历史,并验证所有交易和区块。 • 独立执行智能合约,确保区块链的完整性。 • 适用于开发者、研究者和希望完全去信任化的用户。 • 运行成本较高,需要大量存储和计算资源。

    2. 轻节点(Light Node) • 仅下载区块头(Block Header),不存储完整交易数据。 • 依赖全节点进行数据查询和交易验证。 • 适用于资源受限的设备(如移动设备、DApp 用户)。

    3. 归档节点(Archive Node) • 存储所有历史状态(包括所有账户和智能合约的历史状态)。 • 适用于区块链分析、数据索引服务等。 • 需要极大的存储空间,通常由研究机构或区块链服务商运营。

    4. 验证者节点(Validator Node) • 以太坊 2.0(PoS)机制下的特殊节点,负责提议和验证区块。 • 需要质押 32 ETH 才能参与共识过程。 • 通过验证区块赚取质押奖励(Staking Rewards)。

  • 以太坊客户端(Ethereum Clients):以太坊客户端(Clients) 是实现以太坊协议的软件,允许用户运行节点、同步区块链、部署智能合约和执行交易。不同的客户端可以互操作,因为它们都遵循以太坊协议。 客户端 开发团队 语言 类型 适用场景 Geth Ethereum Foundation Go 全节点、轻节点 最流行,适合开发、挖矿 Nethermind Nethermind C# 全节点 高性能,适合机构 Besu Hyperledger Java 全节点、企业级 适合企业和权限链 Erigon 独立团队 Go 归档节点 高效存储,适合数据分析 Lighthouse Sigma Prime Rust PoS 验证者 以太坊 2.0 验证者 Prysm Prysmatic Labs Go PoS 验证者 以太坊 2.0 验证者 Teku ConsenSys Java PoS 验证者 企业级 PoS 客户端

  • 如何选择合适的节点和客户端? • 开发者:推荐 Geth 或 Nethermind,适用于 DApp 开发和测试。 • 普通用户:使用轻节点(如 Geth 的 light mode)或依赖公共 RPC(如 Infura)。 • 企业或数据分析:Erigon 或 Besu,适合高性能存储和数据查询。 • 质押(Staking):Lighthouse、Prysm、Teku,适用于以太坊 2.0 质押者。

  • Ethereum: Mechanics(以太坊的工作机制):以太坊(Ethereum)是一个去中心化的智能合约平台,它允许开发者构建和部署去中心化应用(DApps)。相比于比特币仅用于交易记录,以太坊通过图灵完备的虚拟机(EVM) 实现了更强大的功能。本文将介绍以太坊的核心工作机制,包括区块链结构、共识机制、账户系统、Gas 费用、智能合约执行等。

    1. 以太坊的基本结构:以太坊与比特币类似,采用区块链 作为底层存储结构,但它支持更复杂的计算模型。核心组件包括: • 区块(Block):交易的集合,包含区块头(Block Header)和区块体(Block Body)。 • 交易(Transaction):以太坊的状态转换,由账户发起,可能包含 ETH 转账或智能合约调用。 • 状态(State):以太坊采用 账户模型 记录状态,而非比特币的 UTXO 模型。 • 以太坊虚拟机(EVM):执行智能合约的核心组件。

    2. 账户模型:以太坊采用账户(Account)模型,而非比特币的 UTXO 模型。账户分为两种:

      1. 外部拥有账户(EOA, Externally Owned Account): • 由用户控制,使用私钥签名交易。 • 主要用于发送 ETH 和调用智能合约。
      2. 合约账户(Contract Account): • 由智能合约代码控制。 • 不能主动发起交易,只能被 EOA 调用。

      每个账户包含以下数据: • 地址(Address):公钥哈希生成的 20 字节地址。 • 余额(Balance):账户持有的 ETH 数量。 • nonce:防止重放攻击的计数器。 • 存储(Storage):合约账户专有,存储智能合约的数据。 • 代码(Code):智能合约账户的代码,只能执行,不能修改。

    3. 交易(Transactions):交易是以太坊状态转换的核心,每笔交易都包含: • 发送方(From):交易发起账户(EOA)。 • 接收方(To):可以是 EOA 或智能合约。 • 值(Value):转移的 ETH 数量。 • Gas 限制(Gas Limit):愿意支付的最大计算成本。 • Gas 价格(Gas Price):每单位 Gas 付出的 ETH 数量。 • 数据(Data):存储智能合约调用的输入参数。 • nonce:防止交易重放攻击。

      如果 To 为空,则表示创建新智能合约。

    4. Gas 机制:以太坊执行交易或合约时,需要支付Gas 费用,防止计算滥用: • Gas 计算方式:  • Base Fee:协议设定的基础费用,随着区块拥堵程度动态调整。 • Tip(Priority Fee):矿工/验证者的小费,提高交易优先级。 • Gas Limit:交易愿意支付的最大 Gas 量,防止意外消耗过多资源。

    5. 智能合约执行:智能合约是存储在区块链上的程序,由以太坊虚拟机(EVM)执行:

      1. 部署:通过交易存储合约代码到区块链。
      2. 调用:交易或合约内部调用触发智能合约函数。
      3. 执行: • EVM 解析字节码(Bytecode)。 • 根据 Opcode 逐步执行。 • 状态变更存储在合约账户中。 智能合约通常使用 Solidity 语言编写,编译为 EVM 兼容的字节码。
    6. 以太坊的共识机制:以太坊的共识机制从 PoW(工作量证明) 迁移到了 PoS(权益证明): • PoW(工作量证明,已废弃) • 通过计算哈希找到符合难度目标的区块。 • 依赖矿工(Miners)竞争解决哈希谜题,消耗大量电力。 • PoS(权益证明,以太坊 2.0) • 通过 验证者(Validators) 质押 32 ETH 参与共识。 • 采用 Casper FFG + LMD GHOST 作为最终确定性机制。 • 更节能,降低中心化风险,提高安全性。

    7. 以太坊的分片(Sharding,未来升级):以太坊 2.0 计划引入分片(Sharding) 以提升可扩展性: • 将区块链拆分为多个分片链(Shard Chains)。 • 每个分片链独立处理交易,提高吞吐量。 • 通过 Beacon Chain 进行全局协调。

    8. 以太坊状态存储:以太坊使用 Merkle Patricia Trie(MPT) 结构存储状态: • 账户状态树(State Trie):存储所有账户余额、nonce、存储等。 • 交易树(Transaction Trie):存储区块内的交易信息。 • 收据树(Receipt Trie):存储交易执行的收据信息。 MPT 允许高效验证数据完整性,使得轻节点可以验证状态。

2025.02.08

week3

  • 以太坊的共识层:权益证明与拜占庭容错
  1. 引言:区块链与数字稀缺性

区块链的核心价值之一是实现数字稀缺性,即确保数据不可篡改、资产不可双花。但要维持这种特性,就必须有强大的安全机制来保证系统的完整性,防止恶意节点破坏共识。

  1. 分布式网络中的拜占庭容错(BFT)

在分布式系统中,部分节点可能会作恶或发生故障,这被称为拜占庭问题(Byzantine Generals Problem)。为了解决这个问题,区块链网络需要采用**拜占庭容错(BFT)**机制,即使在一定比例的恶意节点存在的情况下,仍然能达成共识,维持网络正常运行。

  1. 比特币的工作量证明(PoW):第一个 BFT 解决方案

比特币最早通过工作量证明(PoW) 解决了拜占庭容错问题: • 矿工需要进行计算(哈希碰撞) 来竞争区块打包权。 • 最长链原则 决定链的最终状态,使得攻击成本极高。 • 其安全性依赖于外部资源(电力和算力),确保系统防篡改。

然而,PoW 计算消耗大量能源,并且交易确认速度较慢,因此以太坊引入了权益证明(PoS) 作为替代方案。

  1. 以太坊向权益证明(PoS)的转变

以太坊放弃 PoW,采用权益证明(PoS) 以提升可扩展性、安全性和能效。PoS 相比 PoW 的核心区别在于: • PoS 不依赖外部能源消耗(PoW 依赖算力); • PoS 通过系统内部的质押机制(stake)确保安全性; • PoS 参与者是验证者(Validators),而不是矿工。

在以太坊 PoS 机制下: • 验证者需质押 32 ETH 以参与区块提议和验证。 • 随机选取验证者 负责提议新区块,并由其他验证者投票确认。 • 网络使用BFT 机制 确定区块最终状态,防止恶意行为。

  1. BFT 多数派决定链的状态

以太坊的 PoS 依赖诚实验证者的多数派 来决定链的最终状态。 • 交易被打包进区块后,验证者会投票 确认该区块的有效性。 • 只要大多数验证者诚实,链的状态就能安全达成共识。 • 达到一定投票比例的区块会被最终确定(Finalized),不可逆转。

  1. 拜占庭故障与惩罚机制(Slashing)

PoS 机制允许协议主动监测拜占庭故障,即检测恶意行为并进行惩罚(Slashing)。以下行为会导致验证者被惩罚: • 双重签名(Double Signing):同一高度签署多个区块。 • 包围攻击(Surrounding Votes):试图重组已经确认的区块历史。 • 不作为(Inactivity):未能按时投票影响共识。

惩罚方式: • 轻微违规会被罚没部分质押 ETH。 • 严重违规会被强制退出(Stake 被大幅削减)。 • 这些惩罚机制提高了作恶成本,使攻击变得经济上不可行。

  1. 分叉选择规则(Fork Choice Rule):LMD-GHOST

以太坊 PoS 采用 LMD-GHOST(Latest Message-Driven Greedy Heaviest Observed Subtree) 作为分叉选择规则: • 每个验证者的最新投票决定链的权重。 • 链的权重越高,越有可能被选择为主链。 • 这确保了交易能快速确认,同时防止 PoW 中的孤块问题。

  1. 通过 Casper 机制确保活性(Liveness)

Casper 是以太坊的最终确定性机制,确保网络不会因攻击或故障而停滞: • 采用 Casper FFG(Friendly Finality Gadget) 进行 两轮投票,最终确定区块。 • 一旦一个区块被 Casper 机制最终确定,它就无法回滚。 • 只有 超过 1/3 质押的 ETH 被罚没,才能逆转最终状态。 • 这种机制保证了区块链的连续性,即使在部分节点离线的情况下,链也能继续运行。

  1. PoS 提供更强的加密经济安全性

相较于 PoW,以太坊 PoS 在安全性方面更具优势: • 攻击成本极高: • PoW 需要超过 51% 的算力 进行攻击。 • PoS 需要控制 2/3 以上的质押 ETH,否则攻击会被惩罚,损失巨大。 • 经济激励更合理: • 诚实验证者获得 Staking Rewards(质押奖励)。 • 恶意行为导致 ETH 直接损失,经济上不可行。 • 安全性与 ETH 价值正相关: • 质押 ETH 越多,网络越安全。 • 反过来,安全的网络也能维持 ETH 价值。

  1. 结论:以太坊 PoS 共识的优势

以太坊的 PoS 共识机制结合了拜占庭容错(BFT)、质押机制、LMD-GHOST 及 Casper FFG,提供了: ✅ 更高的安全性——恶意行为会被检测并惩罚,攻击成本极高。 ✅ 更高的能效——不依赖矿工算力,节省能源。 ✅ 更快的交易确认——LMD-GHOST 确保交易快速达成共识。 ✅ 未来扩展性——PoS 为分片(Sharding) 等扩展方案铺平道路。

以太坊 PoS 共识层的演进,使其成为一个更可持续、去中心化、安全的区块链,为 Web3 生态提供稳固的基础。🚀

2025.02.09

week4

  • 深入探讨以太坊的测试工具与安全实践:以太坊是一个全球性、去中心化的智能合约平台,确保其安全性和稳定性至关重要。因此,以太坊开发者社区使用了多种测试工具和实践来维护网络安全,防止漏洞和攻击。
  1. 以太坊测试的核心目标

为了保证网络的安全性,以太坊的测试体系主要关注以下几个方面: ✅ 共识机制:确保 PoS(权益证明)和 LMD-GHOST、Casper FFG 等协议正常运行。 ✅ 智能合约安全:防止漏洞、可重入攻击、溢出问题等安全隐患。 ✅ 客户端兼容性:不同的以太坊客户端(Geth、Nethermind、Besu 等)必须行为一致。 ✅ 网络稳定性:确保在高负载或攻击情况下,网络仍能保持正常运作。 ✅ 交易与 EVM(以太坊虚拟机)执行:确保交易执行符合协议规范,不会出现异常行为。

  1. 以太坊的主要测试工具

以太坊的开发者社区使用了多种测试工具,涵盖单元测试、集成测试、模糊测试、仿真测试和经济攻击模拟等方面。

2.1 以太坊客户端测试工具

以太坊的网络由多个独立开发的客户端组成,例如 Geth、Nethermind、Erigon、Besu。为了确保所有客户端的共识一致性,必须进行严格的测试。

(1) Ethereum Execution Spec Tests (EEST) • 执行层共识测试,确保不同客户端在相同输入下执行相同结果。 • 运行在 Geth、Besu、Nethermind、Erigon 等客户端上。 • 包括 状态测试、交易测试、区块测试 等。

(2) Hive • 专门为以太坊客户端设计的测试框架。 • 允许对不同的以太坊客户端进行黑盒测试,检查它们的行为是否一致。 • 通过模拟真实网络条件来发现潜在的共识分叉问题。

2.2 智能合约测试工具

以太坊的智能合约一旦部署,代码就无法更改,因此在发布前必须彻底测试,以防止安全漏洞。

(1) Foundry • 现代化的 Solidity 测试框架,比 Hardhat 和 Truffle 更高效。 • 具备模糊测试(Fuzz Testing)、单元测试、模拟攻击等功能。 • 提供高效的 EVM 级别调试,可快速定位错误。

(2) Hardhat • 以太坊开发最流行的测试和开发环境。 • 允许运行本地 EVM 节点,进行单元测试、集成测试和调试。 • 插件生态丰富,可以结合 Waffle、Ethers.js、Chai 进行测试。

(3) Echidna • 基于模糊测试(Fuzzing)的智能合约安全测试工具。 • 自动生成随机输入,测试智能合约在极端情况下的行为。 • 可以发现整数溢出、权限漏洞、边界错误等问题。

(4) Slither • 静态分析工具,用于检测 Solidity 代码中的安全漏洞。 • 可发现可重入攻击、变量未初始化、整数溢出、访问控制问题等漏洞。 • 适用于审计前的快速检查,提高代码质量。

(5) MythX • 基于云的智能合约安全扫描工具。 • 使用**符号执行(Symbolic Execution)、污点分析(Taint Analysis)、形式化验证(Formal Verification)**来检查漏洞。

2.3 网络测试与安全攻击模拟

为了确保以太坊网络在恶意攻击下仍然安全,开发者使用多种仿真测试工具。

(1) Goerli、Sepolia(测试网) • Goerli 和 Sepolia 是以太坊的主要测试网,允许开发者在正式部署前测试智能合约和 DApp。 • Sepolia 使用 PoS 共识机制,与主网类似。 • Goerli 适用于多客户端测试,以确保不同客户端行为一致。

(2) Ethereum Attacker Playbook • 攻击者模拟框架,用于测试以太坊可能遭受的攻击类型。 • 例如 双花攻击、区块重组攻击、MEV 夹层攻击、女巫攻击(Sybil Attack)。

(3) Beacon Fuzz • 专为以太坊 PoS 设计的模糊测试工具,用于测试 Beacon Chain 的共识协议安全性。 • 可发现 PoS 机制下的潜在漏洞,如信息泄露、错误状态转换、无效签名等。

(4) Fuzzing with AFL and libFuzzer • 以太坊客户端和 EVM 运行时会使用模糊测试(Fuzzing)工具,如 American Fuzzy Lop (AFL) 和 libFuzzer,用于发现协议层面的漏洞。 • 这些工具可以自动生成随机输入,测试客户端是否会崩溃或产生错误结果。

  1. 以太坊的最佳安全实践

除了使用测试工具,以太坊生态还推行一系列安全实践,确保主网安全。

3.1 开发安全审计 • 智能合约在部署前应接受第三方安全公司的审计,例如 Trail of Bits、OpenZeppelin、Quantstamp。 • 采用 形式化验证(Formal Verification) 确保智能合约行为符合预期。

3.2 赏金计划(Bug Bounty) • 以太坊基金会提供漏洞赏金计划,鼓励白帽黑客发现并报告安全漏洞。 • 例如 Immunefi、Hats Finance 提供高额奖励以激励安全研究者。

3.3 运行测试网与模拟攻击 • 开发者在主网部署前,必须在 Sepolia 或 Goerli 进行测试。 • 使用 以太坊模糊测试工具,模拟极端交易负载和恶意攻击。

  1. 结论

以太坊的安全性建立在严格的测试工具、模拟攻击、代码审计和社区合作之上。开发者和研究者需要: ✅ 利用 Hive、EEST 测试客户端共识一致性。 ✅ 使用 Foundry、Slither、Echidna 进行智能合约安全测试。 ✅ 采用 Beacon Fuzz 和 AFL 进行协议级别模糊测试。 ✅ 通过 Bug Bounty 计划吸引白帽黑客发现漏洞。

这些工具和实践共同保障了以太坊网络的稳定性、安全性和抗攻击能力,让它成为全球最具安全性的智能合约平台之一。🚀

2025.02.10

week5

  • 以太坊协议的多个升级阶段,包括 Merge、Surge、Scourge、Verge、Purge 和 Splurge,每个阶段都涉及特定的技术改进。下面是对这些部分的介绍:

Merge

Merge 是以太坊从工作量证明(PoW)过渡到权益证明(PoS)的过程,主要内容包括: • Altair / light client protocol:Altair 是以太坊信标链的第一次升级,引入轻客户端支持,使得资源受限的设备也可以验证链上的信息。 • Merge / Withdrawals:Merge 发生后,权益证明机制全面取代工作量证明,而 “Withdrawals” 指的是启用质押 ETH 提取的机制。

Single Slot Finality(SSF)

SSF 旨在将共识的最终确定时间缩短到单个 slot(当前 PoS 机制需要多个 epoch 确定最终状态)。这样可以减少链的回滚可能性,提高安全性和用户体验。

Secret Leader Election

当前 PoS 机制中,验证者的提议人是提前可见的,可能会导致攻击。Secret Leader Election 通过密码学技术隐藏提议人身份,直到出块时才揭晓,以增强安全性。

Surge

Surge 阶段的核心目标是提高以太坊的可扩展性,主要涉及 rollups 和数据可用性改进: • zk/OP Rollups:零知识(zk)和乐观(OP)Rollups 通过将计算移到链下并只在链上提交压缩后的证明,提高交易吞吐量。 • KZG Ceremony:用于构建 EIP-4844(proto-danksharding)的 KZG 承诺方案,可高效地证明数据的完整性。 • EIP-4844:引入 “blob-carrying transactions”,降低 Rollups 数据存储成本,是 Danksharding 的第一步。 • Data Availability Sampling(DAS):DAS 允许节点只存储数据的一部分,通过采样确保数据的可用性,而不需要所有节点存储完整数据。 • Cross-rollup interop:增强不同 Rollup 之间的互操作性,使资产可以无缝跨 Rollup 传输。

Scourge

Scourge 主要解决 MEV(最大可提取价值)问题,以减少中心化风险: • (Very) Brief Overview of MEV:MEV 指的是矿工或验证者通过重新排序、插单或删除交易获取额外收益的问题。 • ePBS / Inclusion Lists / MEV Burn: • ePBS(enshrined Proposer-Builder Separation):正式将提议者(Proposer)和区块构建者(Builder)分开,减少 MEV 负面影响。 • Inclusion Lists:让提议者提供包含哪些交易的列表,防止构建者进行不公平的交易操控。 • MEV Burn:将一部分 MEV 收益销毁,减少对 MEV 过度追逐的激励。 • Max EB, Stake Capping:限制区块构建者的利润和权益验证者的 stake 规模,降低中心化风险。

Verge

Verge 目标是优化状态存储,提高同步效率: • Verkle Trees:将当前的 Merkle Patricia Tree 替换为 Verkle Tree,极大地减少节点同步所需的数据量。 • SNARKify Everything:利用零知识证明(ZK-SNARKs)优化以太坊状态存储和计算,包括: • Beacon fast sync:利用 SNARK 让轻节点更快地同步信标链数据。 • Beacon state transition:用 SNARK 证明状态转移,提高安全性和效率。 • Verkle proofs:使用零知识证明优化 Verkle Tree,使验证更高效。

Purge

Purge 旨在减少历史数据存储需求,优化协议复杂度: • EIP-4444:提议删除长期历史数据,使普通节点无需存储完整的以太坊历史,提高存储效率。 • Protocol Simplifications:简化协议设计,减少运行以太坊所需的资源。

Splurge

Splurge 包含一些额外的改进,进一步提升以太坊的功能: • EIP-1559 Endgame:优化 EIP-1559 的燃烧机制,以提高费用市场的稳定性。 • Account Abstraction(AA):允许智能合约账户拥有更强大的功能,例如灵活的支付方式、多重签名等,减少对外部钱包的依赖。 • Deep Cryptography:进一步增强密码学能力,为未来的扩展性提供保障。

2025.02.11

week5

  • 实践:如何在以太坊网络上运行节点
  1. 运行节点简介 运行以太坊节点是参与以太坊网络的基础,分为 执行层(EL) 和 共识层(CL)。要成功运行完整节点,需要同时配置这两层客户端。

  2. 选择客户端和环境 选择合适的客户端对提高节点稳定性至关重要。常见的 EL 客户端有 Geth 和 Erigon,CL 客户端有 Prysm 和 Lighthouse。确保操作系统支持并行运行这两个客户端。

  3. 获取和验证客户端 从官方网站或 GitHub 下载客户端,验证二进制文件的完整性以防篡改。

  4. 客户端配置 配置执行层与共识层客户端,确保它们之间正确通信(通过 RPC)。

  5. 在 Holesky 测试网运行 使用 Holesky 测试网来验证客户端的设置,确保没有问题后再迁移到主网。

  6. 运行自定义 Genesis 通过使用自定义 Genesis 文件创建临时(Ephemeral)以太坊网络,进行实验或测试。

  7. 切换客户端 如需更换客户端(例如从 Prysm 切换到 Lighthouse),只需停止当前客户端并配置新的客户端。

  8. 使用客户端与 RPC 交互 通过 HTTP、WebSocket 或 IPC 接口与节点交互,进行交易查询或钱包管理。

  9. 添加验证者 质押 ETH 成为验证者并加入共识层,配置验证者密钥并启动验证。

  10. 系统监控和服务 使用 systemd 配置客户端自动启动,结合 Prometheus 和 Grafana 进行节点监控。