From f1433cbbb36db70a83e4e0756f9372e9e7b69d35 Mon Sep 17 00:00:00 2001 From: Marcin Pawlowski Date: Fri, 7 Aug 2026 12:22:50 +0200 Subject: [PATCH] Anchor the uncle reference window to the parent, not the uncle The spec bounds an uncle's own slot (0 < sl_A - sl_U <= w_u) but leaves its PARENT unconstrained beyond lying on the referencing chain. So a block minted NOW, built on a chain block from arbitrarily far back, is a legal first-fork uncle: recent by its own slot, ancient by its parent's. Verifying it means deriving the epoch state and ledger root as of that ancient parent, per reference, and those are precisely the inputs the counting rules require -- so the work cannot be amortised. It costs the adversary nothing beyond lottery wins it already has; it just builds them somewhere useless. Measured with a deep_parent coalition. At the deployed operating point a 30% adversary moves the MEDIAN counted reference's reach from 54 slots back to 20,144, and the worst case to 76,778 -- the epoch boundary, ~21 hours of history, ~256x the nominal window. It is not a tail effect. The fix is a SUBSTITUTION, not an additional rule. A block strictly postdates its parent and a referenced uncle strictly precedes its referencer, so sl_A - sl_U < sl_A - sl_parent(U) <= w_u: bounding the parent bounds the uncle for free, and a both-windows variant would be identical to the parent one. Both invariants are pinned in a new test_slot_ordering.py rather than argued -- the user asked to confirm sl_A > sl_U explicitly, and it turns out to be load-bearing for the whole implication, so it is tested at three geometries plus a hand-built counting case. Under the parent anchor the same coalition reaches 292/300/300 slots at delta_max 4/8/16 -- capped by construction. Honest recovery is unaffected: 0.9993 -> 0.9999, 0.9969 -> 0.9986, 0.9791 -> 0.9858, no loss anywhere within one to two SEM, because a latency orphan's parent is recent by construction. One finding that sharpens the case: at delta_max = 16 the HONEST uncle-anchored arm already reaches 315 slots, past its own w_u = 300. Under the current rule w_u is not a bound on validation reach even with no adversary present. It only becomes a state-retention bound once anchored to the parent. Recorded as sec 6.12 with fig38, a new row in the sec 8.5 spec deltas, both new knobs in sec 7, and the study in sec 9. uncle_window_anchor and the deep_parent strategy are appended to the RNG key only when non-default, so no committed run is reseeded. Co-Authored-By: Claude Fable 5 --- reports/tsi/README.md | 39 +++- .../fig38_uncle_parent_window.png | Bin 0 -> 198660 bytes .../scripts/uncle_parent_window.py | 191 ++++++++++++++++++ .../tsi-sim-pernode/src/tsi_sim/blocktree.py | 23 ++- .../tsi/tsi-sim-pernode/src/tsi_sim/config.py | 32 ++- .../tsi/tsi-sim-pernode/src/tsi_sim/epoch.py | 3 +- .../tsi-sim-pernode/src/tsi_sim/measure.py | 20 +- .../tsi-sim-pernode/src/tsi_sim/metrics.py | 2 +- .../tsi/tsi-sim-pernode/src/tsi_sim/uncles.py | 10 + .../tsi/tsi-sim-pernode/tests/test_config.py | 1 + .../tests/test_slot_ordering.py | 99 +++++++++ 11 files changed, 404 insertions(+), 16 deletions(-) create mode 100644 reports/tsi/report-figures/fig38_uncle_parent_window.png create mode 100644 tools/simulators/tsi/tsi-sim-pernode/scripts/uncle_parent_window.py create mode 100644 tools/simulators/tsi/tsi-sim-pernode/tests/test_slot_ordering.py diff --git a/reports/tsi/README.md b/reports/tsi/README.md index a71c0c8..d8cf59e 100644 --- a/reports/tsi/README.md +++ b/reports/tsi/README.md @@ -490,6 +490,7 @@ Read this before using the numbers: the regime they hold in, and the margins tha - **[§6.8](#s6-8)** a *soft* (reward-weighted) inclusion rule — the fork-safe choice (a validity rule cannot prove which forks a producer saw). The emergent reference rate stays high (honest blocks reference the published orphans), so the backfire mostly vanishes; the residual is set by the uncle window `W` (how far back a block may reach to reference an orphan; recommended 300 slots = 10/f, [§3.4](#s3-4)) and visibility. - **[§6.9](#s6-9)** multiple coalitions and bribery — the abstention commons is bounded and structure-independent; multi-coalition *selfish* mining is flagged, not solved. - **[§6.10](#s6-10)** fork rate and reorg depth — uncles and `ρ < 1` keep reorganisations shallow and keep even a 30 % coalition below the effective-majority cliff. +- **[§6.12](#s6-12)** the reference window bounds the uncle but not the historical state a validator must reach — a 30 % coalition drives it to the epoch boundary, and anchoring the window to the uncle's *parent* caps it at no honest cost. - **[§6.11](#s6-11)** organic stake churn against the ~7.5-day epoch cadence — tracked with a one-epoch lag; a bounded rate wobble, never a consensus or accuracy failure. The recurring theme: the same uncle references that fix the honest under-count ([§3.2](#s3-2)) are also the adversarial safeguard — and *rewarding* them (softly) makes the safeguard incentive-compatible without a fork risk. @@ -774,6 +775,38 @@ The 30 %-stake depth is the sensitive one: the recommended **`degree ≥ 6`** ho --- + +### 6.12 The reference window bounds the uncle, but not the state a validator must reach (`fig38`) + +Every rule so far has been about *which* blocks count. This one is about what checking them costs, and it is the only place in this report where a parameter the spec already has fails to bound the thing it appears to bound. + +**The gap.** The window is measured to the uncle's own slot — `0 < sl_A − sl_U ≤ w_u` ([§2.1](#s2-1)). The uncle's **parent** is unconstrained apart from lying on the referencing chain. So a block minted *now*, built on a chain block from arbitrarily far back, is a perfectly legal first-fork uncle: recent by its own slot, ancient by its parent's. Verifying it means deriving the epoch state and ledger root as of that ancient parent — and those are exactly the inputs the counting rules require ([§2.1](#s2-1)), so the work is per reference and cannot be amortised. + +Nothing about this is expensive for the attacker. It spends lottery wins it already has; it simply builds them somewhere useless instead of on the tip. The blocks never become canonical — they are deep forks by construction — but they do not need to. They only need to be *referenced*, and under the current rule they are eligible the moment they are produced. + +**Measured** (`scripts/uncle_parent_window.py`, N = 600, k = 256, 10 replicates, `deep_parent` coalition). The observable is the age of the oldest chain state a *counted* reference reaches: + +| `δ_max` | adversary | oldest state reached: median / p99 / max (slots) | +|---|---|---| +| 4 | none | 54 / 131 / 233 | +| 4 | **30 %** | **20 144 / 75 525 / 76 778** | +| 8 | 30 % | 6 390 / 75 272 / 76 789 | +| 16 | 30 % | 872 / 75 109 / 76 798 | + +A 30 % coalition moves the *median* referenced parent from 54 slots back to 20 144, and the worst case to the epoch boundary — about 21 hours of history, ~256× the nominal window, on a reference the estimator counts. And the amplification is not a tail: at the deployment's own operating point the median reference reaches ten thousand slots back. + +**The fix is a substitution, not an addition.** Anchor the window to the parent: `sl_A − sl_parent(U) ≤ w_u`. Because a block strictly postdates its parent and a referenced uncle strictly precedes its referencer — both invariants pinned in `tests/test_slot_ordering.py` — the parent gap is never smaller than the uncle gap: + +> `sl_A − sl_U < sl_A − sl_parent(U) ≤ w_u` + +so bounding the parent bounds the uncle *for free*. A rule imposing both windows would be identical to the parent rule alone, which is why only two arms are simulated. Under it the same 30 % coalition reaches 292 / 300 / 300 slots at the three delays — capped at `w_u` by construction, a bound that now actually holds. + +**It costs no honest recovery.** A latency orphan's parent is recent by construction: it forked off the chain a block or two ago. Measured honestly, `D̂/D` is **0.9993 → 0.9999** at `δ_max` = 4, **0.9969 → 0.9986** at 8 and **0.9791 → 0.9858** at 16 (uncle- → parent-anchored) — no loss anywhere, within one to two standard errors at every delay. The honest parent gap does run about one block-interval longer than the uncle gap (median 54 vs ~30), so the same numeric `w_u` is a slightly tighter window; at `W = 10` block-intervals that costs nothing measurable, but a deployment choosing `W` close to the [§3.4](#s3-4) floor of 7 should size against the parent gap rather than the uncle gap. + +**One further observation, and it sharpens the case.** At `δ_max` = 16 the *honest* uncle-anchored arm already reaches **315 slots** — past its own `w_u` = 300. Under the current rule `w_u` is not a bound on how far back validation reaches even with no adversary present; under the parent rule the same cell is 296. The parameter only becomes a state-retention bound once it is anchored to the parent. + +![Fig 38 — anchoring the reference window to the uncle's parent rather than the uncle: honest recovery is unchanged across the delay range (left), while a 30 % adversary's reach into historical chain state falls from the epoch boundary to the window itself (right, log scale).](report-figures/fig38_uncle_parent_window.png) + ## 7. Parameter reference — what each knob does @@ -814,6 +847,8 @@ Every parameter a protocol designer or operator can set, in three groups: **prot | knob | probes | result | where | |---|---|---|---| | `adversary_strategy: selfish` | private-chain (SM1) override in the per-node engine | the profitable lever, now measurable end-to-end: revenue tracks Eyal–Sirer at sub-slot latency (0.0356 vs 0.0356 at α = 0.1) and exceeds it as natural forking lifts `α_eff`; deflates `D̂` to 0.76 at α = 0.3 (δ = 8) with **no** cap able to recover it ([§6.8](#s6-8)) | [§6.6](#s6-6), [§6.8](#s6-8) | +| `uncle_window_anchor` | whether the reference window is measured to the uncle's own slot (`uncle`, the spec) or to its parent's (`parent`, proposed) | `parent` is strictly tighter and implies the uncle bound; it caps an adversary's reach into historical state at `w_u` (against ~76 800 slots under `uncle`) at no measurable honest cost | [§6.12](#s6-12), fig38 | +| `adversary_strategy: deep_parent` | mints legal first-fork uncles hanging off ancient chain blocks | the attack §6.12 measures: costs the adversary only lottery wins it already has, and inflates the median counted reference's reach from 54 slots to 20 144 | [§6.12](#s6-12) | | `deep_orphan_share` (engine output) | share of in-window orphans sitting *below* the first block of their fork | the structural observable behind the first-fork cost, and the one `p_ref` conflates with "eligible but never picked up": these blocks are unreferenceable by construction ([§2.1](#s2-1)). 0.25 % honestly at the deployment's point, 3.3 % at 8 slots of per-recipient jitter ([§6.1](#s6-1)), 19–41 % under a private-chain attack ([§6.8](#s6-8)) | [§6.1](#s6-1), [§6.8](#s6-8) | | `p_ref_honest` (engine output) | reference rate over orphans produced *outside* the coalition | equals `p_ref` under suppression; diverges sharply under a private chain (0.45–0.69 vs ≈ 0.99), which is the quantity the estimator repair actually depends on | [§6.8](#s6-8) | | `adversary_frac` (β_adv), `adversary_strategy` | uncle suppression / abstention withholding | suppression weak at ρ < 1, a cheap lever only at ρ > 1 (1.43× at ρ = 1.36, β_adv = 0.5); withholding → `D̂ ≈ (1−β_adv)` — the *correct* active-stake answer, topology-independent | [§6.3](#s6-3)/6.4, figs 8, 9 | @@ -914,6 +949,7 @@ The deltas this report recommends, in one place. This is a parameter-selection r | on-chain `f` precision | 10⁻³ (`f_p = 0.033`) | **10⁻⁶** (`0.033333`) | removes the residual ≈ 1 % `f/f_p` offset ([§2.2](#s2-2)) | | uncle window `W` | `W` = 10 block-intervals, so `w_u = W/f` = 300 slots, bounded `1 ≤ W ≤ ⌊0.6k⌋` | **10/f = 300 slots** (confirms the default), widen to 450–600 near `ρ ≈ 1` | the floor is ≥ 7/f, set by block *spacing* rather than network delay — which supplies what the spec's rationale leaves out. The spec justifies the *upper* bound (a candidate within `w_u` is still in the proposer's block tree, and referencing blocks stay in the same epoch as the window they count) and asserts of the value itself only that this window "comfortably captures the forks worth referencing"; it states no lower bound, and 300 slots is only a ~1.5× margin over the measured one. The `⌊0.6k⌋` ceiling is 1296 slots at k = 2160, so the 450–600 widening recommended near `ρ ≈ 1` — where W = 600 recovers ≈ 0.99 against ≈ 0.96 at W = 300 (N = 1 000) — is well inside what the spec already permits, and needs no spec change ([§3.4](#s3-4)) | | uncle cap `U` | `MAX_UNCLES` = 4 | **`⌈ρ⌉ + 1`** = 2 at the Blend target — well inside the spec's cap of 4 | the load-plus-margin rule ([§3.3](#s3-3)); 4 leaves headroom for heavier loads | +| uncle reference window anchor | the **uncle's** slot: `0 < sl_A − sl_U ≤ w_u` | **the uncle's PARENT's slot**: `sl_A − sl_parent(U) ≤ w_u` | the current rule bounds which block may be referenced but not how far back verifying it reaches, so a 30 % coalition forces counted references against state ~76 800 slots old (~21 h, 256× the window). The parent anchor is strictly tighter — it implies the uncle bound rather than adding to it — caps the reach at `w_u`, and costs no honest recovery at any tested delay ([§6.12](#s6-12)) | | peering degree | (operator choice) | **≥ 6, scaled with N** | keeps `ρ` and reorg depth bounded at scale ([§3.7](#s3-7), [§6.10](#s6-10)) | | uncle rewards | none (spec: uncle grants no block reward) | **soft inclusion, `w_u + w_n < 1`** | fork-safe fairness + anti-hiding ([§6.7](#s6-7)–[§6.8](#s6-8)) | | operating point | set by the Blend privacy budget | **`ρ = f·D_vis < 1`** | accuracy, weak grinding, shallow reorgs — one rule ([§6.3](#s6-3), [§6.10](#s6-10)) | @@ -971,6 +1007,7 @@ Sweep studies are committed configs, run with `make ` (writes a dated `run | **residual §6.5-scope variants** (whale coalitions, `jitter > 0`, very slow `β`, and the static-withholding load sweep that finds the collapsed-branch event) | `scripts/adversary_variants.py` (`adversary_selection`); `runs/adversary_variants_{whale,jitter,beta,withhold_load}.parquet` | [§6.2](#s6-2), [§6.5](#s6-5) | | **uncle cap under a private chain** (`U` × `W` × `α` against the SM1 engine adversary, plus the structural/queue decomposition of the honest orphans) | `scripts/selfish_uncle_margin.py` (`adversary_strategy: selfish`); `runs/selfish_uncle_margin{,_decomp}.parquet` | [§6.8](#s6-8) | | **profit/deflation frontier** (how far a *paid* adversary can deflate `D̂`; the deflation-optimal MDP) | `scripts/deflation_frontier.py` (`selfish_mdp.deflation_frontier`, `.deflation_optimal_stats`); fig37 | [§6.6](#s6-6) | +| **uncle- vs parent-anchored reference window** (honest recovery cost, and an adversary's reach into historical state) | `scripts/uncle_parent_window.py` (`uncle_window_anchor`, `adversary_strategy: deep_parent`); `runs/uncle_parent_window{,_effort}.parquet`; fig38 | [§6.12](#s6-12) | | **the deployed operating point** (`δ_max` = 4 from the spec's Blend profile; the three `f`-precision arms) | `scripts/spec_point.py` (`f_precision`); `runs/spec_point.parquet` | [§2.2](#s2-2), [§8.5](#s8-5), [Appendix A](#sA) | | **per-recipient delay variance** (jitter 0–8 slots × `U`, both referencing models, exact oracle) | `scripts/spec_jitter.py`, `configs/spec-point-jitter.yaml`; `runs/spec_jitter.parquet` | [§6.1](#s6-1), [§8.3](#s8-3) item 15 | | **the spec point at scale and by window** (`N` = 5000; `W_abs` sweep at `δ_max` = 4) | `configs/spec-point-n5000.yaml` (run twice, `--old`), `configs/spec-point-window.yaml` | [§3.4](#s3-4), [§8.5](#s8-5) | @@ -981,7 +1018,7 @@ Because the two models draw independent RNG streams, every countable-vs-unrestri All studies were **re-run on 2026-07-23/24 with the corrected slot-counting mechanism** ([§2.1](#s2-1)) and the early-stop optimisation; the resilient batch is `scripts/run_all_reruns.sh` (per-step log in `runs/rerun_status.log`). Canonical run directories (latest): fullscale N=5000/10000 = `2026-07-24_094519_fullscale`; fullscale N=1000/2000 = `2026-07-23_171803_fullscale-small`; uncle-window = `2026-07-24_001456`; window-uncles = `2026-07-24_014240`; block-rate = `2026-07-24_043943`; blend-hops-delay = `2026-07-24_064052`; window-scale = `2026-07-24_085234`; latency-shape = `2026-07-24_090014_expdist`; stake-tail = `2026-07-24_090044_pareto133`; heterogeneous-start = `2026-07-24_090114_default`; N-scaling = the `nscaling-{a,b}` + `nscaling32-{a,b}` runs; adversary grids = `runs/adversary_grid/`; jitter = `runs/jitter_grid/`; bootstrap = `runs/bootstrap_fullscale/`; fluctuation = `runs/fluctuation_u0.parquet`; fork-rate = `runs/fork_rate_vs_delay.parquet`; ρ-boundary = `2026-07-27_195627_rho-boundary`. Referencing-model studies: countable-vs-unrestricted (paired, primary) = `2026-08-05_120804_cvo-paired-countable` / `2026-08-05_123403_cvo-paired-old`; the superseded unpaired pair = `2026-08-04_103536_cvo-countable` / `2026-08-04_104010_cvo-old`; window absorption = `2026-08-04_104633_absorption-window`; fine delay band (unpaired) = `2026-08-04_191441_fine-countable` / `2026-08-04_195353_fine-old`; fine delay band (paired, primary) = `2026-08-05_111109_fine-paired-countable` / `2026-08-05_113218_fine-paired-old`. Adversarial-countability studies: uncle-selection deviation = `2026-08-05_152617_uncle-selection`; countable-selfish MDP = `runs/countable_selfish.parquet` + `runs/countable_selfish_reorg.parquet`; §6.5 scope variants and the withhold-load sweep = `runs/adversary_variants_{whale,jitter,beta,withhold_load}.parquet`. -Figures are embedded from [`report-figures/`](report-figures) and versioned here alongside the report; the simulator folder does **not** commit its own generated figures, so the copies checked in here are the figures of record. Figures are in `report-figures/` (`fig1`–`fig29`, plus [Appendix B](#sB)'s `figB1`–`figB2`; numbering is generation order, not order of appearance). Committed generators: `fig1` (bootstrap, k=2160) by `scripts/bootstrap_dynamics.py`; `fig2`,`fig4`,`fig5`,`fig17`–`fig22` by `scripts/regenerate_extra_figs.py` from the latest sweeps (`fig3` hops×delay×U grid by `scripts/hops_delay_grid.py`, `fig6` (block-rate `U_min` grid + ρ-collapse) rendered ad hoc from `runs/2026-07-24_043943_block-rate` with no committed generator; `fig26` deficit-vs-ρ by `scripts/rho_boundary_analysis.py`) (fullscale-derived `fig17`–`fig20` pool both sizes in that run, N = 5 000 and N = 10 000 — the generators filter on stake_dist/topology/degree/init_dest only, never on `n_nodes`); `fig8`,`fig9` by `scripts/adversary_figs.py` from `runs/adversary_grid/`; `fig10`–`fig12` by `scripts/dynamic_withhold.py`; `fig13`–`fig15` by `scripts/selfish_mining.py`/`selfish_rewards.py`/`reward_mandate.py`; `fig16` by `scripts/stake_vs_delay.py`; `fig23`–`fig24` by `scripts/nscaling_analysis.py`; `fig25` by `scripts/window_scale_analysis.py`; `fig27`–`fig28` by `scripts/reorg_depth.py` (fork rates via `--measure`; private-chain model `src/tsi_sim/reorg.py`); `fig29` by `scripts/churn.py`; `figB1`–`figB2` by `scripts/appendix_fluct.py`. `fig7` (feedback fixed-point) is an analytic overlay; `fig30`–`fig33` (countable-vs-unrestricted accuracy, `q_u`-prediction check, recovery rate, absorption-window sweep) by `scripts/plot_countable_vs_old.py` from the `cvo-countable`/`cvo-old`/`absorption-window` runs; `fig34`–`fig35` (design-regime accuracy and the model gap with 95 % CIs) by `scripts/plot_fine_delay.py` from the `fine-countable`/`fine-old` runs; `fig36` (the countable recovery ceiling under a selfish adversary) by `scripts/countable_selfish.py`, which solves the MDP directly and writes `runs/countable_selfish.parquet` + `runs/countable_selfish_reorg.parquet` (no sweep input); `fig37` (the profit/deflation frontier) by `scripts/deflation_frontier.py` from `runs/deflation_frontier.parquet`, likewise solver-only. Every figure type the per-node simulator generates appears in this report, and the fork-rate/reorg-depth study closes the previous reproducibility gap for the adversarial figures (`fig8`,`fig9` now have committed generators from `runs/adversary_grid/`). +Figures are embedded from [`report-figures/`](report-figures) and versioned here alongside the report; the simulator folder does **not** commit its own generated figures, so the copies checked in here are the figures of record. Figures are in `report-figures/` (`fig1`–`fig29`, plus [Appendix B](#sB)'s `figB1`–`figB2`; numbering is generation order, not order of appearance). Committed generators: `fig1` (bootstrap, k=2160) by `scripts/bootstrap_dynamics.py`; `fig2`,`fig4`,`fig5`,`fig17`–`fig22` by `scripts/regenerate_extra_figs.py` from the latest sweeps (`fig3` hops×delay×U grid by `scripts/hops_delay_grid.py`, `fig6` (block-rate `U_min` grid + ρ-collapse) rendered ad hoc from `runs/2026-07-24_043943_block-rate` with no committed generator; `fig26` deficit-vs-ρ by `scripts/rho_boundary_analysis.py`) (fullscale-derived `fig17`–`fig20` pool both sizes in that run, N = 5 000 and N = 10 000 — the generators filter on stake_dist/topology/degree/init_dest only, never on `n_nodes`); `fig8`,`fig9` by `scripts/adversary_figs.py` from `runs/adversary_grid/`; `fig10`–`fig12` by `scripts/dynamic_withhold.py`; `fig13`–`fig15` by `scripts/selfish_mining.py`/`selfish_rewards.py`/`reward_mandate.py`; `fig16` by `scripts/stake_vs_delay.py`; `fig23`–`fig24` by `scripts/nscaling_analysis.py`; `fig25` by `scripts/window_scale_analysis.py`; `fig27`–`fig28` by `scripts/reorg_depth.py` (fork rates via `--measure`; private-chain model `src/tsi_sim/reorg.py`); `fig29` by `scripts/churn.py`; `figB1`–`figB2` by `scripts/appendix_fluct.py`. `fig7` (feedback fixed-point) is an analytic overlay; `fig30`–`fig33` (countable-vs-unrestricted accuracy, `q_u`-prediction check, recovery rate, absorption-window sweep) by `scripts/plot_countable_vs_old.py` from the `cvo-countable`/`cvo-old`/`absorption-window` runs; `fig34`–`fig35` (design-regime accuracy and the model gap with 95 % CIs) by `scripts/plot_fine_delay.py` from the `fine-countable`/`fine-old` runs; `fig36` (the countable recovery ceiling under a selfish adversary) by `scripts/countable_selfish.py`, which solves the MDP directly and writes `runs/countable_selfish.parquet` + `runs/countable_selfish_reorg.parquet` (no sweep input); `fig37` (the profit/deflation frontier) by `scripts/deflation_frontier.py` from `runs/deflation_frontier.parquet`, likewise solver-only; `fig38` (the reference-window anchor) by `scripts/uncle_parent_window.py`. Every figure type the per-node simulator generates appears in this report, and the fork-rate/reorg-depth study closes the previous reproducibility gap for the adversarial figures (`fig8`,`fig9` now have committed generators from `runs/adversary_grid/`). --- diff --git a/reports/tsi/report-figures/fig38_uncle_parent_window.png b/reports/tsi/report-figures/fig38_uncle_parent_window.png new file mode 100644 index 0000000000000000000000000000000000000000..733c126f51d33f1d365f7205e2550ea6705c7656 GIT binary patch literal 198660 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

v)O6=ZN?IcDR3PXCVM4HbM2W| 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 literal 0 HcmV?d00001 diff --git a/tools/simulators/tsi/tsi-sim-pernode/scripts/uncle_parent_window.py b/tools/simulators/tsi/tsi-sim-pernode/scripts/uncle_parent_window.py new file mode 100644 index 0000000..08abe55 --- /dev/null +++ b/tools/simulators/tsi/tsi-sim-pernode/scripts/uncle_parent_window.py @@ -0,0 +1,191 @@ +"""Should the uncle reference window be measured to the uncle, or to its PARENT? (fig38) + +The spec bounds the uncle's own slot: `0 < sl_A - sl_U <= w_u`. Its **parent** is unbounded — +the only requirement is that it lie on the referencing chain. So a block minted now, hanging off +a chain block from arbitrarily far back, is a legal first-fork uncle: recent by its own slot, +ancient by its parent's. Verifying it means deriving the epoch state and ledger root as of that +ancient parent, per reference, and an adversary mints them at no cost beyond lottery wins it +already has. + +The proposal: measure the window to the parent instead, `sl_A - sl_parent(U) <= w_u`. + +That is strictly tighter rather than an additional rule. A block strictly postdates its parent +and a referenced uncle strictly precedes its referencer (both pinned in +`tests/test_slot_ordering.py`), so + + sl_A - sl_U < sl_A - sl_parent(U) <= w_u + +and bounding the parent bounds the uncle for free. A "both windows" variant would be identical +to the parent one, so only two arms are simulated. + +Two questions, and they trade off: + * **What does it buy?** The effort an adversary can force, measured as the age of the oldest + chain state a validator must reach for a *counted* reference. + * **What does it cost?** Honest recovery. A latency orphan's parent is recent by construction, + so the prediction is ~nothing — but the parent gap runs about one block-interval longer than + the uncle gap, so the same numeric `w_u` is effectively a tighter window and the margin + shrinks as delay grows. This sweeps delay to find where it starts to bind. + +Run: python scripts/uncle_parent_window.py (writes runs/uncle_parent_window.parquet + fig38) +""" + +from __future__ import annotations + +from pathlib import Path + +import numpy as np +import pandas as pd +from joblib import Parallel, delayed + +from tsi_sim import lottery, topology +from tsi_sim.blocktree import build_tree_pernode +from tsi_sim.config import SimConfig +from tsi_sim.engine import _adversary_mask, run_trajectory +from tsi_sim.plotting import style +from tsi_sim.rng import rng_for, seedseq_for +from tsi_sim.stake import make_stake + +HERE = Path(__file__).resolve().parent.parent +RUNS = HERE / "runs" +FIGS = HERE / "report-figures" +RUNS.mkdir(exist_ok=True) +FIGS.mkdir(exist_ok=True) + +REPS = 10 +N_JOBS = 10 +ANCHORS = ["uncle", "parent"] +DELAYS = [4.0, 8.0, 16.0] # the deployed point, the report's design point, the boundary +ADVS = [0.0, 0.3] + +BASE = dict(n_nodes=600, stake_dist="pareto", topology="blend", degree=6, + link_latency_mean=0.5, link_latency_dist="geo", blend_hops=3, + max_uncles=4, uncle_strategy="oldest", window_absorption=10.0, + k=256, epochs=10, genesis_d_factor=0.5, early_stop=False, + prune_arrival=False, windowed_fork_choice=False) + + +def _recovery(anchor: str, delay: float, adv: float, rep: int) -> dict: + """Accuracy arm: what the estimator lands on under each rule.""" + cfg = SimConfig(**BASE, uncle_window_anchor=anchor, blend_delay_max=delay, + adversary_frac=adv, adversary_strategy="deep_parent", replicate=rep) + t = pd.DataFrame(run_trajectory(cfg)) + t = t[t.epoch >= t.epoch.max() // 2] + return dict(anchor=anchor, blend_delay_max=delay, adversary_frac=adv, rep=rep, + mean_ratio=float(t.mean_ratio.mean()), p_ref=float(t.p_ref.mean()), + fork_rate=float(t.fork_rate.mean()), + range_ratio=float(t.range_ratio.max())) + + +def _effort(anchor: str, delay: float, adv: float, rep: int) -> dict: + """Effort arm: how far back a validator must reach for the references that COUNT. + + Rebuilds one epoch's tree and reads the parent gap of every reference the counting rule + would accept — the direct proxy for historical state a validator must materialise. + """ + cfg = SimConfig(**{**BASE, "epochs": 2}, uncle_window_anchor=anchor, + blend_delay_max=delay, adversary_frac=adv, + adversary_strategy="deep_parent", replicate=rep) + kids = seedseq_for(cfg).spawn(cfg.epochs + 3) + stake = make_stake(cfg, rng_for(cfg)) + mask = _adversary_mask(cfg, stake) + pl = topology.build_path_latency(cfg, np.random.default_rng(kids[1])) + d = np.full(cfg.n_nodes, cfg.genesis_d_factor * float(stake.sum())) + ws, wn = lottery.sample_wins(lottery.win_probs(stake, d, cfg.f), cfg.epoch_len, + np.random.default_rng(kids[3])) + slots, groups = lottery.group_by_slot(ws, wn) + tree, _A = build_tree_pernode(slots, groups, pl, cfg, np.random.default_rng(kids[4]), + adversary_mask=mask) + s, par = tree.slot, tree.parent + gaps = np.array([int(s[b] - s[par[u]]) + for b in range(1, tree.n_blocks) for u in tree.uncles[b]], dtype=np.int64) + if gaps.size == 0: + gaps = np.zeros(1, dtype=np.int64) + return dict(anchor=anchor, blend_delay_max=delay, adversary_frac=adv, rep=rep, + n_refs=int(gaps.size), gap_median=float(np.median(gaps)), + gap_p99=float(np.percentile(gaps, 99)), gap_max=int(gaps.max()), + distinct_parent_slots=int(np.unique(gaps).size)) + + +def sweep() -> tuple[pd.DataFrame, pd.DataFrame]: + jobs = [(a, d, v, r) for a in ANCHORS for d in DELAYS for v in ADVS for r in range(REPS)] + par = Parallel(n_jobs=N_JOBS, backend="loky", inner_max_num_threads=1) + rec = pd.DataFrame(par(delayed(_recovery)(*j) for j in jobs)) + eff = pd.DataFrame(par(delayed(_effort)(*j) for j in jobs)) + rec.to_parquet(RUNS / "uncle_parent_window.parquet", index=False) + eff.to_parquet(RUNS / "uncle_parent_window_effort.parquet", index=False) + return rec, eff + + +def report(rec: pd.DataFrame, eff: pd.DataFrame, w: int) -> None: + print(f"\n=== what it COSTS: honest recovery (adversary_frac = 0), w_u = {w} slots ===") + print(f"{'δ_max':>6} {'ρ':>6} | {'uncle-anchored':>18} {'parent-anchored':>18} {'Δ':>9}") + for d in DELAYS: + row = [] + for a in ANCHORS: + g = rec[(rec.anchor == a) & (rec.blend_delay_max == d) & (rec.adversary_frac == 0)] + row.append((g.mean_ratio.mean(), g.mean_ratio.sem())) + rho = SimConfig(**BASE, blend_delay_max=d).f * (3 * d / 2 + 4 * 0.5) + print(f"{d:6.0f} {rho:6.2f} | {row[0][0]:10.4f}±{row[0][1]:.4f} " + f"{row[1][0]:10.4f}±{row[1][1]:.4f} {row[1][0] - row[0][0]:+9.4f}") + + print("\n=== what it BUYS: age of chain state a counted reference reaches (slots) ===") + print(f"{'δ_max':>6} {'adv':>5} | {'anchor':>7} {'refs':>6} {'median':>9} " + f"{'p99':>9} {'max':>9}") + for d in DELAYS: + for v in ADVS: + for a in ANCHORS: + g = eff[(eff.anchor == a) & (eff.blend_delay_max == d) & (eff.adversary_frac == v)] + flag = "" if g.gap_max.max() <= w else " <-- EXCEEDS w_u" + print(f"{d:6.0f} {v:5.1f} | {a:>7} {g.n_refs.mean():6.0f} " + f"{g.gap_median.mean():9.0f} {g.gap_p99.mean():9.0f} " + f"{g.gap_max.max():9.0f}{flag}") + + +def fig38(rec: pd.DataFrame, eff: pd.DataFrame, w: int) -> None: + import matplotlib.pyplot as plt + style.apply_style() + fig, axes = plt.subplots(1, 2, figsize=(9.6, 3.8)) + + ax = axes[0] + for i, a in enumerate(ANCHORS): + g = (rec[(rec.anchor == a) & (rec.adversary_frac == 0)] + .groupby("blend_delay_max").mean_ratio.agg(["mean", "sem"]).reset_index()) + ax.errorbar(g.blend_delay_max, g["mean"], yerr=g["sem"], marker="o", ms=4, capsize=2, + color=style.OKABE_ITO[i + 1], label=f"{a}-anchored window") + ax.axhline(1.0, color="0.5", lw=0.9, ls="--") + ax.set_xlabel(r"Blend per-hop delay $\delta_{max}$ (s)") + ax.set_ylabel(r"$\hat D / D^*$ (honest)") + ax.set_title("Cost: honest recovery is unchanged") + ax.legend(fontsize=7, loc="lower left") + + ax = axes[1] + x = np.arange(len(DELAYS)) + for i, a in enumerate(ANCHORS): + vals = [eff[(eff.anchor == a) & (eff.blend_delay_max == d) + & (eff.adversary_frac == 0.3)].gap_max.max() for d in DELAYS] + ax.bar(x + (i - 0.5) * 0.36, vals, 0.36, color=style.OKABE_ITO[i + 1], + label=f"{a}-anchored") + ax.axhline(w, color=style.OKABE_ITO[0], lw=1.2, ls="--", label=rf"$w_u$ = {w} slots") + ax.set_yscale("log") + ax.set_xticks(x, [f"{d:.0f}" for d in DELAYS]) + ax.set_xlabel(r"Blend per-hop delay $\delta_{max}$ (s)") + ax.set_ylabel("oldest chain state a counted\nreference reaches (slots, log)") + ax.set_title("Benefit: a 30 % adversary's reach, bounded") + ax.legend(fontsize=7, loc="upper left") + + style.save(fig, FIGS / "fig38_uncle_parent_window", + provenance="scripts/uncle_parent_window.py") + plt.close(fig) + + +def main() -> None: + w = SimConfig(**BASE, blend_delay_max=4.0).effective_uncle_window + print(f"=== uncle- vs parent-anchored reference window (w_u = {w} slots) ===") + rec, eff = sweep() + report(rec, eff, w) + fig38(rec, eff, w) + print(f"\nwrote {RUNS}/uncle_parent_window{{,_effort}}.parquet + fig38") + + +if __name__ == "__main__": + main() diff --git a/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/blocktree.py b/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/blocktree.py index 2993371..5a3d517 100644 --- a/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/blocktree.py +++ b/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/blocktree.py @@ -309,6 +309,11 @@ def build_tree_pernode( selfish = (adversary_mask is not None and config.adversary_frac > 0.0 and config.adversary_strategy == "selfish") + # A deep-parent block hangs off an ancient chain block, whose arrival column the sliding + # prune has long since dropped, so this adversary needs the full matrix too. + deep_parent = (adversary_mask is not None and config.adversary_frac > 0.0 + and config.adversary_strategy == "deep_parent") + deep_parent_max = float(E) # reach as far back as the epoch allows # A private chain breaks the windowed horizon's premise: an unreleased block is old enough to # be "fully propagated" while no honest node has it, and it becomes visible LATER (on release), # which the one-way frontier pointer can never revisit. So selfish runs the exact full scan. @@ -336,8 +341,8 @@ def build_tree_pernode( # choice AND jitter_mean == 0. With jitter the full matrix's safety clamp is required. A # withholding adversary produces blocks that NEVER arrive (arrival > E), violating the prune's # "finalized => arrived-everywhere" assumption, so it too forces the full matrix. - withholding = (adversary_mask is not None and config.adversary_frac > 0.0 - and config.adversary_strategy == "withhold") + withholding = ((adversary_mask is not None and config.adversary_frac > 0.0 + and config.adversary_strategy == "withhold") or deep_parent) if config.prune_arrival and windowed and config.jitter_mean == 0.0 and not withholding: # (selfish already cleared `windowed`, so it never reaches the pruned path either) return _build_pruned(active_slots, winners_per_slot, path_latency, config, rng, @@ -400,6 +405,20 @@ def build_tree_pernode( for wi in range(winners.shape[0]): v = int(winners[wi]) p_id = int(parents[wi]) + if deep_parent and adversary_mask[v]: + # Walk back along the chain this node would have extended, as far as the epoch + # allows. The result is a genuine lottery win whose parent lies on the canonical + # chain — a legal FIRST-FORK uncle — but one whose Proof of Leadership can only + # be verified against epoch/ledger state from far back. Nothing in the spec's + # uncle-anchored window forbids it: only the uncle's OWN slot is bounded, and + # that is `t`, the current slot. + anc = p_id + while anc > 0: + nxt = int(parent[anc]) + if nxt <= 0 or t - int(slot[nxt]) > deep_parent_max: + break + anc = nxt + p_id = anc h = int(height[p_id]) + 1 b = nb slot[b], parent[b], height[b], leader[b] = t, p_id, h, v diff --git a/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/config.py b/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/config.py index adeea38..42ea6aa 100644 --- a/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/config.py +++ b/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/config.py @@ -35,13 +35,29 @@ InitDest = Literal["common", "heterogeneous"] # forfeit by displacing honest work, and is the one profitable lever (report §6.6). Its # estimator damage is what the countable uncle rule can only partly repair, because an # override discards a CHAIN of honest blocks and only the first is referenceable (§2.1). -AdversaryStrategy = Literal["suppress", "withhold", "selfish"] +# "deep_parent" — mints blocks that hang off an ANCIENT chain block instead of the current +# tip. Each is a genuine lottery win and a legal first-fork uncle, and under the spec's +# uncle-anchored window it is eligible the moment it is produced (its OWN slot is recent), +# so honest proposers reference it — forcing every validator to derive the epoch and ledger +# state at that ancient parent to check its Proof of Leadership. The attack this branch +# evaluates: it costs the adversary nothing it would not already spend, and the effort it +# imposes is bounded only by how far back the block tree reaches. +AdversaryStrategy = Literal["suppress", "withhold", "selfish", "deep_parent"] # WHICH nodes make up that coalition, at the same total stake: # "random" — a uniformly random set grown until its stake reaches adversary_frac (the default; the # block share is then smooth in adversary_frac, which is all the density levers depend on); # "whale" — the LARGEST holders first. Same stake, far fewer nodes, so the coalition's block # production is lumpier — the untested concentration case flagged in report §6.5's scope. AdversarySelection = Literal["random", "whale"] +# WHICH slot the uncle reference window is measured against: +# "uncle" (spec) — the uncle's own slot: 0 < sl_A - sl_U <= w_u. Bounds how old a referenced +# block may be, but leaves its PARENT unbounded, so a valid uncle may hang off an +# arbitrarily old chain block and force a validator to derive historical epoch/ledger +# state at that ancient parent to check its Proof of Leadership. +# "parent" (proposed) — the uncle's parent's slot: sl_A - sl_parent(U) <= w_u. Since a block +# strictly postdates its parent, the parent gap is never smaller than the uncle gap, so +# this is STRICTLY TIGHTER: it bounds both, and bounds how far back state must be reached. +UncleWindowAnchor = Literal["uncle", "parent"] @dataclass(frozen=True) @@ -128,6 +144,7 @@ class SimConfig: # take the oldest candidates first, deterministically, because an uncle expires w_u slots # after its own slot so the oldest are the closest to expiring. Every headline result uses it. uncle_strategy: UncleStrategy = "oldest" + uncle_window_anchor: UncleWindowAnchor = "uncle" # "parent" = the proposed rule # "random" is NOT a spec variant — it is the deviation probe: walk the same oldest-first # candidate order but include each candidate with probability uncle_random_p, so a lone # candidate is dropped half the time. Uncle selection is proposer-local and unvalidated, so a @@ -278,11 +295,16 @@ class SimConfig: raise ValueError(f"clock_skew_max must be >= 0, got {self.clock_skew_max}") if self.f_precision < 1 or self.f_precision != int(self.f_precision): raise ValueError(f"f_precision must be a positive integer, got {self.f_precision!r}") + if self.uncle_window_anchor not in ("uncle", "parent"): + raise ValueError(f"uncle_window_anchor must be uncle|parent, got " + f"{self.uncle_window_anchor!r}") if self.adversary_selection not in ("random", "whale"): raise ValueError(f"adversary_selection must be random|whale, got " f"{self.adversary_selection!r}") - if self.adversary_strategy not in ("suppress", "withhold", "selfish"): - raise ValueError(f"adversary_strategy must be suppress|withhold|selfish, got " + if self.adversary_strategy not in ("suppress", "withhold", "selfish", + "deep_parent"): + raise ValueError(f"adversary_strategy must be " + f"suppress|withhold|selfish|deep_parent, got " f"{self.adversary_strategy!r}") checks = { "n_nodes": self.n_nodes >= 1, @@ -396,7 +418,9 @@ class SimConfig: base = base + (self.adversary_selection,) # Same append-only-when-non-default discipline: a run at the default precision keeps a # byte-identical key, so no committed result is reseeded by adding the knob. - return base if self.f_precision == 1_000_000 else base + (self.f_precision,) + if self.f_precision != 1_000_000: + base = base + (self.f_precision,) + return base if self.uncle_window_anchor == "uncle" else base + (self.uncle_window_anchor,) def seed_key(self) -> tuple: """The identity the RNG root is actually derived from (see ``rng.seedseq_for``). diff --git a/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/epoch.py b/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/epoch.py index 90ed0d4..9c7143e 100644 --- a/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/epoch.py +++ b/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/epoch.py @@ -108,7 +108,8 @@ def simulate_epoch( ms = measure(tree, A, active_slots, T, cutoff=E, legacy_block_count=config.legacy_block_count, countable=config.uncle_model != "old", - w=config.effective_uncle_window) + w=config.effective_uncle_window, + parent_anchor=config.uncle_window_anchor == "parent") n_active_window = int((active_slots < T).sum()) d_next = tsi.update_D_vec(d_est, ms.m, T, f, config.beta, config.fixed_point, diff --git a/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/measure.py b/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/measure.py index 4bc5081..116caad 100644 --- a/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/measure.py +++ b/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/measure.py @@ -80,7 +80,7 @@ def _uncles_csr(tree: BlockTree) -> tuple[np.ndarray, np.ndarray]: def _measure_tips_py(distinct_tips, parent, slot, uncle_flat, uncle_ptr, T, w, countable, - uncle_stamp, honest_stamp, chain_stamp): + uncle_stamp, honest_stamp, chain_stamp, parent_anchor=False): """Pure-Python per-distinct-tip walk (fallback / reference for the kernel).""" K = distinct_tips.shape[0] m = np.empty(K, np.int64) @@ -121,7 +121,12 @@ def _measure_tips_py(distinct_tips, parent, slot, uncle_flat, uncle_ptr, T, w, c if countable: # spec counting rules, re-checked per reference: d = int(slot[b]) - su - if d <= 0 or d > w: + if d <= 0: + continue # uncle must strictly precede + # window anchor: the uncle's own slot (spec), or its PARENT's. The + # parent gap is never smaller, so the parent anchor is strictly tighter. + gap = int(slot[b]) - int(slot[int(parent[u])]) if parent_anchor else d + if gap > w: continue # outside the reference window if chain_stamp[u] == ki: continue # uncle lies on the counting chain @@ -160,7 +165,7 @@ if _HAVE_NUMBA: @njit(cache=True) def _measure_tips_nb(distinct_tips, parent, slot, uncle_flat, uncle_ptr, T, w, countable, - uncle_stamp, honest_stamp, chain_stamp): + uncle_stamp, honest_stamp, chain_stamp, parent_anchor): K = distinct_tips.shape[0] m = np.empty(K, np.int64) n_honest = np.empty(K, np.int64) @@ -198,8 +203,9 @@ if _HAVE_NUMBA: ok = True if countable: d = slot[b] - su - if d <= 0 or d > w: - ok = False # outside the reference window + gap = slot[b] - slot[parent[u]] if parent_anchor else d + if d <= 0 or gap > w: + ok = False # non-preceding, or outside the window elif chain_stamp[u] == ki: ok = False # uncle lies on the counting chain else: @@ -225,7 +231,7 @@ if _HAVE_NUMBA: def measure(tree: BlockTree, A, active_slots: np.ndarray, T: int, cutoff: int, use_numba: bool = True, legacy_block_count: bool = False, - countable: bool = False, w: int = 0) -> Measurement: + countable: bool = False, w: int = 0, parent_anchor: bool = False) -> Measurement: """Per-node m/q/q_eff + agreement, deduped by tip and (optionally) numba-accelerated. ``countable`` applies the spec's per-reference counting rules (window ``w``, @@ -250,7 +256,7 @@ def measure(tree: BlockTree, A, active_slots: np.ndarray, T: int, cutoff: int, m_d, nh_d, nrec_d, nref_d, ndeep_d, clen_d, fp_d = kernel( distinct_tips.astype(np.int64), tree.parent, tree.slot, uncle_flat, uncle_ptr, np.int64(T), np.int64(w), bool(countable), - uncle_stamp, honest_stamp, chain_stamp) + uncle_stamp, honest_stamp, chain_stamp, bool(parent_anchor)) # correct slot counting: canonical slots + recovered (non-canonical, deduped) uncle slots. # legacy_block_count reproduces the earlier per-block-id count (kernel's m = honest + ucnt). diff --git a/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/metrics.py b/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/metrics.py index d6ac100..76473ab 100644 --- a/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/metrics.py +++ b/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/metrics.py @@ -14,7 +14,7 @@ _CONFIG_FIELDS = ( "n_nodes", "stake_dist", "pareto_shape", "latency", "topology", "degree", "link_latency_mean", "link_latency_dist", "blend_hops", "blend_delay_max", "init_dest", "init_spread", "uncle_model", "window_absorption", - "uncle_window", "max_uncles", "uncle_strategy", + "uncle_window", "max_uncles", "uncle_strategy", "uncle_window_anchor", # Recorded so downstream analysis can TELL whether a countable/--old pair actually shared # its RNG streams. The paired test is only valid on paired runs, and without this column # the analysis silently falls back to the much weaker unpaired test. diff --git a/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/uncles.py b/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/uncles.py index ba11961..db98340 100644 --- a/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/uncles.py +++ b/tools/simulators/tsi/tsi-sim-pernode/src/tsi_sim/uncles.py @@ -167,6 +167,16 @@ def select_uncles_at_production( [b for b in pre if int(parent[b]) == GENESIS or int(parent[b]) in chain_ids], dtype=np.int64, ) + if config.uncle_window_anchor == "parent" and cands.size: + # Proposed rule: the window is measured to the uncle's PARENT, not the uncle. A block + # strictly postdates its parent, so this gap is never smaller than the uncle's own — + # the [t-w, t) scan above is therefore a superset and this only narrows it. Filtering + # here as well as at counting keeps the proposer from spending an entry on a reference + # that will not count. + cands = cands[np.array([int(slot[int(parent[b])]) >= t - w for b in cands.tolist()], + dtype=bool)] + if cands.size == 0: + return () if cands.size == 0: return () # cands already oldest-first (slot, id); one uncle per slot per the spec's selection. diff --git a/tools/simulators/tsi/tsi-sim-pernode/tests/test_config.py b/tools/simulators/tsi/tsi-sim-pernode/tests/test_config.py index ff0163e..048cbcf 100644 --- a/tools/simulators/tsi/tsi-sim-pernode/tests/test_config.py +++ b/tools/simulators/tsi/tsi-sim-pernode/tests/test_config.py @@ -211,6 +211,7 @@ def _perturb(v): # adversary_selection. Keyed by VALUE, so this only fires on fields that are currently # "random" — uncle_strategy defaults to "oldest" and keeps its own flip above. "random": "whale", + "uncle": "parent", # uncle_window_anchor } if isinstance(v, str) and v in flips: return flips[v] diff --git a/tools/simulators/tsi/tsi-sim-pernode/tests/test_slot_ordering.py b/tools/simulators/tsi/tsi-sim-pernode/tests/test_slot_ordering.py new file mode 100644 index 0000000..2a1b538 --- /dev/null +++ b/tools/simulators/tsi/tsi-sim-pernode/tests/test_slot_ordering.py @@ -0,0 +1,99 @@ +"""Slot-ordering invariants the uncle window rests on. + +These look too obvious to test, which is exactly why they are worth pinning: the design +argument for windowing an uncle's PARENT rather than the uncle itself is a two-line +implication that holds only if both of them do. + + sl_parent(U) < sl_U a block's slot strictly exceeds its parent's + sl_U < sl_A a referenced uncle strictly precedes its referencer + + => sl_A - sl_U < sl_A - sl_parent(U) + +so a window on the parent is strictly tighter than the same window on the uncle, and +bounding the parent bounds the uncle for free. If either invariant were violated — by a +same-slot parent, say — the implication would fail and the two rules would have to be +imposed separately. +""" + +import numpy as np +import pytest + +from tsi_sim import lottery, topology +from tsi_sim.blocktree import build_tree_pernode +from tsi_sim.config import SimConfig +from tsi_sim.rng import rng_for, seedseq_for +from tsi_sim.stake import make_stake + +GEOMETRIES = [ + dict(topology="blend", blend_delay_max=4.0, blend_hops=3), # the deployed operating point + dict(topology="blend", blend_delay_max=16.0, blend_hops=3), # near the load boundary + dict(topology="regular", link_latency_mean=0.2), # sub-slot direct gossip +] + + +def _tree(**over): + cfg = SimConfig(**{**dict(n_nodes=300, stake_dist="pareto", degree=6, + link_latency_mean=0.5, link_latency_dist="geo", max_uncles=4, + k=96, epochs=3, genesis_d_factor=0.5, + prune_arrival=False, windowed_fork_choice=False), **over}) + kids = seedseq_for(cfg).spawn(cfg.epochs + 3) + stake = make_stake(cfg, rng_for(cfg)) + pl = topology.build_path_latency(cfg, np.random.default_rng(kids[1])) + d = np.full(cfg.n_nodes, cfg.genesis_d_factor * float(stake.sum())) + ws, wn = lottery.sample_wins(lottery.win_probs(stake, d, cfg.f), cfg.epoch_len, + np.random.default_rng(kids[3])) + slots, groups = lottery.group_by_slot(ws, wn) + tree, _A = build_tree_pernode(slots, groups, pl, cfg, np.random.default_rng(kids[4])) + return cfg, tree + + +@pytest.mark.parametrize("geom", GEOMETRIES) +def test_a_blocks_slot_strictly_exceeds_its_parents(geom): + _cfg, tree = _tree(**geom) + s, par = tree.slot, tree.parent + bad = [b for b in range(1, tree.n_blocks) if par[b] > 0 and s[par[b]] >= s[b]] + assert not bad, f"{len(bad)} blocks do not strictly postdate their parent, e.g. {bad[:3]}" + + +@pytest.mark.parametrize("geom", GEOMETRIES) +def test_a_referenced_uncle_strictly_precedes_its_referencer(geom): + _cfg, tree = _tree(**geom) + s = tree.slot + bad = [(b, u) for b in range(1, tree.n_blocks) for u in tree.uncles[b] if s[u] >= s[b]] + assert not bad, f"{len(bad)} references do not precede their referencer, e.g. {bad[:3]}" + + +@pytest.mark.parametrize("geom", GEOMETRIES) +def test_parent_window_would_subsume_the_uncle_window(geom): + # The implication itself, checked on real trees rather than argued: for every reference the + # parent gap is at least the uncle gap, so any bound on the former bounds the latter. + _cfg, tree = _tree(**geom) + s, par = tree.slot, tree.parent + pairs = [(int(s[b] - s[u]), int(s[b] - s[par[u]])) + for b in range(1, tree.n_blocks) for u in tree.uncles[b]] + if not pairs: + pytest.skip("no uncles referenced in this geometry") + assert all(gp >= gu for gu, gp in pairs) + assert all(gu > 0 for gu, _ in pairs) + + +def test_the_counting_rule_rejects_a_non_preceding_uncle(): + # sl_A > sl_U is enforced at COUNTING, not merely at selection -- so a hand-built block + # carrying a same-slot or future reference gains nothing from it. Both kernels implement + # the `d <= 0` guard; this pins the behaviour rather than the implementation. + from tsi_sim.measure import _measure_tips_py + + # chain: 0 <- 1 <- 2 ; block 2 references block 3, which shares block 2's slot + parent = np.array([-1, 0, 1, 1], dtype=np.int64) + slot = np.array([-1, 0, 10, 10], dtype=np.int64) # block 3 does NOT precede block 2 + uncle_flat = np.array([3], dtype=np.int64) + uncle_ptr = np.array([0, 0, 0, 1, 1], dtype=np.int64) # only block 2 carries a reference + stamps = [np.full(4, -1, dtype=np.int64) for _ in range(2)] + m, honest, rec, refs, deep, _clen, _fp = _measure_tips_py( + np.array([2], dtype=np.int64), parent, slot, uncle_flat, uncle_ptr, + T=100, w=300, countable=True, + uncle_stamp=stamps[0], honest_stamp=np.full(101, -1, dtype=np.int64), + chain_stamp=stamps[1]) + assert refs[0] == 1 # the reference was examined + assert rec[0] == 0 # ...and recovered nothing + assert m[0] == honest[0] # the count is the chain alone