ETH黄皮书,是在白皮书之后推出的,旨在为开发人员和研究人员提供以太坊协议的形式化定义,奠定了以太坊虚拟机(EVM)及其运行机制的技术基础,被认为是“以太坊的技术宪法”核心内容概览以太坊状态转换系统黄皮书以一种数学建模的方式定义了以太坊的状态转换:σ(state)+T(transac
ETH黄皮书,是在白皮书之后推出的,旨在为开发人员和研究人员提供以太坊协议的形式化定义,奠定了以太坊虚拟机(EVM)及其运行机制的技术基础,被认为是“以太坊的技术宪法”
以太坊状态转换系统
黄皮书以一种数学建模的方式定义了以太坊的状态转换:
σ (state) + T (transaction) → σ' (new state)
这意味着每一个交易都会改变区块链上的状态,从 σ 转换为 σ':
以太坊希望成为一个通用的状态机,而不是像比特币那样仅用于记录币的转移
账户分为:
账户模型,每个账户有如下字段:
字段 | 含义 |
---|---|
nonce | 防止重放攻击,用于合约创建地址计算 |
balance | 以 wei 为单位的以太币余额 |
storageRoot | 合约状态的根哈希,对应存储 Merkle Patricia Trie |
codeHash | 合约代码的哈希值(不可变) |
相对于UTXO,账户模型:
以太坊采用一种计费机制来衡量每一步计算资源的消耗,防止无限循环攻击。
每笔交易都要指定:
gasLimit
:最多能使用多少 gasgasPrice
:每单位 gas 愿意支付的费用执行失败也会消耗 gas!
黄皮书定义了交易结构、签名、验证方式以及 Gas 费用的计算方法。交易主要包括:
并解释了Gas 是如何防止计算资源滥用的机制
EVM 是一个图灵完备的栈式
虚拟机,是以太坊智能合约的执行环境,黄皮书对其行为进行了详细定义,包括:
组成 | 说明 |
---|---|
栈 | 最大 1024 项,用于操作计算 |
内存 | 按需扩展,临时数据 |
存储 | 持久化数据,每个合约地址对应一个 storage trie |
PC | 程序计数器,表示当前执行位置 |
Gas | 跟踪每一步操作的资源消耗 |
PUSH1 0x60
PUSH1 0x40
MSTORE
黄皮书对每条 Opcode 的作用和 gas 消耗都进行了定义。例如:
指令 | 含义 | Gas 消耗 |
---|---|---|
ADD | 加法 | 3 |
SSTORE | 存储写入 | 20,000 |
CALL | 合约调用 | 700 |
以太坊状态、合约存储和交易收据都存储为Merkle Patricia Trie,结合了:
类型 | 含义 |
---|---|
状态树 | 所有账户的状态 |
存储树 | 每个合约的私有状态变量 |
收据树 | 每笔交易的执行结果 |
所有
根哈希
会被写入区块头,确保区块是状态确定的,便于轻节点验证。
以太坊早期共识为PoW,每个区块包含:
parentHash
:父区块哈希stateRoot
:全局状态根transactionsRoot
receiptsRoot
gasUsed
、gasLimit
、timestamp
uncles
:被挖出的非最长链但合法的区块黄皮书对这些字段的数据结构、用途都做了精确定义
价值 | 说明 |
---|---|
技术实现的权威参考 | 所有以太坊客户端都依据黄皮书进行协议实现 |
促进生态一致性 | 多语言客户端保持行为一致,防止分叉 |
为 zkEVM、形式化验证打基础 | 其形式化定义为零知识证明和安全工具提供基准 |
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!