diff --git a/site/bench.html b/site/bench.html index d4fa5106..cf2e0375 100644 --- a/site/bench.html +++ b/site/bench.html @@ -57,7 +57,7 @@ footer{border-top:1px solid var(--line);padding-block:24px 48px;font-size:13px;c
-
IGNEUM
+
IGNEUM

Engineering log

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.

diff --git a/site/build.mjs b/site/build.mjs index d74d4163..65716de7 100644 --- a/site/build.mjs +++ b/site/build.mjs @@ -111,7 +111,7 @@ footer{border-top:1px solid var(--line);padding-block:24px 48px;font-size:13px;c
-
${mark}IGNEUM
+
${mark}IGNEUM

${esc(heading)}

${note}

diff --git a/site/index.html b/site/index.html index 131ad9ef..a551af83 100644 --- a/site/index.html +++ b/site/index.html @@ -456,7 +456,7 @@ footer .wrap{padding-block:48px 32px}
diff --git a/site/live.html b/site/live.html index 594aaddc..f6559bf4 100644 --- a/site/live.html +++ b/site/live.html @@ -153,7 +153,7 @@ footer{border-top:1px solid var(--line);padding-block:48px 32px}
devnet v0

Live devnet

-

A node is read every two seconds. Every block below is real: its parents, its miner and whether it sits on the selected chain. Proving and checkpoints are not in the devnet yet.

+

A node is read every two seconds. Every block below is real: its parents, its miner, whether it sits on the selected chain, and whether it is a locked checkpoint. A checkpoint locks when the finality rule's quorum signs it. Proving is not in the devnet yet.

@@ -170,12 +170,13 @@ footer{border-top:1px solid var(--line);padding-block:48px 32px}
block dag
-
on screen 0chain 0side 0newest blue 0
+
on screen 0chain 0side 0newest blue 0locked none
chain block side block (blue or red, off the selected chain) + locked checkpoint, final just arrived parent edge 2ea5116eminer short id, one lane each @@ -224,7 +225,7 @@ footer{border-top:1px solid var(--line);padding-block:48px 32px}
Follow
Journey Live devnet - GitHub + GitHub Get the miner
@@ -265,9 +266,9 @@ footer{border-top:1px solid var(--line);padding-block:48px 32px} var now=performance.now();serverNow=new Date(d.now).getTime();serverAt=now; var seen={}; d.blocks.forEach(function(b){seen[b.hash]=1;var e=byHash[b.hash]; - if(e){e.chain=b.chain;return;} + if(e){e.chain=b.chain;e.locked=!!b.locked;e.final=!!b.final;return;} laneFor(b.miner); - e={hash:b.hash,ts:b.ts,rx:b.rx,blue_score:b.blue_score,parents:b.parents,chain:b.chain,miner:b.miner||'?',born:now,j:jitter(b.hash)}; + e={hash:b.hash,ts:b.ts,rx:b.rx,blue_score:b.blue_score,parents:b.parents,chain:b.chain,miner:b.miner||'?',born:now,j:jitter(b.hash),locked:!!b.locked,final:!!b.final}; byHash[b.hash]=e;blocks.push(e);}); // drop what fell off the left edge long ago var cut=vnow()-(W/pxPerSec)*1000-20000; @@ -278,6 +279,7 @@ footer{border-top:1px solid var(--line);padding-block:48px 32px} var chain=0;blocks.forEach(function(b){if(b.chain)chain++;}); $('c-screen').textContent=blocks.length;$('c-chain').textContent=chain;$('c-side').textContent=blocks.length-chain; $('c-newest').textContent=blocks.length?compact(blocks[blocks.length-1].blue_score):'0'; + var f=d.finality;$('c-locked').textContent=f&&f.latest_locked_index?('#'+f.latest_locked_index+' at blue '+compact(f.latest_locked_blue_score)):(f&&f.supported?'none yet':'n/a'); } function rrect(px,py,w,h,r){x.beginPath();x.moveTo(px+r,py);x.lineTo(px+w-r,py);x.quadraticCurveTo(px+w,py,px+w,py+r);x.lineTo(px+w,py+h-r);x.quadraticCurveTo(px+w,py+h,px+w-r,py+h);x.lineTo(px+r,py+h);x.quadraticCurveTo(px,py+h,px,py+h-r);x.lineTo(px,py+r);x.quadraticCurveTo(px,py,px+r,py);x.closePath();} function xOf(b,t){return Math.min(W-S,W-S*1.2-(t-b.ts)*pxPerSec/1000);} @@ -293,12 +295,16 @@ footer{border-top:1px solid var(--line);padding-block:48px 32px} // edges blocks.forEach(function(b){var p=pos[b.hash];b.parents.forEach(function(h){var q=pos[h];if(!q)return;var both=b.chain&&byHash[h]&&byHash[h].chain; x.strokeStyle=both?'rgba(242,84,27,0.75)':'rgba(201,199,194,0.45)';x.lineWidth=both?2:1.25;x.beginPath();x.moveTo(p.x-S/2,p.y);var mx=(p.x+q.x)/2;x.bezierCurveTo(mx,p.y,mx,q.y,q.x+S/2,q.y);x.stroke();});}); + // lock line: everything left of the newest locked checkpoint is final (mirrors the homepage simulation) + var lk=null;blocks.forEach(function(b){if(b.locked&&(!lk||b.ts>lk.ts))lk=b;}); + if(lk){var lp=pos[lk.hash];x.strokeStyle='rgba(242,84,27,0.55)';x.lineWidth=1.5;x.setLineDash([5,6]);x.beginPath();x.moveTo(lp.x,6);x.lineTo(lp.x,H-6);x.stroke();x.setLineDash([]);x.fillStyle='rgba(154,154,158,0.9)';x.font='500 10px IBM Plex Mono, monospace';x.textAlign='right';x.fillText('final',lp.x-8,14);} // blocks blocks.forEach(function(b){var p=pos[b.hash],h=S/2,age=now-b.born,fl=Math.max(0,1-age/900); if(fl>0){var g=x.createRadialGradient(p.x,p.y,0,p.x,p.y,S*1.8);g.addColorStop(0,'rgba(255,179,92,'+(0.55*fl)+')');g.addColorStop(1,'rgba(255,179,92,0)');x.fillStyle=g;x.beginPath();x.arc(p.x,p.y,S*1.8,0,Math.PI*2);x.fill();} if(b.chain){x.fillStyle='#F2541B';rrect(p.x-h,p.y-h,S,S,S*0.24);x.fill();} else{x.fillStyle='#0C0C0E';rrect(p.x-h,p.y-h,S,S,S*0.24);x.fill();x.strokeStyle=fl>0?'rgba(255,179,92,0.95)':'rgba(154,154,158,0.9)';x.lineWidth=2;rrect(p.x-h,p.y-h,S,S,S*0.24);x.stroke();} if(fl>0&&b.chain){x.strokeStyle='rgba(255,179,92,'+fl+')';x.lineWidth=2;rrect(p.x-h-2,p.y-h-2,S+4,S+4,S*0.3);x.stroke();} + if(b.locked){x.strokeStyle='#F2541B';x.lineWidth=3;x.beginPath();x.arc(p.x,p.y,S*0.95,0,Math.PI*2);x.stroke();} x.fillStyle=b.chain?'rgba(244,241,236,0.9)':'rgba(154,154,158,0.9)';x.font='500 '+(S<20?8:9)+'px IBM Plex Mono, monospace';x.textAlign='center';x.fillText(b.miner,p.x,p.y+h+11);}); // tip marker if(blocks.length){var tip=blocks[blocks.length-1],tp=pos[tip.hash];x.fillStyle='rgba(154,154,158,0.9)';x.font='500 10px IBM Plex Mono, monospace';x.textAlign='right';x.fillText('tip',Math.min(W-6,tp.x+S*0.5),Math.max(12,tp.y-S*0.75));}