Dual-block architecture

The total HyperEVM throughput is split between small blocks that happen at a fast rate and large blocks that happen at a slower rate. The HyperEVM "mempool" is still onchain state with respect to L1 execution, but is split into two independent mempools that source transactions for the two block types. The two block types are interleaved with a unique increasing sequence of EVM block numbers.

The primary motivation behind the dual-block architecture is to decouple block speed and block size when allocating throughput improvements. Users want faster blocks for lower time to confirmation. Builders want larger blocks to include larger transactions such as more complex contract deployments. Instead of a forced tradeoff, the dual-block system will allow simultaneous improvement along both axes.

The initial configuration on testnet is set conservatively to encourage developers to try the new system. Fast block duration is set to 2 seconds with a 1M gas limit. Slow blocks duration is set to 1 minute with a 30M gas limit. Testnet developers should now familiarize themselves with deploying contracts as follows:

  1. Submit L1 action {"type": "evmUserModify", "usingBigBlocks": true} to direct EVM transactions to big blocks instead of small blocks. Note that this L1 user state flag is set on the user level, and must be unset again to target small blocks. Like any L1 action, this requires an existing L1 user to send. Like any EOA, the deployer address can be converted to an L1 user by receiving an asset such as USDC on the L1.

  2. Optionally use the JSON-RPC method bigBlockGasPrice in place of gasPrice to estimate base gas fee on the next big block.

Last updated