timezone |
---|
Asia/Shanghai |
请在上边的 timezone 添加你的当地时区,这会有助于你的打卡状态的自动化更新,如果没有添加,默认为北京时间 UTC+8 时区 时区请参考以下列表,请移除 # 以后的内容
timezone: Asia/Shanghai # 中国标准时间 (UTC+8)
-
自我介绍
有一年的 web3 Dapp 开发经验,希望通过这次共学,理解和认识以太生态和相关信息知识
-
你认为你会完成本次残酷学习吗?
会!
-
TG 联系方式:@Leo_style
今天先过了下 epf.wiki/ 的大概内容和脉络,暂时还没开始深入
通过 了解到
- EPF-The Ethereum Protocol Fellowship 是一个以太坊协议奖学金计划,旨在降低开发者对于 ETH 核心协议的进入门槛
- EPSsg-Ethereum Protocol Studies group 是一个社区,旨在收集知识,学习和教育以太坊协议
今年的 EPFsg 是2周intense introduction(之前研究组的一些资料后顾),然后6周的现场演讲在线课程
跟着 Ethereum Protocol Studies - github 可以查看之前每周的内容,已经分好类了
Week 0主要是关于一些技术相关的前置基础知识,这块先就不看了
- 查看Introducing the EPF Study Group - blog
- 填写 survey: https://forms.gle/7TqmryC217EPwgqr9
- 快速过一下EPF 2024年的学习大纲
前置概念
传统互联网架构一般是 集中式的client-server网络,由中心化服务器处理所有的任务请求,同时储存所有交换信息。 p2p(Peer to peer network):点对点网络没有中心控制方,所有信息在节点间不断记录和转移,节点之间互为副本,【数据存储和所有权】不受中心服务控制,是区块链去中心化的基础网络模型
自由软件运动是以太坊和所有加密货币的基础,以太坊的开放,独立和协作的发展文化强烈植根于FOSS(Free and Open Source Software)
以太坊研发路线可以参考 roadmap https://ethereum.org/en/roadmap/ ,但不唯一,不完全遵循,因为以太坊的核心生态系统是一个始终不断发展的无限花园。
以太坊的主要高级组成部分是执行和共识层
- 执行层 execution layer (EL) :提供执行引擎,处理用户交易和所有状态(地址,合同数据)
- 共识层 consensus layer (CL):实现了确保安全性和容错性的实现证明机制
执行层(EL)或共识层(CL)的实现称为客户端,运行此客户端并连接到网络的计算机称为节点,因此,节点是一对积极参与网络的EL和CL客户端
“节点”是指任何以太坊客户端软件的实例,它连接到其他也运行以太坊软件的计算机,形成一个网络
“客户端”是以太坊的实现,它根据协议规则验证数据并保持网络安全。 一个节点需要运行两种客户端软件:执行客户端+共识客户端,不同团队开发的各种编程语言中都有执行客户端和共识客户端
客户端可以运行三种类型的节点:轻节点、全节点和归档节点
- 全节点: 对区块链进行逐块验证,包括下载和验证每个块的块体和状态数据
- 存储全部区块链数据(会定期修剪,所以全节点并不存储包含创世块在内的所有状态数据)
- 参与区块验证,验证所有区块和状态
- 全节点可以从本地储存中检索所有状态,或从“快照”中重新生成
- 为网络提供服务,并应要求提供数据
- 归档节点: 从创世块开始验证每个区块的全节点,它们从不删除任何下载的数据
- 存储全节点中保存的所有内容,并建立历史状态存档
- 这些数据以太字节为单位,这使得归档节点对普通用户的吸引力较低,但对于区块浏览器、钱包供应商和链分析等服务来说则很方便
- 轻节点: 轻节点只下载区块头(包含区块内容的摘要信息),而不会下载每个区块。轻节点会向全节点请求其所需的任何其他信息。 然后,轻节点可以根据区块头中的状态根独自验证收到的数据。轻节点可以让用户加入以太坊网络,无需运行全节点所需的功能强大的硬件或高带宽。 最终,轻节点也许能在手机和嵌入式设备中运行。 轻节点不参与共识(即它们不能成为矿工/验证者),但可以访问功能和安全保障和全节点相同的以太坊区块链
- 轻客户端是以太坊积极发展的一个领域
- 以太坊目前还不支持大量轻节点,但轻节点支持是一个有望在不久的将来快速发展的领域
An Overview of the Ethereum Excecution Layer - Dan Boneh
1. 以太坊与比特币的对比
比特币的局限性:
- UTXO模型:难以支持多阶段合约和全局规则(如每日转账限额)。
- 脚本功能有限:无法实现复杂逻辑(如域名系统DNS的防抢注)。
以太坊的解决方案:
- 引入智能合约,支持任意复杂的状态转换和全局规则。
示例:NameCoin合约实现域名注册,但需通过承诺机制解决前置攻击(Front-running)。
2. 以太坊的核心架构
状态转换系统:
- 世界状态(World State)包含所有账户信息(余额、存储、代码等)。
- 交易(Transaction)触发状态更新,区块记录最终状态根(Merkle Patricia Tree哈希)。
账户模型:
- 外部账户(EOA):由私钥控制,用于发起交易。
- 合约账户:由代码控制,存储持久化数据(通过SSTORE/SLOAD操作)。
每个账户包含:地址、余额、Nonce(防重放)、存储根(合约状态)。
3. 智能合约与EVM
EVM(以太坊虚拟机):
- 基于栈的虚拟机,执行智能合约字节码。
- 支持合约间调用(消息传递)和状态修改。
Gas机制:
- 每个操作消耗Gas,防止资源滥用(如SSTORE消耗5000-20000 Gas)。
- Gas费用由用户支付,计算公式:总费用 = Gas用量 × Gas单价。
EIP-1559改革:
- 引入基础费用(BaseFee):动态调整,根据区块拥堵程度自动增减(目标区块大小15M Gas)。
- 燃烧机制:基础费用被销毁,减少ETH通胀;用户支付基础费用 + 小费(PriorityFee)。
4. 共识机制与PoS
信标链(Beacon Chain):
- 验证者需质押32 ETH,负责提议和验证区块。
- 最终确定性(Finality):通过多轮签名确认区块不可逆。
- 惩罚机制:恶意行为(如双签)会导致质押ETH被罚没(Slashed)。
经济模型:
- 验证者年化收益约5.6%(来自区块奖励、交易费和MEV),但需扣除服务商分成(如Lido)。
5. 交易与区块结构
交易类型:
- EOA到EOA(转账ETH)。
- EOA到合约(调用函数)。
- 合约到合约(跨合约调用)。
区块组成:
- 区块头包含:父区块哈希、状态根、交易根、Gas使用量等。
- 区块生产者按顺序执行交易,更新全局状态,其他验证者需重新验证。
6. 实际应用与挑战
应用场景:DeFi(借贷、DEX)、NFT(ERC-721)、DAO、ENS(域名服务)等。
性能与扩容:
- 当前TPS约15-30(每个区块约150笔交易),Gas使用量逐年上升。
- 未来方向:分片(Sharding)、Verkle树、无状态客户端等。
以太坊通过智能合约和EVM实现了图灵完备的区块链计算,解决了比特币的扩展性问题。其核心创新包括:
- 状态驱动的账户模型(非UTXO)。
- Gas经济体系(EIP-1559平衡供需)。
- PoS共识(信标链确保安全与去中心化)。
基本概念:Execution Layer 主要负责执行所有交易的计算、生成新区块并更新以太坊网络的状态。它与 Consensus Layer(共识层)相互配合,后者负责确保网络的安全性和交易的顺序
Execution Layer 处理
- 交易的执行:包括普通的转账交易和智能合约的执行
- 状态更新:通过交易执行后,网络的状态(账户余额、智能合约的存储等)会被更新
- Gas 管理:在执行每个交易时,需要消耗一定的 Gas,Execution Layer 负责计算 Gas 费用和分配
Execution Layer 的架构
- 交易池:这是存放待处理交易的地方。交易一旦被验证并打包到区块中,就会从池中移除
- 虚拟机(EVM - Ethereum Virtual Machine):EVM 是以太坊的核心组件,所有的智能合约和交易都通过它来执行。它是一个图灵完备的虚拟机,可以处理所有逻辑计算
- 区块生成与确认:矿工或验证者会根据交易池中的交易生成新的区块,并通过共识协议将它们添加到链上
Execution Layer 和 Consensus Layer 配合工作,共同保证网络的运行
Consensus Layer(共识层)负责确保全网对区块的达成一致,即它决定哪些区块是合法的。它通过 PoW(工作量证明)或 PoS(权益证明)来确保网络安全。
Execution Layer 则负责实际的区块内容,即执行交易和合约,更新状态,并最终生成区块。
- 后面再重点深入下交易池和 EVM
共识层的主要任务是确保以太坊网络中的所有节点对哪些区块是合法并且应当被添加到区块链中达成一致。
这意味着,尽管以太坊的节点是分布式的、去中心化的,但它们必须能够就同一份交易历史达成共识。
在以太坊的网络中,节点通过共识机制来决定哪些区块应当被包括在主链中,这个过程也被称为 区块验证。
以太坊最初采用了 工作量证明(PoW)(Proof of Work)作为共识机制,在这种机制下,矿工们通过解决复杂的数学问题来获得创建新区块的权利。然而,PoW 机制面临着扩展性差、能源消耗大的问题。
因此,以太坊计划在其 2.0 升级中引入 权益证明(PoS)(Proof of Stake)机制。PoS 机制通过“质押”以太坊代币来选举验证者,而不再依赖能量消耗巨大的数学计算。
- 验证者(Validators):这些是通过质押以太坊代币(ETH)来参与共识过程的节点。在 PoS 中,用户可以将他们的 ETH 质押给一个验证者,验证者负责验证交易和提议新区块。
- 提议者(Proposers):这些验证者负责提出新区块。提议者会从待处理的交易中选取交易,生成新区块并提交给网络。
- 检查者(Attesters):这些验证者会验证区块的有效性,确保区块内容正确并符合规则。如果区块有效,检查者会为其签名并提交投票。
- 区块链的主链(Canonical Chain):根据共识协议,网络中的所有节点会对新区块进行验证,并决定哪些新区块应当成为链的一部分,最终生成一条共识的主链。
PoS 提供了一种不同于 PoW 的安全保证:
- 攻击成本:PoS 提供了相对更高的安全性,因为为了攻击网络,恶意用户需要持有足够的以太坊来参与验证和提议区块。一旦他们提议或验证了错误的区块,其质押的 ETH 将会被罚没(Slashing)。
- 去中心化:PoS 机制降低了以太坊网络对高算力计算资源的依赖,使得更多的参与者能够参与共识过程,从而提高了网络的去中心化性。
为了增强网络的扩展性,以太坊在 2.0 中引入了分片技术。分片允许将区块链划分为多个“分片”,每个分片独立处理一部分交易和数据。这使得以太坊可以并行处理交易和数据,极大地提高了网络吞吐量。
在分片模式下,共识层不仅负责单一的主链,还需要管理多个分片的区块验证和共识。这个设计将进一步提升以太坊的性能和可扩展性。
- 分片深入
如何确保智能合约在复杂网络环境中的可靠性?
EVM测试方法论
- 字节码级模拟测试:通过EVM模拟器对合约字节码进行逐指令调试
- Gas消耗追踪矩阵:建立不同操作码的Gas消耗基准值(如:SSTORE=20000 Gas)
- 状态树差异对比:记录每个交易前后的存储树哈希变化
// 示例:网络层与合约层的集成测试用例
describe("跨层事务测试", () => {
it("应正确处理网络延迟下的合约调用", async () => {
// 模拟300ms网络延迟
network.setLatency(300);
const txReceipt = await contract.execute();
expect(txReceipt.status).to.equal(1);
});
});
如何在开发环境中构建真实攻击场景?
ganache-cli \
--fork https://mainnet.infura.io/v3/YOUR_PROJECT_ID@15890350 \
--networkId 5777 \
--gasLimit 12000000 \
--allowUnlimitedContractSize
- 主网分叉测试:捕获真实链上攻击模式
- 内存泄漏压力测试:持续运行72小时观察内存占用曲线
如何构建抗DDoS的测试网络架构?
- 节点负载均衡策略
- 于交易Gas的优先级队列
- 动态调整的P2P连接池(最大连接数 = √(节点总数)*10)
- 容错测试矩阵
# 网络故障注入测试示例
for fault_type in ['packet_loss', 'latency_spike', 'partition']:
with NetworkFault(fault_type, duration=60):
assert consensus_algorithm.recovery_time < 15
Ethereum Roadmap
---
### **以太坊路线图概览**
路线图的目标是通过多个阶段改进以太坊的性能、扩展性和用户体验。每个阶段的核心内容如下:
1. **Merge(合并)**:
- 从工作量证明(PoW)过渡到权益证明(PoS)。
- Beacon Chain 的引入,支持更高效的区块验证。
2. **Surge(激增)**:
- 增加数据可用性以支持 Rollups(例如 Optimistic 和 ZK Rollups)。
- 数据可用性采样(Data Availability Sampling)技术的探索,减少节点对完整数据下载的需求。
3. **Scourge(清除)**:
- 减少最大可提取价值(MEV)的负面影响。
- 提议者/构建者分离(PBS)机制,减少中心化和审查风险。
4. **Verge(边缘)**:
- 使用 Verkle 树替代 Merkle 树,简化状态证明。
- 支持无状态验证器(Stateless Validators),降低节点存储需求。
5. **Purge(净化)**:
- 简化协议,减少历史状态存储需求。
- 引入历史数据和状态过期机制(EIP-4444)。
6. **Splurge(杂项改进)**:
- 包括账户抽象(Account Abstraction)、多维度 EIP-1559 费用模型、加密内存池等改进。
- zkEVM 和零知识证明的进一步集成。
---
### **技术细节**
- **Rollups 的重要性**:
- Rollups 将以太坊 L1 数据转换为 L2 执行,提升扩展性。
- Optimistic Rollups 和 ZK Rollups 各有优劣,前者依赖欺诈证明,后者依赖零知识证明。
- **Verkle 树**:
- 提供更短的状态证明。
- 支持宽树结构(256 子节点),减少验证器对历史数据的依赖。
- **数据采样与 Blobspace(EIP-4844)**:
- 数据采样技术允许节点通过少量随机数据点验证数据完整性。
- Blobspace 引入新的数据存储方式,为未来扩展铺路。
- **MEV 改进**:
- MEV Boost 和 PBS 的引入,减少验证者选择的复杂性。
- 包括 MEV 燃烧和执行票据等机制。
- **量子安全与 STARKs**:
- 使用 STARKs 替代 KZG 承诺,提升抗量子计算能力。
---
### **未来展望**
- **账户抽象(EIP-3074 和 ERC-4337)**:
- 改善用户体验,支持 Gas 赞助、交易批处理和社交恢复。
- **历史和状态过期**:
- 自动删除超过一年历史的链上数据,减轻节点存储负担。
- **EVM 改进**:
- 引入 EVM 对象格式(EOF),为未来升级奠定基础。
- **深度加密研究**:
- 包括完全同态加密、一次性签名和可验证延迟函数(VDF)。
---