Engineering log: name the machines, not people

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
igneum-labs 2026-10-03 18:10:11 +00:00
parent 531c35634f
commit 0d60698113
3 changed files with 12 additions and 6 deletions

View file

@ -44,7 +44,7 @@ Sweep sizes 4, 64, 256, 512 MiB in the emulation: dataset self-test PASS at each
The regular Metal bench was re-run after the change: igneum-genesis 44.8 Mhash/s and igneum-hourly 36.3 Mhash/s
at 1 GiB with 2 x 2^20 batches, PASS 3/3 warps each (consistent with the first-run table above, not a new figure).
Harness: `proto-cuda/host.cu`, `build.sh`, `build.bat`, `README.md`, `CHECKLIST.md`, `emu/`.
Pending: build and run on the project lead's RTX 5090 (CUDA 12.8 or newer, `-arch=sm_120`). No NVIDIA hash rate exists yet.
Pending: build and run on the project's RTX 5090 (CUDA 12.8 or newer, `-arch=sm_120`). No NVIDIA hash rate exists yet.
Emulation rates are not recorded because they measure the Mac's CPU, not a GPU.
## 2026-10-03 sim/finality_sim.py, sustained-mining finality vote weight (model, not hardware)
@ -71,7 +71,7 @@ Bench re-run after the changes: igneum-genesis 44.56 Mhash/s, epoch1 47.74 Mhash
SHORTCUT MEASURED: `--inline-dataset` replaces every load with the six-op closed form ds_elem and never reads memory: 4,888 Mhash/s wall (6,274 GPU time) vs 44.6 honest at 1 GiB, about 110x, and about 9x the cache-resident honest rate. With a closed-form dataset the hash is not memory-hard; an expensive dataset derivation is required, not optional.
Not demonstrated: cryptographic strength, weak-program frequency and rejection, NVIDIA/AMD bit-exactness (CUDA run still pending), CPU verify gate with an expensive dataset element. Next three tests for the cryptographer are listed in TESTS.md section 8.
## 3 October 2026, RTX 5090 first run (the project lead's PC, Windows, CUDA 12.8 runtime, driver 13.4, Visual Studio 2026 with the 14.30 toolset selected via vcvarsall -vcvars_ver=14.30)
## 3 October 2026, RTX 5090 first run (Windows PC, CUDA 12.8 runtime, driver 13.4, Visual Studio 2026 with the 14.30 toolset selected via vcvarsall -vcvars_ver=14.30)
Pack igneum-genesis, dataset 1024 MiB, 5 batches x 2^24 hashes, 1 warp per block.

View file

