igneum/sim/horizon/consensus-security
igneum-labs 6836115d65 Capacity layer: idle-core background workload on igneum-build-1 that yields to builds
infra/build-server/capacity: igneum-capacity.service (user build, Nice 19, SCHED_IDLE,
CPUQuota leaving 8 threads free) runs run.sh, a controller over a priority queue of jobs
that pauses (SIGSTOP) the instant a build slot or the measure hold is taken (5 s poll of
/srv/builds/_locks) and resumes after. Jobs, each with a dry-run and a 10-min smoke:
pow fuzz (continuous, seed base advances), sync-request fuzz against a throwaway pruned
node on loopback (the Horizon 28-unwrap gate, igneum-p2p-probe sync-fuzz), GHOSTDAG and
finality sweeps seeds 1 to 1,000, model.py sweeps cached, clippy+audit per recent branch.
Summaries to /srv/workers/capacity.json; the worker dashboard gains a Background lane
(collect.mjs doc.background, page renderBackground). Night battery stops and restarts the
layer. docs/plans/build-server.md section 8. igneum-pow fuzz tests and ghostdag_sim.py /
attacks.py gain a seed-base knob for the continuous sweeps.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 20:58:42 +00:00
..
cost_model.py Horizon: lane 1 (consensus-security) lands, with the 51 percent paper 2026-10-06 20:07:43 +00:00
cost_results.md Horizon: lane 1 (consensus-security) lands, with the 51 percent paper 2026-10-06 20:07:43 +00:00
finality_horizon.py Horizon: lane 1 (consensus-security) lands, with the 51 percent paper 2026-10-06 20:07:43 +00:00
finality_horizon_results.md Horizon: lane 1 (consensus-security) lands, with the 51 percent paper 2026-10-06 20:07:43 +00:00
ghostdag_results_1bps.json Horizon: lane 1 (consensus-security) lands, with the 51 percent paper 2026-10-06 20:07:43 +00:00
ghostdag_results_1bps.md Horizon: lane 1 (consensus-security) lands, with the 51 percent paper 2026-10-06 20:07:43 +00:00
ghostdag_results_10bps.json Horizon: lane 1 (consensus-security) lands, with the 51 percent paper 2026-10-06 20:07:43 +00:00
ghostdag_results_10bps.md Horizon: lane 1 (consensus-security) lands, with the 51 percent paper 2026-10-06 20:07:43 +00:00
ghostdag_sim.py Capacity layer: idle-core background workload on igneum-build-1 that yields to builds 2026-10-06 20:58:42 +00:00
README.md Horizon: lane 1 (consensus-security) lands, with the 51 percent paper 2026-10-06 20:07:43 +00:00
signalling.py Horizon: lane 1 (consensus-security) lands, with the 51 percent paper 2026-10-06 20:07:43 +00:00
signalling_results.md Horizon: lane 1 (consensus-security) lands, with the 51 percent paper 2026-10-06 20:07:43 +00:00

sim/horizon/consensus-security

Models behind docs/analysis/horizon/consensus-security.md and docs/analysis/51-percent.md (Horizon lane 1, 6 October 2026). Python 3.10 with numpy; run on the Mac under the main checkout's run lock: /Users/joshm/Projects/igneum/tools/lock/with-lock.sh run nice -n 19 <cmd>. Nothing here edits sim/finality_v2.py; finality_horizon.py imports it.

file what run output
ghostdag_sim.py GHOSTDAG (as protocol.rs) under a withholding attacker: reorg depth, fork age, win rate, blue share, honest blocks turned red, by hash share H, delay d, hold T; 1 or 10 blocks/s python3 ghostdag_sim.py --seeds 20 --out ghostdag_results_1bps.md --json ghostdag_results_1bps.json; --bps 10 --k 124 --delays 0.35,0.67,2 --holds 10,30,60,90 --warm 60 --post 15 ghostdag_results_1bps.md/.json, ghostdag_results_10bps.md/.json
finality_horizon.py the finality rule over the adversary's share 20, 34, 51, 67, 90 percent: renter, silent set, bought keys, poisoned eclipse, partition with an equivocator (v2 and v3), abrupt departure (v2 and v3) python3 finality_horizon.py --out finality_horizon_results.md (about 10 min; --quick for a smoke run) finality_horizon_results.md
signalling.py the P2 miner-signalling game: binomial noise, holdout, forced flip, signal then defect, window alternatives python3 signalling.py --out signalling_results.md signalling_results.md
cost_model.py every attack's rented hash, duration, cost at 1 to 1,000 GH/s, subsidy earned, and the rental equilibrium python3 cost_model.py --out cost_results.md cost_results.md

Price basis USD 11.7 per GH/s-hour, measured 6 October 2026 (docs/bench-log.md, "Rental cost of hash"). Seeds and machine for each result are in the result file's first line.