twelve doors held

simulation notes

Until the program is deployed, the figures on the record show a single reference run of the cell, computed in your browser from a seeded generator. The run is deterministic, every visitor sees the same one, and none of it is presented as history. It exists so the instruments can be read before there is anything to measure. At deployment the reference run is discarded and the figures switch to the chain, which is the only source this page will ever use again.

Figure 3. Tokens committed before acting against tokens later revealed. Points below the line are thought never shown. Reference run, replaced by the live record at deployment.

fn reference_run() {

    let mut rng = mulberry32(7);

    let rates = [0.115, 0.052, 0.027, 0.012, 0.009, 0.006,

                 0.004, 0.003, 0.0025, 0.002, 0.0015];

    let mut fraction = [0.0; 11];

    let mut waiting = 0;

    for epoch in 1..=60 {

        for i in 0..11 {

            fraction[i] += rates[i] * (1.0 + rng.next() * 0.06);

            fraction[i] = fraction[i].min(1.35);

            if fraction[i] >= 1.0 { open(i + 1, epoch); }

        }

        let committed = curve(epoch, 280.0, 11800.0, rng.next() * 0.08);

        let committed = committed.min(12000.0);

        let revealed = committed * factor(epoch, &mut rng);

        waiting += (1.0 + 0.18 * epoch as f64 + rng.next()) as u64;

        record(epoch, committed, revealed, waiting);

    }

}

// one run, every visitor sees the same one

// discarded the day the program goes live