Merge the mirror's master into counter-asic-4 before the second landing
|
|
@ -1081,9 +1081,9 @@
|
|||
"memory_gb": 24,
|
||||
"label": "estimated",
|
||||
"stock": {
|
||||
"mhs": 28.0,
|
||||
"w": 300.0,
|
||||
"uj": 10.7,
|
||||
"mhs": 40.0,
|
||||
"w": 310.0,
|
||||
"uj": 7.75,
|
||||
"class": "v4"
|
||||
},
|
||||
"tiers": [
|
||||
|
|
@ -1094,13 +1094,13 @@
|
|||
"mem_mhz": 0,
|
||||
"core_offset_mhz": -500,
|
||||
"power_offset_pct": -30,
|
||||
"limit_w": 355,
|
||||
"mhs": 28.0,
|
||||
"w": 224.0,
|
||||
"mhw": 0.125,
|
||||
"limit_w": 310.0,
|
||||
"mhs": 40.0,
|
||||
"w": 235.6,
|
||||
"mhw": 0.1698,
|
||||
"source": "measured",
|
||||
"label": "estimated",
|
||||
"uj": 8.0,
|
||||
"uj": 5.89,
|
||||
"note": "not rentable, not owned: the 9070 XT's dependent-read rate per channel (150 M per second per 32-bit channel) on 24 channels; the knob by the 9070 XT grid"
|
||||
},
|
||||
{
|
||||
|
|
@ -1110,13 +1110,13 @@
|
|||
"mem_mhz": 0,
|
||||
"core_offset_mhz": -300,
|
||||
"power_offset_pct": -15,
|
||||
"limit_w": 355,
|
||||
"mhs": 28.0,
|
||||
"w": 255.0,
|
||||
"mhw": 0.1098,
|
||||
"limit_w": 310.0,
|
||||
"mhs": 40.0,
|
||||
"w": 266.6,
|
||||
"mhw": 0.15,
|
||||
"source": "measured",
|
||||
"label": "estimated",
|
||||
"uj": 9.1,
|
||||
"uj": 6.67,
|
||||
"note": "half the offsets"
|
||||
},
|
||||
{
|
||||
|
|
@ -1126,14 +1126,14 @@
|
|||
"mem_mhz": 0,
|
||||
"core_offset_mhz": 0,
|
||||
"power_offset_pct": 0,
|
||||
"limit_w": 355,
|
||||
"mhs": 28.0,
|
||||
"w": 300.0,
|
||||
"mhw": 0.0933,
|
||||
"limit_w": 310.0,
|
||||
"mhs": 40.0,
|
||||
"w": 310.0,
|
||||
"mhw": 0.129,
|
||||
"source": "stock",
|
||||
"label": "estimated",
|
||||
"uj": 10.7,
|
||||
"note": "modelled"
|
||||
"uj": 7.75,
|
||||
"note": "24 channels at the RX 7600's measured per-channel rate: about 40 MH/s at about 310 W (7.8); not rentable, not owned"
|
||||
}
|
||||
],
|
||||
"src": "modelled on the 9070 XT rows"
|
||||
|
|
@ -1149,9 +1149,9 @@
|
|||
"memory_gb": 16,
|
||||
"label": "estimated",
|
||||
"stock": {
|
||||
"mhs": 18.0,
|
||||
"mhs": 27.0,
|
||||
"w": 230.0,
|
||||
"uj": 12.8,
|
||||
"uj": 8.52,
|
||||
"class": "v4"
|
||||
},
|
||||
"tiers": [
|
||||
|
|
@ -1162,13 +1162,13 @@
|
|||
"mem_mhz": 0,
|
||||
"core_offset_mhz": -500,
|
||||
"power_offset_pct": -30,
|
||||
"limit_w": 263,
|
||||
"mhs": 18.0,
|
||||
"w": 171.0,
|
||||
"mhw": 0.1053,
|
||||
"limit_w": 230.0,
|
||||
"mhs": 27.0,
|
||||
"w": 174.8,
|
||||
"mhw": 0.1545,
|
||||
"source": "measured",
|
||||
"label": "estimated",
|
||||
"uj": 9.5,
|
||||
"uj": 6.47,
|
||||
"note": "16 channels of GDDR6 at the 9070 XT's per-channel rate; the knob by the 9070 XT grid"
|
||||
},
|
||||
{
|
||||
|
|
@ -1178,13 +1178,13 @@
|
|||
"mem_mhz": 0,
|
||||
"core_offset_mhz": -300,
|
||||
"power_offset_pct": -15,
|
||||
"limit_w": 263,
|
||||
"mhs": 18.0,
|
||||
"w": 195.0,
|
||||
"mhw": 0.0923,
|
||||
"limit_w": 230.0,
|
||||
"mhs": 27.0,
|
||||
"w": 197.8,
|
||||
"mhw": 0.1365,
|
||||
"source": "measured",
|
||||
"label": "estimated",
|
||||
"uj": 10.8,
|
||||
"uj": 7.33,
|
||||
"note": "half the offsets"
|
||||
},
|
||||
{
|
||||
|
|
@ -1194,18 +1194,85 @@
|
|||
"mem_mhz": 0,
|
||||
"core_offset_mhz": 0,
|
||||
"power_offset_pct": 0,
|
||||
"limit_w": 263,
|
||||
"mhs": 18.0,
|
||||
"limit_w": 230.0,
|
||||
"mhs": 27.0,
|
||||
"w": 230.0,
|
||||
"mhw": 0.0783,
|
||||
"mhw": 0.1174,
|
||||
"source": "stock",
|
||||
"label": "estimated",
|
||||
"uj": 12.8,
|
||||
"note": "modelled"
|
||||
"uj": 8.52,
|
||||
"note": "16 channels at the RX 7600's measured 1.74 MH/s per channel: about 27 MH/s at about 230 W (8.5); not rentable, not owned"
|
||||
}
|
||||
],
|
||||
"src": "modelled on the 9070 XT rows"
|
||||
},
|
||||
{
|
||||
"card": "AMD Radeon RX 7600",
|
||||
"match": [
|
||||
"7600"
|
||||
],
|
||||
"vendor": "amd",
|
||||
"arch": "rdna3",
|
||||
"memory_gb": 8,
|
||||
"label": "estimated",
|
||||
"stock": {
|
||||
"mhs": 13.88,
|
||||
"w": 113.0,
|
||||
"uj": 8.14,
|
||||
"class": "v4"
|
||||
},
|
||||
"tiers": [
|
||||
{
|
||||
"id": "efficiency",
|
||||
"clock_mhz": 0,
|
||||
"power_pct": 70,
|
||||
"mem_mhz": 0,
|
||||
"core_offset_mhz": -500,
|
||||
"power_offset_pct": -30,
|
||||
"limit_w": 113.0,
|
||||
"mhs": 13.88,
|
||||
"w": 85.9,
|
||||
"mhw": 0.1616,
|
||||
"source": "measured",
|
||||
"label": "estimated",
|
||||
"uj": 6.19,
|
||||
"note": "the 9070 XT's ADLX grid (24 percent of the draw for no rate) applied; this card's own 24-point grid runs on PC 1 by about 16:50 UK and replaces this row"
|
||||
},
|
||||
{
|
||||
"id": "balanced",
|
||||
"clock_mhz": 0,
|
||||
"power_pct": 85,
|
||||
"mem_mhz": 0,
|
||||
"core_offset_mhz": -300,
|
||||
"power_offset_pct": -15,
|
||||
"limit_w": 113.0,
|
||||
"mhs": 13.88,
|
||||
"w": 97.2,
|
||||
"mhw": 0.1428,
|
||||
"source": "measured",
|
||||
"label": "estimated",
|
||||
"uj": 7.0,
|
||||
"note": "half the offsets, inside the flat band"
|
||||
},
|
||||
{
|
||||
"id": "max",
|
||||
"clock_mhz": 0,
|
||||
"power_pct": 100,
|
||||
"mem_mhz": 0,
|
||||
"core_offset_mhz": 0,
|
||||
"power_offset_pct": 0,
|
||||
"limit_w": 113.0,
|
||||
"mhs": 13.88,
|
||||
"w": 113.0,
|
||||
"mhw": 0.1228,
|
||||
"source": "stock",
|
||||
"label": "measured",
|
||||
"uj": 8.14,
|
||||
"note": "the founder's RX 7600 (8 GB) on PC 1, the card-in job 15:46 to 15:50 UK: class v4 sub-version 3 at stock 13.88 MH/s at 113 W (8.14), the v4 and v5 fingerprints equal to the pinned readings, the app's own row 13.4 at 113 W; class v5 within 2 percent; the 1 GiB dataset fits in 8,176 MB (the 2, 4 and 5.5 GiB rows follow)"
|
||||
}
|
||||
],
|
||||
"src": "the card-in lane's PC 1 job, 8 October 2026 15:50 UK"
|
||||
},
|
||||
{
|
||||
"card": "AMD Radeon RX 7600 XT",
|
||||
"match": [
|
||||
|
|
@ -1217,9 +1284,9 @@
|
|||
"memory_gb": 16,
|
||||
"label": "estimated",
|
||||
"stock": {
|
||||
"mhs": 9.0,
|
||||
"w": 160.0,
|
||||
"uj": 17.8,
|
||||
"mhs": 13.9,
|
||||
"w": 120.0,
|
||||
"uj": 8.63,
|
||||
"class": "v4"
|
||||
},
|
||||
"tiers": [
|
||||
|
|
@ -1230,13 +1297,13 @@
|
|||
"mem_mhz": 0,
|
||||
"core_offset_mhz": -500,
|
||||
"power_offset_pct": -30,
|
||||
"limit_w": 190,
|
||||
"mhs": 9.0,
|
||||
"w": 117.0,
|
||||
"mhw": 0.0769,
|
||||
"limit_w": 120.0,
|
||||
"mhs": 13.9,
|
||||
"w": 91.2,
|
||||
"mhw": 0.1524,
|
||||
"source": "measured",
|
||||
"label": "estimated",
|
||||
"uj": 13.0,
|
||||
"uj": 6.56,
|
||||
"note": "8 channels; the card-in queue holds one for a PC measurement"
|
||||
},
|
||||
{
|
||||
|
|
@ -1246,13 +1313,13 @@
|
|||
"mem_mhz": 0,
|
||||
"core_offset_mhz": -300,
|
||||
"power_offset_pct": -15,
|
||||
"limit_w": 190,
|
||||
"mhs": 9.0,
|
||||
"w": 136.0,
|
||||
"mhw": 0.0662,
|
||||
"limit_w": 120.0,
|
||||
"mhs": 13.9,
|
||||
"w": 103.2,
|
||||
"mhw": 0.1347,
|
||||
"source": "measured",
|
||||
"label": "estimated",
|
||||
"uj": 15.1,
|
||||
"uj": 7.42,
|
||||
"note": "half the offsets"
|
||||
},
|
||||
{
|
||||
|
|
@ -1262,14 +1329,14 @@
|
|||
"mem_mhz": 0,
|
||||
"core_offset_mhz": 0,
|
||||
"power_offset_pct": 0,
|
||||
"limit_w": 190,
|
||||
"mhs": 9.0,
|
||||
"w": 160.0,
|
||||
"mhw": 0.0563,
|
||||
"limit_w": 120.0,
|
||||
"mhs": 13.9,
|
||||
"w": 120.0,
|
||||
"mhw": 0.1158,
|
||||
"source": "stock",
|
||||
"label": "estimated",
|
||||
"uj": 17.8,
|
||||
"note": "modelled"
|
||||
"uj": 8.63,
|
||||
"note": "the same Navi 33 die as the measured RX 7600 (13.88 MH/s at 113 W) with 16 GB in clamshell: the same rate, about 120 W (8.6); the card-in queue holds one"
|
||||
}
|
||||
],
|
||||
"src": "modelled on the 9070 XT rows"
|
||||
|
|
@ -1285,9 +1352,9 @@
|
|||
"memory_gb": 16,
|
||||
"label": "estimated",
|
||||
"stock": {
|
||||
"mhs": 9.5,
|
||||
"mhs": 12.0,
|
||||
"w": 130.0,
|
||||
"uj": 13.7,
|
||||
"uj": 10.83,
|
||||
"class": "v4"
|
||||
},
|
||||
"tiers": [
|
||||
|
|
@ -1298,13 +1365,13 @@
|
|||
"mem_mhz": 0,
|
||||
"core_offset_mhz": -500,
|
||||
"power_offset_pct": -30,
|
||||
"limit_w": 160,
|
||||
"mhs": 9.5,
|
||||
"w": 95.0,
|
||||
"mhw": 0.1,
|
||||
"limit_w": 130.0,
|
||||
"mhs": 12.0,
|
||||
"w": 98.8,
|
||||
"mhw": 0.1215,
|
||||
"source": "measured",
|
||||
"label": "estimated",
|
||||
"uj": 10.0,
|
||||
"uj": 8.23,
|
||||
"note": "8 channels of GDDR6 on RDNA 4; the card-in queue holds one"
|
||||
},
|
||||
{
|
||||
|
|
@ -1314,13 +1381,13 @@
|
|||
"mem_mhz": 0,
|
||||
"core_offset_mhz": -300,
|
||||
"power_offset_pct": -15,
|
||||
"limit_w": 160,
|
||||
"mhs": 9.5,
|
||||
"w": 110.0,
|
||||
"mhw": 0.0864,
|
||||
"limit_w": 130.0,
|
||||
"mhs": 12.0,
|
||||
"w": 111.8,
|
||||
"mhw": 0.1073,
|
||||
"source": "measured",
|
||||
"label": "estimated",
|
||||
"uj": 11.6,
|
||||
"uj": 9.32,
|
||||
"note": "half the offsets"
|
||||
},
|
||||
{
|
||||
|
|
@ -1330,14 +1397,14 @@
|
|||
"mem_mhz": 0,
|
||||
"core_offset_mhz": 0,
|
||||
"power_offset_pct": 0,
|
||||
"limit_w": 160,
|
||||
"mhs": 9.5,
|
||||
"limit_w": 130.0,
|
||||
"mhs": 12.0,
|
||||
"w": 130.0,
|
||||
"mhw": 0.0731,
|
||||
"mhw": 0.0923,
|
||||
"source": "stock",
|
||||
"label": "estimated",
|
||||
"uj": 13.7,
|
||||
"note": "modelled"
|
||||
"uj": 10.83,
|
||||
"note": "8 channels on RDNA 4 between the 9070 XT's 1.18 MH/s per channel and the 7600's 1.74: about 12 MH/s at about 130 W (10.8); the card-in queue holds one"
|
||||
}
|
||||
],
|
||||
"src": "modelled on the 9070 XT rows"
|
||||
|
|
|
|||
|
|
@ -41,7 +41,8 @@ polygons). The Windows `.ico` and the favicons render each size from the vector,
|
|||
| `brand/profile/github-org-512.png` | organisation avatar | github.com/igneum-network (uploaded by hand from the Igneum Chrome profile) |
|
||||
| `brand/profile/x-banner-1500x500.png` | X header | the mark centred on obsidian |
|
||||
| `brand/igneum-icon-512.png`, `igneum-icon-1024.png` | the square at 512 and 1024 | the same as the profile files; kept for links that already point here |
|
||||
| `site/og-small.png` (256 square), `og-square.png` (1024), `og-coin.png` and `og.png` (1200 x 630 card: mark left, IGNEUM wordmark, tagline) | share images, `?v=2` in every `og:image` and `twitter:image` | index, live, litepaper (`og-small`); bench, evidence, `build.mjs` (`og`) |
|
||||
| `site/og/<card>.png` (1200 x 630) and `site/og/<card>-square.png` (1200 x 1200), one per row of `CARDS` in `site/og/pages.mjs`: the mark over a soft ember glow, a kicker, one line, a quiet sub line, the route at the foot | share images (WhatsApp, iMessage, Slack, X, LinkedIn); the metas of every page come from `site/og/pages.mjs` through `site/build.mjs`, `?v=` from `OG_VERSION` | every served page; rendered by `node site/og/render.mjs` on a build box from `site/og/card.html` (8 October 2026) |
|
||||
| `site/og.png`, `og-coin.png`, `og-square.png`, `og-small.png` | the earlier share images, kept only for links already cached by readers; nothing in the site points at them | retired 8 October 2026 |
|
||||
| `brand/profile/github-social-1280x640.png` | repository social preview | github.com/igneum-network/igneum settings (by hand) |
|
||||
| `brand/profile/vercel-avatar-512.png` | Vercel team or project avatar | by hand |
|
||||
|
||||
|
|
|
|||
|
|
@ -118,10 +118,11 @@ Max; the wall more); the NVIDIA and AMD rows are whole-card.
|
|||
| NVIDIA GeForce RTX 3070 | 8 GB | 4.8 | estimated | 5.29 (measured) | 8.3x / 6.1x / 4.3x | 11.1x / 7.4x / 5.0x | 19.1x / 10.4x / 6.1x | 1800 MHz at 80 percent. the Ampere cap lever on the measured stock rows (class v3 142.3 W, class v4 196.4 W); the 3070 Ti 38.98 MH/s at 177.1 / 267.6 W Stock: rented pods 8 October; the class v5 sweep's two 3070 hosts closed the connection mid-bench |
|
||||
| NVIDIA GeForce RTX 3060 | 12 GB | 5.77 | estimated | 6.4 (measured) | 10.0x / 7.3x / 5.2x | 13.3x / 8.9x / 6.0x | 23.0x / 12.4x / 7.3x | 1800 MHz at 80 percent. the Ampere cap lever (10 percent) on the measured class v4 stock row; the 3060 Ti at a 130 W host cap held 33.06 MH/s at 128.7 W under class v4 (3.89): a cap row measured on a sibling Stock: class v5 measured on a Vast 3060 (13:53 UK): 26.53 MH/s at 169.8 W (6.40) at the host's 170 W limit (the limit binding: the class v4 pod read 26.89 at 166.1 W, 6.18); class v3 26.53 at 120.4 W on the same host; stock, lock owed |
|
||||
| AMD Radeon RX 9070 XT | 16 GB | 7.9 | measured | 10.7 (measured) | 13.7x / 10.0x / 7.1x | 18.3x / 12.3x / 8.2x | 31.4x / 17.0x / 10.0x | ADLX -500 MHz, -30 percent. the ADLX grid (24 rows, PC 1): the rate flat at 18.9 MH/s across the grid, the best point -500 MHz core and -30 percent power, 24 percent under stock; class v5 about 8.1 Stock: the app's own power reading at the stock point, 8 October 07:11 UK |
|
||||
| AMD Radeon RX 7900 XTX | 24 GB | 8.0 | estimated | 10.7 (estimated) | 13.9x / 10.1x / 7.2x | 18.5x / 12.4x / 8.3x | 31.8x / 17.3x / 10.2x | ADLX -500 MHz, -30 percent. not rentable, not owned: the 9070 XT's dependent-read rate per channel (150 M per second per 32-bit channel) on 24 channels; the knob by the 9070 XT grid Stock: modelled |
|
||||
| AMD Radeon RX 7800 XT | 16 GB | 9.5 | estimated | 12.8 (estimated) | 16.5x / 12.0x / 8.5x | 22.0x / 14.7x / 9.8x | 37.8x / 20.5x / 12.1x | ADLX -500 MHz, -30 percent. 16 channels of GDDR6 at the 9070 XT's per-channel rate; the knob by the 9070 XT grid Stock: modelled |
|
||||
| AMD Radeon RX 7600 XT | 16 GB | 13.0 | estimated | 17.8 (estimated) | 22.5x / 16.5x / 11.7x | 30.1x / 20.2x / 13.4x | 51.7x / 28.0x / 16.5x | ADLX -500 MHz, -30 percent. 8 channels; the card-in queue holds one for a PC measurement Stock: modelled |
|
||||
| AMD Radeon RX 9060 XT | 16 GB | 10.0 | estimated | 13.7 (estimated) | 17.3x / 12.7x / 9.0x | 23.1x / 15.5x / 10.3x | 39.8x / 21.6x / 12.7x | ADLX -500 MHz, -30 percent. 8 channels of GDDR6 on RDNA 4; the card-in queue holds one Stock: modelled |
|
||||
| AMD Radeon RX 7900 XTX | 24 GB | 5.89 | estimated | 7.75 (estimated) | 10.2x / 7.5x / 5.3x | 13.6x / 9.1x / 6.1x | 23.4x / 12.7x / 7.5x | ADLX -500 MHz, -30 percent. not rentable, not owned: the 9070 XT's dependent-read rate per channel (150 M per second per 32-bit channel) on 24 channels; the knob by the 9070 XT grid Stock: 24 channels at the RX 7600's measured per-channel rate: about 40 MH/s at about 310 W (7.8); not rentable, not owned |
|
||||
| AMD Radeon RX 7800 XT | 16 GB | 6.47 | estimated | 8.52 (estimated) | 11.2x / 8.2x / 5.8x | 15.0x / 10.0x / 6.7x | 25.7x / 14.0x / 8.2x | ADLX -500 MHz, -30 percent. 16 channels of GDDR6 at the 9070 XT's per-channel rate; the knob by the 9070 XT grid Stock: 16 channels at the RX 7600's measured 1.74 MH/s per channel: about 27 MH/s at about 230 W (8.5); not rentable, not owned |
|
||||
| AMD Radeon RX 7600 | 8 GB | 6.19 | estimated | 8.14 (measured) | 10.7x / 7.8x / 5.6x | 14.3x / 9.6x / 6.4x | 24.6x / 13.3x / 7.9x | ADLX -500 MHz, -30 percent. the 9070 XT's ADLX grid (24 percent of the draw for no rate) applied; this card's own 24-point grid runs on PC 1 by about 16:50 UK and replaces this row Stock: the founder's RX 7600 (8 GB) on PC 1, the card-in job 15:46 to 15:50 UK: class v4 sub-version 3 at stock 13.88 MH/s at 113 W (8.14), the v4 and v5 fingerprints equal to the pinned readings, the app's own row 13.4 at 113 W; class v5 within 2 percent; the 1 GiB dataset fits in 8,176 MB (the 2, 4 and 5.5 GiB rows follow) |
|
||||
| AMD Radeon RX 7600 XT | 16 GB | 6.56 | estimated | 8.63 (estimated) | 11.4x / 8.3x / 5.9x | 15.2x / 10.2x / 6.8x | 26.1x / 14.1x / 8.3x | ADLX -500 MHz, -30 percent. 8 channels; the card-in queue holds one for a PC measurement Stock: the same Navi 33 die as the measured RX 7600 (13.88 MH/s at 113 W) with 16 GB in clamshell: the same rate, about 120 W (8.6); the card-in queue holds one |
|
||||
| AMD Radeon RX 9060 XT | 16 GB | 8.23 | estimated | 10.83 (estimated) | 14.3x / 10.4x / 7.4x | 19.0x / 12.8x / 8.5x | 32.8x / 17.7x / 10.5x | ADLX -500 MHz, -30 percent. 8 channels of GDDR6 on RDNA 4; the card-in queue holds one Stock: 8 channels on RDNA 4 between the 9070 XT's 1.18 MH/s per channel and the 7600's 1.74: about 12 MH/s at about 130 W (10.8); the card-in queue holds one |
|
||||
| NVIDIA H100 80GB HBM3 | DC | 2.0 | estimated | 2.58 (measured) | 3.5x / 2.5x / 1.8x | 4.6x / 3.1x / 2.1x | 8.0x / 4.3x / 2.5x | 1400 MHz at 80 percent. the premium 240 to 280 W at stock says half of it is the clock; a lock on an owned host (Hopper at 1,980 MHz boost, HBM3-bound): about 500 W (2.0); band 1.9 to 2.4; rented hosts refuse -lgc Stock: the denominator sweep, RunPod, 13:25 UK: class v3 252.96 MH/s at 382.4 W (1.51), class v5 241.34 at 621.6 W (2.58, 7 samples, the SM throttled to 1,590 MHz under the 700 W cap); the 7 and 8 October pods read class v4 250.6 at 695.1 W (2.77); -lmc answered 'use --lock-memory-clocks-deferred' and the memory clock stayed 2,619; stock, lock owed |
|
||||
| NVIDIA L40S | DC | 3.78 | estimated | 5.29 (measured) | 6.5x / 4.8x / 3.4x | 8.7x / 5.9x / 3.9x | 15.0x / 8.2x / 4.8x | 1860 MHz at 60 percent. the Ada shape on the measured stock rows (class v3 220.7 W, class v4 277.6 W); re-based on the measured class v5 stock row of 13:5x UK (the architecture's shape on the measured v3 draw and the measured premium) Stock: class v5 measured (13:49 UK): 56.49 MH/s at 298.7 W (5.29, 46 samples, SM 2,520); class v3 56.35 at 221.5 W on the same host; the v4watts pod read class v4 56.4 at 277.6 W; stock, lock owed |
|
||||
| NVIDIA A100-SXM4-80GB | DC | 2.89 | estimated | 2.99 (measured) | 5.0x / 3.7x / 2.6x | 6.7x / 4.5x / 3.0x | 11.5x / 6.2x / 3.7x | 1200 MHz at 80 percent. the card already runs at 1,410 MHz and the 400 W host limit binds under class v5 (SM clock gives); a cap under it costs rate on Ampere, so the floor is within 5 percent of the measured stock row Stock: the denominator sweep, RunPod, 13:24 UK: class v3 138.06 MH/s at 294.9 W (2.14), class v5 133.11 at 398.1 W (2.99, 19 samples, at the host's 400 W limit, memory 1,593 MHz); the v4watts pod on a 500 W host read class v4 138.0 at 489.3 W (3.54); -lmc 'not supported' on this card; stock, lock owed |
|
||||
|
|
@ -178,6 +179,18 @@ win, because on this hash the memory clock is the rate and the core clock is onl
|
|||
climb may raise the memory clock (5 percent of the range per probe) where the vendor exposes it, and no measured row
|
||||
yet shows a gain from it (the 5090's memory sits at 13,801 of 14,001 MHz).
|
||||
|
||||
Amendment, 15:5x UK (floor lane 1's memory-clock ladder on PC 1, the 5090 alone at the 1,300 MHz core lock, job
|
||||
run-ca4-pc1-memclk-5090-20261008-b, every row bit-exact; `docs/analysis/class-v6/floor/sm-sparse.md` section 3.1 at
|
||||
66bc6ca7): the memory clock is not a lever, now measured. The driver holds the 5090's memory in two states only (asks
|
||||
of 8,001 MHz and above read 13,801; 6,001 and below read 7,001, the PHY's half-rate state). Class v3 at the lock:
|
||||
13,801 MHz 134.1 to 134.5 MH/s at 222.7 to 223.7 W (1.66); 7,001 MHz 76.0 MH/s at 141 to 142 W (1.86 to 1.87).
|
||||
Class v4: 134.3 to 134.5 at 308 to 309 W (2.29 to 2.30); 76.1 at 184 to 187 W (2.42 to 2.46). The half-rate state
|
||||
loses 43 percent of the rate (the activate ceiling scales with the memory clock) for 37 percent of the watts, so the
|
||||
energy per hash rises 12 percent on class v3 and 5 on class v4; the 82 W between the states at 7.4 G reads per second
|
||||
lost is 11 nJ per read at the margin, equal to the DRAM chase probe's whole-path figure, so the memory-side term is 80
|
||||
to 90 W of the 223 W at the lock and is bought one for one with the rate. The table's "never touched" line stands as
|
||||
a measurement; the tiers table carries `mem_mhz` 0 on every row.
|
||||
|
||||
## 4. The LPDDR6 and unified-memory tier, five years out
|
||||
|
||||
The method. The M5 Max row is the only measured unified-memory point and it splits three ways at the meter: the DRAM
|
||||
|
|
@ -347,8 +360,10 @@ closed the connection mid-bench). The sweep closed at 14:35 UK: 20 rows landed,
|
|||
- The 5070 Ti and 5070 floors (1.7 to 2.1) are the strongest claims in this file and both are estimated from stock
|
||||
rows; a 5070 Ti ladder on PC 1 or PC 2 (the card-in job's queue) would settle whether the honest NVIDIA floor is a 16
|
||||
GB card.
|
||||
- The AMD rows other than the 9070 XT are modelled on one card; the 9060 XT and 7600 XT in the card-in queue will
|
||||
replace two of them.
|
||||
- The AMD rows other than the 9070 XT and the RX 7600 are modelled on those two measured points (the 7600's stock row
|
||||
landed 15:50 UK from the card-in job on PC 1: 13.88 MH/s at 113 W, 8.14 microjoules, twice as good as this file's
|
||||
morning estimate for the Navi 33 die; its own ADLX grid by about 16:50 and the 9060 XT in the card-in queue replace
|
||||
the estimated rows).
|
||||
- The Apple M4 Max, M4 Pro and M3 Max rows are modelled on the M5 Max's split; a Metal bench on any of them with the
|
||||
IOReport meter would replace its row in an hour.
|
||||
- Section 4's LPDDR6 rows are modelled on JESD209-6's public summary (the bank count and tFAW are behind the
|
||||
|
|
|
|||
|
|
@ -10,6 +10,28 @@
|
|||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum">
|
||||
<meta property="og:description" content="Nothing is mined here.">
|
||||
<meta property="og:url" content="https://igneum.network/">
|
||||
<meta property="og:image" content="https://igneum.network/og/home.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<meta property="og:image" content="https://igneum.network/og/home-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum">
|
||||
<meta name="twitter:description" content="Nothing is mined here.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/home.png?v=4">
|
||||
<meta name="twitter:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<!-- share:end -->
|
||||
<!-- head:start -->
|
||||
<link rel="preload" href="/fonts/unbounded-900.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/fonts/plex-sans-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
|
|
|
|||
|
|
@ -8,20 +8,28 @@
|
|||
<link rel="canonical" href="https://igneum.network/address">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum address">
|
||||
<meta property="og:description" content="One Devnet 3 address: its balance, nonce and code, its transactions of the last seven days, the blocks it mined in the last day and what they earned.">
|
||||
<meta property="og:description" content="One Devnet 3 address: balance, nonce, code, its transactions and the blocks it mined.">
|
||||
<meta property="og:url" content="https://igneum.network/address">
|
||||
<meta property="og:image" content="https://igneum.network/og-small.png?v=3">
|
||||
<meta property="og:image:width" content="256">
|
||||
<meta property="og:image:height" content="256">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta property="og:image" content="https://igneum.network/og/explorer.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Devnet 3, block by block. igneum.network/explorer">
|
||||
<meta property="og:image" content="https://igneum.network/og/explorer-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Devnet 3, block by block. igneum.network/explorer">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum address">
|
||||
<meta name="twitter:description" content="One Devnet 3 address: its balance, nonce and code, its transactions of the last seven days, the blocks it mined in the last day and what they earned.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og-small.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:description" content="One Devnet 3 address: balance, nonce, code, its transactions and the blocks it mined.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/explorer.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Devnet 3, block by block. igneum.network/explorer">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="The app you mine with: your rate, what it costs a day, every card tuned by Ember, and the chain drawn live with your own blocks ringed. Overview, Cards, Earnings, Prove and Settings, light and dark.">
|
||||
<link rel="canonical" href="https://igneum.network/app">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum Ember, the app">
|
||||
<meta property="og:description" content="The app you mine with: your rate, what it costs a day, every card tuned by Ember, and the chain drawn live with your own blocks ringed. Overview, Cards, Earnings, Prove and Settings, light and dark.">
|
||||
<meta property="og:title" content="The Igneum app you mine with">
|
||||
<meta property="og:description" content="Your rate, what it costs a day, every card tuned by Ember, and the chain drawn live with your blocks ringed.">
|
||||
<meta property="og:url" content="https://igneum.network/app">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/miner.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="Install. Start. The card mines. igneum.network/miner">
|
||||
<meta property="og:image" content="https://igneum.network/og/miner-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Install. Start. The card mines. igneum.network/miner">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum Ember, the app">
|
||||
<meta name="twitter:description" content="The app you mine with: your rate, what it costs a day, every card tuned by Ember, and the chain drawn live with your own blocks ringed. Overview, Cards, Earnings, Prove and Settings, light and dark.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:title" content="The Igneum app you mine with">
|
||||
<meta name="twitter:description" content="Your rate, what it costs a day, every card tuned by Ember, and the chain drawn live with your blocks ringed.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/miner.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Install. Start. The card mines. igneum.network/miner">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="Every Igneum benchmark and test, with the hardware and the commands that produced it. Prototype numbers are labelled as such.">
|
||||
<link rel="canonical" href="https://igneum.network/bench">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum engineering log">
|
||||
<meta property="og:description" content="Every Igneum benchmark and test, with the hardware and the commands that produced it. Prototype numbers are labelled as such.">
|
||||
<meta property="og:title" content="The Igneum engineering log">
|
||||
<meta property="og:description" content="Every measured number with the entry it came from: hash rates, proving times and the runs behind them.">
|
||||
<meta property="og:url" content="https://igneum.network/bench">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/bench.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="Every number, with the entry it came from. igneum.network/bench">
|
||||
<meta property="og:image" content="https://igneum.network/og/bench-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Every number, with the entry it came from. igneum.network/bench">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum engineering log">
|
||||
<meta name="twitter:description" content="Every Igneum benchmark and test, with the hardware and the commands that produced it. Prototype numbers are labelled as such.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:title" content="The Igneum engineering log">
|
||||
<meta name="twitter:description" content="Every measured number with the entry it came from: hash rates, proving times and the runs behind them.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/bench.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Every number, with the entry it came from. igneum.network/bench">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -8,20 +8,28 @@
|
|||
<link rel="canonical" href="https://igneum.network/block">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum block">
|
||||
<meta property="og:description" content="One Igneum block: header, parents, mergeset, transactions, proof records and its finality certificate.">
|
||||
<meta property="og:url" content="https://igneum.network/block">
|
||||
<meta property="og:image" content="https://igneum.network/og-small.png?v=3">
|
||||
<meta property="og:image:width" content="256">
|
||||
<meta property="og:image:height" content="256">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta property="og:image" content="https://igneum.network/og/explorer.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Devnet 3, block by block. igneum.network/explorer">
|
||||
<meta property="og:image" content="https://igneum.network/og/explorer-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Devnet 3, block by block. igneum.network/explorer">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum block">
|
||||
<meta name="twitter:description" content="One Igneum block: header, parents, mergeset, transactions, proof records and its finality certificate.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og-small.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/explorer.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Devnet 3, block by block. igneum.network/explorer">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="The developer entry page for Igneum: what is different, the chain ids and RPC endpoints, the wallet, the explorer, the faucet, a five-minute contract deploy and a block you verify in your browser.">
|
||||
<link rel="canonical" href="https://igneum.network/build">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Build on Igneum: chain ids, RPC, a contract in five minutes">
|
||||
<meta property="og:description" content="The developer entry page for Igneum: what is different, the chain ids and RPC endpoints, the wallet, the explorer, the faucet, a five-minute contract deploy and a block you verify in your browser.">
|
||||
<meta property="og:description" content="Chain ids, RPC endpoints, the wallet, the faucet and a contract in five minutes. Solidity deploys unchanged.">
|
||||
<meta property="og:url" content="https://igneum.network/build">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/build.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="Build on Igneum. igneum.network/build">
|
||||
<meta property="og:image" content="https://igneum.network/og/build-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Build on Igneum. igneum.network/build">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Build on Igneum: chain ids, RPC, a contract in five minutes">
|
||||
<meta name="twitter:description" content="The developer entry page for Igneum: what is different, the chain ids and RPC endpoints, the wallet, the explorer, the faucet, a five-minute contract deploy and a block you verify in your browser.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:description" content="Chain ids, RPC endpoints, the wallet, the faucet and a contract in five minutes. Solidity deploys unchanged.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/build.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Build on Igneum. igneum.network/build">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import { readFileSync, writeFileSync, existsSync } from 'node:fs';
|
|||
import { scrubBench } from './scrub.mjs';
|
||||
import { MARKS, VENDORS, tokensCss, markHtml } from './lib/marks.mjs';
|
||||
import { osHtml } from './lib/os-marks.mjs';
|
||||
import { shareHtml, checkShare } from './og/pages.mjs'; // the share cards and metas, one source for every page (8 October 2026)
|
||||
import { join, dirname } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
|
|
@ -104,27 +105,18 @@ function inject(html, name, content, file) {
|
|||
if (existsSync(src) && readFileSync(src, 'utf8') !== readFileSync(copy, 'utf8')) throw new Error('site/lib/marks.mjs differs from brand/marks/vendor-marks.mjs: cp brand/marks/vendor-marks.mjs site/lib/marks.mjs'); }
|
||||
const ORIGIN = 'https://igneum.network';
|
||||
const svgIcon = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E";
|
||||
// Search and share metadata. Same set as the hand-written pages (index, litepaper, live); keep them in step.
|
||||
// Search and share metadata. The share block (og: and twitter:) comes from site/og/pages.mjs for every page, generated or
|
||||
// hand-written (the hand-written pages get it through injectShare below); nothing is pasted per page (8 October 2026).
|
||||
{ const bad = checkShare(); if (bad.length) throw new Error('site/og/pages.mjs: ' + bad.join('; ')); }
|
||||
function meta(title, desc, path) {
|
||||
const url = ORIGIN + path; const t = esc(title); const d = esc(desc);
|
||||
return `<title>${t}</title>
|
||||
<meta name="description" content="${d}">
|
||||
<link rel="canonical" href="${url}">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="${t}">
|
||||
<meta property="og:description" content="${d}">
|
||||
<meta property="og:url" content="${url}">
|
||||
<meta property="og:image" content="${ORIGIN}/og.png?v=3">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="${t}">
|
||||
<meta name="twitter:description" content="${d}">
|
||||
<meta name="twitter:image" content="${ORIGIN}/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<!-- share:start -->
|
||||
${shareHtml(path, title, desc)}
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="${svgIcon}" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
@ -407,6 +399,22 @@ function renderEvidence(html) {
|
|||
return html;
|
||||
}
|
||||
|
||||
// The share block of a hand-written page (8 October 2026): written between <!-- share:start --> and <!-- share:end --> from
|
||||
// site/og/pages.mjs; a page that still carries hand-pasted og: and twitter: metas has them replaced by the marked block once,
|
||||
// and a page with neither gets the block ahead of the head partial. The committed page carries the result, as with the head.
|
||||
function injectShare(html, file) {
|
||||
const path = file === 'index.html' ? '/' : '/' + file.replace(/\.html$/, '');
|
||||
const fallbackTitle = (/<title>([^<]*)<\/title>/.exec(html) || [, 'Igneum'])[1].replace(/&/g, '&');
|
||||
const fallbackDesc = (/<meta name="description" content="([^"]*)"/.exec(html) || [, ''])[1].replace(/&/g, '&').replace(/"/g, '"');
|
||||
const block = `<!-- share:start -->\n${shareHtml(path, fallbackTitle, fallbackDesc)}\n<!-- share:end -->`;
|
||||
const marked = /<!-- share:start -->[\s\S]*?<!-- share:end -->/;
|
||||
if (marked.test(html)) return html.replace(marked, () => block);
|
||||
const loose = /(?:<meta (?:property="og:|name="twitter:)[^>]*>\s*\n?)+/;
|
||||
if (loose.test(html)) return html.replace(loose, () => block + '\n');
|
||||
if (!/<!-- head:start -->/.test(html)) throw new Error(`${file}: no share block, no og metas and no head marker to put one before`);
|
||||
return html.replace('<!-- head:start -->', () => block + '\n<!-- head:start -->');
|
||||
}
|
||||
|
||||
const PAGES = [['index.html', ''], ['download.html', 'download'], ['income.html', 'income'], ['economics.html', 'economics'], ['litepaper.html', 'litepaper'], ['live.html', 'live'], ['evidence.html', 'evidence'], ['miner.html', 'miner'], ['app.html', 'app'], ['wallet.html', 'wallet'], ['ledger.html', 'ledger'], ['metamask.html', 'metamask'], ['faucet.html', 'faucet'], ['swap.html', 'swap'], ['404.html', ''],
|
||||
// the Devnet 3 explorer (5 Oct 2026, extended 8 Oct 2026): /explorer, /block/<hash>, /address/<addr>, /tx/<hash> (vercel.json rewrites
|
||||
// the three) and /proving; the Explorer entry of the Network panel is the current one on all five
|
||||
|
|
@ -419,6 +427,7 @@ for (const [file, active] of PAGES) {
|
|||
const p = join(here, file);
|
||||
if (!existsSync(p)) throw new Error(`missing page ${file}`);
|
||||
let html = readFileSync(p, 'utf8');
|
||||
html = injectShare(html, file);
|
||||
html = inject(html, 'head', HEAD, file);
|
||||
html = inject(html, 'nav', navFor(active), file);
|
||||
html = inject(html, 'footer', FOOT, file);
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="The limits of Igneum, stated first: proof times, chips, income, finality in the first month, the review it has not had yet. From the litepaper, with the ledger behind it.">
|
||||
<link rel="canonical" href="https://igneum.network/claims">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="What Igneum does not claim">
|
||||
<meta property="og:description" content="The limits of Igneum, stated first: proof times, chips, income, finality in the first month, the review it has not had yet. From the litepaper, with the ledger behind it.">
|
||||
<meta property="og:url" content="https://igneum.network/claims">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/home.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<meta property="og:image" content="https://igneum.network/og/home-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="What Igneum does not claim">
|
||||
<meta name="twitter:description" content="The limits of Igneum, stated first: proof times, chips, income, finality in the first month, the review it has not had yet. From the litepaper, with the ledger behind it.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/home.png?v=4">
|
||||
<meta name="twitter:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="The protocol carries no fee. The Ember software takes an optional 1% dev fee, the norm for GPU miners, visible in the app and off with one flag. Where it is, how it was measured, how to turn it off.">
|
||||
<link rel="canonical" href="https://igneum.network/dev-fee">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="The Ember dev fee, in full view">
|
||||
<meta property="og:description" content="The protocol carries no fee. The Ember software takes an optional 1% dev fee, the norm for GPU miners, visible in the app and off with one flag. Where it is, how it was measured, how to turn it off.">
|
||||
<meta property="og:url" content="https://igneum.network/dev-fee">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/home.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<meta property="og:image" content="https://igneum.network/og/home-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="The Ember dev fee, in full view">
|
||||
<meta name="twitter:description" content="The protocol carries no fee. The Ember software takes an optional 1% dev fee, the norm for GPU miners, visible in the app and off with one flag. Where it is, how it was measured, how to turn it off.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/home.png?v=4">
|
||||
<meta name="twitter:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -8,20 +8,28 @@
|
|||
<link rel="canonical" href="https://igneum.network/download">
|
||||
<meta name="theme-color" content="#0C0C0E" media="(prefers-color-scheme: dark)">
|
||||
<meta name="theme-color" content="#F4F1EC" media="(prefers-color-scheme: light)">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Download Igneum Ember">
|
||||
<meta property="og:description" content="Igneum Ember for Windows, macOS, Linux and HiveOS, and the Igneum Wallet for macOS. One click installs the node, the miner and the prover.">
|
||||
<meta property="og:description" content="Igneum Ember for Windows, macOS, Linux and HiveOS, and the Igneum Wallet for macOS. Only from this domain.">
|
||||
<meta property="og:url" content="https://igneum.network/download">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/download.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="Download. Press Start. The card mines. igneum.network/download">
|
||||
<meta property="og:image" content="https://igneum.network/og/download-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Download. Press Start. The card mines. igneum.network/download">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Download Igneum Ember">
|
||||
<meta name="twitter:description" content="Igneum Ember for Windows, macOS, Linux and HiveOS, and the Igneum Wallet for macOS.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:description" content="Igneum Ember for Windows, macOS, Linux and HiveOS, and the Igneum Wallet for macOS. Only from this domain.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/download.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Download. Press Start. The card mines. igneum.network/download">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
<link rel="icon" href="/icon-192.png" type="image/png" sizes="192x192">
|
||||
|
|
|
|||
|
|
@ -6,6 +6,28 @@
|
|||
<title>Igneum economics: the emission as the node encodes it</title>
|
||||
<meta name="description" content="The emission schedule, the 80/20 split, the fee routes, the proving-fee market, the switchable 1 percent client fee and the decimals, each as a table with its file and line in the node. No price, no projection.">
|
||||
<link rel="canonical" href="https://igneum.network/economics">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum economics, as the node encodes them">
|
||||
<meta property="og:description" content="The emission, the 80/20 split, the fee routes and the decimals, each with its file and line in the node.">
|
||||
<meta property="og:url" content="https://igneum.network/economics">
|
||||
<meta property="og:image" content="https://igneum.network/og/economics.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="The economics, as the node encodes them. igneum.network/economics">
|
||||
<meta property="og:image" content="https://igneum.network/og/economics-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="The economics, as the node encodes them. igneum.network/economics">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum economics, as the node encodes them">
|
||||
<meta name="twitter:description" content="The emission, the 80/20 split, the fee routes and the decimals, each with its file and line in the node.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/economics.png?v=4">
|
||||
<meta name="twitter:image:alt" content="The economics, as the node encodes them. igneum.network/economics">
|
||||
<!-- share:end -->
|
||||
<!-- head:start -->
|
||||
<link rel="preload" href="/fonts/unbounded-900.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/fonts/plex-sans-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="Every public Igneum claim with its status: designed, implemented, tested by the team, reproduced externally, reviewed independently. Nothing has been reproduced or reviewed yet.">
|
||||
<link rel="canonical" href="https://igneum.network/evidence">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum evidence">
|
||||
<meta property="og:description" content="Every public Igneum claim with its status: designed, implemented, tested by the team, reproduced externally, reviewed independently. Nothing has been reproduced or reviewed yet.">
|
||||
<meta property="og:title" content="Igneum evidence: every claim with its status">
|
||||
<meta property="og:description" content="Every public Igneum claim with its status: designed, implemented, tested, reproduced, reviewed.">
|
||||
<meta property="og:url" content="https://igneum.network/evidence">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/home.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<meta property="og:image" content="https://igneum.network/og/home-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum evidence">
|
||||
<meta name="twitter:description" content="Every public Igneum claim with its status: designed, implemented, tested by the team, reproduced externally, reviewed independently. Nothing has been reproduced or reviewed yet.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:title" content="Igneum evidence: every claim with its status">
|
||||
<meta name="twitter:description" content="Every public Igneum claim with its status: designed, implemented, tested, reproduced, reviewed.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/home.png?v=4">
|
||||
<meta name="twitter:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="Devnet 3, block by block: the DAG, every transaction, every account, the shard plan and proof of each block, the finality lock that covers it. A test network: coins have no value.">
|
||||
<link rel="canonical" href="https://igneum.network/explorer">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum Devnet 3 explorer">
|
||||
<meta property="og:description" content="Devnet 3, block by block: the DAG, every transaction, every account, the shard plan and proof of each block, the finality lock that covers it. A test network: coins have no value.">
|
||||
<meta property="og:description" content="Every block, transaction, account and proof on Devnet 3, with its finality lock. Test coins, no value.">
|
||||
<meta property="og:url" content="https://igneum.network/explorer">
|
||||
<meta property="og:image" content="https://igneum.network/og-small.png?v=3">
|
||||
<meta property="og:image:width" content="256">
|
||||
<meta property="og:image:height" content="256">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta property="og:image" content="https://igneum.network/og/explorer.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Devnet 3, block by block. igneum.network/explorer">
|
||||
<meta property="og:image" content="https://igneum.network/og/explorer-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Devnet 3, block by block. igneum.network/explorer">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum Devnet 3 explorer">
|
||||
<meta name="twitter:description" content="Devnet 3, block by block: the DAG, transactions, accounts, proofs and finality. A test network.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og-small.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:description" content="Every block, transaction, account and proof on Devnet 3, with its finality lock. Test coins, no value.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/explorer.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Devnet 3, block by block. igneum.network/explorer">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180">
|
||||
|
|
|
|||
|
|
@ -7,19 +7,28 @@
|
|||
<meta name="description" content="Devnet 3 IGN for developers: 10 IGN per address per day, no value, no account. Paste an address, get a transaction hash.">
|
||||
<link rel="canonical" href="https://igneum.network/faucet">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum Devnet 3 faucet">
|
||||
<meta property="og:description" content="Devnet 3 IGN for developers: 10 IGN per address per day, no value, no account.">
|
||||
<meta property="og:description" content="Devnet 3 IGN for developers: a daily allowance per address, no value, no account.">
|
||||
<meta property="og:url" content="https://igneum.network/faucet">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/faucet.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="Test IGN, for building. igneum.network/faucet">
|
||||
<meta property="og:image" content="https://igneum.network/og/faucet-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Test IGN, for building. igneum.network/faucet">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum Devnet 3 faucet">
|
||||
<meta name="twitter:description" content="Devnet 3 IGN for developers: 10 IGN per address per day, no value, no account.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:description" content="Devnet 3 IGN for developers: a daily allowance per address, no value, no account.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/faucet.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Test IGN, for building. igneum.network/faucet">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="The Igneum grants programme: four tiers, what a grant is, how to apply with an issue on the git host, the weekly review, and the lines that stay honest about value, amounts and dates.">
|
||||
<link rel="canonical" href="https://igneum.network/grants">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum grants: tooling, reference apps, infrastructure, research">
|
||||
<meta property="og:description" content="The Igneum grants programme: four tiers, what a grant is, how to apply with an issue on the git host, the weekly review, and the lines that stay honest about value, amounts and dates.">
|
||||
<meta property="og:title" content="Igneum grants: tooling, apps, infrastructure, research">
|
||||
<meta property="og:description" content="Paid in IGN from the dev fee fund, on delivery. Four tiers. One issue to apply. A weekly review.">
|
||||
<meta property="og:url" content="https://igneum.network/grants">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/grants.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="Paid in IGN, on delivery. igneum.network/grants">
|
||||
<meta property="og:image" content="https://igneum.network/og/grants-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Paid in IGN, on delivery. igneum.network/grants">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum grants: tooling, reference apps, infrastructure, research">
|
||||
<meta name="twitter:description" content="The Igneum grants programme: four tiers, what a grant is, how to apply with an issue on the git host, the weekly review, and the lines that stay honest about value, amounts and dates.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:title" content="Igneum grants: tooling, apps, infrastructure, research">
|
||||
<meta name="twitter:description" content="Paid in IGN from the dev fee fund, on delivery. Four tiers. One issue to apply. A weekly review.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/grants.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Paid in IGN, on delivery. igneum.network/grants">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -6,6 +6,28 @@
|
|||
<title>Igneum income: what your card would mine</title>
|
||||
<meta name="description" content="Pick a card, set your electricity price and read IGN a day from the live network; type a price for IGN to see money a day at that price. Devnet and testnet IGN have no value.">
|
||||
<link rel="canonical" href="https://igneum.network/income">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum income calculator">
|
||||
<meta property="og:description" content="Pick a card, set your electricity price and read IGN a day from the live network. Test IGN has no value.">
|
||||
<meta property="og:url" content="https://igneum.network/income">
|
||||
<meta property="og:image" content="https://igneum.network/og/income.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="What your card would mine. igneum.network/income">
|
||||
<meta property="og:image" content="https://igneum.network/og/income-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="What your card would mine. igneum.network/income">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum income calculator">
|
||||
<meta name="twitter:description" content="Pick a card, set your electricity price and read IGN a day from the live network. Test IGN has no value.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/income.png?v=4">
|
||||
<meta name="twitter:image:alt" content="What your card would mine. igneum.network/income">
|
||||
<!-- share:end -->
|
||||
<!-- head:start -->
|
||||
<link rel="preload" href="/fonts/unbounded-900.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/fonts/plex-sans-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
|
|
|
|||
|
|
@ -6,20 +6,28 @@
|
|||
<link rel="canonical" href="https://igneum.network/">
|
||||
<meta name="theme-color" content="#0C0C0E" media="(prefers-color-scheme: dark)">
|
||||
<meta name="theme-color" content="#F4F1EC" media="(prefers-color-scheme: light)">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum, the GPU-mined layer 1">
|
||||
<meta property="og:description" content="A GPU-mined chain whose mining program rewrites itself every hour. Miners also prove the blocks. No premine, no stake, no fee to any team.">
|
||||
<meta property="og:description" content="Mined by GPUs, every block proven by the miners. No premine, no stake, no fee to any team.">
|
||||
<meta property="og:url" content="https://igneum.network/">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/home.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<meta property="og:image" content="https://igneum.network/og/home-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum, the GPU-mined layer 1">
|
||||
<meta name="twitter:description" content="A GPU-mined chain whose mining program rewrites itself every hour. Miners also prove the blocks. No premine, no stake, no fee to any team.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:description" content="Mined by GPUs, every block proven by the miners. No premine, no stake, no fee to any team.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/home.png?v=4">
|
||||
<meta name="twitter:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="Where Igneum is: six phases from the specification to a fair launch, each closing at a published gate, and the engineering log’s latest entries. No calendar dates.">
|
||||
<link rel="canonical" href="https://igneum.network/journey">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="The Igneum journey: six phases, four gates">
|
||||
<meta property="og:description" content="Where Igneum is: six phases from the specification to a fair launch, each closing at a published gate, and the engineering log’s latest entries. No calendar dates.">
|
||||
<meta property="og:url" content="https://igneum.network/journey">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/home.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<meta property="og:image" content="https://igneum.network/og/home-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="The Igneum journey: six phases, four gates">
|
||||
<meta name="twitter:description" content="Where Igneum is: six phases from the specification to a fair launch, each closing at a published gate, and the engineering log’s latest entries. No calendar dates.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/home.png?v=4">
|
||||
<meta name="twitter:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="Every criticism Igneum expects, in the critic's words, with what was done, the status and the date. 190 entries. Nothing deleted, nothing softened.">
|
||||
<link rel="canonical" href="https://igneum.network/ledger">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum ledger: every criticism, answered">
|
||||
<meta property="og:description" content="190 criticisms in the critic's words, with what was done, the status and the date.">
|
||||
<meta property="og:title" content="The Igneum ledger: every criticism, answered">
|
||||
<meta property="og:description" content="Every criticism Igneum expects, in the critic’s words, with what was done, the status and the date.">
|
||||
<meta property="og:url" content="https://igneum.network/ledger">
|
||||
<meta property="og:image" content="https://igneum.network/og-small.png?v=3">
|
||||
<meta property="og:image:width" content="256">
|
||||
<meta property="og:image:height" content="256">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Igneum ledger: every criticism, answered">
|
||||
<meta name="twitter:description" content="190 criticisms in the critic's words, with what was done, the status and the date.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og-small.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image" content="https://igneum.network/og/ledger.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Every criticism, answered or conceded. igneum.network/ledger">
|
||||
<meta property="og:image" content="https://igneum.network/og/ledger-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Every criticism, answered or conceded. igneum.network/ledger">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="The Igneum ledger: every criticism, answered">
|
||||
<meta name="twitter:description" content="Every criticism Igneum expects, in the critic’s words, with what was done, the status and the date.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/ledger.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Every criticism, answered or conceded. igneum.network/ledger">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
<link rel="icon" href="/icon-192.png" type="image/png" sizes="192x192">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="A Devnet 3 balance your browser proves itself: certificate, headers, coinbase, segment record and account proof, all recomputed in the tab. Devnet 3, no value.">
|
||||
<link rel="canonical" href="https://igneum.network/light">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum light wallet">
|
||||
<meta property="og:description" content="A Devnet 3 balance your browser proves itself: certificate, headers, coinbase, segment record and account proof, all recomputed in the tab. Devnet 3, no value.">
|
||||
<meta property="og:description" content="A Devnet 3 balance your browser proves itself: certificate, headers and account proof, recomputed in the tab.">
|
||||
<meta property="og:url" content="https://igneum.network/light">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/light.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="A balance your browser proves. igneum.network/light">
|
||||
<meta property="og:image" content="https://igneum.network/og/light-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="A balance your browser proves. igneum.network/light">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum light wallet">
|
||||
<meta name="twitter:description" content="A Devnet 3 balance your browser proves itself: certificate, headers, coinbase, segment record and account proof, all recomputed in the tab. Devnet 3, no value.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:description" content="A Devnet 3 balance your browser proves itself: certificate, headers and account proof, recomputed in the tab.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/light.png?v=4">
|
||||
<meta name="twitter:image:alt" content="A balance your browser proves. igneum.network/light">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="The Igneum litepaper. The hourly GPU lottery, blocks proven by miners, GHOSTDAG ordering, miner-only finality, the 4 billion cap. No premine, no stake.">
|
||||
<link rel="canonical" href="https://igneum.network/litepaper">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum Litepaper: how the chain works">
|
||||
<meta property="og:description" content="The Igneum litepaper. The hourly GPU lottery, blocks proven by miners, GHOSTDAG ordering, miner-only finality, the 4 billion cap. No premine, no stake.">
|
||||
<meta property="og:title" content="The Igneum litepaper">
|
||||
<meta property="og:description" content="The hourly GPU lottery, blocks proven by miners, miner-only finality. No premine, no stake.">
|
||||
<meta property="og:url" content="https://igneum.network/litepaper">
|
||||
<meta property="og:image" content="https://igneum.network/og-small.png?v=3">
|
||||
<meta property="og:image:width" content="256">
|
||||
<meta property="og:image:height" content="256">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Igneum Litepaper: how the chain works">
|
||||
<meta name="twitter:description" content="The Igneum litepaper. The hourly GPU lottery, blocks proven by miners, GHOSTDAG ordering, miner-only finality, the 4 billion cap. No premine, no stake.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og-small.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image" content="https://igneum.network/og/litepaper.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Mined by GPUs. Proven by fire. igneum.network/litepaper">
|
||||
<meta property="og:image" content="https://igneum.network/og/litepaper-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Mined by GPUs. Proven by fire. igneum.network/litepaper">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="The Igneum litepaper">
|
||||
<meta name="twitter:description" content="The hourly GPU lottery, blocks proven by miners, miner-only finality. No premine, no stake.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/litepaper.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Mined by GPUs. Proven by fire. igneum.network/litepaper">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="The Igneum network observatory: every block and its connections, the miners, the provers paid and the finality rule, read from a node every two seconds.">
|
||||
<link rel="canonical" href="https://igneum.network/live">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum live devnet">
|
||||
<meta property="og:description" content="The Igneum devnet as it happens: every block, the miners, the provers paid and the finality rule, read from a node every two seconds.">
|
||||
<meta property="og:description" content="Every block, the miners, the provers paid and the finality rule, read from a node every two seconds.">
|
||||
<meta property="og:url" content="https://igneum.network/live">
|
||||
<meta property="og:image" content="https://igneum.network/og-small.png?v=3">
|
||||
<meta property="og:image:width" content="256">
|
||||
<meta property="og:image:height" content="256">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta property="og:image" content="https://igneum.network/og/live.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="The work becomes the chain. igneum.network/live">
|
||||
<meta property="og:image" content="https://igneum.network/og/live-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="The work becomes the chain. igneum.network/live">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum live devnet">
|
||||
<meta name="twitter:description" content="The Igneum devnet as it happens: every block, the miners, the provers paid and the finality rule, read from a node every two seconds.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og-small.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:description" content="Every block, the miners, the provers paid and the finality rule, read from a node every two seconds.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/live.png?v=4">
|
||||
<meta name="twitter:image:alt" content="The work becomes the chain. igneum.network/live">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="Add the Igneum network to MetaMask or any Ethereum wallet in one click: chain id, RPC URL, the IGN symbol and 18 decimals. Devnet today, public testnet next.">
|
||||
<link rel="canonical" href="https://igneum.network/metamask">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Add Igneum to MetaMask">
|
||||
<meta property="og:description" content="Add the Igneum network to MetaMask or any Ethereum wallet in one click: chain id, RPC URL, the IGN symbol and 18 decimals. Devnet today, public testnet next.">
|
||||
<meta property="og:description" content="Add Igneum to MetaMask or any Ethereum wallet in one click: chain id, RPC URL, the IGN symbol and decimals.">
|
||||
<meta property="og:url" content="https://igneum.network/metamask">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/build.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="Build on Igneum. igneum.network/build">
|
||||
<meta property="og:image" content="https://igneum.network/og/build-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Build on Igneum. igneum.network/build">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Add Igneum to MetaMask">
|
||||
<meta name="twitter:description" content="Add the Igneum network to MetaMask or any Ethereum wallet in one click: chain id, RPC URL, the IGN symbol and 18 decimals. Devnet today, public testnet next.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:description" content="Add Igneum to MetaMask or any Ethereum wallet in one click: chain id, RPC URL, the IGN symbol and decimals.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/build.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Build on Igneum. igneum.network/build">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="One click installs the node, the miner and the prover and makes your wallet. Every card mines: NVIDIA, AMD and Apple silicon. Windows, macOS, Linux and HiveOS, with the measured rate per card and a visible 1% dev fee.">
|
||||
<link rel="canonical" href="https://igneum.network/miner">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum Ember, the one-click GPU miner">
|
||||
<meta property="og:description" content="One click installs the node, the miner and the prover and makes your wallet. Every card mines: NVIDIA, AMD and Apple silicon. Windows, macOS, Linux and HiveOS, with the measured rate per card and a visible 1% dev fee.">
|
||||
<meta property="og:description" content="One click installs the node, the miner and the prover. Every card mines: NVIDIA, AMD and Apple silicon.">
|
||||
<meta property="og:url" content="https://igneum.network/miner">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/miner.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="Install. Start. The card mines. igneum.network/miner">
|
||||
<meta property="og:image" content="https://igneum.network/og/miner-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Install. Start. The card mines. igneum.network/miner">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum Ember, the one-click GPU miner">
|
||||
<meta name="twitter:description" content="One click installs the node, the miner and the prover and makes your wallet. Every card mines: NVIDIA, AMD and Apple silicon. Windows, macOS, Linux and HiveOS, with the measured rate per card and a visible 1% dev fee.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:description" content="One click installs the node, the miner and the prover. Every card mines: NVIDIA, AMD and Apple silicon.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/miner.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Install. Start. The card mines. igneum.network/miner">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="Measured Igneum hash rates per GPU: card, generator version, best MH/s, MH per watt where measured, miner version, date and the log entry each number came from.">
|
||||
<link rel="canonical" href="https://igneum.network/miners">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum GPU bench table">
|
||||
<meta property="og:description" content="Measured Igneum hash rates per GPU: card, generator version, best MH/s, MH per watt where measured, miner version, date and the log entry each number came from.">
|
||||
<meta property="og:description" content="Measured hash rates per card, MH per watt where measured, and the log entry behind each number.">
|
||||
<meta property="og:url" content="https://igneum.network/miners">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/bench.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="Every number, with the entry it came from. igneum.network/bench">
|
||||
<meta property="og:image" content="https://igneum.network/og/bench-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Every number, with the entry it came from. igneum.network/bench">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum GPU bench table">
|
||||
<meta name="twitter:description" content="Measured Igneum hash rates per GPU: card, generator version, best MH/s, MH per watt where measured, miner version, date and the log entry each number came from.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:description" content="Measured hash rates per card, MH per watt where measured, and the log entry behind each number.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/bench.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Every number, with the entry it came from. igneum.network/bench">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
BIN
site/og/bench-square.png
Normal file
|
After Width: | Height: | Size: 150 KiB |
BIN
site/og/bench.png
Normal file
|
After Width: | Height: | Size: 105 KiB |
BIN
site/og/build-square.png
Normal file
|
After Width: | Height: | Size: 136 KiB |
BIN
site/og/build.png
Normal file
|
After Width: | Height: | Size: 93 KiB |
85
site/og/card.html
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Igneum share card</title>
|
||||
<!-- The share card template (the link-preview lane, 8 October 2026). Not a served page: site/og/render.mjs opens it with
|
||||
?card=<key>&size=wide|square, reads the lines from site/og/pages.mjs and screenshots the stage. Palette and type are the
|
||||
site's own tokens (site/site.css): obsidian, ember, molten, bone, ash; Unbounded for the line, IBM Plex for the rest.
|
||||
Design: one centred stack so the centre square crop (WhatsApp's small thumbnail) still holds the mark and the line;
|
||||
a soft ember glow behind the mark; a thin ember rule; the route in mono at the foot. Nothing on it dates. -->
|
||||
<style>
|
||||
@font-face{font-family:'Unbounded';font-weight:700;src:url(../fonts/unbounded-700.woff2) format('woff2')}
|
||||
@font-face{font-family:'Unbounded';font-weight:900;src:url(../fonts/unbounded-900.woff2) format('woff2')}
|
||||
@font-face{font-family:'Plex Sans';font-weight:400;src:url(../fonts/plex-sans-400.woff2) format('woff2')}
|
||||
@font-face{font-family:'Plex Sans';font-weight:500;src:url(../fonts/plex-sans-500.woff2) format('woff2')}
|
||||
@font-face{font-family:'Plex Mono';font-weight:500;src:url(../fonts/plex-mono-500.woff2) format('woff2')}
|
||||
:root{--obsidian:#0C0C0E;--graphite:#16161A;--line:#2A2A30;--ember:#F2541B;--ember-hi:#FF6A2B;--molten:#FFB35C;--bone:#F4F1EC;--ink-2:#C9C7C2;--ash:#9A9A9E}
|
||||
html,body{margin:0;background:var(--obsidian)}
|
||||
body{font-family:'Plex Sans',Arial,sans-serif;color:var(--bone);-webkit-font-smoothing:antialiased;text-rendering:geometricPrecision}
|
||||
#stage{position:relative;width:1200px;height:630px;overflow:hidden;background:var(--obsidian)}
|
||||
#stage.square{height:1200px}
|
||||
/* the glow: one soft ember light behind the mark, a blurred disc rather than a radial gradient (Chromium dithers gradients, which doubles the PNG) */
|
||||
.glow{position:absolute;left:50%;top:150px;width:560px;height:560px;transform:translate(-50%,-50%);border-radius:50%;background:var(--ember);opacity:.26;filter:blur(150px)}
|
||||
.square .glow{top:360px;width:720px;height:720px;filter:blur(190px)}
|
||||
.stack{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 110px;gap:0}
|
||||
.square .stack{padding:0 120px}
|
||||
.mark{width:132px;height:132px;flex:none;filter:drop-shadow(0 0 28px rgba(242,84,27,.45))}
|
||||
.square .mark{width:230px;height:230px;margin-bottom:12px}
|
||||
.kicker{margin:26px 0 14px;font:500 17px/1 'Plex Mono',monospace;letter-spacing:.22em;text-transform:uppercase;color:var(--molten)}
|
||||
.square .kicker{margin:40px 0 22px;font-size:22px}
|
||||
.line{margin:0;font:700 54px/1.14 'Unbounded',sans-serif;letter-spacing:-.012em;color:var(--bone);max-width:980px;text-wrap:balance}
|
||||
.square .line{font-size:70px;max-width:960px}
|
||||
.sub{margin:22px 0 0;font:400 26px/1.4 'Plex Sans',sans-serif;color:var(--ink-2);max-width:860px;text-wrap:balance}
|
||||
.square .sub{margin-top:30px;font-size:32px;max-width:900px}
|
||||
.foot{position:absolute;left:0;right:0;bottom:0;height:78px;display:flex;align-items:center;justify-content:space-between;padding:0 60px;border-top:1px solid var(--line)}
|
||||
.square .foot{height:110px;padding:0 80px}
|
||||
.foot .brand{display:flex;align-items:center;gap:12px;font:900 19px/1 'Unbounded',sans-serif;letter-spacing:.14em;color:var(--bone)}
|
||||
.square .foot .brand{font-size:24px}
|
||||
.foot .brand svg{width:22px;height:22px}
|
||||
.square .foot .brand svg{width:28px;height:28px}
|
||||
.foot .route{font:500 18px/1 'Plex Mono',monospace;color:var(--ember-hi);letter-spacing:.02em}
|
||||
.square .foot .route{font-size:23px}
|
||||
.rule{position:absolute;left:50%;bottom:78px;width:160px;height:3px;transform:translateX(-50%);background:var(--ember);border-radius:2px;opacity:.95}
|
||||
.square .rule{bottom:110px;width:200px}
|
||||
/* fit: a card whose stack would run into the foot shrinks its type a step (checked by the renderer, which fails on an overflow) */
|
||||
.tight .line{font-size:48px}.tight .sub{font-size:24px}
|
||||
.square.tight .line{font-size:62px}.square.tight .sub{font-size:30px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="stage">
|
||||
<div class="glow"></div>
|
||||
<div class="stack">
|
||||
<svg class="mark" viewBox="0 0 100 100" aria-hidden="true"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"/><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"/></svg>
|
||||
<div class="kicker" id="kicker"></div>
|
||||
<h1 class="line" id="line"></h1>
|
||||
<p class="sub" id="sub"></p>
|
||||
</div>
|
||||
<div class="rule"></div>
|
||||
<div class="foot">
|
||||
<div class="brand"><svg viewBox="0 0 100 100" aria-hidden="true"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"/><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"/></svg>IGNEUM</div>
|
||||
<div class="route" id="route"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="module">
|
||||
import { CARDS } from './pages.mjs';
|
||||
const q = new URLSearchParams(location.search);
|
||||
const key = q.get('card') || 'home', size = q.get('size') || 'wide';
|
||||
const c = CARDS[key]; if (!c) throw new Error('no card ' + key);
|
||||
const stage = document.getElementById('stage'); if (size === 'square') stage.classList.add('square');
|
||||
// the widow guard: the last two words of each line are glued (copy law rule 18)
|
||||
const glue = s => s.replace(/ (\S+)$/, ' $1');
|
||||
document.getElementById('kicker').textContent = c.kicker;
|
||||
document.getElementById('line').textContent = glue(c.title);
|
||||
document.getElementById('sub').textContent = glue(c.sub);
|
||||
document.getElementById('route').textContent = c.route;
|
||||
document.title = 'Igneum share card: ' + key + ' ' + size;
|
||||
await document.fonts.ready;
|
||||
// a stack that reaches the foot takes the tight step; still too tall is a render failure the renderer reads
|
||||
const fits = () => { const r = document.querySelector('.stack').getBoundingClientRect(); const h = [...document.querySelectorAll('.stack > *')].reduce((a, e) => a + e.getBoundingClientRect().height, 0) + 40; return h < r.height - (size === 'square' ? 110 : 78) - 40; };
|
||||
if (!fits()) stage.classList.add('tight');
|
||||
window.__card = { key, size, fits: fits(), lines: Math.round(document.getElementById('line').getBoundingClientRect().height / (parseFloat(getComputedStyle(document.getElementById('line')).fontSize) * 1.14)) };
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
BIN
site/og/download-square.png
Normal file
|
After Width: | Height: | Size: 149 KiB |
BIN
site/og/download.png
Normal file
|
After Width: | Height: | Size: 104 KiB |
BIN
site/og/economics-square.png
Normal file
|
After Width: | Height: | Size: 154 KiB |
BIN
site/og/economics.png
Normal file
|
After Width: | Height: | Size: 108 KiB |
BIN
site/og/explorer-square.png
Normal file
|
After Width: | Height: | Size: 144 KiB |
BIN
site/og/explorer.png
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
site/og/faucet-square.png
Normal file
|
After Width: | Height: | Size: 136 KiB |
BIN
site/og/faucet.png
Normal file
|
After Width: | Height: | Size: 93 KiB |
BIN
site/og/grants-square.png
Normal file
|
After Width: | Height: | Size: 139 KiB |
BIN
site/og/grants.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
site/og/home-square.png
Normal file
|
After Width: | Height: | Size: 150 KiB |
BIN
site/og/home.png
Normal file
|
After Width: | Height: | Size: 104 KiB |
BIN
site/og/income-square.png
Normal file
|
After Width: | Height: | Size: 144 KiB |
BIN
site/og/income.png
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
site/og/ledger-square.png
Normal file
|
After Width: | Height: | Size: 153 KiB |
BIN
site/og/ledger.png
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
site/og/light-square.png
Normal file
|
After Width: | Height: | Size: 149 KiB |
BIN
site/og/light.png
Normal file
|
After Width: | Height: | Size: 104 KiB |
BIN
site/og/litepaper-square.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
site/og/litepaper.png
Normal file
|
After Width: | Height: | Size: 103 KiB |
BIN
site/og/live-square.png
Normal file
|
After Width: | Height: | Size: 142 KiB |
BIN
site/og/live.png
Normal file
|
After Width: | Height: | Size: 97 KiB |
BIN
site/og/miner-square.png
Normal file
|
After Width: | Height: | Size: 142 KiB |
BIN
site/og/miner.png
Normal file
|
After Width: | Height: | Size: 97 KiB |
BIN
site/og/oracle-square.png
Normal file
|
After Width: | Height: | Size: 153 KiB |
BIN
site/og/oracle.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
130
site/og/pages.mjs
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
// The share cards and the share metas, in one place (the link-preview lane, 8 October 2026).
|
||||
//
|
||||
// Every served route has one row here: the share title (what WhatsApp, iMessage, Slack, X and LinkedIn print under the card),
|
||||
// the share description, and the CARD it shows (a file under site/og/, rendered from site/og/card.html by site/og/render.mjs
|
||||
// on a build box, never on the Mac). site/build.mjs writes the og: and twitter: metas of every page from this file alone:
|
||||
// the hand-written pages get them injected between <!-- share:start --> and <!-- share:end -->, the generated pages through
|
||||
// meta(). Nothing is pasted by hand into a page.
|
||||
//
|
||||
// Limits (what the readers truncate): og:title under 60 characters, og:description under 110, the wide card 1200 x 630 PNG
|
||||
// under 280 KB on an absolute https URL (WhatsApp's ceiling is 300 KB), the square card 1200 x 1200 for the readers that crop
|
||||
// to a square. Card lines carry nothing that dates: no rate, no height, no price, no version, no person.
|
||||
//
|
||||
// The copy law applies: no em dashes, no two-beat antithesis, no aphorism, short lines, one point per card.
|
||||
|
||||
export const ORIGIN = 'https://igneum.network';
|
||||
// bump when the cards are re-rendered so every reader refetches (WhatsApp and Slack cache a card for days)
|
||||
export const OG_VERSION = '4';
|
||||
|
||||
// The cards: key -> the lines on the card. Rendered to site/og/<key>.png (1200 x 630) and site/og/<key>-square.png (1200 x 1200).
|
||||
// kicker: the small ember line above; title: the one line; sub: the quiet line under it; route: the mono line at the foot.
|
||||
export const CARDS = {
|
||||
home: { kicker: 'Igneum', title: 'The GPU-mined chain that proves every block.', sub: 'No premine. No stake. No fee to any team.', route: 'igneum.network' },
|
||||
miner: { kicker: 'Igneum Ember', title: 'Install. Start. The card mines.', sub: 'One click installs the node, the miner and the prover.', route: 'igneum.network/miner' },
|
||||
download: { kicker: 'Igneum Ember', title: 'Download. Press Start. The card mines.', sub: 'Windows, macOS, Linux and HiveOS.', route: 'igneum.network/download' },
|
||||
explorer: { kicker: 'Devnet 3 explorer', title: 'Devnet 3, block by block.', sub: 'The DAG, every transaction, every proof, the finality lock.', route: 'igneum.network/explorer' },
|
||||
swap: { kicker: 'Devnet 3 swap', title: 'Swap test tokens on Devnet 3.', sub: 'Every swap is a proven block.', route: 'igneum.network/swap' },
|
||||
build: { kicker: 'Developers', title: 'Build on Igneum.', sub: 'The EVM you know. Chain ids, RPC and a contract in five minutes.', route: 'igneum.network/build' },
|
||||
grants: { kicker: 'Grants', title: 'Paid in IGN, on delivery.', sub: 'Four tiers. One issue to apply. A weekly review.', route: 'igneum.network/grants' },
|
||||
live: { kicker: 'Live devnet', title: 'The work becomes the chain.', sub: 'Every block, every miner, every proof, as it happens.', route: 'igneum.network/live' },
|
||||
faucet: { kicker: 'Devnet 3 faucet', title: 'Test IGN, for building.', sub: 'Paste an address. Get a transaction hash.', route: 'igneum.network/faucet' },
|
||||
economics: { kicker: 'Economics', title: 'The economics, as the node encodes them.', sub: 'The emission, the split, the fees, each with its file and line.', route: 'igneum.network/economics' },
|
||||
litepaper: { kicker: 'Litepaper', title: 'Mined by GPUs. Proven by fire.', sub: 'The hourly GPU lottery, blocks proven by miners, miner-only finality.', route: 'igneum.network/litepaper' },
|
||||
light: { kicker: 'Light wallet', title: 'A balance your browser proves.', sub: 'Certificate, headers and account proof, recomputed in the tab.', route: 'igneum.network/light' },
|
||||
receipt: { kicker: 'Inclusion receipt', title: 'A receipt any third party re-verifies.', sub: 'Proven against the finality certificate. Checked offline with one file.', route: 'igneum.network/receipt' },
|
||||
oracle: { kicker: 'State oracle', title: 'Devnet 3 balances, read from Sepolia.', sub: 'Finality certificates and proven state roots in a contract.', route: 'igneum.network/oracle' },
|
||||
wallet: { kicker: 'Igneum Wallet', title: 'Your coins. Final means final.', sub: 'A desktop wallet that checks finality itself.', route: 'igneum.network/wallet' },
|
||||
income: { kicker: 'Income', title: 'What your card would mine.', sub: 'Pick a card, set your electricity price, read IGN a day.', route: 'igneum.network/income' },
|
||||
ledger: { kicker: 'The ledger', title: 'Every criticism, answered or conceded.', sub: 'In the critic’s words, with what was done and when.', route: 'igneum.network/ledger' },
|
||||
bench: { kicker: 'Engineering log', title: 'Every number, with the entry it came from.', sub: 'Hash rates, proving times and the runs behind them.', route: 'igneum.network/bench' },
|
||||
};
|
||||
|
||||
// The routes: path -> share title, share description, card. A generated page (bench, miners, claims, the log) that has no row
|
||||
// here shares its own <title> and description on the home card.
|
||||
export const SHARE = {
|
||||
'/': { title: 'Igneum, the GPU-mined layer 1', desc: 'Mined by GPUs, every block proven by the miners. No premine, no stake, no fee to any team.', card: 'home' },
|
||||
'/miner': { title: 'Igneum Ember, the one-click GPU miner', desc: 'One click installs the node, the miner and the prover. Every card mines: NVIDIA, AMD and Apple silicon.', card: 'miner' },
|
||||
'/download': { title: 'Download Igneum Ember', desc: 'Igneum Ember for Windows, macOS, Linux and HiveOS, and the Igneum Wallet for macOS. Only from this domain.', card: 'download' },
|
||||
'/app': { title: 'The Igneum app you mine with', desc: 'Your rate, what it costs a day, every card tuned by Ember, and the chain drawn live with your blocks ringed.', card: 'miner' },
|
||||
'/explorer': { title: 'Igneum Devnet 3 explorer', desc: 'Every block, transaction, account and proof on Devnet 3, with its finality lock. Test coins, no value.', card: 'explorer' },
|
||||
'/block': { title: 'Igneum block', desc: 'One Igneum block: header, parents, mergeset, transactions, proof records and its finality certificate.', card: 'explorer' },
|
||||
'/address': { title: 'Igneum address', desc: 'One Devnet 3 address: balance, nonce, code, its transactions and the blocks it mined.', card: 'explorer' },
|
||||
'/tx': { title: 'Igneum transaction', desc: 'One Devnet 3 transaction: status, value, fees, the block that executed it, its proof state and finality.', card: 'explorer' },
|
||||
'/proving': { title: 'Proving on Igneum Devnet 3', desc: 'The shard plan of every chain block, who proved what, the payouts and the block-to-paid latency.', card: 'explorer' },
|
||||
'/swap': { title: 'Igneum swap on Devnet 3', desc: 'Swap wrapped IGN and two test tokens on the Igneum zkEVM. Every swap is a proven block. No value.', card: 'swap' },
|
||||
'/build': { title: 'Build on Igneum: chain ids, RPC, a contract in five minutes', desc: 'Chain ids, RPC endpoints, the wallet, the faucet and a contract in five minutes. Solidity deploys unchanged.', card: 'build' },
|
||||
'/grants': { title: 'Igneum grants: tooling, apps, infrastructure, research', desc: 'Paid in IGN from the dev fee fund, on delivery. Four tiers. One issue to apply. A weekly review.', card: 'grants' },
|
||||
'/faucet': { title: 'Igneum Devnet 3 faucet', desc: 'Devnet 3 IGN for developers: a daily allowance per address, no value, no account.', card: 'faucet' },
|
||||
'/live': { title: 'Igneum live devnet', desc: 'Every block, the miners, the provers paid and the finality rule, read from a node every two seconds.', card: 'live' },
|
||||
'/economics': { title: 'Igneum economics, as the node encodes them', desc: 'The emission, the 80/20 split, the fee routes and the decimals, each with its file and line in the node.', card: 'economics' },
|
||||
'/litepaper': { title: 'The Igneum litepaper', desc: 'The hourly GPU lottery, blocks proven by miners, miner-only finality. No premine, no stake.', card: 'litepaper' },
|
||||
'/light': { title: 'Igneum light wallet', desc: 'A Devnet 3 balance your browser proves itself: certificate, headers and account proof, recomputed in the tab.', card: 'light' },
|
||||
'/receipt': { title: 'Igneum transaction inclusion receipt', desc: 'A Devnet 3 inclusion receipt proven against the finality certificate and re-verified offline with one file.', card: 'receipt' },
|
||||
'/oracle': { title: 'Igneum state oracle on Sepolia', desc: 'A Sepolia contract holds Devnet 3 finality certificates and proven state roots, so contracts read a balance.', card: 'oracle' },
|
||||
'/wallet': { title: 'Igneum Wallet, a desktop wallet that checks finality', desc: '24 words sealed on your machine, send with the fee shown, block rewards and proving payouts in one history.', card: 'wallet' },
|
||||
'/income': { title: 'Igneum income calculator', desc: 'Pick a card, set your electricity price and read IGN a day from the live network. Test IGN has no value.', card: 'income' },
|
||||
'/ledger': { title: 'The Igneum ledger: every criticism, answered', desc: 'Every criticism Igneum expects, in the critic’s words, with what was done, the status and the date.', card: 'ledger' },
|
||||
'/metamask': { title: 'Add Igneum to MetaMask', desc: 'Add Igneum to MetaMask or any Ethereum wallet in one click: chain id, RPC URL, the IGN symbol and decimals.', card: 'build' },
|
||||
'/evidence': { title: 'Igneum evidence: every claim with its status', desc: 'Every public Igneum claim with its status: designed, implemented, tested, reproduced, reviewed.', card: 'home' },
|
||||
'/bench': { title: 'The Igneum engineering log', desc: 'Every measured number with the entry it came from: hash rates, proving times and the runs behind them.', card: 'bench' },
|
||||
'/miners': { title: 'Igneum GPU bench table', desc: 'Measured hash rates per card, MH per watt where measured, and the log entry behind each number.', card: 'bench' },
|
||||
'/scenes': { title: 'Igneum scenes', desc: 'Three animated views of the live feed.', card: 'live' },
|
||||
'/404': { title: 'Igneum', desc: 'Nothing is mined here.', card: 'home' },
|
||||
};
|
||||
|
||||
const esc = s => String(s).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
||||
|
||||
// The share block of one route. A route with no row shares the title and description it is given, on the home card.
|
||||
export function shareHtml(path, fallbackTitle = 'Igneum', fallbackDesc = '') {
|
||||
const row = SHARE[path] || { title: fallbackTitle, desc: fallbackDesc, card: 'home' };
|
||||
if (!CARDS[row.card]) throw new Error(`site/og/pages.mjs: route ${path} names a card that does not exist: ${row.card}`);
|
||||
const url = ORIGIN + (path === '/404' ? '/' : path);
|
||||
const wide = `${ORIGIN}/og/${row.card}.png?v=${OG_VERSION}`, square = `${ORIGIN}/og/${row.card}-square.png?v=${OG_VERSION}`;
|
||||
const alt = `${CARDS[row.card].title} ${CARDS[row.card].route}`;
|
||||
return [
|
||||
'<meta property="og:type" content="website">',
|
||||
'<meta property="og:site_name" content="Igneum">',
|
||||
`<meta property="og:title" content="${esc(row.title)}">`,
|
||||
`<meta property="og:description" content="${esc(row.desc)}">`,
|
||||
`<meta property="og:url" content="${url}">`,
|
||||
`<meta property="og:image" content="${wide}">`,
|
||||
'<meta property="og:image:type" content="image/png">',
|
||||
'<meta property="og:image:width" content="1200">',
|
||||
'<meta property="og:image:height" content="630">',
|
||||
`<meta property="og:image:alt" content="${esc(alt)}">`,
|
||||
`<meta property="og:image" content="${square}">`,
|
||||
'<meta property="og:image:type" content="image/png">',
|
||||
'<meta property="og:image:width" content="1200">',
|
||||
'<meta property="og:image:height" content="1200">',
|
||||
`<meta property="og:image:alt" content="${esc(alt)}">`,
|
||||
'<meta name="twitter:card" content="summary_large_image">',
|
||||
`<meta name="twitter:title" content="${esc(row.title)}">`,
|
||||
`<meta name="twitter:description" content="${esc(row.desc)}">`,
|
||||
`<meta name="twitter:image" content="${wide}">`,
|
||||
`<meta name="twitter:image:alt" content="${esc(alt)}">`,
|
||||
].join('\n');
|
||||
}
|
||||
|
||||
// The limits, checked by the build and by `node site/og/pages.mjs --check`.
|
||||
export function checkShare() {
|
||||
const bad = [];
|
||||
for (const [path, r] of Object.entries(SHARE)) {
|
||||
if (r.title.length > 60) bad.push(`${path}: og:title is ${r.title.length} characters (limit 60)`);
|
||||
if (r.desc.length > 110) bad.push(`${path}: og:description is ${r.desc.length} characters (limit 110)`);
|
||||
if (!CARDS[r.card]) bad.push(`${path}: card ${r.card} does not exist`);
|
||||
for (const s of [r.title, r.desc]) if (/—|--/.test(s)) bad.push(`${path}: an em dash`);
|
||||
}
|
||||
for (const [k, c] of Object.entries(CARDS)) {
|
||||
if (c.title.length > 56) bad.push(`card ${k}: the line is ${c.title.length} characters (keep it under 56 so it holds two lines)`);
|
||||
if (c.sub.length > 80) bad.push(`card ${k}: the sub line is ${c.sub.length} characters (limit 80)`);
|
||||
for (const s of [c.kicker, c.title, c.sub]) if (/—|--/.test(s)) bad.push(`card ${k}: an em dash`);
|
||||
}
|
||||
return bad;
|
||||
}
|
||||
|
||||
// the command-line check (the browser imports this file too, where there is no process)
|
||||
if (typeof process !== 'undefined' && process.argv && process.argv[1] && process.argv[1].endsWith('pages.mjs')) {
|
||||
const bad = checkShare();
|
||||
if (bad.length) { console.error(bad.join('\n')); process.exit(1); }
|
||||
console.log(`share metas: ${Object.keys(SHARE).length} routes, ${Object.keys(CARDS).length} cards, every title under 60 and every description under 110`);
|
||||
}
|
||||
80
site/og/preview.html
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Igneum share preview sheet</title>
|
||||
<!-- The reader mocks (the link-preview lane, 8 October 2026): how one route's card and metas read in WhatsApp (the large
|
||||
preview and the small square thumbnail), iMessage, X (summary_large_image) and Slack. Not a served page: site/og/render.mjs
|
||||
opens it with ?card=&title=&desc=&path= and screenshots each block. The frames approximate each app's chrome at phone
|
||||
width; they exist to catch a crop or a truncation before a link is sent, not to copy any app. -->
|
||||
<style>
|
||||
@font-face{font-family:'Plex Sans';font-weight:400;src:url(../fonts/plex-sans-400.woff2) format('woff2')}
|
||||
@font-face{font-family:'Plex Sans';font-weight:600;src:url(../fonts/plex-sans-600.woff2) format('woff2')}
|
||||
body{margin:0;background:#1b1b1f;color:#eee;font:14px/1.4 -apple-system,'Plex Sans',Arial,sans-serif;padding:24px}
|
||||
#sheet{display:grid;grid-template-columns:repeat(2,1fr);gap:28px;max-width:1130px}
|
||||
.frame{background:#0e0e10;border:1px solid #2a2a30;border-radius:14px;padding:16px}
|
||||
.frame h2{margin:0 0 12px;font:600 12px/1 'Plex Sans',sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#9a9a9e}
|
||||
.meta{margin-top:10px;font:12px/1.5 ui-monospace,monospace;color:#9a9a9e;word-break:break-all}
|
||||
/* WhatsApp: a 320 px bubble; the large preview shows the whole 1200 x 630 at bubble width; the small one crops a square thumb */
|
||||
.wa{width:320px;background:#005c4b;border-radius:12px;padding:6px;color:#e9edef;font-family:-apple-system,'Plex Sans',Arial,sans-serif}
|
||||
.wa .prev{background:#025144;border-radius:8px;overflow:hidden}
|
||||
.wa .prev img{display:block;width:100%;height:auto}
|
||||
.wa .txt{padding:8px 10px}
|
||||
.wa .t{font-weight:600;font-size:14px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
|
||||
.wa .d{font-size:13px;color:#cfd6d4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:2px}
|
||||
.wa .h{font-size:12px;color:#9fb3ae;margin-top:3px}
|
||||
.wa .link{padding:6px 10px 4px;font-size:14px;color:#53bdeb;word-break:break-all}
|
||||
.wa.small .prev{display:flex}
|
||||
.wa.small .thumb{width:92px;height:92px;flex:none;background-size:cover;background-position:center}
|
||||
.wa.small .txt{min-width:0}
|
||||
/* iMessage: a 290 px rich link, image on top, title and host under */
|
||||
.im{width:290px;border-radius:18px;overflow:hidden;background:#2c2c2e;color:#fff;font-family:-apple-system,'Plex Sans',Arial,sans-serif}
|
||||
.im img{display:block;width:100%;height:auto}
|
||||
.im .txt{padding:9px 12px 10px}
|
||||
.im .t{font-weight:600;font-size:14px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
|
||||
.im .h{font-size:12px;color:#98989d;margin-top:2px}
|
||||
/* X: summary_large_image, a 500 px card with the title over the image's foot */
|
||||
.x{width:500px;border-radius:16px;overflow:hidden;border:1px solid #2f3336;position:relative;background:#000}
|
||||
.x img{display:block;width:100%;height:auto}
|
||||
.x .cap{position:absolute;left:12px;bottom:12px;background:rgba(0,0,0,.77);color:#fff;font-size:13px;padding:2px 6px;border-radius:4px;max-width:92%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
||||
.x .h{font-size:13px;color:#71767b;margin-top:6px}
|
||||
/* Slack: an unfurl with the ember bar, title, text and the image under */
|
||||
.sl{width:520px;border-left:4px solid #F2541B;padding:6px 12px;background:#1a1d21;color:#d1d2d3;font-family:'Plex Sans',Arial,sans-serif}
|
||||
.sl .s{font-weight:600;color:#fff;font-size:15px}
|
||||
.sl .t{font-weight:600;color:#1d9bd1;font-size:15px;margin-top:2px}
|
||||
.sl .d{font-size:15px;margin-top:2px}
|
||||
.sl img{display:block;width:360px;height:auto;margin-top:8px;border-radius:8px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="sheet">
|
||||
<div class="frame" id="wa-large"><h2>WhatsApp, large preview</h2>
|
||||
<div class="wa"><div class="prev"><img id="wa-img" alt=""><div class="txt"><div class="t" id="wa-t"></div><div class="d" id="wa-d"></div><div class="h" id="wa-h"></div></div></div><div class="link" id="wa-link"></div></div>
|
||||
<div class="meta">og:image 1200 x 630, the whole card at bubble width</div></div>
|
||||
<div class="frame" id="wa-small"><h2>WhatsApp, square thumbnail</h2>
|
||||
<div class="wa small"><div class="prev"><div class="thumb" id="was-thumb"></div><div class="txt"><div class="t" id="was-t"></div><div class="d" id="was-d"></div><div class="h" id="was-h"></div></div></div><div class="link" id="was-link"></div></div>
|
||||
<div class="meta">the centre square crop of the wide card (the small-thumbnail mode); the square variant is the second og:image</div></div>
|
||||
<div class="frame" id="imessage"><h2>iMessage</h2>
|
||||
<div class="im"><img id="im-img" alt=""><div class="txt"><div class="t" id="im-t"></div><div class="h" id="im-h"></div></div></div>
|
||||
<div class="meta">og:image and og:title</div></div>
|
||||
<div class="frame" id="x"><h2>X, summary_large_image</h2>
|
||||
<div class="x"><img id="x-img" alt=""><div class="cap" id="x-t"></div></div><div class="x h" id="x-h" style="border:0;background:none;border-radius:0"></div>
|
||||
<div class="meta">twitter:card, twitter:title, twitter:image</div></div>
|
||||
<div class="frame" id="slack" style="grid-column:1 / span 2"><h2>Slack unfurl</h2>
|
||||
<div class="sl"><div class="s">Igneum</div><div class="t" id="sl-t"></div><div class="d" id="sl-d"></div><img id="sl-img" alt=""></div>
|
||||
<div class="meta" id="sl-meta"></div></div>
|
||||
</div>
|
||||
<script type="module">
|
||||
const q = new URLSearchParams(location.search);
|
||||
const card = q.get('card') || 'home', title = q.get('title') || 'Igneum', desc = q.get('desc') || '', path = q.get('path') || '/';
|
||||
const img = `./${card}.png`, url = 'igneum.network' + (path === '/' ? '' : path);
|
||||
for (const id of ['wa-img', 'im-img', 'x-img', 'sl-img']) document.getElementById(id).src = img;
|
||||
document.getElementById('was-thumb').style.backgroundImage = `url(${img})`;
|
||||
for (const id of ['wa-t', 'was-t', 'im-t', 'x-t', 'sl-t']) document.getElementById(id).textContent = title;
|
||||
for (const id of ['wa-d', 'was-d', 'sl-d']) document.getElementById(id).textContent = desc;
|
||||
for (const id of ['wa-h', 'was-h', 'im-h', 'x-h']) document.getElementById(id).textContent = 'igneum.network';
|
||||
for (const id of ['wa-link', 'was-link']) document.getElementById(id).textContent = 'https://' + url;
|
||||
document.getElementById('sl-meta').textContent = `og:title ${title.length} chars, og:description ${desc.length} chars`;
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
BIN
site/og/receipt-square.png
Normal file
|
After Width: | Height: | Size: 154 KiB |
BIN
site/og/receipt.png
Normal file
|
After Width: | Height: | Size: 108 KiB |
126
site/og/render.mjs
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
#!/usr/bin/env node
|
||||
// Render the share cards (the link-preview lane, 8 October 2026). One command refreshes every card:
|
||||
//
|
||||
// node site/og/render.mjs ship site/og and site/fonts to build box 2, render there with its Playwright, bring the
|
||||
// PNGs back into site/og/ (the Mac renders nothing: the standing rule of 7 October 2026)
|
||||
// node site/og/render.mjs --box 1 the same on box 1
|
||||
// node site/og/render.mjs --local render HERE (what the box runs; needs Playwright on the path, env.sh sets NODE_PATH)
|
||||
// node site/og/render.mjs --previews DIR also render the reader mocks (WhatsApp large and square, iMessage, X, Slack) for every
|
||||
// card from site/og/preview.html into DIR (not committed)
|
||||
// node site/og/render.mjs --only home one card
|
||||
//
|
||||
// Output: site/og/<key>.png (1200 x 630) and site/og/<key>-square.png (1200 x 1200), one per CARDS row in site/og/pages.mjs.
|
||||
// Checks on every render: the stack fits above the foot, the line holds at most two lines (three on the square), the wide PNG
|
||||
// is under 280 KB (WhatsApp's ceiling is 300 KB). A failed check is a non-zero exit and names the card.
|
||||
// Then: bump OG_VERSION in site/og/pages.mjs, `node site/build.mjs`, commit the PNGs with the pages.
|
||||
import { readFileSync, writeFileSync, existsSync, mkdirSync, statSync, readdirSync } from 'node:fs';
|
||||
import { createServer } from 'node:http';
|
||||
import { join, dirname, basename, resolve, extname } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { createRequire } from 'node:module';
|
||||
import { spawnSync } from 'node:child_process';
|
||||
import os from 'node:os';
|
||||
|
||||
const here = dirname(fileURLToPath(import.meta.url));
|
||||
const site = resolve(here, '..');
|
||||
const root = resolve(site, '..');
|
||||
const args = process.argv.slice(2);
|
||||
const has = f => args.includes(f);
|
||||
const opt = (f, d) => { const i = args.indexOf(f); return i >= 0 && args[i + 1] !== undefined ? args[i + 1] : d; };
|
||||
const ONLY = opt('--only', '');
|
||||
const PREVIEWS = opt('--previews', '');
|
||||
const WIDE_LIMIT = 280 * 1024;
|
||||
|
||||
function loadPlaywright() {
|
||||
const dirs = [root, process.env.IGNEUM_PLAYWRIGHT_DIR, '/srv/builds/_bin/overlap'].filter(Boolean);
|
||||
for (const d of dirs) { try { return createRequire(join(d, 'package.json'))('playwright'); } catch (e) { /* next */ } }
|
||||
try { return createRequire(import.meta.url)('playwright'); } catch (e) { return null; }
|
||||
}
|
||||
|
||||
// a static server for site/ (the template imports pages.mjs as a module, which file:// refuses)
|
||||
function serve(dir) {
|
||||
const types = { '.html': 'text/html', '.mjs': 'text/javascript', '.js': 'text/javascript', '.css': 'text/css', '.woff2': 'font/woff2', '.png': 'image/png', '.svg': 'image/svg+xml', '.json': 'application/json' };
|
||||
const srv = createServer((rq, rs) => {
|
||||
const p = decodeURIComponent(new URL(rq.url, 'http://x').pathname);
|
||||
const f = resolve(dir, '.' + p);
|
||||
if (!f.startsWith(dir) || !existsSync(f) || statSync(f).isDirectory()) { rs.writeHead(404); rs.end(); return; }
|
||||
rs.writeHead(200, { 'Content-Type': types[extname(f)] || 'application/octet-stream' }); rs.end(readFileSync(f));
|
||||
});
|
||||
return new Promise(res => srv.listen(0, '127.0.0.1', () => res({ base: `http://127.0.0.1:${srv.address().port}`, close: () => srv.close() })));
|
||||
}
|
||||
|
||||
async function renderLocal() {
|
||||
const pw = loadPlaywright();
|
||||
if (!pw) { console.error('render: Playwright is not installed here (on a build box: . /srv/builds/_bin/overlap/env.sh)'); return 2; }
|
||||
const { CARDS, SHARE } = await import('./pages.mjs');
|
||||
const keys = Object.keys(CARDS).filter(k => !ONLY || k === ONLY);
|
||||
const { base, close } = await serve(site);
|
||||
const browser = await pw.chromium.launch({ args: ['--no-sandbox', '--disable-gpu', '--font-render-hinting=none'] });
|
||||
const fails = [];
|
||||
try {
|
||||
const ctx = await browser.newContext({ viewport: { width: 1200, height: 1200 }, deviceScaleFactor: 1 });
|
||||
const page = await ctx.newPage();
|
||||
page.on('pageerror', e => console.error('page error: ' + e.message)); page.on('console', m => { if (m.type() === 'error') console.error('console: ' + m.text()); });
|
||||
for (const key of keys) for (const size of ['wide', 'square']) {
|
||||
await page.goto(`${base}/og/card.html?card=${key}&size=${size}`, { waitUntil: 'load' });
|
||||
await page.waitForFunction(() => window.__card, null, { timeout: 15000 });
|
||||
await page.evaluate(() => document.fonts.ready); await page.waitForTimeout(150);
|
||||
const info = await page.evaluate(() => window.__card);
|
||||
const out = join(here, size === 'wide' ? `${key}.png` : `${key}-square.png`);
|
||||
const el = await page.$('#stage'); await el.screenshot({ path: out, type: 'png', omitBackground: false });
|
||||
const bytes = statSync(out).size;
|
||||
const maxLines = size === 'wide' ? 2 : 3;
|
||||
if (!info.fits) fails.push(`${key} ${size}: the stack does not fit above the foot`);
|
||||
if (info.lines > maxLines) fails.push(`${key} ${size}: the line wraps to ${info.lines} lines (limit ${maxLines})`);
|
||||
if (size === 'wide' && bytes > WIDE_LIMIT) fails.push(`${key} wide: ${Math.round(bytes / 1024)} KB, over the 280 KB ceiling`);
|
||||
console.log(`${basename(out)}: ${size === 'wide' ? '1200x630' : '1200x1200'}, ${Math.round(bytes / 1024)} KB, ${info.lines} line${info.lines === 1 ? '' : 's'}${info.fits ? '' : ', DOES NOT FIT'}`);
|
||||
}
|
||||
if (PREVIEWS) {
|
||||
const dir = resolve(PREVIEWS); mkdirSync(dir, { recursive: true });
|
||||
const routes = Object.entries(SHARE).filter(([, r]) => keys.includes(r.card));
|
||||
// one preview sheet per card: the route that owns it (the first route naming it)
|
||||
const seen = new Set();
|
||||
for (const [path, r] of routes) {
|
||||
if (seen.has(r.card)) continue; seen.add(r.card);
|
||||
const q = new URLSearchParams({ card: r.card, title: r.title, desc: r.desc, path }).toString();
|
||||
await page.setViewportSize({ width: 1180, height: 1500 });
|
||||
await page.goto(`${base}/og/preview.html?${q}`, { waitUntil: 'load' });
|
||||
await page.evaluate(() => document.fonts.ready); await page.waitForTimeout(250);
|
||||
for (const [id, name] of [['sheet', 'sheet'], ['wa-large', 'whatsapp-large'], ['wa-small', 'whatsapp-square'], ['imessage', 'imessage'], ['x', 'x'], ['slack', 'slack']]) {
|
||||
const el = await page.$('#' + id); if (!el) continue;
|
||||
await el.screenshot({ path: join(dir, `${r.card}--${name}.png`), type: 'png' });
|
||||
}
|
||||
console.log(`previews: ${r.card} (${path}) -> ${dir}`);
|
||||
}
|
||||
}
|
||||
} finally { await browser.close(); close(); }
|
||||
if (fails.length) { console.error('render FAILED:\n' + fails.join('\n')); return 1; }
|
||||
console.log(`rendered ${keys.length} cards x 2 sizes into ${here}`);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// ship to a box and run there (the overlap check's shape: tools/ci/overlap-check.mjs runRemote)
|
||||
function hostFile(box) { const b = join(os.homedir(), '.config', 'igneum', 'build-server'); return box === '1' ? b : b + '-' + box; }
|
||||
function runRemote() {
|
||||
const box = String(opt('--box', '2'));
|
||||
const hf = hostFile(box); if (!existsSync(hf)) { console.error(`render: no box host file at ${hf}`); return 2; }
|
||||
const host = readFileSync(hf, 'utf8').trim(); const key = join(os.homedir(), '.ssh', 'igneum_ed25519');
|
||||
const wt = basename(root); const remote = `/srv/builds/_og/${wt}`;
|
||||
const ssh = ['-i', key, '-o', 'BatchMode=yes', '-o', 'StrictHostKeyChecking=accept-new'];
|
||||
const sh = (cmd) => spawnSync('ssh', ssh.concat([host, cmd]), { stdio: 'inherit' });
|
||||
const rs = (src, dst, extra = []) => { const r = spawnSync('rsync', ['-a', '--delete', ...extra, '-e', `ssh ${ssh.join(' ')}`, src + '/', `${host}:${dst}/`], { stdio: 'inherit' }); if (r.status !== 0) throw new Error('rsync failed for ' + src); };
|
||||
sh(`mkdir -p ${remote}/site/og ${remote}/site/fonts`);
|
||||
rs(join(site, 'og'), `${remote}/site/og`, ['--exclude', '*.png']);
|
||||
rs(join(site, 'fonts'), `${remote}/site/fonts`);
|
||||
const rargs = ['--local']; if (ONLY) rargs.push('--only', ONLY); if (PREVIEWS) rargs.push('--previews', 'previews');
|
||||
console.log(`render: on box ${box} (${host}:${remote})`);
|
||||
const r = sh(`cd ${remote} && . /srv/builds/_bin/overlap/env.sh && nice -n 10 node site/og/render.mjs ${rargs.map(a => `'${a}'`).join(' ')}`);
|
||||
const back = (what, to) => spawnSync('rsync', ['-a', '-e', `ssh ${ssh.join(' ')}`, `${host}:${remote}/${what}`, to], { stdio: 'inherit' });
|
||||
back('site/og/*.png', here + '/');
|
||||
if (PREVIEWS) { const dir = resolve(PREVIEWS); mkdirSync(dir, { recursive: true }); back('previews/', dir + '/'); }
|
||||
const pngs = readdirSync(here).filter(f => f.endsWith('.png'));
|
||||
console.log(`render: ${pngs.length} PNGs in ${here}${PREVIEWS ? `, previews in ${resolve(PREVIEWS)}` : ''}`);
|
||||
return r.status ?? 1;
|
||||
}
|
||||
|
||||
if (has('--local')) process.exit(await renderLocal()); else process.exit(runRemote());
|
||||
BIN
site/og/swap-square.png
Normal file
|
After Width: | Height: | Size: 144 KiB |
BIN
site/og/swap.png
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
site/og/wallet-square.png
Normal file
|
After Width: | Height: | Size: 141 KiB |
BIN
site/og/wallet.png
Normal file
|
After Width: | Height: | Size: 96 KiB |
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="A Sepolia contract that stores Devnet 3 finality certificates and proven state roots so other contracts read a Devnet 3 balance. Devnet 3, no value.">
|
||||
<link rel="canonical" href="https://igneum.network/oracle">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum state oracle on Sepolia">
|
||||
<meta property="og:description" content="A Sepolia contract that stores Devnet 3 finality certificates and proven state roots so other contracts read a Devnet 3 balance. Devnet 3, no value.">
|
||||
<meta property="og:description" content="A Sepolia contract holds Devnet 3 finality certificates and proven state roots, so contracts read a balance.">
|
||||
<meta property="og:url" content="https://igneum.network/oracle">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/oracle.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="Devnet 3 balances, read from Sepolia. igneum.network/oracle">
|
||||
<meta property="og:image" content="https://igneum.network/og/oracle-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Devnet 3 balances, read from Sepolia. igneum.network/oracle">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum state oracle on Sepolia">
|
||||
<meta name="twitter:description" content="A Sepolia contract that stores Devnet 3 finality certificates and proven state roots so other contracts read a Devnet 3 balance. Devnet 3, no value.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:description" content="A Sepolia contract holds Devnet 3 finality certificates and proven state roots, so contracts read a balance.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/oracle.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Devnet 3 balances, read from Sepolia. igneum.network/oracle">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="Every borrowed component of Igneum credited in public: the origin and licence, what changed, why the design needed it, and how the change is measured. What is new in Igneum, and what is adopted from upstream.">
|
||||
<link rel="canonical" href="https://igneum.network/provenance">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum provenance: built on the shoulders">
|
||||
<meta property="og:description" content="Every borrowed component of Igneum credited in public: the origin and licence, what changed, why the design needed it, and how the change is measured. What is new in Igneum, and what is adopted from upstream.">
|
||||
<meta property="og:url" content="https://igneum.network/provenance">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/home.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<meta property="og:image" content="https://igneum.network/og/home-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum provenance: built on the shoulders">
|
||||
<meta name="twitter:description" content="Every borrowed component of Igneum credited in public: the origin and licence, what changed, why the design needed it, and how the change is measured. What is new in Igneum, and what is adopted from upstream.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/home.png?v=4">
|
||||
<meta name="twitter:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="Proving on Devnet 3: the shard plan of every chain block, who proved what, the payouts and the block-to-paid latency.">
|
||||
<link rel="canonical" href="https://igneum.network/proving">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum Devnet 3 proving">
|
||||
<meta property="og:description" content="Proving on Devnet 3: the shard plan of every chain block, who proved what, the payouts and the block-to-paid latency.">
|
||||
<meta property="og:title" content="Proving on Igneum Devnet 3">
|
||||
<meta property="og:description" content="The shard plan of every chain block, who proved what, the payouts and the block-to-paid latency.">
|
||||
<meta property="og:url" content="https://igneum.network/proving">
|
||||
<meta property="og:image" content="https://igneum.network/og-small.png?v=3">
|
||||
<meta property="og:image:width" content="256">
|
||||
<meta property="og:image:height" content="256">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Igneum Devnet 3 proving">
|
||||
<meta name="twitter:description" content="Proving on Devnet 3: the shard plan of every chain block, who proved what, the payouts and the block-to-paid latency.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og-small.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image" content="https://igneum.network/og/explorer.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Devnet 3, block by block. igneum.network/explorer">
|
||||
<meta property="og:image" content="https://igneum.network/og/explorer-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Devnet 3, block by block. igneum.network/explorer">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Proving on Igneum Devnet 3">
|
||||
<meta name="twitter:description" content="The shard plan of every chain block, who proved what, the payouts and the block-to-paid latency.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/explorer.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Devnet 3, block by block. igneum.network/explorer">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="Monero’s random-program idea, rebuilt for graphics cards: a program per hour instead of a program per hash, a dataset that grows, and what RandomX’s record does and does not say about Igneum.">
|
||||
<link rel="canonical" href="https://igneum.network/randomx">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum and RandomX">
|
||||
<meta property="og:description" content="Monero’s random-program idea, rebuilt for graphics cards: a program per hour instead of a program per hash, a dataset that grows, and what RandomX’s record does and does not say about Igneum.">
|
||||
<meta property="og:url" content="https://igneum.network/randomx">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/home.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<meta property="og:image" content="https://igneum.network/og/home-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum and RandomX">
|
||||
<meta name="twitter:description" content="Monero’s random-program idea, rebuilt for graphics cards: a program per hour instead of a program per hash, a dataset that grows, and what RandomX’s record does and does not say about Igneum.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/home.png?v=4">
|
||||
<meta name="twitter:image:alt" content="The GPU-mined chain that proves every block. igneum.network">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||
|
|
@ -3,24 +3,32 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
||||
<title>Igneum transaction inclusion receipt</title>
|
||||
<meta name="description" content="A Devnet 3 transaction inclusion receipt proven against the finality certificate, downloadable as JSON and re-verified offline by anyone with a one-file verifier. Devnet 3, no value.">
|
||||
<title>Igneum payment receipt</title>
|
||||
<meta name="description" content="A Devnet 3 payment receipt proven against the finality certificate, downloadable as JSON and re-verified offline by anyone with a one-file verifier. Devnet 3, no value.">
|
||||
<link rel="canonical" href="https://igneum.network/receipt">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum transaction inclusion receipt">
|
||||
<meta property="og:description" content="A Devnet 3 transaction inclusion receipt proven against the finality certificate, downloadable as JSON and re-verified offline by anyone with a one-file verifier. Devnet 3, no value.">
|
||||
<meta property="og:description" content="A Devnet 3 inclusion receipt proven against the finality certificate and re-verified offline with one file.">
|
||||
<meta property="og:url" content="https://igneum.network/receipt">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/receipt.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="A receipt any third party re-verifies. igneum.network/receipt">
|
||||
<meta property="og:image" content="https://igneum.network/og/receipt-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="A receipt any third party re-verifies. igneum.network/receipt">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum transaction inclusion receipt">
|
||||
<meta name="twitter:description" content="A Devnet 3 transaction inclusion receipt proven against the finality certificate, downloadable as JSON and re-verified offline by anyone with a one-file verifier. Devnet 3, no value.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:description" content="A Devnet 3 inclusion receipt proven against the finality certificate and re-verified offline with one file.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/receipt.png?v=4">
|
||||
<meta name="twitter:image:alt" content="A receipt any third party re-verifies. igneum.network/receipt">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
@ -75,8 +83,6 @@
|
|||
.why{border:1px solid var(--line-2);border-radius:var(--r-card);padding:var(--s-4) var(--s-5);background:var(--obsidian);margin:var(--s-5) 0}
|
||||
.why p{margin:0;font-size:15px;color:var(--ink-2)}.why p+p{margin-top:8px}
|
||||
.meta{display:grid;gap:6px;font:400 13px/1.6 var(--f-mono);color:var(--ash);margin:var(--s-4) 0 0}.meta code{overflow-wrap:anywhere}
|
||||
.terms{margin:var(--sec,64px) 0 var(--s-5)}.terms .kv>div{font-size:14px}.trust{border:1px solid var(--molten);border-radius:var(--r-card);padding:var(--s-4) var(--s-5);background:var(--row);margin:var(--s-4) 0}
|
||||
.trust h3{margin:0 0 8px;font-size:15px;color:var(--molten-text)}.trust ul{margin:0;padding-left:18px;font-size:14px;color:var(--ink-2);line-height:1.5}.trust li+li{margin-top:4px}
|
||||
@media (max-width:640px){.steps li{grid-template-columns:1fr}.steps li small{grid-column:1}}
|
||||
</style>
|
||||
</head>
|
||||
|
|
@ -239,24 +245,19 @@
|
|||
<!-- nav:end -->
|
||||
<main id="main" class="wrap">
|
||||
<div class="head">
|
||||
<div class="breadcrumb"><a href="/">Igneum</a><span>/</span><span>Transaction inclusion receipt</span></div>
|
||||
<div class="breadcrumb"><a href="/">Igneum</a><span>/</span><span>Payment receipt</span></div>
|
||||
<div class="eyebrow"><span class="line"></span>Reference app 2 · Devnet 3, no value</div>
|
||||
<h1>A transaction inclusion receipt any third party re-verifies<span class="accent">.</span></h1>
|
||||
<h1>A receipt any third party re-verifies<span class="accent">.</span></h1>
|
||||
</div>
|
||||
<p class="note">Paste a Devnet 3 transaction hash. This tab fetches the raw transaction, the including block's merkle path, every header up to the certified checkpoint and the certificate, then proves inclusion and finality itself. Download the receipt as JSON. Anyone checks it later with a one-file verifier, offline, with no node and no network.</p>
|
||||
<div class="trust"><h3>Which receipt this is</h3><ul>
|
||||
<li>This is a <b>transaction inclusion receipt</b>: it authenticates that the signed transaction (recipient, amount and data as signed) is included in a block that is finalised. It does not authenticate the execution outcome.</li>
|
||||
<li>The execution result (status, gas, logs) is carried as the node reported it and labelled so. A transaction can be included and finalised and still have failed.</li>
|
||||
<li>A <b>payment receipt</b> authenticates the successful transfer outcome (asset, recipient, amount) through the receipts commitment or the state commitment of a proven segment. It is the next step on this page; until it exists, this page says inclusion receipt everywhere, the file says it, and the offline verifier prints it.</li>
|
||||
</ul></div>
|
||||
|
||||
<div class="why">
|
||||
<p><b>Why this only works on a proven chain.</b> A receipt is worth something when the inclusion cannot be undone and the proof of that fits in a file: here the certificate is a weighted BLS signature by the miners over a checkpoint, and the block holding the transaction hashes into that checkpoint's past. On a chain with probabilistic finality the same file would carry a confidence, not a certificate.</p>
|
||||
<p><b>Why this only works on a proven chain.</b> A merchant's receipt is only worth something if the payment cannot be undone and the proof of that fits in a file: here the certificate is a weighted BLS signature by the miners over a checkpoint, and the block holding the payment hashes into that checkpoint's past. On a chain with probabilistic finality a receipt is a guess that ages well; here it is a fact that a file carries.</p>
|
||||
<p>Source: <code>site/lc/core.js</code> (the checks), <code>site/lc/app.js</code> (this page), <code>tools/reference-apps/receipt/verify-receipt.src.mjs</code> (the one-file verifier, bundled to <code>/lc/verify-receipt.js</code>). Test with the negative cases: <a href="/lc/test">/lc/test</a> in the browser, <code>tools/reference-apps/light-service/verify.test.mjs</code> under Node.</p>
|
||||
</div>
|
||||
|
||||
<section class="card" aria-labelledby="verify">
|
||||
<h2 id="verify">Get an inclusion receipt</h2>
|
||||
<h2 id="verify">Get a receipt</h2>
|
||||
<form class="vform" data-form="receipt" novalidate>
|
||||
<label for="tx">Transaction hash</label>
|
||||
<div class="row"><input id="tx" name="tx" inputmode="text" autocomplete="off" spellcheck="false" placeholder="0x…" pattern="^0x[0-9a-fA-F]{64}$"><button class="btn primary" type="submit">Prove it in this tab</button></div>
|
||||
|
|
@ -267,26 +268,14 @@
|
|||
|
||||
<h2 id="offline">Re-verify offline</h2>
|
||||
<p class="note">The verifier is one file of plain JavaScript with the hashing and curve code inside it: <a href="/lc/verify-receipt.js" download>verify-receipt.js</a>. It runs under Node 18 or later (<code>node verify-receipt.js receipt.json</code>) and prints each check, then <code>VERIFIED</code> or <code>REFUSED</code> with the reason. It fetches nothing. Flip one byte of the file and it is refused: <code>node verify-receipt.js receipt.json --tamper</code> runs that case first so you see the refusal before the verdict.</p>
|
||||
<h2 id="checked">What the inclusion receipt proves</h2>
|
||||
<h2 id="checked">What the receipt proves</h2>
|
||||
<ol>
|
||||
<li>The transaction hash is keccak256 of the raw signed transaction in the file, so the recipient, the amount and the data are the signed ones.</li>
|
||||
<li>The transaction is a leaf of the including block's <code>hash_merkle_root</code> (BLAKE2b-256 keyed MerkleBranchHash up the path).</li>
|
||||
<li>Every header from the including block to the certified checkpoint recomputes and links to the next by a direct parent.</li>
|
||||
<li>The certificate over that checkpoint verifies: the aggregate BLS signature of the signers, the voter order, two thirds of active weight and 17/30 of total.</li>
|
||||
</ol>
|
||||
<p class="note">Not proven by the file: the execution result (status, gas) is carried as the node reported it and labelled so; the voter table with weights comes from the node (spec 10.1). Both are named on the result. In the four words below: included and finalised are authenticated; executed is reported; proven is not claimed by this receipt.</p>
|
||||
<!-- terms:start -->
|
||||
<section class="terms" aria-labelledby="terms-head">
|
||||
<h2 id="terms-head">Four words, used exactly</h2>
|
||||
<div class="kv">
|
||||
<div class="k">Included</div><div>The transaction is in a block's body: its hash is a leaf under the block header's <code>hash_merkle_root</code>. Proves the block carries it, nothing about what it did.</div>
|
||||
<div class="k">Executed</div><div>A node ran it at a chain block and reports a result (status, gas, logs). On these pages an execution result is reported by the node, not authenticated, unless the page says it is.</div>
|
||||
<div class="k">Proven</div><div>An aggregator's segment record, carried in a block's coinbase and signed with its vote key, commits to the state root after that chain block; nodes check the statement against their own execution before paying it. The SP1 proof behind the statement is verified by nodes, not in the browser or on Sepolia.</div>
|
||||
<div class="k">Finalised</div><div>A certified checkpoint has the block in its past: an aggregate BLS signature by voters holding two thirds of active weight and at least 17/30 of total weight over the checkpoint, checked here against the voter table the node supplies.</div>
|
||||
</div>
|
||||
<p class="note">The same four definitions sit on <a href="/light">/light</a>, <a href="/receipt">/receipt</a> and <a href="/oracle">/oracle</a> (one source: <code>site/partials/terms.html</code>). Devnet 3, no value.</p>
|
||||
</section>
|
||||
<!-- terms:end -->
|
||||
<p class="note">Not proven by the file: the execution result (status, gas) is carried as the node reported it and labelled so; the voter table with weights comes from the node (spec 10.1). Both are named on the result.</p>
|
||||
<p class="asof">Devnet 3, no value. The chain may reset. A demonstration of the verification path, not a product.</p>
|
||||
</main>
|
||||
<script type="module" src="/lc/app.js"></script>
|
||||
|
|
|
|||
|
|
@ -9,6 +9,28 @@
|
|||
<meta name="theme-color" content="#0C0C0E" media="(prefers-color-scheme: dark)">
|
||||
<meta name="theme-color" content="#F4F1EC" media="(prefers-color-scheme: light)">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum scenes">
|
||||
<meta property="og:description" content="Three animated views of the live feed.">
|
||||
<meta property="og:url" content="https://igneum.network/scenes">
|
||||
<meta property="og:image" content="https://igneum.network/og/live.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="The work becomes the chain. igneum.network/live">
|
||||
<meta property="og:image" content="https://igneum.network/og/live-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="The work becomes the chain. igneum.network/live">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum scenes">
|
||||
<meta name="twitter:description" content="Three animated views of the live feed.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/live.png?v=4">
|
||||
<meta name="twitter:image:alt" content="The work becomes the chain. igneum.network/live">
|
||||
<!-- share:end -->
|
||||
<!-- head:start -->
|
||||
<link rel="preload" href="/fonts/unbounded-900.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="/fonts/plex-sans-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
|
|
|
|||
|
|
@ -7,19 +7,28 @@
|
|||
<meta name="description" content="Swap wrapped IGN and two faucet test tokens on the Igneum zkEVM, Devnet 3. Every swap is a proven block; its proof status is read live. Test tokens, no value.">
|
||||
<link rel="canonical" href="https://igneum.network/swap">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum swap on Devnet 3">
|
||||
<meta property="og:description" content="Swap test tokens on Igneum Devnet 3. Every swap is a proven block. Test tokens, no value.">
|
||||
<meta property="og:description" content="Swap wrapped IGN and two test tokens on the Igneum zkEVM. Every swap is a proven block. No value.">
|
||||
<meta property="og:url" content="https://igneum.network/swap">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/swap.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="Swap test tokens on Devnet 3. igneum.network/swap">
|
||||
<meta property="og:image" content="https://igneum.network/og/swap-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Swap test tokens on Devnet 3. igneum.network/swap">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum swap on Devnet 3">
|
||||
<meta name="twitter:description" content="Swap test tokens on Igneum Devnet 3. Every swap is a proven block. Test tokens, no value.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:description" content="Swap wrapped IGN and two test tokens on the Igneum zkEVM. Every swap is a proven block. No value.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/swap.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Swap test tokens on Devnet 3. igneum.network/swap">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180">
|
||||
|
|
|
|||
30
site/tx.html
|
|
@ -8,20 +8,28 @@
|
|||
<link rel="canonical" href="https://igneum.network/tx">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum Devnet 3 transaction">
|
||||
<meta property="og:description" content="One Devnet 3 transaction: status, value, fees and their split, the block that executed it, its proof state and finality, its logs.">
|
||||
<meta property="og:title" content="Igneum transaction">
|
||||
<meta property="og:description" content="One Devnet 3 transaction: status, value, fees, the block that executed it, its proof state and finality.">
|
||||
<meta property="og:url" content="https://igneum.network/tx">
|
||||
<meta property="og:image" content="https://igneum.network/og-small.png?v=3">
|
||||
<meta property="og:image:width" content="256">
|
||||
<meta property="og:image:height" content="256">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Igneum Devnet 3 transaction">
|
||||
<meta name="twitter:description" content="One Devnet 3 transaction: status, value, fees and their split, the block that executed it, its proof state and finality, its logs.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og-small.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image" content="https://igneum.network/og/explorer.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Devnet 3, block by block. igneum.network/explorer">
|
||||
<meta property="og:image" content="https://igneum.network/og/explorer-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Devnet 3, block by block. igneum.network/explorer">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum transaction">
|
||||
<meta name="twitter:description" content="One Devnet 3 transaction: status, value, fees, the block that executed it, its proof state and finality.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/explorer.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Devnet 3, block by block. igneum.network/explorer">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180">
|
||||
|
|
|
|||
|
|
@ -7,20 +7,28 @@
|
|||
<meta name="description" content="A desktop wallet that checks finality itself. 24 words sealed on your machine, send with the fee shown, receive by a QR drawn locally, block rewards and proving payouts in one history, MetaMask export. Reads your own node when the miner is installed.">
|
||||
<link rel="canonical" href="https://igneum.network/wallet">
|
||||
<meta name="theme-color" content="#0C0C0E">
|
||||
<!-- share:start -->
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Igneum">
|
||||
<meta property="og:title" content="Igneum Wallet">
|
||||
<meta property="og:description" content="A desktop wallet that checks finality itself. 24 words sealed on your machine, send with the fee shown, receive by a QR drawn locally, block rewards and proving payouts in one history, MetaMask export.">
|
||||
<meta property="og:title" content="Igneum Wallet, a desktop wallet that checks finality">
|
||||
<meta property="og:description" content="24 words sealed on your machine, send with the fee shown, block rewards and proving payouts in one history.">
|
||||
<meta property="og:url" content="https://igneum.network/wallet">
|
||||
<meta property="og:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta property="og:image" content="https://igneum.network/og/wallet.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="630">
|
||||
<meta property="og:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta property="og:image:alt" content="Your coins. Final means final. igneum.network/wallet">
|
||||
<meta property="og:image" content="https://igneum.network/og/wallet-square.png?v=4">
|
||||
<meta property="og:image:type" content="image/png">
|
||||
<meta property="og:image:width" content="1200">
|
||||
<meta property="og:image:height" content="1200">
|
||||
<meta property="og:image:alt" content="Your coins. Final means final. igneum.network/wallet">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="Igneum Wallet">
|
||||
<meta name="twitter:description" content="A desktop wallet that checks finality itself. 24 words sealed on your machine, send with the fee shown, receive by a QR drawn locally, rewards and payouts in one history, MetaMask export.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og.png?v=3">
|
||||
<meta name="twitter:image:alt" content="Igneum. Mined by GPUs. Proven by fire.">
|
||||
<meta name="twitter:title" content="Igneum Wallet, a desktop wallet that checks finality">
|
||||
<meta name="twitter:description" content="24 words sealed on your machine, send with the fee shown, block rewards and proving payouts in one history.">
|
||||
<meta name="twitter:image" content="https://igneum.network/og/wallet.png?v=4">
|
||||
<meta name="twitter:image:alt" content="Your coins. Final means final. igneum.network/wallet">
|
||||
<!-- share:end -->
|
||||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Crect width='1024' height='1024' fill='%230C0C0E'/%3E%3Cg transform='translate(166.95 166.95) scale(6.901)'%3E%3Cpolygon points='50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34' fill='%23F2541B'/%3E%3Cpolygon points='50,42 59,58 50,82 41,58' fill='%230C0C0E'/%3E%3C/g%3E%3C/svg%3E" type="image/svg+xml">
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48">
|
||||
<link rel="icon" href="/favicon-32.png" type="image/png" sizes="32x32">
|
||||
|
|
|
|||