## 主要设计 以太坊项目的基本设计与比特币网络类似。为了支持更复杂的智能合约,以太坊在不少地方进行了改进,包括交易模型、共识、对攻击的防护和可扩展性等。 ### 智能合约相关设计 #### 运行环境 以太坊采用以太坊虚拟机作为智能合约的运行环境。以太坊虚拟机是一个隔离的轻量级虚拟机环境,运行在其中的智能合约代码无法访问本地网络、文件系统或其他进程。 对同一个智能合约来说,往往需要在多个以太坊虚拟机中同时运行多份,以确保整个区块链数据的一致性和高度的容错性。另一方面,这也限制了整个网络的容量。 #### 开发语言 以太坊为编写智能合约设计了图灵完备的高级编程语言,降低了智能合约开发的难度。 目前 Solidity 是最常用的以太坊合约编写语言之一。 智能合约编写完毕后,用编译器编译为以太坊虚拟机专用的二进制格式(EVM bytecode),由客户端上传到区块链当中,之后在网络中验证者节点的以太坊虚拟机中执行。 *注:在 2022 年“合并”(The Merge)之前,合约由矿工执行;此后改由 PoS 验证者执行。* ### 交易模型 出于智能合约的便利考虑,以太坊采用了账户的模型,状态可以实时的保存到账户里,而无需像比特币的 UTXO 模型那样去回溯整个历史。 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 的交易成本。2025 年 5 月的 Pectra 升级进一步提高了 blob 目标值;2025 年 12 月的 Fusaka 升级激活 PeerDAS(数据可用性采样),向完整 Danksharding 迈出关键一步。 未来,以太坊仍计划实现完整的 Danksharding,进一步扩大数据可用性容量。