以太坊:PoS、EVM 与智能合约
基于以太坊白皮书与协议规范的深度教程。涵盖账户模型、状态转换函数、以太坊虚拟机(EVM)、Gas 与费用机制、智能合约生命周期、从 PoW 到 PoS 的合并、权益证明共识、最终性与罚没机制 — 配有交互式演示。
1. 引言与背景
以太坊由 Vitalik Buterin 于 2013 年提出,旨在将比特币的区块链概念从单纯的去中心化货币扩展为一个通用的去中心化计算平台。比特币证明了无需信任的价值转移是可行的,而以太坊则进一步追问:我们能否在区块链上运行任意程序?
比特币的局限性
比特币的脚本语言功能有限:它不支持循环,缺乏图灵完备性,状态管理受限于 UTXO 模型。虽然这些限制是出于安全考量的有意设计,但它们使得在比特币上构建复杂的去中心化应用变得极为困难。比特币脚本只能表达简单的支付条件,无法实现链上的复杂业务逻辑。
以太坊的愿景
以太坊旨在创建一台「世界计算机」— 一个去中心化的、图灵完备的计算平台,任何人都可以在上面部署和执行智能合约。这些合约一旦部署就自动按照预定规则运行,不受任何个人或组织的控制,实现真正的「代码即法律」。
核心原则
一个全球共享的、不可停止的计算平台 — 任何人都可以部署程序,所有节点共同执行并验证结果
使用类似银行账户的状态模型取代比特币的 UTXO 模型 — 每个账户有余额、nonce 和存储,更直观地支持复杂交互
以太坊虚拟机(EVM)支持循环、条件分支和任意计算 — 理论上可以执行任何可计算的程序
自动执行的代码程序存储在区块链上 — 一旦部署,按照预定义规则自主运行,无人可以篡改或停止
ETH 不仅仅是数字货币,更是驱动整个平台的「燃料」 — 用于支付计算费用、部署合约和参与治理
协议通过 EIP(以太坊改进提案)进行升级 — 由开发者、验证者和社区共同讨论与决策
📄 白皮书:引言、'比特币作为状态转换系统'
2. 以太坊账户
与比特币的 UTXO 模型不同,以太坊采用账户模型来管理状态。以太坊中有两种类型的账户,它们共享相同的地址空间(20 字节 / 160 位),但具有不同的功能和属性。
外部拥有账户(EOA)
由用户通过私钥控制的账户。EOA 可以发起交易、转移 ETH 和调用合约。每个 EOA 由一对密钥(公钥/私钥)控制,地址由公钥的 Keccak-256 哈希的最后 20 个字节导出。EOA 没有关联的代码,是唯一能发起交易的账户类型。
合约账户
由部署在区块链上的代码控制的账户。合约账户不能主动发起交易 — 只能在收到交易或消息时被动触发执行。合约拥有自己的代码和持久化存储,可以持有 ETH、调用其他合约以及创建新合约。合约地址在部署时由创建者地址和 nonce 确定性地计算得出。
账户状态
nonce对于 EOA,表示该账户发送的交易数量;对于合约账户,表示该合约创建的合约数量。nonce 防止交易重放攻击
balance(余额)该账户拥有的 Wei 数量(1 ETH = 10^18 Wei)。余额可以通过交易和合约执行来增减
storageRoot(存储根)一棵 Merkle Patricia Trie 的根哈希,编码了账户的持久化存储内容。EOA 的存储为空,合约账户用它存储状态变量
codeHash(代码哈希)账户代码的 Keccak-256 哈希。对于 EOA,这是空字符串的哈希;对于合约,这是不可变的 EVM 字节码的哈希
EOA vs 合约账户
📄 白皮书:'以太坊账户'
3. 消息与交易
以太坊中的「交易」是由 EOA 签名的数据包,它触发状态变更。交易可以是 ETH 转账、合约调用或合约部署。合约之间还可以发送内部「消息」,但消息不是链上记录的独立交易。
交易字段
nonce发送者账户的交易计数器,防止交易重放
gasPrice / maxFeePerGas发送者愿意支付的每单位 Gas 价格(Legacy 交易使用 gasPrice,EIP-1559 交易使用 maxFeePerGas 和 maxPriorityFeePerGas)
gasLimit该交易允许消耗的最大 Gas 数量
to接收方地址。若为空(null),表示这是一笔合约创建交易
value随交易转移的 ETH 数量(以 Wei 为单位)
data附加数据。对于合约调用,包含函数选择器和编码参数;对于合约创建,包含初始化字节码
v, r, sECDSA 签名组件,用于验证发送者身份和交易完整性
内部消息(Internal Messages)
当合约执行过程中调用另一个合约时,会产生内部消息(也称为内部交易)。这些消息不会在区块链上作为独立交易记录,但会影响状态变更。内部消息包含发送方、接收方、value、data 和 Gas 限制,与外部交易类似,但没有签名(因为它们是由 EVM 执行产生的)。
交易收据
status交易执行是否成功(1 为成功,0 为失败)
cumulativeGasUsed区块中截至该交易的累计 Gas 消耗
logs交易执行过程中产生的事件日志(用于 DApp 监听链上事件)
logsBloom事件日志的 Bloom 过滤器,用于高效搜索和过滤
📄 白皮书:'消息与交易'
4. 状态转换函数
以太坊的核心可以被理解为一个状态转换函数:APPLY(S, TX) -> S'。给定当前世界状态 S 和一笔交易 TX,函数产生新的世界状态 S'。每个区块包含一系列交易,逐一应用状态转换函数,将旧状态转换为新状态。
APPLY 函数
状态转换函数是以太坊协议的心脏。它定义了每笔交易如何修改全局状态。与比特币简单的 UTXO 消费/创建不同,以太坊的状态转换涉及余额变更、存储修改、代码执行等复杂操作。
状态转换步骤
- 验证交易格式正确、签名有效、nonce 与发送者账户的 nonce 匹配
- 计算预付费用:gasLimit × gasPrice。从发送者余额中扣除预付费用和转账 value
- 如果发送者余额不足以覆盖预付费用加转账 value,回滚并返回错误
- 初始化 Gas 计数器,设为 gasLimit。根据交易数据大小扣除基础 Gas 费用(每个零字节 4 Gas,每个非零字节 16 Gas)
- 将 value 从发送者转移到接收者。如果接收者不存在,创建新账户
- 如果接收者是合约账户,执行合约代码直至完成或 Gas 耗尽
- 如果执行失败(Gas 不足或其他错误),回滚所有状态变更(除了 Gas 支付)
- 将未使用的 Gas 退还给发送者,将已消耗的 Gas 对应的费用发送给区块验证者
交易验证规则
- 交易必须是格式正确的 RLP 编码数据
- 交易签名必须有效(可恢复出合法的发送者地址)
- 交易 nonce 必须等于发送者账户的当前 nonce
- Gas 限制必须大于或等于交易所需的固有 Gas
- 发送者余额必须足以覆盖 gasLimit × gasPrice + value
交互式:状态转换可视化
| 地址 | 余额 | Nonce | 存储 |
|---|---|---|---|
| 0xAlice... | 10.0000 ETH | 0 | |
| 0xBob... | 5.0000 ETH | 2 | |
| 0xToken...[Contract] | 0.0000 ETH | 1 | |
| 0xDave... | 2.5000 ETH | 0 |
📄 白皮书:'以太坊状态转换函数'
5. 以太坊虚拟机
以太坊虚拟机(EVM)是以太坊的运行时环境,负责执行智能合约的字节码。EVM 是一个基于栈的、准图灵完备的虚拟机(通过 Gas 限制防止无限循环),每个以太坊节点都运行着完全相同的 EVM 实例,确保了确定性的执行结果。
架构概述
EVM 是一个简单但强大的基于栈的虚拟机。它具有 256 位的字长(与 Keccak-256 哈希和椭圆曲线密码学自然契合),最大栈深度为 1024 个元素。EVM 的设计优先考虑了安全性和确定性 — 相同的输入在任何节点上总是产生相同的输出。
核心组件
LIFO 数据结构,最大深度 1024,每个元素 256 位。所有 EVM 计算通过栈操作完成(PUSH、POP、DUP、SWAP 等)
可扩展的字节寻址临时存储。每次合约调用时分配,调用结束后清除。访问成本随大小线性增长,加上二次方的扩展成本
键值对映射(256 位 → 256 位)的持久化存储。存储在区块链上,跨交易持久存在。读写成本极高(SSTORE 消耗 20,000 Gas 写入新值,SLOAD 消耗 2,100 Gas 读取)
指向当前正在执行的字节码指令的位置
追踪剩余可用 Gas。每条指令消耗预定的 Gas 量,Gas 耗尽时执行终止
只读的交易输入数据区域,包含函数调用的参数
操作码示例
ADD / MUL / SUB / DIV算术运算 — 对栈顶两个元素执行加、乘、减、除操作(各消耗 3-5 Gas)
PUSH1 ... PUSH32将 1-32 字节的常量值压入栈顶
MLOAD / MSTORE内存读写 — 从内存加载 32 字节到栈 / 将栈顶 32 字节写入内存
SLOAD / SSTORE存储读写 — 从持久化存储读取 / 写入。这是 EVM 中最昂贵的操作之一
CALL / DELEGATECALL调用外部合约。CALL 在目标合约上下文中执行,DELEGATECALL 在调用者上下文中执行(用于代理模式)
CREATE / CREATE2部署新合约。CREATE 使用 nonce 计算地址,CREATE2 使用 salt 实现确定性地址
REVERT终止执行并回滚所有状态变更,退还剩余 Gas
SELFDESTRUCT销毁合约并将余额转移到指定地址(EIP-6780 后已被限制)
交互式:EVM 字节码步进器
📄 白皮书:'代码执行'
6. Gas 与费用机制
Gas 是以太坊中衡量计算工作量的单位。每个 EVM 操作都有固定的 Gas 成本。用户必须为交易消耗的 Gas 付费,这一机制同时解决了停机问题(防止无限循环)和资源滥用问题(防止垃圾攻击)。
为什么需要 Gas
图灵完备的系统面临停机问题 — 无法在执行前判断程序是否会终止。Gas 提供了一种优雅的解决方案:每条指令消耗 Gas,当 Gas 耗尽时执行被强制终止。这确保了每笔交易的计算资源消耗是有界的,同时也创建了一个计算资源的市场定价机制。
EIP-1559:费用市场改革
EIP-1559(2021 年伦敦升级引入)彻底改革了以太坊的费用机制。它用动态基础费用 + 优先费用取代了原来的简单竞价模式。基础费用由协议根据区块利用率自动调整:当区块超过 50% 容量时基础费用上升,低于 50% 时下降。这使得费用更可预测,同时基础费用被销毁(而非支付给验证者),创造了 ETH 的通缩压力。
费用组成
由协议根据前一个区块的使用率自动计算。每个区块最多变化 12.5%。这部分费用被销毁(永久移除出流通)
用户自愿支付给验证者的小费,激励验证者优先打包该交易。在网络拥堵时,更高的优先费用意味着更快的确认
用户愿意支付的每单位 Gas 最高价格。实际支付 = min(maxFee, baseFee + priorityFee)。差额退还给用户
基础费用销毁
EIP-1559 的一个革命性特征是基础费用被销毁而非支付给验证者。这意味着每笔交易都会永久减少 ETH 的流通供应量。当网络活动足够高时(基础费用销毁量超过 PoS 发行量),ETH 变为净通缩资产。这创造了一个正向反馈循环:更多的网络使用 → 更多 ETH 被销毁 → ETH 更稀缺。
操作成本
交互式:Gas 与费用计算器
| 操作名称 | Gas 消耗 | 美元成本 | |
|---|---|---|---|
| ETH 转账 | 21,000 | $2.0160 | |
| ERC-20 转账 | 65,000 | $6.2400 | |
| ERC-20 授权 | 46,000 | $4.4160 | |
| Uniswap 兑换 | 150,000 | $14.4000 | |
| NFT 铸造 | 150,000 | $14.4000 | |
| 合约部署 | 1,000,000+ | $96.0000 |
📄 白皮书:'费用' + EIP-1559
7. 智能合约生命周期
智能合约是部署在以太坊区块链上的自执行程序。一旦部署,合约代码不可变更,按照预定义的逻辑自动执行。合约可以持有资产、与其他合约交互,并实现从代币到去中心化金融的各种应用。
Solidity 与合约开发
Solidity 是以太坊最主流的智能合约编程语言,语法类似 JavaScript/C++。开发者用 Solidity 编写高级代码,然后通过编译器将其转换为 EVM 字节码。其他合约语言包括 Vyper(类 Python 语法,强调安全性和简洁性)和 Yul(低级中间语言,接近 EVM 操作码)。
生命周期
安全问题
攻击合约在原始调用完成前反复回调易受攻击的合约,最著名的案例是 2016 年 The DAO 事件(损失约 6000 万美元)。防御:使用 Checks-Effects-Interactions 模式或 ReentrancyGuard
在 Solidity 0.8.0 之前,算术运算不检查溢出。攻击者可以利用此漏洞操纵余额。Solidity 0.8+ 默认启用溢出检查
对其他合约的 call 返回 false 而非抛出异常。如果不检查返回值,可能导致静默失败
缺少适当的权限检查(如 onlyOwner 修饰符),导致未授权用户可以调用敏感函数
利用单笔交易内的大额无抵押贷款操纵价格预言机或治理投票,造成巨大损失
攻击者监视内存池中的待处理交易,通过提高 Gas 价格抢先执行获利交易(MEV 问题)
代币标准
同质化代币标准 — 定义了 transfer、approve、transferFrom 等接口。USDT、LINK、UNI 等数千种代币遵循此标准
非同质化代币(NFT)标准 — 每个代币具有唯一 ID。用于数字艺术、游戏道具、域名等独特资产
多代币标准 — 在一个合约中同时支持同质化和非同质化代币。批量操作更节省 Gas
代币化金库标准 — 为收益聚合器和借贷协议定义了统一接口
代币绑定账户 — 允许 NFT 拥有自己的以太坊账户,可以持有资产和执行交易
交互式:ERC-20 代币模拟器
📄 白皮书:'应用'
8. 从 PoW 到 PoS(合并)
以太坊的「合并」(The Merge)是加密货币历史上最重大的协议升级之一。它将以太坊的共识机制从工作量证明(PoW)切换为权益证明(PoS),在不中断网络运行的情况下将能源消耗降低了约 99.95%。
发展历程
影响
降低约 99.95%。从每年消耗约等同一个小国家电力的 PoW 挖矿,变为仅需运行验证者节点的极低能耗
新 ETH 发行量减少约 90%。PoW 每天发行约 13,000 ETH,PoS 仅发行约 1,600 ETH。结合 EIP-1559 的费用销毁,ETH 在高活动期间可能处于净通缩状态
从依赖算力(硬件 + 电力)转变为依赖经济质押(锁定 ETH)。攻击成本从购买硬件变为质押大量 ETH,且恶意行为导致质押被罚没
不再需要昂贵的专用挖矿硬件(GPU/ASIC)。质押 32 ETH 即可成为验证者,或通过流动性质押协议(如 Lido)参与任意金额的质押
从 PoW 时代平均约 13 秒的变动出块时间,变为固定的每 12 秒一个时隙(slot),更具可预测性
📄 白皮书:'区块链与挖矿' + The Merge
9. 权益证明机制
以太坊的权益证明(Proof-of-Stake, PoS)用经济质押取代了计算竞赛。验证者锁定 ETH 作为保证金来参与区块提议和证明。诚实行为获得奖励,恶意或不活跃行为导致质押被罚没。
验证者
验证者是以太坊 PoS 网络的核心参与者。每个验证者运行共识客户端和执行客户端软件,负责提议新区块和证明(投票确认)其他验证者提议的区块。验证者的行为受到密码学和经济激励的双重约束。
成为验证者
时隙与纪元
以太坊 PoS 的时间被划分为 12 秒的时隙(slot)和 32 个时隙组成的纪元(epoch,共 6.4 分钟)。每个时隙由一个被随机选中的验证者提议一个区块,同时由一个验证者委员会对区块进行证明(attestation)。纪元边界是检查点(checkpoint)发生的位置,用于最终性确定。
委员会
在每个纪元开始时,所有活跃验证者被伪随机地打散(使用 RANDAO 随机数)并分配到各个时隙的委员会中。每个委员会负责在其分配的时隙中证明区块。委员会的随机性确保了攻击者无法预测或操纵特定时隙的验证者组成。每个纪元中,每个验证者恰好被分配到一个委员会,执行一次证明任务。
交互式:质押与纪元模拟器
| 验证者 ID | 余额 | 状态 | 已证明 | 已错过 | 证明率 |
|---|---|---|---|---|---|
| V1 | 32.0000 ETH | 活跃 | 0 | 0 | — |
| V2 | 32.0000 ETH | 活跃 | 0 | 0 | — |
| V3 | 32.0000 ETH | 活跃 | 0 | 0 | — |
| V4 | 32.0000 ETH | 活跃 | 0 | 0 | — |
| V5 | 32.0000 ETH | 活跃 | 0 | 0 | — |
| V6 | 32.0000 ETH | 活跃 | 0 | 0 | — |
| V7 | 32.0000 ETH | 活跃 | 0 | 0 | — |
| V8 | 32.0000 ETH | 活跃 | 0 | 0 | — |
📄 信标链规范
10. 最终性与共识
以太坊 PoS 结合了两种协议来实现共识和最终性:LMD-GHOST 用于分叉选择(选择「正确」的链头),Casper FFG 用于最终性确定(使区块不可逆转)。这种组合被称为 Gasper。
Casper FFG(友好的最终性小工具)
Casper FFG 是以太坊的最终性机制。它在纪元边界的检查点(checkpoint)上运行,通过验证者的超级多数投票(至少 2/3 的质押 ETH 投票)来实现最终性。Casper FFG 提供了经济最终性 — 逆转一个最终确定的区块需要销毁至少 1/3 的总质押 ETH。
LMD-GHOST(最近消息驱动的 GHOST)
LMD-GHOST 是以太坊的分叉选择规则。当链出现分叉时,它通过计算每个分支收到的最新证明(attestation)的权重来选择「最重」的分支。每个验证者的最新消息(Latest Message Driven)被用作投票,而不是所有历史消息,这使得协议更高效且更难被操纵。
证明(Justification)
当一个纪元的检查点收到至少 2/3 活跃验证者质押 ETH 的证明投票时,该检查点被「证明」(justified)。证明是最终确定的前置步骤。一个检查点只有在被证明后才有可能被最终确定。
最终确定(Finalization)
当一个已被证明的检查点的下一个纪元检查点也被证明时,前一个检查点被「最终确定」(finalized)。最终确定意味着该检查点及其之前的所有区块永远不会被逆转(除非攻击者愿意销毁至少 1/3 的总质押 ETH)。在正常情况下,最终确定在 2 个纪元后达成(约 12.8 分钟)。
对比
交互式:区块提议与最终性
| ID | 余额 (ETH) | 有效余额 | 概率 | 状态 |
|---|---|---|---|---|
| Validator-A (0x1a2b) | 32 | 32 | 7.8% | |
| Validator-B (0x3c4d) | 64 | 32 | 15.7% | |
| Validator-C (0x5e6f) | 48 | 32 | 11.8% | |
| Validator-D (0x7a8b) | 96 | 32 | 23.5% | |
| Validator-E (0x9c0d) | 40 | 32 | 9.8% | |
| Validator-F (0xbe1f) | 128 | 32 | 31.4% |
📄 Casper FFG / LMD-GHOST
11. 罚没与安全
罚没(Slashing)是以太坊 PoS 中对恶意验证者的经济处罚机制。当验证者被检测到违反协议规则时,其质押的 ETH 将被部分或全部没收。这一机制使得攻击网络的经济成本极高,从而保障了系统安全。
罚没条件
同一个验证者在同一个时隙提议了两个不同的区块。这是一种试图制造分叉的攻击行为
同一个验证者在同一个纪元对两个不同的检查点进行了证明投票。这违反了 Casper FFG 的投票规则
验证者的一次投票「包围」了另一次投票(即投票的源检查点和目标检查点范围包含了另一次投票的范围)。这是一种更隐蔽的攻击方式
处罚力度
不活跃惩罚
除了罚没之外,验证者因不活跃(离线或未能及时提交证明)也会受到惩罚。在网络正常运行时,不活跃惩罚较轻(每个错过的纪元损失少量余额)。但如果链未能最终确定(即超过 4 个纪元没有检查点被最终确定),不活跃泄漏(inactivity leak)机制启动 — 不活跃验证者的质押将被加速扣除,直到活跃验证者的质押占比恢复到 2/3 以上,使链重新能够最终确定。
安全优势
攻击者需要控制至少 1/3 的质押 ETH 来阻止最终确定,或 2/3 来制造冲突的最终确定。按当前质押量计算,这意味着数百亿美元的风险
与 PoW 不同,PoS 中的恶意行为可以追溯到具体的验证者身份并实施惩罚。PoW 攻击者在攻击后保留硬件,PoS 攻击者会失去质押
不活跃泄漏机制确保即使大量验证者离线,网络也能最终自动恢复最终性
PoW 挖矿存在规模效应(大型矿场更高效),而 PoS 中每个 32 ETH 验证者的回报率基本相同,促进了去中心化
📄 PoS 安全模型
12. 修改版 GHOST 协议
以太坊采用了修改版的 GHOST(Greedy Heaviest Observed SubTree)协议作为其分叉选择规则。原始 GHOST 协议由 Sompolinsky 和 Zohar 于 2013 年提出,旨在解决快出块时间导致的安全性下降问题。
问题
当出块时间较短时(以太坊约 12 秒 vs 比特币约 10 分钟),区块在传播到全网之前,可能已经有新的区块被产生,导致大量短暂分叉。比特币的「最长链」规则在高分叉率下会降低安全性,因为诚实算力(或质押)被分散在多个分支上,而攻击者可以集中在单一链上。
解决方案
GHOST 协议不是简单地选择最长链,而是选择「最重子树」— 即包含最多区块(或证明)的子树。当遇到分叉时,GHOST 从创世区块开始,在每个分叉点选择拥有更多后代区块的分支。这确保了即使存在大量分叉,诚实网络的全部权重都被计入。
以太坊中的 LMD-GHOST
以太坊 PoS 使用的 LMD-GHOST(Latest Message Driven GHOST)是原始 GHOST 的改进版本。它不是计算子树中的区块数量,而是计算每个验证者的最新证明(attestation)的权重。具体来说:在每个分叉点,选择收到更多最新证明投票(按质押 ETH 加权)的分支。「最新消息驱动」意味着只考虑每个验证者最新的一条消息,避免了历史消息的干扰。
与比特币最长链规则的对比
📄 白皮书:'修改版 GHOST 实现'
13. 计算与图灵完备性
以太坊虚拟机被设计为图灵完备的 — 理论上,它可以执行任何可计算的程序。这是以太坊与比特币脚本的根本区别,也带来了强大的能力和独特的挑战。
图灵完备
图灵完备意味着 EVM 可以模拟任何图灵机 — 即执行任何算法,只要给予足够的时间和资源。EVM 支持条件分支(JUMPI)、循环(通过条件跳转实现)、读写内存和存储 — 这些是实现图灵完备所需的基本能力。相比之下,比特币脚本故意避免循环,是非图灵完备的。
停机问题
图灵完备性带来了一个根本性的理论问题:停机问题。数学已经证明,不存在通用算法可以在程序运行之前判断它是否会终止。这意味着无法静态分析一个以太坊合约是否会无限循环。如果没有某种机制来限制执行,一个恶意或有缺陷的合约可能会消耗无限的计算资源,使整个网络瘫痪。
Gas 限制方案
以太坊通过 Gas 机制优雅地解决了停机问题。每条 EVM 指令消耗预定义数量的 Gas,交易发送者必须预先指定 Gas 限制(gasLimit)并支付费用。如果执行过程中 Gas 耗尽,EVM 立即终止执行并回滚所有状态变更(但已消耗的 Gas 费用不退还)。这确保了:(1) 每个计算都是有界的,(2) 资源使用者必须付费,(3) 网络不会被无限循环攻击。
实际限制
📄 白皮书:'计算与图灵完备性'
14. 隐私与身份
以太坊的账户模型与比特币的 UTXO 模型在隐私特性上有显著差异。以太坊的透明性是其去信任特性的基础,但也带来了严峻的隐私挑战。理解这些权衡对于用户和开发者都至关重要。
账户模型与隐私
以太坊使用基于账户的模型,每个账户有一个持久的地址。这意味着账户的所有交易历史、余额变更和合约交互都关联到同一个地址,形成一个完整的活动图谱。与比特币建议每笔交易使用新地址不同,以太坊中频繁切换地址更加困难 — 因为 DeFi 交互、代币持有和 NFT 收藏等都绑定在特定账户上。
与 UTXO 模型对比
比特币的 UTXO 模型天然支持为每笔交易生成新地址,未使用的 UTXO 没有直接的链接关系。虽然链分析仍然可以通过输入聚类和找零检测推断关联,但 UTXO 模型提供了比账户模型更好的基线隐私。以太坊的账户模型牺牲了部分隐私以换取更好的状态管理和智能合约交互体验。
隐私技术
使用零知识证明(zk-SNARK)打破存款和取款之间的链上链接。用户存入固定面额的 ETH,之后使用零知识证明从另一个地址提取,无法追踪资金流向。但因监管原因已被 OFAC 制裁
允许证明某事为真而不揭露具体信息。在以太坊生态中用于隐私交易(如 Aztec Protocol)、身份验证和扩容方案(zkRollup)
EIP-5564 提案。发送者为每笔交易生成一个一次性地址,只有接收者能用自己的私钥识别和花费该地址的资金。类似于为每笔交易创建新地址,但无需接收者预先公布多个地址
新一代隐私协议,在提供交易隐私的同时允许用户证明其资金来源合法(通过关联集合或排除列表),尝试在隐私和合规之间找到平衡
虽然不是直接的隐私技术,但通过允许多种账户逻辑(如社交恢复、批量交易),可以间接改善隐私,例如通过中继者代付 Gas 来隐藏发送者身份
链上身份
以太坊正在发展丰富的链上身份生态系统。以太坊域名服务(ENS)将人类可读名称映射到地址(如 vitalik.eth)。灵魂绑定代币(Soulbound Tokens, SBTs)提供不可转让的身份凭证。去中心化身份标准(DIDs)和可验证凭证(VCs)允许用户选择性地展示身份属性而无需暴露全部信息。这些技术共同构建了一个自主权身份(Self-Sovereign Identity)框架,让用户完全控制自己的数字身份。
📄 隐私考虑
15. 总结与参考文献
关键要点
- 以太坊将区块链从去中心化货币扩展为通用计算平台 — 支持图灵完备的智能合约和去中心化应用
- 账户模型(EOA + 合约账户)取代了 UTXO 模型,提供更直观的状态管理和合约交互
- 状态转换函数 APPLY(S, TX) -> S' 是以太坊的核心 — 每笔交易确定性地将世界状态从一个版本转换为下一个版本
- EVM 是基于栈的虚拟机,通过 Gas 机制限制计算来解决停机问题,确保所有执行都是有界的
- EIP-1559 引入了动态基础费用 + 优先费用机制,基础费用被销毁,创造了 ETH 的通缩压力
- 智能合约一旦部署不可变更,安全审计和形式化验证对于保护用户资金至关重要
- 合并(The Merge)将以太坊从 PoW 切换到 PoS,能耗降低 99.95%,发行量降低约 90%
- PoS 验证者质押 32 ETH 参与共识 — 通过时隙、纪元和委员会组织出块和证明流程
- Casper FFG + LMD-GHOST(Gasper)共同实现共识和最终性 — 约 12.8 分钟后区块被最终确定
- 罚没机制使恶意行为的经济成本极高 — 攻击者不仅失败,还会损失大量质押 ETH
- 修改版 GHOST 协议解决了快出块时间下的分叉问题,确保所有诚实验证者的贡献都被计入
- Gas 机制优雅地解决了图灵完备带来的停机问题,同时创建了计算资源的市场定价
- 以太坊的账户模型在状态管理便利性和隐私之间做出了权衡,新兴的零知识证明技术正在弥补隐私不足