site: the launch-pack text without an emission number (the three wants, the block sentence, the law section, the journey phases), the ladder on /miner, the weight leaderboard and "Who is mining" on /live

Main's split of 7 October 2026: everything in docs/plans/launch-pack.md section 4 that carries no emission number deploys now; /income and the income card's numbers wait on site-launch-pack for the genesis re-cut. On the redesign's pages and components. Home: the three wants are the first block under the hero in the package's three fcards ("Three things, in order."); the "Income with no cliff" card states the shape of the schedule without a number and points at /miner#card; the "fair supply" card's ramp line carries no percentage; one line under the grid to the litepaper's finality section. Litepaper: the block sentence under the three-streams table (C); "What the chain is, in law" at the end of Economics (D). Journey: phase 4 and phase 6 (E). /miner: the ladder between "What your card does here." and "One client. Three jobs.", seven rungs in the app lane's words with the devnet and mainnet thresholds. /live: the weight leaderboard from finality.weights (rank, key, blocks in window, presence, last block; weight, never hashrate) and a "Who is mining" panel counting what the observer reports; the card-by-card census waits for the app's public-profile switch.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
igneum-josh 2026-10-07 11:39:01 +01:00
parent db67a4c96e
commit bb95076c59
6 changed files with 126 additions and 62 deletions

File diff suppressed because one or more lines are too long

View file

