Skip to content
BaseHub by wbnns Updated

Denim Upgrade Overview

Denim is the Base hardfork that follows Cobalt. It is a single idea expressed three ways: Base seals blocks five times per second instead of once every two seconds, the chain gains a millisecond clock that contracts can read, and RPC responses learn to report time at that resolution.

NetworkStatusTarget
Base SepoliaPlanningOctober 2026
Base MainnetPlanningOctober 2026
vibenetLive for experimental testingAvailable to preview today
  • 200ms native blocks — block production goes from one canonical block every two seconds to five per second, each a complete block with its own number, hash, state root, receipts, and forkchoice lifecycle. This retires Flashblocks. Full detail in Denim 200ms Native Blocks.
  • BaseTime — a predeploy that carries the sub-second part of each block’s timestamp, supplied by a metadata deposit. Contracts can read the current block’s millisecond component while EVM block.timestamp stays whole-second.
  • Millisecond RPC timestamps — blocks, headers, transactions, logs, and receipts gain optional timestampMs and blockTimestampMs fields derived from authenticated BaseTime metadata. The existing seconds-based timestamp field does not change.

The obvious way to seal blocks every 200ms would be to make the Ethereum header timestamp finer-grained. Denim does not do that. block.header.timestamp stays Unix time in whole seconds, and a BaseTime metadata deposit at tx[1] supplies the sub-second piece, restricted to 0, 200, 400, 600, or 800. Reading both together gives the block’s millisecond timestamp.

Keeping the header intact is what lets existing tooling stay standing. Contracts observe no change, because EVM block.timestamp still reports the whole-second header value. The cost is that anything wanting millisecond precision has to read the BaseTime deposit or the new optional RPC fields rather than the header alone.

Flashblocks publish incremental previews of pending state inside a two-second block. Once the 200ms interval is a real block, that preview layer has nothing left to do, so Base stops producing Flashblocks as part of the Denim rollout.

Denim briefly lost 200ms blocks to Cobalt in early September 2026, then got them back a week later. The node source stayed put across both moves: is_denim_active_at_timestamp has gated every block-timing path throughout, and the BaseTime helper sits under the same gate. Documentation written during that window may attribute 200ms blocks to Cobalt. The mechanics described here are unaffected by which name is attached.