@ -41,7 +41,7 @@ footer{border-top:1px solid var(--line);padding-block:24px 48px;font-size:13px;c
<h1>Engineering log</h1>
<p class="note">Every measurement the project has made, newest at the bottom, written by the people and agents who ran it, with the commands and hardware. Prototype numbers are not mining numbers and say so.</p>
<div class="layout">
<nav class="toc" aria-label="Contents"><ol><li><a href="#2026-10-03-proto-metal-igneum-bench-first-run">2026-10-03 proto-metal / igneum-bench, first run</a></li><li><a href="#2026-10-03-proto-cuda-program-pack-export-mac-side-only-rtx-5090-run-pending">2026-10-03 proto-cuda / program pack export (Mac side only; RTX 5090 run pending)</a></li><li><a href="#2026-10-03-sim-finality-sim-py-sustained-mining-finality-vote-weight-model-not-hardware">2026-10-03 sim/finality_sim.py, sustained-mining finality vote weight (model, not hardware)</a></li><li><a href="#2026-10-03-proto-metal-hardening-tests-correctness-and-soundness-of-the-lottery-hash-metal-only">2026-10-03 proto-metal hardening tests (correctness and soundness of the lottery hash, Metal only)</a></li><li><a href="#3-october-2026-rtx-5090-first-run-[user]-s-pc-windows-cuda-12-8-runtime-driver-13-4-visual-studio-2026-with-the-14-30-toolset-selected-via-vcvarsall-vcvars-ver-14-30">3 October 2026, RTX 5090 first run (the project lead's PC, Windows, CUDA 12.8 runtime, driver 13.4, Visual Studio 2026 with the 14.30 toolset selected via vcvarsall -vcvars_ver=14.30)</a></li><li><a href="#2026-10-03-sim-finality-v2-py-finality-rule-v2-with-latency-partitions-and-eclipses-model-not-hardware">2026-10-03 sim/finality_v2.py, finality rule V2 with latency, partitions and eclipses (model, not hardware)</a></li><li><a href="#2026-10-03-proto-metal-memory-hard-dataset-cache-8-dependent-reads-metal-only-cuda-pack-emulated">2026-10-03 proto-metal memory-hard dataset (cache + 8 dependent reads), Metal only; CUDA pack emulated</a></li><li><a href="#2026-10-03-rusty-kaspa-base-build-and-3-node-devnet-on-the-mac-consensus-engineer-pre-fork-proof">2026-10-03 rusty-kaspa base build and 3-node devnet on the Mac (consensus-engineer, pre-fork proof)</a></li><li><a href="#3-october-2026-rtx-5090-memory-hard-dataset-pack-igneum-genesis-mh">3 October 2026, RTX 5090, memory-hard dataset (pack igneum-genesis-mh)</a></li><li><a href="#2026-10-03-proto-vdf-wesolowski-vdf-between-the-certified-checkpoint-and-the-program-seed-epoch-10-min-era-1-h">2026-10-03 proto-vdf, Wesolowski VDF between the certified checkpoint and the program seed (epoch 10 min, era 1 h)</a></li><li><a href="#2026-10-03-igneum-pow-rust-crate-bit-exact-with-proto-metal-consensus-engineer">2026-10-03 igneum-pow: Rust crate bit-exact with proto-metal (consensus-engineer)</a></li><li><a href="#3-october-2026-proto-opencl-opencl-path-built-and-proven-without-amd-silicon-apple-opencl-1-2-pocl-cpu-emulator">3 October 2026, proto-opencl: OpenCL path built and proven without AMD silicon (Apple OpenCL 1.2, pocl, CPU emulator)</a></li><li><a href="#3-october-2026-amd-gfx1036-ryzen-7-9800x3d-integrated-rdna-2-graphics-1-compute-unit-amd-opencl-2-1-driver-3652-0">3 October 2026, AMD gfx1036 (Ryzen 7 9800X3D integrated RDNA 2 graphics, 1 compute unit), AMD OpenCL 2.1 driver 3652.0</a></li><li><a href="#3-october-2026-rtx-5090-through-nvidia-opencl-fourth-compiler-path-on-the-same-card">3 October 2026, RTX 5090 through NVIDIA OpenCL (fourth compiler path on the same card)</a></li></ol></nav>
<nav class="toc" aria-label="Contents"><ol><li><a href="#2026-10-03-proto-metal-igneum-bench-first-run">2026-10-03 proto-metal / igneum-bench, first run</a></li><li><a href="#2026-10-03-proto-cuda-program-pack-export-mac-side-only-rtx-5090-run-pending">2026-10-03 proto-cuda / program pack export (Mac side only; RTX 5090 run pending)</a></li><li><a href="#2026-10-03-sim-finality-sim-py-sustained-mining-finality-vote-weight-model-not-hardware">2026-10-03 sim/finality_sim.py, sustained-mining finality vote weight (model, not hardware)</a></li><li><a href="#2026-10-03-proto-metal-hardening-tests-correctness-and-soundness-of-the-lottery-hash-metal-only">2026-10-03 proto-metal hardening tests (correctness and soundness of the lottery hash, Metal only)</a></li><li><a href="#3-october-2026-rtx-5090-first-run-windows-pc-cuda-12-8-runtime-driver-13-4-visual-studio-2026-with-the-14-30-toolset-selected-via-vcvarsall-vcvars-ver-14-30">3 October 2026, RTX 5090 first run (Windows PC, CUDA 12.8 runtime, driver 13.4, Visual Studio 2026 with the 14.30 toolset selected via vcvarsall -vcvars_ver=14.30)</a></li><li><a href="#2026-10-03-sim-finality-v2-py-finality-rule-v2-with-latency-partitions-and-eclipses-model-not-hardware">2026-10-03 sim/finality_v2.py, finality rule V2 with latency, partitions and eclipses (model, not hardware)</a></li><li><a href="#2026-10-03-proto-metal-memory-hard-dataset-cache-8-dependent-reads-metal-only-cuda-pack-emulated">2026-10-03 proto-metal memory-hard dataset (cache + 8 dependent reads), Metal only; CUDA pack emulated</a></li><li><a href="#2026-10-03-rusty-kaspa-base-build-and-3-node-devnet-on-the-mac-consensus-engineer-pre-fork-proof">2026-10-03 rusty-kaspa base build and 3-node devnet on the Mac (consensus-engineer, pre-fork proof)</a></li><li><a href="#3-october-2026-rtx-5090-memory-hard-dataset-pack-igneum-genesis-mh">3 October 2026, RTX 5090, memory-hard dataset (pack igneum-genesis-mh)</a></li><li><a href="#2026-10-03-proto-vdf-wesolowski-vdf-between-the-certified-checkpoint-and-the-program-seed-epoch-10-min-era-1-h">2026-10-03 proto-vdf, Wesolowski VDF between the certified checkpoint and the program seed (epoch 10 min, era 1 h)</a></li><li><a href="#2026-10-03-igneum-pow-rust-crate-bit-exact-with-proto-metal-consensus-engineer">2026-10-03 igneum-pow: Rust crate bit-exact with proto-metal (consensus-engineer)</a></li><li><a href="#3-october-2026-proto-opencl-opencl-path-built-and-proven-without-amd-silicon-apple-opencl-1-2-pocl-cpu-emulator">3 October 2026, proto-opencl: OpenCL path built and proven without AMD silicon (Apple OpenCL 1.2, pocl, CPU emulator)</a></li><li><a href="#3-october-2026-amd-gfx1036-ryzen-7-9800x3d-integrated-rdna-2-graphics-1-compute-unit-amd-opencl-2-1-driver-3652-0">3 October 2026, AMD gfx1036 (Ryzen 7 9800X3D integrated RDNA 2 graphics, 1 compute unit), AMD OpenCL 2.1 driver 3652.0</a></li><li><a href="#3-october-2026-rtx-5090-through-nvidia-opencl-fourth-compiler-path-on-the-same-card">3 October 2026, RTX 5090 through NVIDIA OpenCL (fourth compiler path on the same card)</a></li><li><a href="#3-october-2026-igneum-node-devnet-v0-3-node-igneum-devnet-at-1-bps-with-the-80-20-coinbase-and-vote-key-hash-consensus-engineer">3 October 2026, igneum-node devnet v0: 3-node igneum-devnet at 1 BPS with the 80/20 coinbase and vote_key_hash (consensus-engineer)</a></li></ol></nav>
<article><h1 id="igneum-bench-log">Igneum bench log</h1>
<p>Append-only. Every number here was measured on the machine named, on the date given.</p>
<h2 id="2026-10-03-proto-metal-igneum-bench-first-run">2026-10-03 proto-metal / igneum-bench, first run</h2>
@ -51,12 +51,12 @@ footer{border-top:1px solid var(--line);padding-block:24px 48px;font-size:13px;c
<h2 id="2026-10-03-proto-cuda-program-pack-export-mac-side-only-rtx-5090-run-pending">2026-10-03 proto-cuda / program pack export (Mac side only; RTX 5090 run pending)</h2>
<p>Machine: the same Apple M5 Max. No CUDA toolchain exists on it, so nothing below is an NVIDIA measurement. Added <code>--export-pack &lt;dir&gt;</code> to <code>proto-metal/main.swift</code>. It writes, per seed, the CUDA kernel (<code>kernel.cu</code>), C headers (<code>program.h</code>, <code>vectors.h</code>), JSON twins, and the Metal source, into <code>proto-cuda/packs/&lt;seed&gt;/</code>. Vectors: 3 warps (base nonces 0, 4096, 1000000), 96 x 64-bit outputs from the CPU interpreter, plus dataset words 0..15 and word [MASK]. The exporter runs the Metal kernel for the same warps and refuses to write unless all 96 match.</p>
<div class="tbl"><table><thead><tr><th>Pack</th><th>Loads/hash</th><th>Op mix</th><th>CPU interpreter vs Metal GPU (3 warps)</th><th>CUDA text in CPU emulation (clang, 32 threads/warp)</th></tr></thead><tbody><tr><td>igneum-genesis</td><td>104</td><td>load=13 xor=13 sub=7 shfl=6 add=5 mulhi=5 mad=4 rotr=4 mul=3 rotl=3 or=1</td><td>PASS 3/3</td><td>PASS: dataset self-test, 3/3 warps standalone, warps 0 and 4096 in batch at 1 and 2 warps/block</td></tr><tr><td>igneum-hourly</td><td>128</td><td>load=16 add=8 xor=7 mad=5 mul=5 mulhi=5 shfl=5 rotl=4 or=3 rotr=3 sub=3</td><td>PASS 3/3</td><td>PASS: dataset self-test, 3/3 warps standalone, warps 0 and 4096 in batch at 1 warp/block</td></tr></tbody></table></div>
<p>Sweep sizes 4, 64, 256, 512 MiB in the emulation: dataset self-test PASS at each (vectors only apply at 1 GiB). The regular Metal bench was re-run after the change: igneum-genesis 44.8 Mhash/s and igneum-hourly 36.3 Mhash/s at 1 GiB with 2 x 2^20 batches, PASS 3/3 warps each (consistent with the first-run table above, not a new figure). Harness: <code>proto-cuda/host.cu</code>, <code>build.sh</code>, <code>build.bat</code>, <code>README.md</code>, <code>CHECKLIST.md</code>, <code>emu/</code>. Pending: build and run on the project lead's RTX 5090 (CUDA 12.8 or newer, <code>-arch=sm_120</code>). No NVIDIA hash rate exists yet. Emulation rates are not recorded because they measure the Mac's CPU, not a GPU.</p>
<p>Sweep sizes 4, 64, 256, 512 MiB in the emulation: dataset self-test PASS at each (vectors only apply at 1 GiB). The regular Metal bench was re-run after the change: igneum-genesis 44.8 Mhash/s and igneum-hourly 36.3 Mhash/s at 1 GiB with 2 x 2^20 batches, PASS 3/3 warps each (consistent with the first-run table above, not a new figure). Harness: <code>proto-cuda/host.cu</code>, <code>build.sh</code>, <code>build.bat</code>, <code>README.md</code>, <code>CHECKLIST.md</code>, <code>emu/</code>. Pending: build and run on the project's RTX 5090 (CUDA 12.8 or newer, <code>-arch=sm_120</code>). No NVIDIA hash rate exists yet. Emulation rates are not recorded because they measure the Mac's CPU, not a GPU.</p>
<h2 id="2026-10-03-sim-finality-sim-py-sustained-mining-finality-vote-weight-model-not-hardware">2026-10-03 sim/finality_sim.py, sustained-mining finality vote weight (model, not hardware)</h2>
<p>Model: 1 day steps, 86,400 Poisson blocks/day, 1,000 Pareto honest keys (top key 17%), perfect retarget, every block blue, no latency, no VRF noise. Seed 7, seed 11 agrees. Rule: weight = 30-day sum of counted blocks, counted = min(actual, 2 x yesterday + f). Lock at 2/3 of total. Floors f in {1, 10, 100, 1000}. A: weight tracks hashrate at steady state (corr 1.00000); full weight from zero history on day 41 (f=1) to 32 (f=1000). B: 60% renter on one key takes 59.9% of rewards on day 1, crosses 1/3 of weight on day 20 to 26, 50% on day 27 to 34, never 2/3. 75% renter reaches 2/3 on day 29 to 34, day 27 with the cap removed. C: splitting defeats the cap. 10,000 fresh keys at f=1 move the 50% crossing from day 34 to 27 (no-cap figure 26); at f=10 they match no-cap exactly. The 30-day trickle buys 2 more days for 11.6% of the network. D: honest doubling is under-weighted 28 to 31 days; old miners lock alone for 20 to 23 days. E: 30% churn leaves 71% live, lock never lost. Threshold is 1/3: 35% stalls 1 day, 50% stalls 10 to 11 days. Active-24h total removes every stall. F: 51% patient owner holds 51.0% weight from day 45, vetoes from day 7 to 20, never locks alone. 67% owner locks alone from day 34 to 44. Recommend: f=1, cap 2x, window 30 (the window is the defence, the cap is worth 1 to 8 days), total = all keys with weight in the window. Details in sim/results.md.</p>
<h2 id="2026-10-03-proto-metal-hardening-tests-correctness-and-soundness-of-the-lottery-hash-metal-only">2026-10-03 proto-metal hardening tests (correctness and soundness of the lottery hash, Metal only)</h2>
<p>Machine: the same Apple M5 Max. Added <code>--fuzz</code>, <code>--edge</code>, <code>--stats</code>, <code>--determinism</code>, <code>--memcheck</code>, <code>--inline-dataset</code> to <code>proto-metal/main.swift</code>. Full tables and commands in <code>proto-metal/TESTS.md</code>. Fuzz: 10,200 random programs (200 + 10,000, cold compiles 13.6 to 48.5 ms), 4 random full-range warps each, dataset drawn from 64 MiB / 256 MiB / 1 GiB: 40,800 warps, 1,305,600 hashes, 0 mismatches, 0 compile failures, 0 static mask failures, generator contract (rotl 1..31, mask in {1,2,4,8,16}, src != dst) held on every instruction. 196 s for the 10,000 run. Edge: 14 hand-built cases (rotr by register 0 / 32 / -32 / 31 / 63, rotl 1 and 31, mulhi max operands, shfl masks 1..16, loads at index 0 and MASK via in-range and out-of-range registers, add/sub/mul/mad wraparound, zero loads, 64 loads) with operand values proven by a traced interpreter: 14/14 PASS, 128/128 lanes each. rotl by 0 (never generated) agreed too, recorded as informational only. Stats (3 seeds, 2^20 nonces each): bit frequency max deviation 2.90 sigma over 192 bit positions; avalanche 16,000 flips mean 31.99 to 32.04 (expect 32), std 3.98 to 4.01 (expect 4), every output bit flips with probability 0.490 to 0.508; chi-square on four 16-bit windows all within 2.3 sigma; 0 duplicates. Looks uniform. Not a security proof. Determinism: 5 runs and 3 compiles (one forced cold, 30 ms) of 2^20 hashes gave fingerprint 933787e8cfefccb7 every time; dataset fill deterministic (0b1a77899ee60493 twice) and 4,096 sampled words incl. 0 and MASK match the CPU closed form. Memcheck: every <code>dataset[</code> in the MSL is <code>dataset[rN &amp; MASK]</code> (13/13 at 3 sizes), CUDA twin 13/13 plus one guarded fill write; 4 MiB run with nonces up to 0xffffffff completed and 4 wrapping warps matched the CPU; 416/416 load indices exceeded MASK before masking. Bench re-run after the changes: igneum-genesis 44.56 Mhash/s, epoch1 47.74 Mhash/s at 1 GiB, PASS 3/3 warps each (within 2 percent of the first-run table). <code>--export-pack igneum-genesis</code> re-run is byte-identical to the existing pack. SHORTCUT MEASURED: <code>--inline-dataset</code> replaces every load with the six-op closed form ds_elem and never reads memory: 4,888 Mhash/s wall (6,274 GPU time) vs 44.6 honest at 1 GiB, about 110x, and about 9x the cache-resident honest rate. With a closed-form dataset the hash is not memory-hard; an expensive dataset derivation is required, not optional. Not demonstrated: cryptographic strength, weak-program frequency and rejection, NVIDIA/AMD bit-exactness (CUDA run still pending), CPU verify gate with an expensive dataset element. Next three tests for the cryptographer are listed in TESTS.md section 8.</p>
<h2 id="3-october-2026-rtx-5090-first-run-[user]-s-pc-windows-cuda-12-8-runtime-driver-13-4-visual-studio-2026-with-the-14-30-toolset-selected-via-vcvarsall-vcvars-ver-14-30">3 October 2026, RTX 5090 first run (the project lead's PC, Windows, CUDA 12.8 runtime, driver 13.4, Visual Studio 2026 with the 14.30 toolset selected via vcvarsall -vcvars_ver=14.30)</h2>
<h2 id="3-october-2026-rtx-5090-first-run-windows-pc-cuda-12-8-runtime-driver-13-4-visual-studio-2026-with-the-14-30-toolset-selected-via-vcvarsall-vcvars-ver-14-30">3 October 2026, RTX 5090 first run (Windows PC, CUDA 12.8 runtime, driver 13.4, Visual Studio 2026 with the 14.30 toolset selected via vcvarsall -vcvars_ver=14.30)</h2>
<p>Pack igneum-genesis, dataset 1024 MiB, 5 batches x 2^24 hashes, 1 warp per block.</p>
<div class="tbl"><table><thead><tr><th>Card</th><th>Mhash/s at 1 GiB</th><th>GB/s useful</th><th>random loads/s</th><th>dataset fill</th><th>vectors</th></tr></thead><tbody><tr><td>NVIDIA RTX 5090 (170 SMs, 32 GB)</td><td>228.1</td><td>94.9</td><td>23.7 G</td><td>0.66 ms, 1638 GB/s</td><td>96/96 PASS, standalone and in batch</td></tr><tr><td>Apple M5 Max (40 GPU cores, same program, same day)</td><td>45.2</td><td>18.8</td><td>4.6 G</td><td>2.34 ms, 427 GB/s</td><td>96/96 PASS</td></tr></tbody></table></div>
<p>Result: the same hourly program, generated on the Mac, compiled by Apple's Metal and NVIDIA's CUDA, produced identical hashes on both vendors. Vendor independence of the lottery program is demonstrated for one program; igneum-hourly and the dataset sweep are the next runs. The ratio 5090 to M5 Max is about 5x on hashes and on random loads per second, approximate, consistent with a memory-bound program (random-access bound, not bandwidth bound: the 5090 writes the dataset at 1638 GB/s but hashes at 95 GB/s of useful 4-byte loads). Caveat unchanged: the prototype dataset is closed-form and not yet memory-hard (see TESTS.md), so these are prototype numbers, not mining numbers.</p>
@ -87,7 +87,9 @@ footer{border-top:1px solid var(--line);padding-block:24px 48px;font-size:13px;c
<h2 id="3-october-2026-rtx-5090-through-nvidia-opencl-fourth-compiler-path-on-the-same-card">3 October 2026, RTX 5090 through NVIDIA OpenCL (fourth compiler path on the same card)</h2>
<p>Pack igneum-genesis-mh, 1024 MiB, local-memory exchange (NVIDIA's OpenCL lists no sub-group shuffle extension).</p>
<div class="tbl"><table><thead><tr><th>Check</th><th>Result</th></tr></thead><tbody><tr><td>Cache check and dataset self-test</td><td>PASS</td></tr><tr><td>Vectors</td><td>96/96 PASS, batch fingerprint 98af644e993239e2, identical to the AMD gfx1036 run</td></tr><tr><td>Hash rate</td><td>219.6 Mhash/s via OpenCL against 229.0 via CUDA, about 4% apart, approximate</td></tr></tbody></table></div>
<p>Reading: NVIDIA's OpenCL compiler and NVIDIA's CUDA compiler agree with each other, with AMD's OpenCL, with Apple's Metal and OpenCL, and with the CPU reference. The batch fingerprint over 16.7 million consecutive nonces is identical on the AMD integrated chip and the 5090, which is a far stronger statement than the 96 vectors alone. The local-memory exchange costs about 4% against CUDA's warp shuffle on this card, approximate.</p></article>
<p>Reading: NVIDIA's OpenCL compiler and NVIDIA's CUDA compiler agree with each other, with AMD's OpenCL, with Apple's Metal and OpenCL, and with the CPU reference. The batch fingerprint over 16.7 million consecutive nonces is identical on the AMD integrated chip and the 5090, which is a far stronger statement than the 96 vectors alone. The local-memory exchange costs about 4% against CUDA's warp shuffle on this card, approximate.</p>
<h2 id="3-october-2026-igneum-node-devnet-v0-3-node-igneum-devnet-at-1-bps-with-the-80-20-coinbase-and-vote-key-hash-consensus-engineer">3 October 2026, igneum-node devnet v0: 3-node igneum-devnet at 1 BPS with the 80/20 coinbase and vote_key_hash (consensus-engineer)</h2>
<p>Machine: Apple M5 Max (18 logical cores), rustc 1.99.0, fork <code>vendor/igneum-node</code> at commit "Build: forward the igneum-pow feature" on top of rusty-kaspa v2.1.0 <code>01b532e8</code>. Release build of <code>kaspad</code> and <code>igneum-miner</code>; the kHeavyHash stub engine (default feature set); <code>cargo check -p kaspad --features igneum-pow</code> also builds. Network: three <code>kaspad --devnet --nodnsseed --disable-upnp --enable-unsynced-mining</code> nodes, P2P 26611/26621/26631, gRPC 26610/26620/26630, nodes 2 and 3 <code>--connect</code> to node 1 and node 3 also to node 2; network name <code>igneum-devnet</code>, k 18, merge depth 3,600 blocks, DAA 661 samples x 4 blocks, genesis bits 0x1e020000 (2^23 expected hashes per block). Miners: three <code>igneum-miner mine</code> processes, 6 threads each, one per node, 960 s, each with its own vote-key label: 2.21 MH/s each (6.63 MH/s total), found 253 + 284 + 270 = 807 blocks, 0 rejected. Blocks per second: 0.84 on all three nodes over the 901.9 s watch window (755 blocks each); expected 0.79 from hash rate over genesis difficulty, then the DAA lowered difficulty from 4,194,304 to 3,444,348 after its 600-block minimum window (block 600 to 711), still converging to 1.00 when the run ended. Propagation: block count, DAA score and sink hash identical on all three nodes at 90 of 90 ten-second samples; 1.11 parents and 1.11 mergeset per block on average, tips stayed at 1 (three serial CPU miners rarely collide). vote_key_hash: <code>igneum-miner inspect 40</code> read the same 40 selected-chain blocks from all three nodes over gRPC and found the header's vote_key_hash identical on every node for 40 of 40 blocks, with the three miners' distinct hashes (17 + 17 + 6 blocks) all present, so the field round-trips through the template RPC, submit, p2p relay and the header hash. Emission: 80/20 exact on 39 of 39 single-payee coinbases (the 40th merged two blues, three outputs, pool share still 0.2000); at DAA 806 the payload subsidy was 317,767,704 units (launch ramp day 0, 10.03%), split 254,213,284 to the miner and 63,553,320 to the OP_RETURN <code>igneum-proving-pool-v0</code> output. Unit tests, release profile: kaspa-consensus-core igneum 8 pass (subsidy table, ramp, split, cap), params window test 1 pass, kaspa-pow 5 pass (stub) and 6 pass with <code>--features igneum-pow</code> (engine smoke, one 256 MiB cache, 0.39 s), kaspa-consensus coinbase 8 pass. Per-second subsidy, 8 decimals: 3,168,808,781 units (31.68808781 coins) for years 0 to 2, 1,584,404,390 for years 2 to 4, 792,202,195 for years 4 to 6, 1 unit in period 31, 0 from period 32; ramp day 0 is 316,880,878; the sum is under the 4,000,000,000-coin cap by less than 100 coins. Not done: the devnet ran on the kHeavyHash stub, not the lottery engine (the miner has no igneum-pow path yet and the lane hash does not absorb the header); no VDF seed, no finality, no prover payout; 8 versus 18 decimals open (docs/fork-divergence.md).</p></article>
</div>
<footer>© 2026 Igneum. Generated from the repository at build time. Nothing on this page is an offer to sell anything.</footer>
</div>

View file

@ -50,6 +50,10 @@
}
],
"log": [
{
"date": "2026-10-03",
"text": "Igneum-node devnet v0: 3-node igneum-devnet at 1 BPS with the 80/20 coinbase and vote_key_hash"
},
{
"date": "2026-10-03",
"text": "Proto-opencl: OpenCL path built and proven without AMD silicon"