@ -127,9 +127,9 @@
<div class="timeline"><div class="milestone current" id="phase-1"><div class="when">Under way; closes when the specification is out for external review</div><div><span class="badge warm">Under way</span><h3>1. Specification</h3><p>Mining generator, shard proving, finality rules, written for external review</p></div></div>
<div class="milestone current" id="phase-2"><div class="when">Under way; closes at its gate</div><div><span class="badge warm">Under way</span><h3>2. Prove the proving</h3><p>Mining program proven on Apple, NVIDIA and AMD; shard proving benchmark on consumer cards still to run</p><p class="gate"><b>Gate:</b> A fixed published workload, job received to accepted proof on a declared consumer card, sustained with no growing backlog, reproduced by three independent operators</p></div></div>
<div class="milestone current" id="phase-3"><div class="when">Live since 3 October 2026; closes at its gate</div><div><span class="badge warm">Under way</span><h3>3. Devnet</h3><p>BlockDAG node mining on the new program, GPU miners on three vendors, EVM execution in build</p><p class="gate"><b>Gate:</b> 1 block a second held with proofs under 60 s behind the tip</p></div></div>
<div class="milestone next" id="phase-4"><div class="when">Closes when the finality design passes external review and one rollup signs for the testnet</div><div><span class="badge">Next</span><h3>4. Finality and job market</h3><p>Sustained-mining finality, external proving jobs, miner client with auto-switching</p><p class="gate"><b>Gate:</b> Finality design passes external review and one rollup signs for testnet</p></div></div>
<div class="milestone next" id="phase-4"><div class="when">Closes when the finality design passes external review</div><div><span class="badge">Next</span><h3>4. Finality and job market</h3><p>Sustained-mining finality, external proving jobs, miner client with auto-switching</p><p class="gate"><b>Gate:</b> Finality design passes external review</p></div></div>
<div class="milestone next" id="phase-5"><div class="when">Weeks away: when the go checklist closes</div><div><span class="badge">Next</span><h3>5. Public testnet</h3><p>Three seed nodes and the public RPC are up; the one-click miner app on Windows, macOS and Linux, HiveOS, pools, the first rollup as a proving customer, no coin yet</p><p class="gate"><b>Gate:</b> 1,000 independent miners run 30 days and rollup proofs are delivered on time</p></div></div>
<div class="milestone next" id="phase-6"><div class="when">After the testnet has passed its gate: 1,000 independent miners for 30 days and rollup proofs on time</div><div><span class="badge">Next</span><h3>6. Mainnet fair launch</h3><p>Genesis with no premine, 30-day ramp. No listing is arranged, promised or sought by the project</p></div></div></div>
<div class="milestone next" id="phase-6"><div class="when">After the testnet has passed its gate (1,000 independent miners for 30 days, rollup proofs on time) and one proving customer has signed: a customer paying for proofs at a published rate, or a letter of intent with a volume</div><div><span class="badge">Next</span><h3>6. Mainnet fair launch</h3><p>Genesis with no premine, 30-day ramp. No listing is arranged, promised or sought by the project</p></div></div></div>
<div class="section-head" style="margin-top:var(--sec)"><div><div class="eyebrow"><span class="line"></span>The log, newest first</div><h2>Lately, in the&nbsp;log.</h2></div><div class="searchbar" style="min-width:min(100%,360px)"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><circle cx="10.5" cy="10.5" r="6.5"/><path d="m16 16 5 5"/></svg><label for="log-q" class="visually-hidden">Filter the log</label><input id="log-q" data-filter-input="log" placeholder="Filter: a card, a date, a word" autocomplete="off" spellcheck="false"><span class="small" data-filter-count="log"></span></div></div>
<div class="record-grid" data-filter-list="log"><article class="record"><div class="record-top"><time datetime="2026-10-06">6 Oct 2026</time><span class="badge">log</span></div><h3>16:01Z: Ember run 6 on the three-card Windows rig</h3></article>
<article class="record"><div class="record-top"><time datetime="2026-10-06">6 Oct 2026</time><span class="badge">log</span></div><h3>Counter ASIC 3.0 item 2</h3><p>Counter ASIC 3.0 item 2: the per-day derivation</p></article>
@ -162,15 +162,15 @@
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>Live devnet: real transactions, the first non-empty shard proven and…</h3><p>Live devnet: real transactions, the first non-empty shard proven and paid, and the exporter's block structure fixed</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>The program id split</h3><p>The program id split: why the Apple M5 Max rejected the RTX 5090 Windows rig's proofs, and the verifier at 114 s</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>Live devnet: the first shards proven, verified and paid</h3></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>Economy simulation: mining versus proving under stress</h3><p>Sim/economy: mining versus proving under stress, agent-based</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>Difficulty rule attacked seven ways</h3><p>Difficulty rule under attack: pool hopping, pulsed rental, timestamp stretching, short-lane oscillation, epoch games, polluted window, block flood</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>Timestamp attack on the difficulty rule fixed</h3><p>Difficulty rule: timestamp attack fixed , simulator regression, 3-node forger test</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>Devnet v4: nine branches merged into one node</h3><p>Devnet-v4 integration: nine branches merged, 3-node test network on the merged node, Windows cross-build</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>Generator v2 adopted: every hash does 128 distinct reads</h3><p>Generator version 2 adopted: exact load count, fresh-source loads, program acceptance; every vector re-cut, three workers re-checked, 20,000-program census, devnet-v4 binaries rebuilt</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>First GPU proof of an Igneum block: 1.4 s on an RTX 5090</h3><p>Proving v0 on the RTX 5090: first GPU proof of an Igneum block</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>Devnet v4 live: generator v2, two-thirds floor, fresh chain</h3><p>Devnet v4 cut-over: generator v2, 2/3 floor, three nodes and a seed on a fresh chain</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>First live hourly swap: no pause on Mac, NVIDIA or AMD</h3><p>First hourly program swap on the live devnet: compile-ahead, no pause, two cards</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>Proving: devnet v4 shards on the Apple M5 Max CPU, loaded machine</h3></article></div>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>One-click Windows workers</h3><p>One-click Windows workers: what the Apple M5 Max could measure</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>First live finality lock: 77.4% of weight, 17 voters</h3><p>First finality lock on the live devnet: checkpoint 242 at 77.4% of all weight, two hours after genesis</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>The gfx1036 worker fault and what the Apple M5 Max could and could…</h3><p>The gfx1036 worker fault and what the Apple M5 Max could and could not reproduce</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>A node 60 s behind the clock is silently dead</h3></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>First machine on the one-click app: a 5090 at 118 MH/s</h3><p>First machine on the Igneum Miner app: the RTX 5090 Windows rig's RTX 5090 at 118 MH/s, via Setup.exe</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>Difficulty rule v2</h3><p>Difficulty rule v2: the live oscillation, its cause, the DAG replay, the fix behind a height switch</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>The observer stored nothing for 78 minutes, then 7,022 blocks in two…</h3><p>The observer stored nothing for 78 minutes, then 7,022 blocks in two minutes</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>The RTX 5090 Windows rig at the 14</h3><p>The RTX 5090 Windows rig at the 14:20 boundary: a worker stuck on the previous epoch</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>Shard layer on the RTX 5090: a full shard proven in 10.9 s, a block aggregated in 2.2 s</h3><p>Shard proving on the RTX 5090: a full shard compressed in 10.9 s, a two-shard block aggregated in 2.2 s, all verified</p></article></div>
<p class="empty-state" data-filter-empty="log" hidden>Nothing in the log matches that.</p>
<p class="note">Every entry is a dated heading of <a href="/bench">the engineering log</a>, where the commands and the hardware are. The phases and their gates are the litepaper’s <a href="/litepaper#roadmap">roadmap</a>.</p>
<div class="onward"><a href="/bench" class="btn">The engineering log</a><a href="/evidence" class="btn">Every claim and its status</a><a href="/live" class="btn">The live devnet</a></div>

