github编辑

主要设计

以太坊项目的基本设计与比特币网络类似。为了支持更复杂的智能合约,以太坊在不少地方进行了改进,包括交易模型、共识、对攻击的防护和可扩展性等。

智能合约相关设计

运行环境

以太坊采用以太坊虚拟机作为智能合约的运行环境。以太坊虚拟机是一个隔离的轻量级虚拟机环境,运行在其中的智能合约代码无法访问本地网络、文件系统或其它进程。

对同一个智能合约来说,往往需要在多个以太坊虚拟机中同时运行多份,以确保整个区块链数据的一致性和高度的容错性。另一方面,这也限制了整个网络的容量。

开发语言

以太坊为编写智能合约设计了图灵完备的高级编程语言,降低了智能合约开发的难度。

目前 Solidity 是最常用的以太坊合约编写语言之一。

智能合约编写完毕后,用编译器编译为以太坊虚拟机专用的二进制格式(EVM bytecode),由客户端上传到区块链当中,之后在矿工的以太坊虚拟机中执行。

交易模型

出于智能合约的便利考虑,以太坊采用了账户的模型,状态可以实时的保存到账户里,而无需像比特币的 UXTO 模型那样去回溯整个历史。

UXTO 模型和账户模型的对比如下。

特性
UXTO 模型
账户模型

状态查询和变更

需要回溯历史

直接访问

存储空间

较大

较小

易用性

较难处理

易于理解和编程

安全性

较好

需要处理好重放攻击等情况

可追溯性

支持历史

不支持追溯历史

可追溯性

支持历史

不支持追溯历史

账户抽象 (Account Abstraction)

长期以来,以太坊账户分为外部拥有账户(EOA,由私钥控制)和合约账户(CA,由代码控制)。EOA 是发起交易的唯一方式,但面临私钥管理困难的问题。

ERC-4337 标准的引入实现了账户抽象(Account Abstraction),它允许用户通过智能合约钱包(Smart Contract Wallet)来作为主账户,从而实现了:

  • 社交恢复:无需助记词,可通过信任的联系人恢复账户。

  • Gas 代付 (Paymaster):应用方可以为用户支付 Gas 费,降低门槛。

  • 批量交易:一次签名可批准多笔操作。

这被认为是将以太坊推向 10 亿用户的关键 UX 改进。

共识

2022 年 9 月,以太坊完成了历史性的"合并"(The Merge)升级,正式从工作量证明(PoW)转向权益证明(PoS)共识机制。

在 PoS 机制下:

  • 验证者 (Validator) 取代了矿工,通过质押至少 32 ETH 成为验证者。

  • 验证者被随机选中来提议新区块并验证其他区块。

  • 诚实的验证者会获得 ETH 奖励,而恶意行为(如双签)会导致质押被罚没(Slashing)。

  • 能耗降低超过 99%,解决了 PoW 长期被诟病的高能耗问题。

区块生成时间从 PoW 时代的约 13 秒缩短到固定的 12 秒一个 slot。

注:以太坊早期(2015-2022)采用 PoW 机制和 Ethash 算法,现已完全淘汰。

降低攻击

以太坊网络中的交易更加多样化,也就更容易受到攻击。

以太坊网络在降低攻击方面的核心设计思想,仍然是通过经济激励机制防止少数人作恶:

  • 所有交易都要提供交易费用,避免 DDoS 攻击;

  • 程序运行指令数通过 Gas 来限制,所消耗的费用超过设定上限时就会被取消,避免出现恶意合约。

这就确保了攻击者试图消耗网络中虚拟机的计算资源时,需要付出经济代价(支付大量的以太币);同时难以通过构造恶意的循环或不稳定合约代码来对网络造成破坏。

提高扩展性

可扩展性是以太坊网络承接更多业务量的关键挑战。

以太坊的扩容路线图已从早期的"分片执行"调整为 "以 Rollup 为中心" 的策略。当前的扩容主要依赖 Layer 2 解决方案:

  • Rollups:在链下批量处理交易,然后将压缩的交易数据和证明提交到 Layer 1。包括 Optimistic Rollups(如 Arbitrum、Optimism)和 ZK Rollups(如 zkSync、Starknet)。

  • Proto-Danksharding (EIP-4844):2024 年 3 月的 Dencun 升级引入了 Blob 数据类型,专门用于存储 Rollup 的数据,大幅降低了 Layer 2 的交易成本。

未来,以太坊仍计划实现完整的 Danksharding,进一步扩大数据可用性容量。

最后更新于