主要设计
以太坊项目的基本设计与比特币网络类似。为了支持更复杂的智能合约,以太坊在不少地方进行了改进,包括交易模型、共识、对攻击的防护和可扩展性等。
智能合约相关设计
运行环境
以太坊采用以太坊虚拟机作为智能合约的运行环境。以太坊虚拟机是一个隔离的轻量级虚拟机环境,运行在其中的智能合约代码无法访问本地网络、文件系统或其它进程。
对同一个智能合约来说,往往需要在多个以太坊虚拟机中同时运行多份,以确保整个区块链数据的一致性和高度的容错性。另一方面,这也限制了整个网络的容量。
开发语言
以太坊为编写智能合约设计了图灵完备的高级编程语言,降低了智能合约开发的难度。
目前 Solidity 是最常用的以太坊合约编写语言之一。
智能合约编写完毕后,用编译器编译为以太坊虚拟机专用的二进制格式(EVM bytecode),由客户端上传到区块链当中,之后在网络中验证者节点的以太坊虚拟机中执行。
注:在 2022 年"合并"(The Merge)之前,合约由矿工执行;此后改由 PoS 验证者执行。
交易模型
出于智能合约的便利考虑,以太坊采用了账户的模型,状态可以实时的保存到账户里,而无需像比特币的 UTXO 模型那样去回溯整个历史。
UTXO 模型和账户模型的对比如下。
状态查询和变更
需要回溯历史
直接访问
存储空间
较大
较小
易用性
较难处理
易于理解和编程
安全性
较好
需要处理好重放攻击等情况
可追溯性
支持历史
不支持追溯历史
账户抽象 (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,进一步扩大数据可用性容量。
最后更新于