View file

@ -28,10 +28,10 @@
{
"id": "phase-4",
"name": "Finality and job market",
"when": "Closes when the finality design passes external review and one rollup signs for the testnet",
"when": "Closes when the finality design passes external review",
"status": "next",
"line": "Sustained-mining finality, external proving jobs, miner client with auto-switching",
"gate": "Finality design passes external review and one rollup signs for testnet"
"gate": "Finality design passes external review"
},
{
"id": "phase-5",
@ -44,7 +44,7 @@
{
"id": "phase-6",
"name": "Mainnet fair launch",
"when": "After the testnet has passed its gate: 1,000 independent miners for 30 days and rollup proofs on time",
"when": "After the testnet has passed its gate (1,000 independent miners for 30 days, rollup proofs on time) and one proving customer has signed: a customer paying for proofs at a published rate, or a letter of intent with a volume",
"status": "next",
"line": "Genesis with no premine, 30-day ramp. No listing is arranged, promised or sought by the project"
}
@ -207,48 +207,48 @@
},
{
"date": "2026-10-04",
"text": "Sim/economy: mining versus proving under stress, agent-based",
"short": "Economy simulation: mining versus proving under stress"
"text": "One-click Windows workers: what the Apple M5 Max could measure",
"short": "One-click Windows workers"
},
{
"date": "2026-10-04",
"text": "Difficulty rule under attack: pool hopping, pulsed rental, timestamp stretching, short-lane oscillation, epoch games, polluted window, block flood",
"short": "Difficulty rule attacked seven ways"
"text": "First finality lock on the live devnet: checkpoint 242 at 77.4% of all weight, two hours after genesis",
"short": "First live finality lock: 77.4% of weight, 17 voters"
},
{
"date": "2026-10-04",
"text": "Difficulty rule: timestamp attack fixed , simulator regression, 3-node forger test",
"short": "Timestamp attack on the difficulty rule fixed"
"text": "The gfx1036 worker fault and what the Apple M5 Max could and could not reproduce",
"short": "The gfx1036 worker fault and what the Apple M5 Max could and could…"
},
{
"date": "2026-10-04",
"text": "Devnet-v4 integration: nine branches merged, 3-node test network on the merged node, Windows cross-build",
"short": "Devnet v4: nine branches merged into one node"
"text": "A node 60 s behind the clock is silently dead",
"short": "A node 60 s behind the clock is silently dead"
},
{
"date": "2026-10-04",
"text": "Generator version 2 adopted: exact load count, fresh-source loads, program acceptance; every vector re-cut, three workers re-checked, 20,000-program census, devnet-v4 binaries rebuilt",
"short": "Generator v2 adopted: every hash does 128 distinct reads"
"text": "First machine on the Igneum Miner app: the RTX 5090 Windows rig's RTX 5090 at 118 MH/s, via Setup.exe",
"short": "First machine on the one-click app: a 5090 at 118 MH/s"
},
{
"date": "2026-10-04",
"text": "Proving v0 on the RTX 5090: first GPU proof of an Igneum block",
"short": "First GPU proof of an Igneum block: 1.4 s on an RTX 5090"
"text": "Difficulty rule v2: the live oscillation, its cause, the DAG replay, the fix behind a height switch",
"short": "Difficulty rule v2"
},
{
"date": "2026-10-04",
"text": "Devnet v4 cut-over: generator v2, 2/3 floor, three nodes and a seed on a fresh chain",
"short": "Devnet v4 live: generator v2, two-thirds floor, fresh chain"
"text": "The observer stored nothing for 78 minutes, then 7,022 blocks in two minutes",
"short": "The observer stored nothing for 78 minutes, then 7,022 blocks in two…"
},
{
"date": "2026-10-04",
"text": "First hourly program swap on the live devnet: compile-ahead, no pause, two cards",
"short": "First live hourly swap: no pause on Mac, NVIDIA or AMD"
"text": "The RTX 5090 Windows rig at the 14:20 boundary: a worker stuck on the previous epoch",
"short": "The RTX 5090 Windows rig at the 14"
},
{
"date": "2026-10-04",
"text": "Proving: devnet v4 shards on the Apple M5 Max CPU, loaded machine",
"short": "Proving: devnet v4 shards on the Apple M5 Max CPU, loaded machine"
"text": "Shard proving on the RTX 5090: a full shard compressed in 10.9 s, a two-shard block aggregated in 2.2 s, all verified",
"short": "Shard layer on the RTX 5090: a full shard proven in 10.9 s, a block aggregated in 2.2 s"
}
]
}

