以太坊黄皮书:可编程区块链的上海版本技术规范

·

以太坊作为一项开创性的区块链技术,通过引入图灵完备的编程能力和去中心化智能合约,重新定义了去中心化应用的构建方式。本文将深入探讨以太坊上海版本的核心技术规范,包括其状态机模型、交易结构、共识机制及执行层细节。

以太坊概述

以太坊本质上是一个基于交易的状态机:它从创世状态开始,通过顺序执行交易逐步演化到当前状态。这一当前状态被视为以太坊世界的权威“版本”。状态可包含账户余额、声誉数据、信任协议乃至与现实世界相关的信息——任何可由计算机表示的内容均可被纳入。

状态转换机制

状态转换通过交易实现,交易代表两个状态之间的有效转换弧。形式上,状态转换可表示为:

σ_{t+1} ≡ Υ(σ_t, T)

其中Υ代表以太坊状态转换函数。与现有系统相比,以太坊的Υ和σ功能更加强大:Υ允许组件执行任意计算,而σ允许组件在交易之间存储任意状态。

区块链范式

交易被整理成区块,区块通过加密哈希作为引用手段链接在一起。区块作为日志记录一系列交易,同时包含前一区块的引用和最终状态的标识符(但不存储最终状态本身,因为那将过于庞大)。

价值转移与以太币

为激励网络内的计算活动,需要一种公认的价值传输方法。以太坊引入了原生加密货币Ether(ETH),其最小单位是Wei。1 Ether相当于10^18 Wei。其他常用单位包括Gwei、Szabo和Finney。

交易结构

交易是由以太坊外部构建的加密签名指令。交易发送方不能是合约账户。截至伦敦版本,协议支持三种交易类型:0类(传统交易)、1类(EIP-2930)和2类(EIP-1559)。所有交易类型都指定了一些共同字段:

类型2交易还引入了优先费用机制,允许用户指定愿意支付的最高优先费用(maxPriorityFeePerGas)和总费用上限(maxFeePerGas)。

Gas机制与费用支付

为防止网络滥用和解决图灵完备性带来的问题,以太坊中的所有可编程计算都需支付费用。费用以gas为单位计算。每个交易都有特定数量的gasLimit,这是从发送方账户余额中隐式购买的gas量。

EIP-1559费用市场改革

伦敦硬分叉引入的EIP-1559彻底改变了以太坊的费用市场结构。每个交易现在需要支付基础费用(base fee),这部分ETH会被燃烧(退出流通)。基础费用根据前一区块的gas使用量与目标值的差异动态调整。

👉 深入了解实时Gas费用机制

优先费用则作为激励验证者包含交易的额外费用,支付给区块的受益人地址。用户可自由选择优先费用,但验证者可能会忽略费用过低的交易。

交易执行

交易执行是以太坊协议中最复杂的部分,它定义了状态转换函数Υ。有效的交易必须通过一系列初始检查:

  1. 交易格式正确且无多余尾随字节
  2. 交易签名有效
  3. 交易nonce有效
  4. 发送方账户没有部署合约代码
  5. gasLimit不小于交易使用的固有gas量
  6. 发送方账户余额至少包含需要预付的成本
  7. gas价格不低于区块的基础费用
  8. 对于类型2交易,maxPriorityFeePerGas不得大于maxFeePerGas

合约创建与消息调用

合约创建

合约创建涉及多个参数:发送方(s)、原始交易者(o)、可用gas(g)、有效gas价格(p)、捐赠金额(v)、初始化EVM代码(i)、当前调用堆栈深度(e)和盐值(ζ)。新合约的地址根据创建方式和参数计算得出。

消息调用

消息调用需要发送方(s)、交易发起者(o)、接收方(r)、代码执行账户(c)、可用gas(g)、值(v)和有效gas价格(p)等参数。消息调用还有一个额外组件——输出数据字节数组o,在执行交易时被忽略,但在VM代码执行发起的消息调用中使用。

执行模型

以太坊虚拟机(EVM)是一个简单的基于堆栈的架构,字长为256位,选择这个尺寸是为了便于Keccak-256哈希方案和椭圆曲线计算。内存模型是简单的字寻址字节数组,堆栈最大大小为1024。

执行环境

除了系统状态σ、剩余计算gas g和累计子状态A外,执行环境还包含几个重要信息,这些信息包含在元组I中:

共识机制转型

巴黎硬分叉将以太坊的共识机制从工作量证明(PoW)改为权益证明(PoS)。与之前的所有硬分叉不同,巴黎分叉不是在某特定区块高度触发,而是在达到指定的终端总难度后激活。

后巴黎时代更新

由于信标链每12秒生成一个新槽位,后巴黎时代的更新可以安排在特定时间戳进行。在执行层,更新将在预定时间戳后产生的第一个区块中发生。

区块最终化

区块最终化过程涉及三个阶段:

  1. 执行提款:处理完区块交易后执行提款操作
  2. 交易验证:验证给定的gasUsed是否与列出的交易一致
  3. 状态验证:将区块映射到其初始状态

提款操作只是增加接收方账户指定数量的Gwei余额,不减少其他余额。提款不是转移而是资金创建,不会失败且没有gas成本。

常见问题

什么是以太坊状态机?

以太坊状态机是一个基于交易的系统,从创世状态开始,通过顺序执行交易逐步演化到当前状态。状态包含账户余额、合约代码和存储内容等信息,交易代表状态之间的有效转换。

Gas费用如何计算?

Gas费用由基础费用和优先费用组成。基础费用根据网络拥堵情况动态调整并被燃烧,优先费用支付给验证者作为包含交易的激励。用户可为交易设置gas限制和费用上限。

权益证明如何改变以太坊?

权益证明共识机制取代了工作量证明,提高了网络能效和安全性。验证者现在通过质押ETH而不是计算能力来参与区块生产,减少了能源消耗并加快了交易确认速度。

智能合约如何工作?

智能合约是部署在区块链上的自执行代码,当预定条件满足时自动执行。它们存储在特定账户中,通过交易触发执行,能够管理数字资产和执行复杂逻辑而无须中介。

上海升级主要包含哪些内容?

上海升级是以太坊的重要硬分叉,引入了提款功能允许质押者提取质押的ETH,优化了执行层性能,并包含了多项技术改进提升网络效率和安全性。

如何参与以太坊网络?

用户可通过运行节点、参与质押、开发dApp或简单使用基于以太坊的应用来参与网络。每种参与方式都需要不同水平的技术知识和资金承诺,为各种用户提供了参与机会。

未来发展方向

以太坊的发展路线图包括状态过期、区块链压缩和进一步的可扩展性改进。状态数据库不会被迫维护所有过去的状态trie结构,而是维护每个节点的年龄并最终丢弃不够新也不是检查点的节点。

区块链压缩可用于减少客户端需要下载的数据量,状态trie中在一定数量的区块内未发送/接收交易的节点可能会被丢弃,减少以太泄漏和状态数据库的增长。

结论

以太坊协议通过引入图灵完备的编程能力和去中心化智能合约,为构建去中心化应用提供了强大基础。从工作量证明到权益证明的转型标志着平台成熟度的重要里程碑,而持续的技术改进确保了网络的可扩展性、安全性和可持续性。

👉 探索更多区块链技术策略

通过上海版本的技术规范,以太坊继续巩固其作为领先可编程区块链平台的地位,为开发者提供了构建下一代去中心化应用所需的工具和基础设施。