The four-part split existed because the single report had grown dense and heavily cross-referenced; splitting traded that for a different cost, which the merged read makes visible. Section numbers (§1–§9, Appendices A–C) were already the stable identifiers, so the parts were a packaging choice, not a structural one. reports/tsi/tsi-report.md is now the whole report. Parts are interleaved back into section order — §1, §2–§5, §6, §7–§8, §9 + appendices — which is NOT concatenation order: Part 1 carried §1, §7 and §8, so appending files in sequence would have put §7–§8 ahead of §2. Every cross-file link collapses to an internal anchor; all 47 anchors resolve, all 37 figure embeds resolve, and no line of prose was lost (verified by diffing normalised content lines with link targets stripped — 0 lost, additions are the new header and table of contents). Coherence fixes the merge exposed, all artefacts of the split: - The roadmap paragraph described "four parts (see the index)" and is now a section-order roadmap, with its circular self-link to §1 dropped. - §7's figure-location note pointed readers at "the other parts". It now names the actual sections, and it was also WRONG about three figures: fig17/fig18/fig21 are in Appendix C and figB1/figB2 in Appendix B, not §9. It had also never been updated for fig30–fig35. - §9's "throughout this part" is now "throughout". README.md becomes a proper index — a section table pointing into the one document — rather than a list of four files. scripts/split_report.py is deleted: a one-time migration that produced the split, now both obsolete and pointing the wrong way. scripts/build_html.py was already broken before this change — it still read the report from tsi-sim-pernode/, where the files stopped living when they moved to reports/tsi/. Retargeted at reports/tsi/ and the single document; verified end-to-end (0 broken internal anchors, 0 unrewritten .md links, 37 images in the rendered HTML). Its output is now gitignored, as its docstring always claimed it was. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
4.2 KiB
Total-Stake-Inference parameter selection
Per-node network simulation of Cryptarchia Total Stake Inference (TSI). Simulator: tsi-sim-pernode. All runs at the true security parameter k = 2160 unless noted; latency is in slots and 1 slot = 1 s.
This report selects and justifies the TSI parameters for Cryptarchia from a per-node network simulation. The whole report is one document — tsi-report.md — and section numbers (§1–§9, Appendices A–C) are stable identifiers referenced from the simulator and from spec discussion.
Uncle references. The model analysed throughout is the countable one: counting-only references, deduplicated by slot, drawn from first-fork blocks only, within a window derived as
w_u = W_abs/f. An unrestricted baseline — any orphan in the window at any fork depth — is measured alongside it for comparison. The two are indistinguishable in the design regimeρ < 1and diverge only under overload. See the model note at the top of the report, the mechanism in §2.1, the comparison in §3.2–§3.2a, and the reproduction notes in §9.
Contents
| § | what it covers |
|---|---|
| §1 | executive summary — the problem, the findings, the recommendation |
| §2 | the model, the measurement convention, and the counting rule |
| §3 | the findings and their evidence, including the high-precision design band (§3.2a) |
| §4 | design equations and the parameter-selection algorithm |
| §5 | caveats and regime of validity |
| §6 | robustness — jitter, grinding, withholding, selfish mining, rewards, reorg depth, churn |
| §7 | parameter reference — what each knob does |
| §8 | the safest selection, residual risks, and the recommendation-vs-spec deltas |
| §9 | reproducibility — how to re-run every study |
| A · B · C | the residual f-rounding offset · the per-epoch noise floor · consensus detail |
Headline recommendation
Cryptarchia baseline f = 1/30. Two design choices are foundational: count uncles per occupied slot, not per block — the density-bug fix that lands the estimate at exactly D (§2.1, §8.5) — and make genesis D̂ a single protocol constant, identical at every node, never client-configurable, since a per-node divergence is never self-corrected (§8.1 row 7). The settings: security k = 2160, uncle window W = 300 slots, uncle cap U ≥ ⌈ρ⌉ + 1 (2 at the Blend target; the protocol's MAX_UNCLES = 4 sits safely above it), learning rate β = 1, on-chain f at 10⁻⁶ precision, peering degree ≥ 6 at scale, soft uncle rewards with w_u + w_n < 1, and operate at load ρ = f·D_vis < 1. The full recommended-configuration table and rationale are in §8 →.
Figures
Figures are embedded from report-figures/ via relative links and are versioned here alongside the report. They are produced by the simulator's plotting scripts (scripts/*.py and tsi_sim.plotting) in tsi-sim-pernode; that simulation folder does not commit its own generated figures — the copies checked in here are the report's figures of record.
Reproducing the results
The simulation code, configs, and run data live in tools/simulators/tsi/tsi-sim-pernode. Every study's exact command is listed in §9 — Reproducibility. In short, from the simulator directory: make install, then make <config> to run a sweep (results land under runs/<timestamp>_<label>/), and the per-figure generators under scripts/ render the figures. Regenerated figures must be copied into report-figures/ to update this report.