View file

@ -490,6 +490,18 @@ body.all .pager{display:none}
</table></div>
<h3>No fund, no foundation, no fee to the team</h3>
<p>There is no development fund. A switch that routes money to an address somebody controls is the first thing a critic points at, so Igneum has none. The protocol carries no fee to any team, foundation or fund. The project earns in the open, and this is the full list: the optional 1% dev fee in the Ember miner software, off with one flag and audited on the chain; the provers it runs in the job market; any pool it operates; and the app share on the contracts it deploys, like anyone else. None of it is in the protocol, and the first item is the one a critic should quote: for as long as miners run Ember with the fee on, 1 block in 100 pays the project. If the community ever wants a grant mechanism, miners can add one by signalling.</p>
<h3 id="in-law">What the chain is, in law</h3>
<p class="note"><strong>Not legal advice; counsel is engaged.</strong> These are the facts of the design that the rules of each region turn on; nothing here is a promotion of anything.</p>
<ol class="law">
<li><strong>No issuer, no offeror, no sale.</strong> Every coin is created automatically as a reward for the maintenance of the distributed ledger or the validation of transactions, and in no other way.</li>
<li><strong>The sustainability indicators are published.</strong> The indicators of Delegated Regulation 2025/422 (energy in kWh a year from the network’s hash rate and the measured microjoules per hash, intensity per transaction, the regional mix when it is known) are published by the project every era, so a service provider in the EU can list the coin without asking.</li>
<li><strong>No financial promotion.</strong> No price, no “buy”, no “invest”, no return language anywhere. The earnings screen shows hash and IGN, never a currency.</li>
<li><strong>The reference pool never holds a member’s balance.</strong> Payouts come straight from the coinbase split; the pool coordinates, it does not keep custody.</li>
<li><strong>The job market settles peer to peer on the chain.</strong> There is no operator account and no dollar leg in the protocol: the dollar figure is a quote, the settlement is IGN.</li>
<li><strong>Open software, no coins by right.</strong> The software is published under an open licence by a company that holds no coins by right and runs no service the chain’s consensus depends on. There is no dev fund.</li>
<li><strong>Mining may be restricted where you are;</strong> you are responsible for checking. The miner asks your region at first run and refuses the regions where mining is banned (on 7 October 2026: ten regions of Russia and Moscow from 15 August 2026, and China).</li>
<li><strong>No privileged key.</strong> No key can mint, pause or upgrade the chain; the only way a rule changes is miners signalling for it, and nothing requires them to.</li>
</ol>
</section>
<section id="miners">
@ -504,6 +516,7 @@ body.all .pager{display:none}
<tr><td>External proving jobs</td><td>Rollups and apps on other chains, priced in their money</td><td>No, but the market is small today and is upside, not a promise</td></tr>
</tbody>
</table></div>
<p>A block pays its miner whether or not anyone buys a proof that day. The lottery pays 80 percent of every block from emission; proving is the second income, never the only one. Every useful-work chain on record dropped its miners the day the work stopped paying; Igneum’s miners are paid for the block first.</p>
<p>The size of that third stream today, in numbers: all of Ethereum L1's proving is about USD 36 a day at the September 2026 tracker cost (USD 0.005 a block, 7,200 blocks a day; the tracker figure is a secondary source), against about USD 13,700 a day of Igneum's year-1 emission at USD 0.005 per IGN (31.688 IGN a block, 86,400 blocks a day; the price is an input, not a forecast). So external proving is a small second income at launch and the lottery pays the bills; for proving to become the main income the paid demand would have to grow about 1,000x in dollars (the Horizon lane analysis, 6 October 2026, section 3.11; ledger E19).</p>
<p>The honest bear-market case rests on cost. A miner's card is already running and the power is often domestic, so Igneum miners' electricity cost in the proving market is close to power. The price they must charge is another matter: the price a prover must charge is the subsidy it forgoes while it proves, which falls as one over network hash, so the edge over data-centre provers appears only once the network's hash is large (near 100 GH/s for a card proving beside its miner) and is nothing more. Which of the two in-chain streams pays more per GPU-second depends on the size of the fleet: on the devnet of 4 October 2026, three machines at 275 million hashes a second, a second of hashing paid about 4.9x a second of proving the pool share; at 10,000 cards the same arithmetic favours proving by about 930x. That is arithmetic on measured devnet rates, approximate, not a market measurement.</p>
<h3>Hardware</h3>

