the two clocks

C/1

the fast clock

MECHANISM

The fast clock is the L2 block number returned by the ArbSys precompile at address 0x64.1 It is the number the chain uses for itself. It advances roughly every tenth of a second, without reference to anything happening on the settlement layer, and it does not stop while the sequencer is producing blocks.

Because it advances at a near constant cadence, the fast clock is the only ruler the record has. Every duration written into the record is expressed in fast blocks, never in seconds, because seconds are an interpretation of block cadence and cadence is not guaranteed.2 A number of fast blocks is a fact about the chain. A number of seconds is a claim about the world.

The record reads the fast clock inside the same transaction as the slow clock. Two reads, one instant, one pair. No value on this page is assembled from readings taken at different times, and no reading is retained from one call to be compared against another taken later by a different caller.

What the fast clock cannot tell anyone is whether any of the blocks it counts have settled. It counts production. Settlement is the other clock.

read at fast · slow
C/2

the slow clock

MECHANISM

The slow clock is the L1 block the sequencer has synced to. On this chain it is what block.number returns.1 It does not advance smoothly. It advances in jumps, sometimes several at once, and sometimes it does not advance at all for a long stretch of fast blocks.

The slow clock is the closest thing available on chain to a statement about settlement. When it moves, the sequencer has acknowledged a further point on the settlement layer. When it stands still, everything produced since its last movement is production without acknowledgement.

The record does not model why the slow clock stops. It does not distinguish between a sequencer that is behind, a settlement layer that is congested, and an outage. Cause is outside what a contract can prove. Only the pause itself is inside.

A pause is therefore the entire subject. Both clocks are read, one is subtracted from the state of the other, and the difference is written down.

read at fast · slow
C/3

the ratio

MEASUREMENT

Dividing fast blocks elapsed by slow blocks elapsed over a window gives the observed ratio. Nominally it is about one hundred and twenty to one, the quotient of the two nominal block times.1 That figure is a reference line and nothing more.

The observed ratio is not stable. It rises whenever the slow clock hesitates and falls whenever the sequencer catches up in a burst. Over a long window it tends toward nominal. Over a short window it can be an order of magnitude away from nominal in either direction.

The record keeps the ratio because divergence from nominal is the earliest readable sign that a stall is under way. The ratio moves before any interval has closed and before any total has been credited.

It is a derived figure. It writes nothing and it settles nothing. It is printed here because it can be recomputed by the reader from the two clocks in the same window.

read at fast · slow
C/4

what a stall is

DEFINITION

A stall begins at the fast block where the slow clock was last seen to move and ends at the fast block where it is next seen to move.1 Both endpoints are observations. Neither is an inference. A stall that nobody observed the start of has no start the record will accept.

During a stall the chain is still producing blocks, still filling them, still moving money. Balances change, positions open and close, and transactions confirm in the only sense the interface in front of a reader can offer. None of it has settled.

The length of a stall is written in fast blocks between the two observed endpoints. It is a lower bound on the true length whenever an endpoint was not observed at the instant it occurred, which is most of the time.

This is the quantity the record exists to accumulate. Everything else on this site is either an input to it or a consequence of it.

read at fast · slow
C/5

why nothing else shows this

ORIENTATION

Every other interface built on this chain reads the fast clock. A block explorer reads it, a wallet reads it, a trading interface reads it. Each of them presents inclusion in an L2 block as confirmation, because for most purposes that is what a user needs.

The slow clock is available to all of them by a single read and none of them display it. A stall is therefore normal, frequent, and invisible. It produces no warning, no banner, and no change in any figure a reader would ordinarily see.

The record does not claim this is a defect. It makes no claim about whether unsettled time is dangerous, acceptable, or ordinary. It only holds that the quantity exists, is measurable, and is not currently written down anywhere.

So it is written down here, in one struct, owned by no one, in a form that can be recomputed from the chain by anyone who doubts it.

read at fast · slow
observed ratio
windowfast blocks elapsedslow blocks elapsedratiolongest stall in window