Timestamp object — execution explorer

Simulates Algorithm 1 of Worst-Case Two-Delay Implementation of the Timestamp Object Using Digital Signatures. Each next() invocation is issued by a randomly chosen idle process; messages are delivered asynchronously with independent random delays. All processes are correct — no Byzantine behaviour is simulated. The charts show the timestamp triple τ = (N(F), min{r_i,r_o}, 1{r_i>r_o}) from line 27 and the integer t = enc(τ) returned on line 31.

Max concurrent caps how many invocations are outstanding at once (the model allows a correct process at most one), so 1 gives the strictly sequential case. Delay spread draws each message delay from [1, 1+spread]; think time is how long a process waits after returning before the next invocation is issued. Click any point, trace line or table row to select an operation.

Integer timestamp — t = enc(τ) = s² + 2m + δ (lines 28, 31)

t returned [N(F)², (N(F)+1)²) — Prop. 8

Timestamp triple τ = (s, m, δ) (line 27)

First two components share a scale — both count operations. The third component δ is binary, so it gets its own strip.

s = N(F) m = min{r_i, r_o}

Ranks feeding the triple

r_i = rank(F[i]) is the invoker's own rank (= rank of ℓγ, Prop. 14); r_o = rank(F[o]) belongs to the one process whose acknowledgment was not awaited. m is the lower of the two, and δ = 1 exactly where blue sits above orange.

r_i (invoker) r_o (omitted process o)

Space–time diagram

REQ (selected op) REPLY (selected op) other traffic invoke
Trace
Table view — every completed operation
One row per completed next(). # is invocation order, ord completion order.

Invariants re-checked on every run: frontier well-formedness (Def. 5), certificate shape (Def. 4), rank(Fγ[i]) = rank(ℓγ) (Prop. 14), N(F)² ≤ enc(τ) < (N(F)+1)² (Prop. 8), and tβ > tα for every non-overlapping pair (Thm. 22).