View file

@ -148,6 +148,9 @@
.legend-row .lg span{display:inline-flex;align-items:center;gap:7px;color:var(--ink-2);font-family:var(--f-sans);font-size:12px}
.sw{width:9px;height:9px;transform:rotate(45deg);display:inline-block;flex:none}
.three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-4);margin-top:var(--s-4)}
.two{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:var(--s-4);margin-top:var(--s-4)}
.lb table td,.lb table th{white-space:nowrap}.lb .you td{color:var(--molten-text)}
@media (max-width:900px){.two{grid-template-columns:1fr}}
@media (max-width:1000px){.three{grid-template-columns:1fr}}
.dp{border:var(--hair);border-radius:7px;background:var(--graphite);padding:20px 21px 16px;min-width:0}
.dp .ph{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:14px}
@ -359,6 +362,22 @@ details.tablebar summary{display:flex;align-items:center}
</div>
</div>
<div class="two" id="weights">
<div class="dp">
<div class="ph"><h2>Weight leaderboard</h2><span class="tag" id="w-tag">30-day weight</span></div>
<div class="tbl lb"><table>
<thead><tr><th class="num">Rank</th><th>Key</th><th class="num">Blocks in window</th><th class="num">Presence</th><th>Last block</th></tr></thead>
<tbody id="w-body"><tr><td colspan="5">Waiting for the first read.</td></tr></tbody>
</table></div>
<p class="note" style="margin-top:14px;font-size:12px" id="w-note">Weight is blue blocks over the window, never hashrate: a card that arrived today sits at the bottom. The dust line and the window are read from the node.</p>
</div>
<div class="dp">
<div class="ph"><h2>Who is mining</h2><span class="tag">10 minutes</span></div>
<div class="ids" id="census"><div class="empty">Waiting for the first read.</div></div>
<p class="note" style="margin-top:14px;font-size:12px">Counted from the observer’s reply. The card-by-card hardware census arrives with the app’s “Make my page public” switch; until then no card model is shown.</p>
</div>
</div>
<details class="tablebar" id="table">
<summary>Explore blocks as a table <small>keyboard-accessible view</small></summary>
<div class="tbl"><table>
@ -458,6 +477,15 @@ details.tablebar summary{display:flex;align-items:center}
document.addEventListener('click',function(e){var t=e.target;if(t&&t.id==='mine-btn'){var v=prompt('Your vote key’s short id, the first 8 hex characters shown in the app or the explorer:',mine||'');if(v!==null){mine=v.trim().toLowerCase();try{if(mine)localStorage.setItem('igneum-my-key',mine);else localStorage.removeItem('igneum-my-key');}catch(x){}remount();if(lastD)render(lastD);}}
var row=t&&t.closest?t.closest('tr[data-hash]'):null;if(row&&dag){dag.select(row.getAttribute('data-hash'),'table');}});
function render(d){var s=d.state,pv=d.proving,fn=d.finality,now=new Date(d.now).getTime();lastD=d;
// the weight leaderboard (the finality weights the observer relays) and the census by client (the miners' engines)
(function(){var w=fn&&fn.weights,keys=w&&w.keys?w.keys.slice():[],p=fn&&fn.params||{};keys.sort(function(a,b){return (b.blocks||0)-(a.blocks||0);});
var seen={};(d.miners||[]).forEach(function(m){seen[m.id]=m;});
$('w-tag').textContent=keys.length?keys.length+' keys · window '+fmtN(p.weightWindow)+' DAA · dust '+fmtN(p.dust):'30-day weight';
$('w-body').innerHTML=keys.length?keys.slice(0,24).map(function(k,i){var m=seen[k.id],last=m&&m.last_seen?Math.max(0,Math.round((now-new Date(m.last_seen).getTime())/1000))+' s ago':'not in 10 min';
return '<tr'+(mine&&k.id===mine?' class="you"':'')+'><td class="num">'+(i+1)+'</td><td class="mono">'+esc(k.id)+(mine&&k.id===mine?' (you)':'')+'</td><td class="num">'+fmtN(k.blocks)+'</td><td class="num">'+(!k.voter?(k.stripped_until_daa?'stripped':'under dust'):k.participation===null||k.participation===undefined?'pending':Math.round(k.participation*100)+'%')+'</td><td>'+last+'</td></tr>';}).join('')+(keys.length>24?'<tr><td colspan="5">and '+(keys.length-24)+' more keys</td></tr>':''):'<tr><td colspan="5">No weights in the reply.</td></tr>';
var tot=(d.miners||[]).length,voters=keys.filter(function(k){return k.voter;}).length,signing=keys.filter(function(k){return k.voter&&k.participation>=.9;}).length,lock=null;(fn&&fn.checkpoints||[]).forEach(function(c){if(c.state==='locked'&&(!lock||c.index>lock.index))lock=c;});
var rows=[['Keys with a block in 10 min',tot,tot],['Voters above the dust line',voters,keys.length||tot],['Voters signing 90% of points or more',signing,voters],['Weight signing at the last lock',lock&&lock.fraction_total!==null&&lock.fraction_total!==undefined?Math.round(lock.fraction_total*100)+'%':'pending',null]];
$('census').innerHTML=rows.map(function(r){var pc=r[2]&&typeof r[1]==='number'?r[1]/r[2]*100:(typeof r[1]==='string'&&/%$/.test(r[1])?parseFloat(r[1]):0);return '<div class="id-row"><span class="name"><i class="sw"></i>'+r[0]+'</span><span class="pct">'+(typeof r[1]==='number'?fmtN(r[1])+(r[2]&&r[2]!==r[1]?' of '+fmtN(r[2]):''):r[1])+'</span><span class="bar"><i style="width:'+Math.min(100,pc).toFixed(1)+'%"></i></span></div>';}).join('');})();
// the six tiles
set('s-bps',s.blocks_per_second_60s!==null&&s.blocks_per_second_60s!==undefined?Number(s.blocks_per_second_60s).toFixed(2):'pending');
set('s-blue',fmtN(s.blue_score));set('s-hash',fmtHash(s.hashes_per_second_estimate));

View file

@ -217,6 +217,28 @@ pre b{color:var(--molten-text);font-weight:500}
</div>
</section>
<section id="ladder" class="sec rule">
<div class="wrap">
<div class="section-head">
<div><div class="eyebrow"><span class="line"></span>The ladder</div><h2>Seven rungs. Every one is a fact on the chain.</h2></div>
<p>The app lights a rung the moment the chain does. Every threshold is read from the node, never a constant: the devnet reads 5 blocks to a vote and 2 of 2 hours of presence; mainnet reads 100 blocks and 8 of 8.</p>
</div>
<div class="tbl"><table>
<thead><tr><th>Rung</th><th>What lights it</th><th>The line in the app</th><th class="num">Devnet</th><th class="num">Mainnet</th></tr></thead>
<tbody>
<tr><td>1 · First block</td><td>Your key finds a block</td><td>“Block 1,284,117 is yours.”</td><td class="num">1 block</td><td class="num">1 block</td></tr>
<tr><td>2 · Your key has a vote</td><td>Your blocks in the 30-day window pass the dust line</td><td>“61 of 100 blocks to a vote.”</td><td class="num">5 blocks</td><td class="num">100 blocks</td></tr>
<tr><td>3 · Your signature is in a checkpoint</td><td>Your key signs a checkpoint that locks</td><td>“Your signature is in checkpoint 184,220.”</td><td class="num">1 lock</td><td class="num">1 lock</td></tr>
<tr><td>4 · Full window</td><td>Blocks on every day of the weight window</td><td>“30 of 30 days. Full weight.”</td><td class="num">2 of 2 hours</td><td class="num">30 of 30 days</td></tr>
<tr><td>5 · Rank by weight</td><td>Your key’s place in the table, by blue blocks over the window</td><td>“Rank 41 of 1,204 keys.”</td><td class="num">by weight</td><td class="num">by weight</td></tr>
<tr><td>6 · Signing streak</td><td>Every presence point signed, no gap over the presence window</td><td>“Signing 8 of 80 points, 41 days unbroken.”</td><td class="num">2 of 2</td><td class="num">8 of 8</td></tr>
<tr><td>7 · Your card proved a shard</td><td>A paid shard record carries your prover key</td><td>“Your card proved shard 3 of block 1,284,117.”</td><td class="num">1 shard</td><td class="num">1 shard</td></tr>
</tbody>
</table></div>
<p class="fair">Weight, never hashrate: a card that arrived today sits at the bottom of the table and climbs one day at a time. <a href="/live#weights">The live table</a> shows every key by weight.</p>
</div>
</section>
<section id="how" class="sec rule">
<div class="wrap">
<div class="section-head">