双区块架构
HyperEVM 的总吞吐量分配给以较快速率生成的小区块和以较慢速率生成的大区块。
双区块架构的主要动机是在分配吞吐量改进时将区块速度与区块大小解耦。用户希望更快的区块,以缩短确认时间。Builder 希望更大的区块,以容纳更大的交易,例如更复杂的合约部署。双区块系统避免了被迫取舍,允许沿两个维度同时改进。
相对于整体的 L1 执行,HyperEVM 的"mempool"仍是链上状态,但被拆分为两个独立的内存池,分别为两种区块类型提供交易来源。两种区块类型以唯一递增的 EVM 区块号交错出现。链上内存池实现仅接受每个地址接下来的 8 个 nonce。内存池中超过 1 天的交易会被修剪。
初始配置较为保守,吞吐量预计将随着后续的技术升级而提升。快速区块时长设为 1 秒,Gas 上限为 3M。慢速区块时长设为 1 分钟,Gas 上限为 30M。
更准确地说,在上文的定义中,x 的区块时长表示对每个 l1_block_time % x 的取值,首个 L1 区块会产生一个 EVM 区块。
开发者可以按以下方式部署更大的合约:
- 提交操作
{"type": "evmUserModify", "usingBigBlocks": true},将 HyperEVM 交易导向大区块而非小区块。注意,该用户状态标志设置在 HyperCore 用户级别,若要重新以小区块为目标,必须再次取消该标志。与任何操作一样,这需要已存在的 Core 用户发送。与任何 EOA 一样,部署者地址可以通过接收 Core 资产(例如 USDC)转变为 Core 用户。 - 可选:使用 JSON-RPC 方法
bigBlockGasPrice代替gasPrice来估算下一个大区块的基础 Gas 费。