Site reset to Igneum 2.0, first pass: /bench and /journey gone, no testnet, no 0.x history, the Igneum 2.0 devnet, the positioning line

- build.mjs no longer writes bench.html, journey.html or journey.json; the three files are deleted; /bench -> /evidence and
  /journey -> /live redirects (permanent: false); nav, footer, sitemap, capture routes and the site-nav-check groups drop them;
  link-check resolves literal vercel.json redirects and lists every link that leans on one (evidence.html: /bench, another hand)
- every testnet card, column, row, notice and link removed from the pages this lane owns; release manifest: the testnet entry
  gone, network igneum-devnet-4 "Igneum 2.0 devnet", the Devnet 3 genesis, digest, vote domain and floor lines dropped
- "Devnet 3" leaves every owned page; the devnet state is one constant in build.mjs (DEVNET_STATE, 'starting' now: the nav
  pill and the homepage badge read "Igneum 2.0 devnet starting"; 'live' flips both and re-enables the nav's live read)
- no 0.x release history: screenshot alt texts say the current build, the miner page's "Current build:" keeps the data-rm
  spans without the node version; miner-bench.json keeps the current-program rows only, no Counter ASIC names, no versions;
  /miners drops the earlier-classes table, the history note and the miner-version column
- /income keeps the calculator; the testnet-era tier tables (docs/analysis/income-tiers.md) are not served
- the positioning line is the first line of the footer partial (every page), the homepage meta description's first sentence
  and the hero's sub-line; share metas (site/og/pages.mjs) carry no Devnet 3 or zkEVM
- ledger-text-check is red on two index.html pins (X2, X31: the testnet sentences), owned by the ledger hand

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
igneum-labs 2026-10-08 15:40:33 +00:00
parent d5ba3c3a90
commit dda5dedf44
57 changed files with 667 additions and 2896 deletions

View file

@ -6,11 +6,11 @@
|---|---|
| `build.md` | [igneum.network/build](https://igneum.network/build): what is different (built to prove every block, a lock in minutes, nothing to stake, the EVM unchanged), the chain ids and endpoints, the wallet, the explorer, the faucet, the five-minute contract, the browser verifier |
| `grants.md` | [igneum.network/grants](https://igneum.network/grants): the tiers, what a grant is, how to apply, the review, the honest lines |
| `first-contract.md`, `first-contract-test.sh` | the walkthrough and the script that runs it end to end on Devnet 3 from a build box; the PASS line is the test record |
| `rpc.md` | the JSON-RPC method list as the node serves it, read from a Devnet 3 node, with the probe |
| `faucet.md` | the Devnet 3 faucet: rules, where it runs, how it is funded |
| `first-contract.md`, `first-contract-test.sh` | the walkthrough and the script that runs it end to end on the devnet from a build box; the PASS line is the test record |
| `rpc.md` | the JSON-RPC method list as the node serves it, read from a devnet node, with the probe |
| `faucet.md` | The devnet faucet: rules, where it runs, how it is funded |
| `verify-a-block.md` | the in-browser checkpoint verifier, twelve lines |
The faucet service is `infra/build-server/faucet/`. The grant application template is `.forgejo/issue_template/grant.md`.
Served-text rules (the site audit reads every page before it lands): no em dashes, short sentences, one to three points per block, nothing that reads as an offer, a price or a promise of value; devnet and testnet coins have no value; no amount, price or date is promised.
Served-text rules (the site audit reads every page before it lands): no em dashes, short sentences, one to three points per block, nothing that reads as an offer, a price or a promise of value; devnet coins have no value; no amount, price or date is promised.

32
docs/build/build.md vendored
View file

@ -4,7 +4,7 @@ This file is the source of [igneum.network/build](https://igneum.network/build).
## What is different
**Every block is built to be proven.** A chain block carries a zero-knowledge proof of its execution. The miners are the provers: the same cards that find blocks prove them, in shards. On Devnet 3 a share of blocks carries a proof today; the live page shows the share and the lag, and the design target at launch is under a minute. Full nodes execute every block themselves, so a bad proof is a light-client problem and never a chain split.
**Every block is built to be proven.** A chain block carries a zero-knowledge proof of its execution. The miners are the provers: the same cards that find blocks prove them, in shards. On the devnet a share of blocks carries a proof today; the live page shows the share and the lag, and the design target at launch is under a minute. Full nodes execute every block themselves, so a bad proof is a light-client problem and never a chain split.
**A lock in minutes, not an hour of confirmations.** Miners sign a checkpoint every 30 seconds. When two thirds of the mining weight of the last 30 days have signed, the checkpoint is locked. Weight is blocks mined, nothing else. The lock lands in about two minutes. The [litepaper](/litepaper) has the rule.
@ -14,28 +14,30 @@ This file is the source of [igneum.network/build](https://igneum.network/build).
## Networks
| | Devnet 3 | Testnet | Mainnet |
|---|---|---|---|
| Chain id | {{rm:network.chain_id}} (`{{rm:network.chain_id_hex}}`) since its class v5 floor on 8 October 2026; 4463 below it | 4462 (`0x116e`) | 4461 (`0x116d`) |
| Network id | `{{rm:network.id}}` | `igneum-testnet-1` | not started |
| RPC | `{{rm:network.rpc}}` (a node you run serves `http://127.0.0.1:26790`) | `https://rpc.testnet.igneum.network` (answers; nothing mines there yet, so a transaction waits) | none |
| Coins | no value, resets without notice | no value, resets with notice | not started |
| Symbol, decimals | IGN, 18 | IGN, 18 | IGN, 18 |
| Machine-readable | [/release.json](/release.json): the chain id, the source commits and fingerprints, the mining class, the finality rule, the proof program ids, the fee schedule and the current version per platform, with a generated date | | |
| | Igneum 2.0 devnet |
|---|---|
| Chain id | 4464 (`0x1170`) |
| Network id | `igneum-devnet-4` |
| RPC | `https://rpc.devnet.igneum.network` (a node you run serves `http://127.0.0.1:26790`) |
| Coins | no value, resets without notice |
| Symbol, decimals | IGN, 18 |
| Machine-readable | [/release.json](/release.json): the chain id, the source commits and fingerprints, the mining class, the finality rule, the proof program ids, the fee schedule and the current version per platform, with a generated date |
Devnet 3 is where you build today. It is a developer network: it resets without notice and its coins have no value. Its public RPC takes the read methods, `eth_sendRawTransaction` and a wRPC websocket at `/ws`, at 20 requests a second per address. The public testnet exists, its RPC answers, and no blocks are being produced on it until it opens. Mainnet has no date. Devnet 3 answered 4463 until its class v5 floor at DAA 68,400 on 8 October 2026 and 4464 from it; read it with `eth_chainId` rather than fixing it, since a transaction signed for the wrong id is refused.
The devnet is where you build today. It is a developer network: it resets without notice and its coins have no value. Its public RPC takes the read methods, `eth_sendRawTransaction` and a wRPC websocket at `/ws`, at 20 requests a second per address. Read the chain id with `eth_chainId` rather than fixing it, since a transaction signed for the wrong id is refused.
Mainnet has not started and has no date. Its chain id, 4461 (`0x116d`), is reserved in the node.
## Endpoints and tools
- **Wallet.** Any Ethereum wallet. [Add Igneum to MetaMask](/metamask) with one click, or the [Igneum wallet](/wallet).
- **Faucet.** [10 IGN of Devnet 3 coin](/faucet) per address per day. No account.
- **Faucet.** [10 IGN of the devnet coin](/faucet) per address per day. No account.
- **Explorer.** [The explorer](/explorer) shows blocks, the DAG, miners and addresses. The EVM views, transactions and contracts, are being built and link from the same page as they land.
- **Swap.** [The swap](/swap): test tokens on Devnet 3, every swap in a proven block.
- **Swap.** [The swap](/swap): test tokens on the devnet, every swap in a proven block.
- **Source.** [git.igneum.network/igneum-network/igneum](https://git.igneum.network/igneum-network/igneum): the node, the miner, the site, and these pages under `docs/build/`.
## Your first contract in five minutes
With [Foundry](https://getfoundry.sh). Tested end to end on Devnet 3 on a build box; the full walkthrough with the expected output is [docs/build/first-contract.md](https://git.igneum.network/igneum-network/igneum/src/branch/master/docs/build/first-contract.md).
With [Foundry](https://getfoundry.sh). Tested end to end on the devnet on a build box; the full walkthrough with the expected output is [docs/build/first-contract.md](https://git.igneum.network/igneum-network/igneum/src/branch/master/docs/build/first-contract.md).
```
curl -L https://foundry.paradigm.xyz | bash && foundryup
@ -63,7 +65,7 @@ The call answers `1`. Paste the transaction hash into [the explorer](/explorer).
## The RPC the node serves
Read from a Devnet 3 node, not from a spec. `web3_clientVersion` answers `igneumd/2.1.0/execution-layer-v3`. The full list, served and not served, with the probe that produced it: [docs/build/rpc.md](https://git.igneum.network/igneum-network/igneum/src/branch/master/docs/build/rpc.md).
Read from a devnet node, not from a spec. `web3_clientVersion` answers `igneumd/2.1.0/execution-layer-v3`. The full list, served and not served, with the probe that produced it: [docs/build/rpc.md](https://git.igneum.network/igneum-network/igneum/src/branch/master/docs/build/rpc.md).
- **Served.** `eth_chainId`, `eth_blockNumber`, `eth_getBalance`, `eth_getTransactionCount`, `eth_getCode`, `eth_getStorageAt`, `eth_getBlockByNumber`, `eth_getBlockByHash`, `eth_getTransactionByHash`, `eth_getTransactionReceipt`, `eth_getBlockReceipts`, `eth_getLogs`, `eth_call`, `eth_estimateGas`, `eth_gasPrice`, `eth_maxPriorityFeePerGas`, `eth_feeHistory`, `eth_sendRawTransaction`, `eth_syncing`, `eth_accounts`, `net_version`, `net_peerCount`, `net_listening`, `web3_clientVersion`.
- **Igneum's own.** `igneum_getExecStatus`, `igneum_getProvingStatus`, `igneum_getShardPlan`, `igneum_getProofRecords`, `igneum_getTransactionStatus`, `igneum_estimateGas`, `igneum_getBudgets` and the segment and proof calls. `igneum_estimateGas` returns both gas dimensions and whether a call exceeds the proving limit.
@ -86,4 +88,4 @@ console.log(r.verified, r.signers, 'of', r.voters, 'voters', r.ms, 'ms');
- [Discord](https://discord.gg/igneum), the builders channel.
- [Grants](/grants) for tooling, reference apps, infrastructure and research.
Devnet and testnet coins have no value. Nothing on this page is an offer to sell anything.
Devnet coins have no value. Nothing on this page is an offer to sell anything.

View file

@ -1,11 +1,11 @@
# The Devnet 3 faucet
# The devnet faucet
[igneum.network/faucet](https://igneum.network/faucet) sends 10 IGN of Devnet 3 coin to an address. Once per address per day, once per connection per day. No account.
[igneum.network/faucet](https://igneum.network/faucet) sends 10 IGN of the devnet coin to an address. Once per address per day, once per connection per day. No account.
## What it is
- A small Node service on a build box, `infra/build-server/faucet/faucet.mjs`, behind Caddy at `faucet.igneum.network`. The page on igneum.network posts to it.
- It signs a plain transfer with its own key and sends it to the Devnet 3 node on the same box by address (`FAUCET_RPC`), never chosen by chain id. The chain id it signs with is read from that node on every send: Devnet 3 moved from 4463 to 4464 at its class v5 floor on 8 October 2026.
- It signs a plain transfer with its own key and sends it to the devnet node on the same box by address (`FAUCET_RPC`), never chosen by chain id. The chain id it signs with is read from that node on every send.
- The key lives only in the service's environment file on that box. It is not in the repository and not on the site.
## The rules, as the code enforces them
@ -20,7 +20,7 @@
The faucet's balance is refilled from the devnet's funder as it runs down. When it is empty the page says so and sends nothing.
## Devnet 3 coin
## The devnet coin
No value. Not for sale, not redeemable, not a claim on anything. The chain resets without notice and balances do not carry over. Mainnet starts from an empty genesis.
@ -33,4 +33,3 @@ infra/build-server/faucet/faucet.sh status # the unit, the balance, the
node infra/build-server/faucet/faucet.mjs --self-test # the limiter: known-failed cases first
```
The public testnet faucet is a separate thing: `site/api/faucet.mjs` is prepared for it and answers "not open yet" until the testnet starts.

View file

@ -1,16 +1,16 @@
# Your first contract on Devnet 3, in five minutes
# Your first contract on the devnet, in five minutes
With Foundry. Tested end to end on Devnet 3 from a build box on 8 October 2026; the pass line and the exact output are at the end. Hardhat, ethers and viem work the same way: chain id 4463 and the RPC below.
With Foundry. Tested end to end on a build box; the pass line and the exact output are at the end. Hardhat, ethers and viem work the same way: chain id 4464 and the RPC below.
## 0. What you need
- Foundry: `curl -L https://foundry.paradigm.xyz | bash && foundryup`. About a minute.
- The RPC. Devnet 3's public endpoint is `https://rpc.devnet.igneum.network`. A node you run yourself serves `http://127.0.0.1:26790`.
- The RPC. The devnet's public endpoint is `https://rpc.devnet.igneum.network`. A node you run yourself serves `http://127.0.0.1:26790`.
- Nothing else. No account, no sign-up.
```
export RPC=https://rpc.devnet.igneum.network
cast chain-id --rpc-url $RPC # 4464 (4463 before the class v5 floor of 8 October 2026)
cast chain-id --rpc-url $RPC # 4464
```
## 1. A key, for the devnet only
@ -82,16 +82,16 @@ cast receipt 0xTXHASH --rpc-url $RPC
## The test record
Run on a build box against its own Devnet 3 node (the box that also fronts the public RPC and runs the faucet), with Foundry 1.8.5 and a fresh key, through `docs/build/first-contract-test.sh`. The pass line is appended below by the run.
Run on a build box against its own devnet node (the box that also fronts the public RPC and runs the faucet), with Foundry 1.8.5 and a fresh key, through `docs/build/first-contract-test.sh`. The pass line is appended below by the run.
```
PASS 10:17:23Z: Devnet 3 chain id 4463, faucet drip 0x8620e9d894484e824e4ac33002946a00e2f75823ea6db0da0ad29f1af142e8f2, deployed Counter at 0x6345265C6Db0b3713eb6645d795d0B52FE0a4201 (tx 0xcf77b4822d51f3c60ecdf6d7dbbe67524d42071f06c76e1cf9b0511d64783574), increment then setNumber(41) read back 41, receipt status 1 (success), block 27055, 24 s end to end, Foundry 1.8.5
PASS 10:17:23Z: devnet chain id 4463, faucet drip 0x8620e9d894484e824e4ac33002946a00e2f75823ea6db0da0ad29f1af142e8f2, deployed Counter at 0x6345265C6Db0b3713eb6645d795d0B52FE0a4201 (tx 0xcf77b4822d51f3c60ecdf6d7dbbe67524d42071f06c76e1cf9b0511d64783574), increment then setNumber(41) read back 41, receipt status 1 (success), block 27055, 24 s end to end, Foundry 1.8.5
```
Through the public endpoints, `https://rpc.devnet.igneum.network` and `https://faucet.igneum.network`, from the box: the first faucet drip and the first reader-path deploy on Devnet 3.
Through the public endpoints, `https://rpc.devnet.igneum.network` and `https://faucet.igneum.network`, from the box: the first faucet drip and the first reader-path deploy on the devnet.
After the class v5 floor moved the chain id to 4464 the same afternoon, from a second box:
```
PASS 12:38:39Z: Devnet 3 chain id 4464, faucet drip 0xa54fdb7e964dab095aaccaab36ea548fc3fa8727acb809b593c2d4d1359c233f, deployed Counter at 0x7de503a4F39feEBCE8c4ABbAcC04282EE75120Fe (tx 0x6ccdbb4f6393fcf09e58ba2f4de1af98c547eeab6f02d93eacfebae883200dc6), increment then setNumber(41) read back 41, receipt status 1 (success), block 29878, 12 s end to end, Foundry 1.8.5
PASS 12:38:39Z: devnet chain id 4464, faucet drip 0xa54fdb7e964dab095aaccaab36ea548fc3fa8727acb809b593c2d4d1359c233f, deployed Counter at 0x7de503a4F39feEBCE8c4ABbAcC04282EE75120Fe (tx 0x6ccdbb4f6393fcf09e58ba2f4de1af98c547eeab6f02d93eacfebae883200dc6), increment then setNumber(41) read back 41, receipt status 1 (success), block 29878, 12 s end to end, Foundry 1.8.5
```

View file

@ -4,7 +4,7 @@ This file is the source of [igneum.network/grants](https://igneum.network/grants
## What a grant is
Grants are paid in IGN from the dev fee fund, on delivery. You propose a piece of work, it is accepted with a written definition of done, you build it, and it runs on the public testnet. Not a salary, not an advance, not an investment.
Grants are paid in IGN from the dev fee fund, on delivery. You propose a piece of work, it is accepted with a written definition of done, you build it, and it runs on the devnet. Not a salary, not an advance, not an investment.
The money is the dev fee fund: the IGN that the Ember dev fee collects. Ember, the official miner, takes an optional 1% of a miner's rewards, in full view and off with one flag; that fee goes to Igneum Labs, the company that ships the software. The protocol itself carries no fee, no fund and no allocation, and no grant is paid from emission. [The dev fee](/dev-fee) has the mechanism.
@ -24,7 +24,7 @@ A grant is sized by the work in front of it, not by a table. Two grants in the s
Open an issue on [git.igneum.network/igneum-network/igneum](https://git.igneum.network/igneum-network/igneum/issues/new?template=.forgejo%2Fissue_template%2Fgrant.md) and pick the Grant template. It asks for:
1. What you will build, in a paragraph, and which tier it is.
2. What done looks like: what runs where, what a reviewer can click or call to see it working on the public testnet.
2. What done looks like: what runs where, what a reviewer can click or call to see it working on the devnet.
3. Your public work: a repository, a package, a paper, a deployed thing.
4. How you want to be reached.
@ -34,11 +34,11 @@ A short issue is fine. The definition of done is the part that matters.
- Every Friday. Each open application gets one of three answers inside seven days: accepted with a definition of done, questions, or no with the reason.
- Accepted work is tracked in its issue. The reviewer and the builder agree the definition of done there before any work starts.
- Delivery is reviewed on the public testnet first. Payment follows the review, in the issue, in the open.
- Delivery is reviewed on the devnet. Payment follows the review, in the issue, in the open.
## The honest lines
- Devnet and testnet coins have no value. Before mainnet there is no IGN with value: a grant delivered on the testnet is recorded in its issue, and payment comes from the fund when the fund holds IGN. Nothing is promised about when, or whether, that is.
- Devnet coins have no value. Before mainnet there is no IGN with value: a grant delivered on the devnet is recorded in its issue, and payment comes from the fund when the fund holds IGN. Nothing is promised about when, or whether, that is.
- No amount, price or date is promised. The fund is what the dev fee collects, and it is zero today.
- A grant is for work delivered, never for a user count, a listing, a post or a referral.
- Igneum Labs may decline any application and may close the programme; what has been accepted and delivered is still paid.

10
docs/build/rpc.md vendored
View file

@ -1,6 +1,6 @@
# The JSON-RPC a Devnet 3 node serves
# The JSON-RPC a devnet node serves
Read from the node, not from a spec: every method below was sent to a Devnet 3 node on 8 October 2026 (`web3_clientVersion` answered `igneumd/2.1.0/execution-layer-v3`, `eth_chainId` `0x116f`, block 26,666) and sorted by what came back. A method the node does not know answers JSON-RPC error `-32601`. The probe is at the end; run it against your own node to refresh this file.
Read from the node, not from a spec: every method below was sent to a devnet node on 8 October 2026 (`web3_clientVersion` answered `igneumd/2.1.0/execution-layer-v3`, `eth_chainId` `0x116f`, block 26,666) and sorted by what came back. A method the node does not know answers JSON-RPC error `-32601`. The probe is at the end; run it against your own node to refresh this file.
Transport: HTTP POST, JSON-RPC 2.0, one request per call, no batches tested. The public endpoint is `https://rpc.devnet.igneum.network`; a node you run serves `http://127.0.0.1:26790`. The DAG side of the node (blocks, the mempool, the vote table) speaks the Kaspa-style gRPC and wRPC on their own ports; the explorer and the observer use those, a contract developer needs only what is here.
@ -9,9 +9,9 @@ Transport: HTTP POST, JSON-RPC 2.0, one request per call, no batches tested. The
| Method | Note |
|---|---|
| `web3_clientVersion` | `igneumd/<version>/execution-layer-v3` |
| `net_version` | the chain id as a decimal string, `"4464"` (`"4463"` before the class v5 floor) |
| `net_version` | the chain id as a decimal string, `"4464"` |
| `net_listening`, `net_peerCount` | |
| `eth_chainId` | `0x1170` (4464) on Devnet 3 since its class v5 floor at DAA 68,400 on 8 October 2026; `0x116f` (4463) below it. Read it, never fix it |
| `eth_chainId` | `0x1170` (4464) on the Igneum 2.0 devnet. Read it, never fix it |
| `eth_blockNumber` | the executed chain tip |
| `eth_syncing` | `false` when the executor is at the tip |
| `eth_mining` | `false` from the RPC's point of view: mining is the miner's, not the node's |
@ -76,4 +76,4 @@ for m in web3_clientVersion eth_chainId eth_blockNumber eth_newFilter eth_subscr
done
```
Devnet 3 resets without notice and its coins have no value.
The devnet resets without notice and its coins have no value.

View file

@ -8,8 +8,8 @@ How to read the licence column. "Verified" means the LICENSE file or the crate's
| Component | Origin (project, licence, repository) | What Igneum changed | Why the design needs the change | How the change is measured |
|---|---|---|---|---|
| GHOSTDAG ordering | Kaspa, rusty-kaspa. ISC, verified (`vendor/rusty-kaspa/LICENSE`, "Copyright (c) 2022-2024 Kaspa developers"; workspace `license = "ISC"`). https://github.com/kaspanet/rusty-kaspa | Unchanged algorithm. Parameters set for 1 block per second: k 18, 10 max parents, mergeset limit 180, merge depth 3,600 blocks (`consensus/core/src/config/bps.rs`, `params.rs`) | Launch rate is 1 block a second (CLAUDE.md), rising later. These are the values Kaspa mainnet ran before Crescendo, so nothing new is asserted about the ordering | Spec section 2.1; bench-log "igneum-node devnet v0: 3-node igneum-devnet at 1 BPS"; a test in `params.rs` pins every value |
| Node software (the fork) | rusty-kaspa v2.1.0, commit `01b532e8` (22 Sep 2026). ISC, verified. Fork at `vendor/igneum-node`, one commit per change on top of the base | Header gains `vote_key_hash`; genesis blocks; network ids `igneum-*`; devnet ports; DNS seeders emptied; address prefixes; emission schedule and 80/20 coinbase; PoW engine trait; PoW check moved after GHOSTDAG; rename of every user-visible string to `igneumd`. Full list: `docs/fork-divergence.md` | Each row there states the reason. The short version: finality rule v2 needs a vote key in every header, the emission is Igneum's own, the lottery hash needs chain state, and no Igneum node may ever dial a Kaspa peer | `docs/fork-divergence.md` (file, change, why, risk, merge note per row); bench-log devnet v0 and "first devnet blocks on the real lottery hash" entries; the four-node rename test of 3 Oct 2026 |
| GHOSTDAG ordering | Kaspa, rusty-kaspa. ISC, verified (`vendor/rusty-kaspa/LICENSE`, "Copyright (c) 2022-2024 Kaspa developers"; workspace `license = "ISC"`). https://github.com/kaspanet/rusty-kaspa | Unchanged algorithm. Parameters set for 1 block per second: k 18, 10 max parents, mergeset limit 180, merge depth 3,600 blocks (`consensus/core/src/config/bps.rs`, `params.rs`) | Launch rate is 1 block a second (CLAUDE.md), rising later. These are the values Kaspa mainnet ran before Crescendo, so nothing new is asserted about the ordering | Spec section 2.1; the measurement record in the repository (docs/bench-log.md); a test in `params.rs` pins every value |
| Node software (the fork) | rusty-kaspa v2.1.0, commit `01b532e8` (22 Sep 2026). ISC, verified. Fork at `vendor/igneum-node`, one commit per change on top of the base | Header gains `vote_key_hash`; genesis blocks; network ids `igneum-*`; devnet ports; DNS seeders emptied; address prefixes; emission schedule and 80/20 coinbase; PoW engine trait; PoW check moved after GHOSTDAG; rename of every user-visible string to `igneumd`. Full list: `docs/fork-divergence.md` | Each row there states the reason. The short version: finality rule v2 needs a vote key in every header, the emission is Igneum's own, the lottery hash needs chain state, and no Igneum node may ever dial a Kaspa peer | `docs/fork-divergence.md` (file, change, why, risk, merge note per row); the measurement record in the repository (docs/bench-log.md); the four-node rename test of 3 Oct 2026 |
| Difficulty controller | Kaspa sampled DAA (KIP-4) in rusty-kaspa, ISC, verified, kept as the retarget. Prior art studied: LWMA by Zawy (zawy12/difficulty-algorithms, licence approximate: MIT) and Monero's sorted and trimmed window (monero-project/monero, approximate: BSD-3-Clause). No code from either | Unchanged in the fork today (comment block only, `consensus/core/src/config/constants.rs`). The hash speed steps at every hourly program change, so a rule that tracks a step within an epoch is in progress: a two-speed rule (fast response to a step, slow drift otherwise). Not in spec 0.1 | Programs differ in cost (35 to 48 Mhash/s across seeds on one GPU), so a 44-minute window spends half an epoch at the wrong block rate | Spec section 2.3 names the two remedies and the gate 2 simpa run that decides; bench-log first-run and RTX 5090 entries hold the per-seed rates. The two-speed rule gets its own bench-log entry when it is simulated |
| Random-program idea | RandomX by tevador, Monero. Licence approximate: BSD-3-Clause. https://github.com/tevador/RandomX (not yet cloned under `vendor/`; CLAUDE.md asks for it) | The idea only. Igneum's generator is new code (`igneum-pow/src/generator.rs`): a program drawn once per hourly epoch and compiled to native GPU code, with a per-hash random data path. RandomX draws a program per hash and interprets it on a CPU | A GPU cannot interpret a fresh program per hash at a useful rate; it compiles one program per hour instead. The target hardware is the opposite of RandomX's by design | Spec section 1 (generator, test vectors); bench-log "proto-metal first run", "RTX 5090 first run", "igneum-pow bit-exact" (96/96 vectors, three GPU vendors) |
| Memory-hard dataset | RandomX cache lineage (tevador, BSD-3-Clause approximate): a small cache that derives a large dataset by dependent reads | New construction, same shape: 256 MiB cache of chained ChaCha12 blocks, 8 dependent reads per item, dataset 1 GiB in the prototype and 2 GB at genesis, growing on a genesis-fixed schedule (`igneum-pow/src/memhard.rs`, `proto-metal/MEMHARD.md`) | A light verifier must hold only the cache; a miner must hold the dataset; the dataset must outgrow any fixed chip memory. RandomX's dataset has one size for ever | `proto-metal/MEMHARD.md` section 2.2 (recompute 4.8x slower than load, Apple only); bench-log "memory-hard dataset" entries on Metal and the RTX 5090 |
@ -17,11 +17,11 @@ How to read the licence column. "Verified" means the LICENSE file or the crate's
| ProgPoW and KAWPOW | ProgPoW (EIP-1057 text, ifdefelse/ProgPOW; KAWPOW on Ravencoin since 2020, RavenProject/Ravencoin, MIT approximate). Prior art, no code used. Not yet cloned; `docs/fud-fixes.md` item 48 asks for the clone and citation before the repository is public | Nothing taken. The difference: ProgPoW and KAWPOW randomise the maths inside a fixed program shape every few blocks; Igneum regenerates the whole program every hour over a growing dataset, with automatic era draws and no human in the loop | Stated so that the "first" claim in the litepaper is accurate (FUD ledger M4) | Litepaper "What has never been done before", row 1, rewritten 3 Oct 2026 |
| Class-group VDF | Chia, chiavdf. Apache-2.0, verified (`vendor/chiavdf/LICENSE`), commit `7e62ce14`. Wesolowski's proof (Efficient Verifiable Delay Functions, EUROCRYPT 2019), a paper, no licence | NUDUPL and NUCOMP ported from chiavdf's `qfb_nudupl` and `qfb_nucomp` into `proto-vdf` (Rust, over GMP through `rug`); fresh 1024-bit prime discriminant per input; 256-bit Fiat-Shamir prime (Chia uses 264); Igneum tags for the epoch and era paths. The textbook composition is kept as an oracle | The program seed must come from a certified checkpoint with a delay no miner can skip, so the seed cannot be ground. Chia's group needs no trusted setup | Spec section 4.2 (15,000 random cases agree with the oracle; 163,000 squarings per second; 4.5 ms verify); bench-log "proto-vdf" entry. GMP itself: LGPL-3.0 or GPL-2.0 dual, approximate, prototype only; the production dependency is decided with the wire format (O-4.5) |
| revm | Ethereum ecosystem, bluealloy/revm. Licence approximate: MIT. https://github.com/bluealloy/revm (not yet cloned) | Unchanged, credited. Driven by an Igneum block executor that feeds it the DAG's canonical sequence with the environment table of spec 7.1 and two-dimensional gas | The same EVM runs natively and inside the zkVM (reth, rsp and SP1 Reth all use it), so native and proven execution share one code path | `docs/design/execution-layer.md` D6 and section 2.1; differential test plan against reth (section 8.5). Nothing measured yet |
| SP1-class provers | Succinct, succinctlabs/sp1. Licence approximate: MIT or Apache-2.0. Not yet cloned | Unchanged, behind the versioned `ProofSystem` trait (`docs/design/execution-layer.md` 5.6). Version 1 is SP1 (Hypercube class, hash-based). Devnet v1 runs a stub that signs claims | Consumer cards prove hash-based systems without elliptic-curve MSM; the trait makes a swap a release (90% signalling, 3-month overlap, one wrap), never a redesign | No SP1 shard has been proven on any card in this repository (FUD ledger P1, P3). Phase 2 gate: shard time on a 3060-class card, published pass or fail |
| SP1-class provers | Succinct, succinctlabs/sp1. Licence approximate: MIT or Apache-2.0. Not yet cloned | Unchanged, behind the versioned `ProofSystem` trait (`docs/design/execution-layer.md` 5.6). Version 1 is SP1 (Hypercube class, hash-based). An early devnet ran a stub that signs claims | Consumer cards prove hash-based systems without elliptic-curve MSM; the trait makes a swap a release (90% signalling, 3-month overlap, one wrap), never a redesign | No SP1 shard has been proven on any card in this repository (FUD ledger P1, P3). Phase 2 gate: shard time on a 3060-class card, published pass or fail |
| BLS12-381 | Curve by Barreto, Lynn and Scott; blst by Supranational. Licence approximate: Apache-2.0. https://github.com/supranational/blst (not yet cloned) | Unchanged, credited. The header carries the BLAKE2b hash of a G1 compressed public key (48 bytes); every voter signs every 30-s checkpoint; signatures aggregate | Finality rule v2 needs one aggregate signature per checkpoint from thousands of keys | Spec section 3.1 (W1) and 2.4; `sim/results_v2.md` for the rule itself. Signature cost not yet measured |
| Hashing in the node | rusty-kaspa `crypto/hashes`, ISC, verified. Crates linked by the fork, licences read from the local cargo registry: blake2b_simd 1.0.2 (MIT), blake3 1.8.3 (CC0-1.0 or Apache-2.0), sha2 0.10.8 (MIT or Apache-2.0), keccak 0.1.6 (Apache-2.0 or MIT); sha3 0.10.8 not in the local registry, approximate: MIT or Apache-2.0 | Unchanged, credited. BLAKE2b with domain separation for block, transaction and PoW pre-hashes (`BlockHash`, `TransactionHash`, ...), BLAKE3 keyed for the sequencing-commitment and payload hashers, SHA-256 for ECDSA signing hashes, cSHAKE256 (Keccak) in the kHeavyHash stub that stays as the default engine and for pruning-proof block levels | The chain's hash for everything except the lottery is the one the forked commit uses (spec 0.6), so nothing unverified enters consensus | `hash_override_nonce_time` gained one field (fork-divergence row 1); every header-hash test vector was regenerated and the four genesis hashes re-derived |
| Address format | Bitcoin BIP 173 character set (bech32, Pieter Wuille and Greg Maxwell; BIP licence approximate: BSD-2-Clause) with the CashAddr polymod checksum of Bitcoin Cash (the source cites bch.info), as implemented in rusty-kaspa `crypto/addresses/src/bech32.rs`, ISC, verified | Prefixes only: `igneum`, `igneumtest`, `igneumsim`, `igneumdev` (Kaspa: `kaspa`, `kaspatest`, `kaspasim`, `kaspadev`). The script public key behind an address is unchanged | No Igneum address string may parse as a Kaspa address on any network | Fork-divergence row 9; test vectors in `addresses` and `txscript` regenerated and passing |
| The EVM | Ethereum (Yellow Paper and ethereum/execution-specs, CC0 approximate). Cancun opcode set, precompiles 0x01 to 0x09 | Semantics on a DAG: `block.number` is selected-chain height, `block.timestamp` is non-decreasing by a max rule, `prevrandao` is the VDF epoch seed, chain ids 4461, 4462, 4463 (historical: Devnet 3 answers chain id 4464 since its class v5 floor at DAA 68,400 on 8 October 2026, 4463 below it; the current id is in /release.json); 0x0a absent; gas has a second dimension | Blocks on a DAG have no single parent and no header state root; proving cost is a second resource; the random beacon must be unbiasable | Spec section 7.1 (normative table); devnet measurement R9 for timestamp drift; `ethereum/tests` replay in the differential plan |
| The EVM | Ethereum (Yellow Paper and ethereum/execution-specs, CC0 approximate). Cancun opcode set, precompiles 0x01 to 0x09 | Semantics on a DAG: `block.number` is selected-chain height, `block.timestamp` is non-decreasing by a max rule, `prevrandao` is the VDF epoch seed, chain id 4464 on the devnet and 4461 reserved for mainnet (the current id is in /release.json); 0x0a absent; gas has a second dimension | Blocks on a DAG have no single parent and no header state root; proving cost is a second resource; the random beacon must be unbiasable | Spec section 7.1 (normative table); devnet measurement R9 for timestamp drift; `ethereum/tests` replay in the differential plan |
| kHeavyHash (kept as a stub) | Kaspa, rusty-kaspa `crypto/hashes/src/pow_hashers.rs` and `consensus/pow/src/matrix.rs`, ISC, verified | Kept untouched as `HeavyHashEngine`, the default engine when the `igneum-pow` feature is off, and the block-level source for pruning proofs until seeds are threaded through | Lets the devnet run and lets upstream pow changes merge cleanly | Fork-divergence rows 14 and 15; open item in the same file (pruning-proof block levels) |
## What is new in Igneum
@ -30,7 +30,7 @@ Nothing here has a precedent that Igneum could have copied. Each item names the
| Piece | What it is | Where it is specified or measured |
|---|---|---|
| The hourly header-bound GPU program | A program drawn per epoch from a VDF seed, compiled to native GPU code, with the nonce-zeroed header hash absorbed into the init words so one nonce serves one header | Spec section 1 and `igneum-pow/src/bind.rs`; bench-log "first devnet blocks on the real lottery hash" |
| The hourly header-bound GPU program | A program drawn per epoch from a VDF seed, compiled to native GPU code, with the nonce-zeroed header hash absorbed into the init words so one nonce serves one header | Spec section 1 and `igneum-pow/src/bind.rs`; the measurement record in the repository (docs/bench-log.md) |
| Sustained-mining finality, rule v2 | Vote weight is blue blocks per BLS vote key over a flat 30-day window; every voter signs every 30-s checkpoint; lock at 2/3 of active weight and at least 56.7% of total weight; no stake, no other chain | Spec section 3; `sim/results_v2.md` (0 conflicting locks in every partition and eclipse scenario) |
| Two-dimensional gas and the per-frame app share | Execution gas on Ethereum's schedule plus proving gas from a calibrated table; 20% of the priority fee attributed per call frame to the registered developer of the contract that ran | Spec sections 5.1, 5.2; `docs/design/execution-layer.md` section 4 |
| The shard market and the native proving precompile | Shards cut from the native trace, assigned by sortition to 8 eligible provers for 10 s, then open; a `Prover` system contract that takes a job and returns the result by a later proof record | Spec section 7.2; `docs/design/execution-layer.md` sections 5 and 6 |

View file

@ -4,7 +4,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Page not found. Igneum</title>
<meta name="description" content="That page is not on igneum.network. The litepaper, the live devnet, the engineering log and the evidence page are.">
<meta name="description" content="That page is not on igneum.network. The litepaper, the live devnet and the evidence page are.">
<meta name="robots" content="noindex">
<meta name="theme-color" content="#0C0C0E">
<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">
@ -77,7 +77,7 @@ main{flex:1}
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -107,12 +107,10 @@ main{flex:1}
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -130,7 +128,7 @@ main{flex:1}
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -150,12 +148,10 @@ main{flex:1}
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -169,7 +165,7 @@ main{flex:1}
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -234,7 +230,6 @@ main{flex:1}
<li><a href="/miner"><b>The miner</b><span>One click, and your card mines</span></a></li>
<li><a href="/litepaper"><b>Litepaper</b><span>How the chain works, in 19 sections</span></a></li>
<li><a href="/live"><b>Live devnet</b><span>Blocks, miners and finality as they happen</span></a></li>
<li><a href="/bench"><b>Engineering log</b><span>Every measurement, with the commands</span></a></li>
<li><a href="/evidence"><b>Evidence</b><span>Every claim and how far it is tested</span></a></li>
</ul>
</section>
@ -242,6 +237,7 @@ main{flex:1}
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -267,7 +263,6 @@ main{flex:1}
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -279,7 +274,6 @@ main{flex:1}
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -305,7 +299,7 @@ main{flex:1}
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -3,8 +3,8 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Igneum Devnet 3 address</title>
<meta name="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.">
<title>Igneum 2.0 devnet address</title>
<meta name="description" content="One devnet 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.">
<link rel="canonical" href="https://igneum.network/address">
<meta name="robots" content="noindex">
<meta name="theme-color" content="#0C0C0E">
@ -12,23 +12,23 @@
<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: balance, nonce, code, its transactions and the blocks it mined.">
<meta property="og:description" content="One devnet 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/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:alt" content="The devnet, 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 property="og:image:alt" content="The devnet, 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: balance, nonce, code, its transactions and the blocks it mined.">
<meta name="twitter:description" content="One devnet 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">
<meta name="twitter:image:alt" content="The devnet, 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">
@ -117,7 +117,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" data-active aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -147,12 +147,10 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer" aria-current="page"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -170,7 +168,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -190,12 +188,10 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer" aria-current="page"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -209,7 +205,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -268,7 +264,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<main id="main" class="wrap">
<div class="head">
<div class="breadcrumb"><a href="/">Igneum</a><span>/</span><a href="/explorer">Explorer</a><span>/</span><span>Address</span></div>
<div class="eyebrow"><a href="/explorer">Devnet 3 explorer</a> · address</div>
<div class="eyebrow"><a href="/explorer">The devnet explorer</a> · address</div>
<h1 class="hash" id="title">Address</h1>
<div id="chips"></div>
<div class="msg" id="msg" aria-live="polite"></div>
@ -282,7 +278,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="cell"><div class="k">Blocks, 24 h</div><div class="v" id="a-blocks">0</div><div class="s" id="a-blocks-s"></div></div>
<div class="cell"><div class="k">Earned, 24 h</div><div class="v" id="a-earned">0<small>IGN</small></div><div class="s">80% of each blue block's subsidy</div></div>
<div class="cell"><div class="k">Last block</div><div class="v" id="a-last">n/a</div><div class="s" id="a-first"></div></div>
<div class="cell"><div class="k">Network</div><div class="v">Devnet 3</div><div class="s" id="a-chain">coins have no value</div></div>
<div class="cell"><div class="k">Network</div><div class="v">The devnet</div><div class="s" id="a-chain">coins have no value</div></div>
</div>
<div class="card"><div class="viz-head"><h2>Identity</h2></div><dl id="ident"></dl><p class="note">A miner names its EVM payout address in every coinbase (the IGNA tag) beside the coinbase script's own address, so the two forms name the same miner. The vote keys are the finality identities that signed these blocks; a card runs several.</p></div>
<div class="card"><div class="viz-head"><h2>Transactions</h2><div class="eyebrow" id="tx-eyebrow">newest 50 of the last 7 days</div></div>
@ -297,6 +293,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -322,7 +319,6 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -334,7 +330,6 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -360,7 +355,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->
@ -386,7 +381,7 @@ async function load() {
const r = await fetch('/api/explorer?address=' + encodeURIComponent(a)); const j = await r.json();
$('title').textContent = a;
if (!j.ok) { $('msg').textContent = j.error || 'Not found.'; return; }
document.title = `Devnet 3 address ${shortHash(a, 8, 6)}`;
document.title = `Devnet address ${shortHash(a, 8, 6)}`;
now = new Date(j.now).getTime(); me = j.evm_address; const ac = j.account;
if (j.chain_id) $('a-chain').textContent = `chain id ${j.chain_id} as the node reports it, coins have no value`;
$('chips').innerHTML = `<span class="chip">${j.kind === 'evm' ? (ac && ac.is_contract ? 'contract' : 'EVM account') : 'coinbase address'}</span>` + (j.blocks_10m ? '<span class="chip hot">mining now</span>' : '') + (ac && ac.miner ? '<span class="chip">miner payout address</span>' : '');

View file

@ -85,7 +85,7 @@
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" data-active aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -115,12 +115,10 @@
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -138,7 +136,7 @@
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -158,12 +156,10 @@
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -177,7 +173,7 @@
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -247,9 +243,9 @@
</div>
<figure class="frame glow">
<div class="bar"><i></i><i></i><i></i><b>Overview</b></div>
<img src="/img/app-overview-dark.webp" width="2880" height="1800" class="img-dark" alt="The Overview page of 0.3.22 on a mixed rig: 156 MH/s from 3 of 4 cards, 489 W at 0.32 MH/W, £3.09 a day of electricity, 6,784 blocks this run and 8,054 lifetime, the Stop mining button, the ladder strip, the chain drawn live with this rig's blocks ringed and the key under it, the node synced with 4 peers, the activity log" fetchpriority="high" decoding="async">
<img src="/img/app-overview-light.webp" width="2880" height="1800" class="img-light" alt="The Overview page of 0.3.22 in light mode: 156 MH/s from 3 of 4 cards, 489 W, the chain drawn live with this rig's blocks ringed" fetchpriority="high" decoding="async">
<figcaption>0.3.22, rendered from the app&rsquo;s recorded states, 7 October 2026: a mixed rig of an RTX 5090, an RX 9070 XT, an Arc B580 and an integrated UHD 770. The 5090 and the 9070 XT carry measured rates; the Arc&rsquo;s 15.2 MH/s is the plan&rsquo;s expectation until the measurement on the team's three-card Windows rig lands. Electricity at 26.32p per kWh, the UK typical price.</figcaption>
<img src="/img/app-overview-dark.webp" width="2880" height="1800" class="img-dark" alt="The Overview page of the current build on a mixed rig: 156 MH/s from 3 of 4 cards, 489 W at 0.32 MH/W, £3.09 a day of electricity, 6,784 blocks this run and 8,054 lifetime, the Stop mining button, the ladder strip, the chain drawn live with this rig's blocks ringed and the key under it, the node synced with 4 peers, the activity log" fetchpriority="high" decoding="async">
<img src="/img/app-overview-light.webp" width="2880" height="1800" class="img-light" alt="The Overview page of the current build in light mode: 156 MH/s from 3 of 4 cards, 489 W, the chain drawn live with this rig's blocks ringed" fetchpriority="high" decoding="async">
<figcaption>The current build, rendered from the app&rsquo;s recorded states, 7 October 2026: a mixed rig of an RTX 5090, an RX 9070 XT, an Arc B580 and an integrated UHD 770. The 5090 and the 9070 XT carry measured rates; the Arc&rsquo;s 15.2 MH/s is the plan&rsquo;s expectation until the measurement on the team's three-card Windows rig lands. Electricity at 26.32p per kWh, the UK typical price.</figcaption>
</figure>
</div>
</header>
@ -259,9 +255,9 @@
<div class="feat-row">
<figure class="frame">
<div class="bar"><i></i><i></i><i></i><b>Overview · Mac</b></div>
<img src="/img/app-overview-mac-dark.webp" width="2880" height="1800" class="img-dark" alt="The Overview page of 0.3.22 on an Apple M5 Max: 17.0 MH/s, 6,784 blocks this run, the ladder strip with signing under way, the chain drawn live with this Mac's blocks ringed, the node synced with 4 peers" loading="lazy" decoding="async">
<img src="/img/app-overview-mac-light.webp" width="2880" height="1800" class="img-light" alt="The Overview page of 0.3.22 in light mode on an Apple M5 Max: 17.0 MH/s, the ladder strip, the chain drawn live" loading="lazy" decoding="async">
<figcaption>0.3.22, rendered from the recorded state of the team&rsquo;s Apple M5 Max, 7 October 2026.</figcaption>
<img src="/img/app-overview-mac-dark.webp" width="2880" height="1800" class="img-dark" alt="The Overview page of the current build on an Apple M5 Max: 17.0 MH/s, 6,784 blocks this run, the ladder strip with signing under way, the chain drawn live with this Mac's blocks ringed, the node synced with 4 peers" loading="lazy" decoding="async">
<img src="/img/app-overview-mac-light.webp" width="2880" height="1800" class="img-light" alt="The Overview page of the current build in light mode on an Apple M5 Max: 17.0 MH/s, the ladder strip, the chain drawn live" loading="lazy" decoding="async">
<figcaption>The current build, rendered from the recorded state of the team&rsquo;s Apple M5 Max, 7 October 2026.</figcaption>
</figure>
<div>
<div class="eyebrow">01 · Overview</div>
@ -282,9 +278,9 @@
<div class="feat-row flip">
<figure class="frame">
<div class="bar"><i></i><i></i><i></i><b>Cards</b></div>
<img src="/img/app-cards-dark.webp" width="2880" height="1800" class="img-dark" alt="The Cards page of 0.3.22: Ember Tune with the Efficiency, Balanced and Maximum goals; one row per card with its vendor's mark, its series line, its rate, IGN a day, watts, hashes per watt, cost a day and temperature: an RTX 5090 at 122 MH/s and 291 W, an RX 9070 XT at 18.9 MH/s and 198 W, an Arc B580 at 15.2 MH/s, an integrated UHD 770 off" loading="lazy" decoding="async">
<img src="/img/app-cards-light.webp" width="2880" height="1800" class="img-light" alt="The Cards page of 0.3.22 in light mode: Ember Tune and the four card rows with their vendor marks, the RTX 5090 at 122 MH/s and 291 W" loading="lazy" decoding="async">
<figcaption>0.3.22, rendered from the app&rsquo;s recorded states, 7 October 2026: a mixed rig of an RTX 5090, an RX 9070 XT, an Arc B580 and an integrated UHD 770. The 5090 and the 9070 XT carry measured rates; the Arc&rsquo;s 15.2 MH/s is the plan&rsquo;s expectation until the measurement on the team's three-card Windows rig lands. Each row carries its vendor&rsquo;s mark and its series line.</figcaption>
<img src="/img/app-cards-dark.webp" width="2880" height="1800" class="img-dark" alt="The Cards page of the current build: Ember Tune with the Efficiency, Balanced and Maximum goals; one row per card with its vendor's mark, its series line, its rate, IGN a day, watts, hashes per watt, cost a day and temperature: an RTX 5090 at 122 MH/s and 291 W, an RX 9070 XT at 18.9 MH/s and 198 W, an Arc B580 at 15.2 MH/s, an integrated UHD 770 off" loading="lazy" decoding="async">
<img src="/img/app-cards-light.webp" width="2880" height="1800" class="img-light" alt="The Cards page of the current build in light mode: Ember Tune and the four card rows with their vendor marks, the RTX 5090 at 122 MH/s and 291 W" loading="lazy" decoding="async">
<figcaption>The current build, rendered from the app&rsquo;s recorded states, 7 October 2026: a mixed rig of an RTX 5090, an RX 9070 XT, an Arc B580 and an integrated UHD 770. The 5090 and the 9070 XT carry measured rates; the Arc&rsquo;s 15.2 MH/s is the plan&rsquo;s expectation until the measurement on the team's three-card Windows rig lands. Each row carries its vendor&rsquo;s mark and its series line.</figcaption>
</figure>
<div>
<div class="eyebrow">02 · Cards</div>
@ -304,7 +300,7 @@
<tr><td>RTX 4070</td><td class="num">106.0 W · 28.72 MH/s · 0.271 MH/W</td><td class="num">75.6 W · 28.78 MH/s · 0.381 MH/W</td><td class="num">30 W, £0.20 a day at 28p/kWh</td></tr>
</tbody>
</table></div>
<p class="note">Ember run 6 on the three-card Windows rig. The pounds are arithmetic from the saved watts at 28p per kWh; the app uses your price. <a href="/bench">The log</a>.</p>
<p class="note">Ember run 6 on the three-card Windows rig. The pounds are arithmetic from the saved watts at 28p per kWh; the app uses your price. Details are in the measurement record in the repository (docs/bench-log.md).</p>
</div>
</section>
@ -339,9 +335,9 @@
<div class="feat-row">
<figure class="frame">
<div class="bar"><i></i><i></i><i></i><b>Earnings</b></div>
<img src="/img/app-earnings-dark.webp" width="2880" height="1800" class="img-dark" alt="The Earnings page of 0.3.22: 29,517 IGN a day at the last hour's rate with the reason line, 6,784 blocks this run with their IGN, then weight rank 3 of 4 keys, electricity with no draw reported on Apple silicon, 8,054 blocks lifetime, the dev fee switch, and the ladder card under it" loading="lazy" decoding="async">
<img src="/img/app-earnings-light.webp" width="2880" height="1800" class="img-light" alt="The Earnings page of 0.3.22 in light mode: IGN a day first, then blocks this run, weight, electricity and lifetime" loading="lazy" decoding="async">
<figcaption>0.3.22, rendered from the recorded state of the team&rsquo;s Apple M5 Max, 7 October 2026. IGN a day first, then blocks this run, then weight, electricity and lifetime; no price of IGN anywhere.</figcaption>
<img src="/img/app-earnings-dark.webp" width="2880" height="1800" class="img-dark" alt="The Earnings page of the current build: 29,517 IGN a day at the last hour's rate with the reason line, 6,784 blocks this run with their IGN, then weight rank 3 of 4 keys, electricity with no draw reported on Apple silicon, 8,054 blocks lifetime, the dev fee switch, and the ladder card under it" loading="lazy" decoding="async">
<img src="/img/app-earnings-light.webp" width="2880" height="1800" class="img-light" alt="The Earnings page of the current build in light mode: IGN a day first, then blocks this run, weight, electricity and lifetime" loading="lazy" decoding="async">
<figcaption>The current build, rendered from the recorded state of the team&rsquo;s Apple M5 Max, 7 October 2026. IGN a day first, then blocks this run, then weight, electricity and lifetime; no price of IGN anywhere.</figcaption>
</figure>
<div>
<div class="eyebrow">04 · Earnings</div>
@ -362,9 +358,9 @@
<div class="feat-row flip">
<figure class="frame">
<div class="bar"><i></i><i></i><i></i><b>Prove</b></div>
<img src="/img/app-prove-dark.webp" width="2880" height="1800" class="img-dark" alt="The Prove page of 0.3.22: the shard card, your card proved shard 3 of block 160,390 for 1.15 IGN; the Prove on this machine switch on, one sentence for the Apple M5 Max, which proves on the CPU slowly; one line of counts, and Details" loading="lazy" decoding="async">
<img src="/img/app-prove-light.webp" width="2880" height="1800" class="img-light" alt="The Prove page of 0.3.22 in light mode: the shard card and the Prove on this machine switch" loading="lazy" decoding="async">
<figcaption>0.3.22, rendered from the recorded state of the team&rsquo;s Apple M5 Max, 7 October 2026. Apple silicon proves on the CPU, slowly; a 12 GB NVIDIA card is the line for proving beside the miner.</figcaption>
<img src="/img/app-prove-dark.webp" width="2880" height="1800" class="img-dark" alt="The Prove page of the current build: the shard card, your card proved shard 3 of block 160,390 for 1.15 IGN; the Prove on this machine switch on, one sentence for the Apple M5 Max, which proves on the CPU slowly; one line of counts, and Details" loading="lazy" decoding="async">
<img src="/img/app-prove-light.webp" width="2880" height="1800" class="img-light" alt="The Prove page of the current build in light mode: the shard card and the Prove on this machine switch" loading="lazy" decoding="async">
<figcaption>The current build, rendered from the recorded state of the team&rsquo;s Apple M5 Max, 7 October 2026. Apple silicon proves on the CPU, slowly; a 12 GB NVIDIA card is the line for proving beside the miner.</figcaption>
</figure>
<div>
<div class="eyebrow">05 · Prove</div>
@ -387,9 +383,9 @@
</div>
<figure class="frame">
<div class="bar"><i></i><i></i><i></i><b>Settings · Tuning</b></div>
<img src="/img/app-settings-dark.webp" width="2880" height="1800" class="img-dark" alt="The Settings page of 0.3.22 from the top: the Tuning card with the goal at Balanced and the Ember Tune and Power control switches, each with one sentence, then Electricity with the region, the currency and the price per kWh" loading="lazy" decoding="async">
<img src="/img/app-settings-light.webp" width="2880" height="1800" class="img-light" alt="The Settings page of 0.3.22 in light mode: the Tuning card and Electricity" loading="lazy" decoding="async">
<figcaption>0.3.22, rendered from the recorded state of the team&rsquo;s Apple M5 Max, 7 October 2026.</figcaption>
<img src="/img/app-settings-dark.webp" width="2880" height="1800" class="img-dark" alt="The Settings page of the current build from the top: the Tuning card with the goal at Balanced and the Ember Tune and Power control switches, each with one sentence, then Electricity with the region, the currency and the price per kWh" loading="lazy" decoding="async">
<img src="/img/app-settings-light.webp" width="2880" height="1800" class="img-light" alt="The Settings page of the current build in light mode: the Tuning card and Electricity" loading="lazy" decoding="async">
<figcaption>The current build, rendered from the recorded state of the team&rsquo;s Apple M5 Max, 7 October 2026.</figcaption>
</figure>
<ul class="lines c4" style="margin-top:var(--s-4)">
<li><strong>Electricity price</strong>Pence per kWh, set once. Every pound figure in the app uses it.</li>
@ -410,15 +406,15 @@
</div>
<figure class="frame phone">
<div class="bar"><i></i><i></i><i></i><b>390 px</b></div>
<img src="/img/app-phone-overview.webp" width="780" height="1688" class="img-dark" alt="The Overview page of 0.3.22 in a 390 pixel wide window: the rate, the Stop mining button, the chain live, and a bottom tab bar with Overview, Cards, Earnings, Prove, Settings and Logs" loading="lazy" decoding="async">
<img src="/img/app-phone-overview-light.webp" width="780" height="1688" class="img-light" alt="The Overview page of 0.3.22 in a 390 pixel wide window, light mode: 17.0 MH/s, the Stop mining button, the chain live and the bottom tab bar" loading="lazy" decoding="async">
<figcaption>0.3.22, rendered from the recorded state of the team&rsquo;s Apple M5 Max, 7 October 2026.</figcaption>
<img src="/img/app-phone-overview.webp" width="780" height="1688" class="img-dark" alt="The Overview page of the current build in a 390 pixel wide window: the rate, the Stop mining button, the chain live, and a bottom tab bar with Overview, Cards, Earnings, Prove, Settings and Logs" loading="lazy" decoding="async">
<img src="/img/app-phone-overview-light.webp" width="780" height="1688" class="img-light" alt="The Overview page of the current build in a 390 pixel wide window, light mode: 17.0 MH/s, the Stop mining button, the chain live and the bottom tab bar" loading="lazy" decoding="async">
<figcaption>The current build, rendered from the recorded state of the team&rsquo;s Apple M5 Max, 7 October 2026.</figcaption>
</figure>
<figure class="frame phone">
<div class="bar"><i></i><i></i><i></i><b>390 px</b></div>
<img src="/img/app-phone-cards.webp" width="780" height="1688" class="img-dark" alt="The Cards page of 0.3.22 in a 390 pixel wide window: Ember Tune and the card rows stacked with their vendor marks, with the bottom tab bar" loading="lazy" decoding="async">
<img src="/img/app-phone-cards-light.webp" width="780" height="1688" class="img-light" alt="The Cards page of 0.3.22 in a 390 pixel wide window, light mode: Ember Tune, the card rows and the bottom tab bar" loading="lazy" decoding="async">
<figcaption>0.3.22, rendered from the recorded state of the team&rsquo;s Apple M5 Max, 7 October 2026.</figcaption>
<img src="/img/app-phone-cards.webp" width="780" height="1688" class="img-dark" alt="The Cards page of the current build in a 390 pixel wide window: Ember Tune and the card rows stacked with their vendor marks, with the bottom tab bar" loading="lazy" decoding="async">
<img src="/img/app-phone-cards-light.webp" width="780" height="1688" class="img-light" alt="The Cards page of the current build in a 390 pixel wide window, light mode: Ember Tune, the card rows and the bottom tab bar" loading="lazy" decoding="async">
<figcaption>The current build, rendered from the recorded state of the team&rsquo;s Apple M5 Max, 7 October 2026.</figcaption>
</figure>
</div>
</div>
@ -429,7 +425,7 @@
<div class="sec-head">
<div class="eyebrow">08 · It keeps mining</div>
<h2>Built to be left alone</h2>
<p>Measured against a worker that misbehaves on command, 4 October 2026: recoveries in seconds. <a href="/bench">The log</a>.</p>
<p>Measured against a worker that misbehaves on command, 4 October 2026: recoveries in seconds. Details are in the measurement record in the repository (docs/bench-log.md).</p>
</div>
<ul class="lines">
<li><strong>Hourly program, no pause</strong>The next program compiles in the background and swaps at the boundary: 0.01 ms on Metal, 0.00 ms on CUDA, 0 rejected blocks.</li>
@ -457,7 +453,6 @@
</div>
<div>
<p class="yourcard" data-yourcard>Your card: pending</p>
<p class="notice" data-testnet-notice>Public testnet: not yet open; the devnet build is here for people who want to look.</p>
<p class="notice" data-devnet-notice><b>Devnet.</b> Coins have no value and the chain may be reset.</p>
</div>
</div>
@ -480,6 +475,7 @@
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -505,7 +501,6 @@
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -517,7 +512,6 @@
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -543,7 +537,7 @@
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

File diff suppressed because one or more lines are too long

View file

@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Igneum Devnet 3 block</title>
<title>Igneum 2.0 devnet block</title>
<meta name="description" content="One Igneum block: header, parents, mergeset, transactions, proof records and, when it is a checkpoint, its finality certificate.">
<link rel="canonical" href="https://igneum.network/block">
<meta name="robots" content="noindex">
@ -18,17 +18,17 @@
<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:alt" content="The devnet, 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 property="og:image:alt" content="The devnet, 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/explorer.png?v=4">
<meta name="twitter:image:alt" content="Devnet 3, block by block. igneum.network/explorer">
<meta name="twitter:image:alt" content="The devnet, 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">
@ -117,7 +117,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" data-active aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -147,12 +147,10 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer" aria-current="page"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -170,7 +168,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -190,12 +188,10 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer" aria-current="page"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -209,7 +205,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -268,7 +264,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<main id="main" class="wrap">
<div class="head">
<div class="breadcrumb"><a href="/">Igneum</a><span>/</span><a href="/explorer">Explorer</a><span>/</span><span>Block</span></div>
<div class="eyebrow"><a href="/explorer">Devnet 3 explorer</a> · block</div>
<div class="eyebrow"><a href="/explorer">The devnet explorer</a> · block</div>
<h1 class="hash" id="title">Block</h1>
<div id="chips"></div>
<div class="msg" id="msg" aria-live="polite"></div>
@ -290,6 +286,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -315,7 +312,6 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -327,7 +323,6 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -353,7 +348,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->
@ -384,7 +379,7 @@ async function load() {
const r = await fetch('/api/explorer?' + query); const j = await r.json();
if (!j.ok) { $('msg').textContent = j.error || 'Not found.'; $('title').textContent = /^\d/.test(id) ? 'Chain block ' + id : shortHash(id, 10, 8); return; }
const b = j.block, d = b.detail || {}, now = new Date(j.now).getTime(), sum = b.shard_summary || { total: 0, paid: 0 };
document.title = `Devnet 3 block ${shortHash(b.hash, 8, 6)}`;
document.title = `Devnet block ${shortHash(b.hash, 8, 6)}`;
$('title').textContent = b.hash;
const chips = [b.chain ? (b.chain_now === false ? '<span class="chip" title="the observer saw it as the chain block of its number; a tip reorg gave the number to another block">chain block, replaced</span>' : '<span class="chip hot">chain block</span>') : `<span class="chip">${esc(b.color)}</span>`, `<span class="chip" title="the hash program family this block was mined under">class ${esc(b.class ? b.class.class : 'v4')}</span>`];
if (j.checkpoint) chips.push(`<span class="chip ${j.checkpoint.state === 'locked' ? 'ok' : ''}">checkpoint ${j.checkpoint.index}, ${esc(j.checkpoint.state)}</span>`);
@ -394,7 +389,7 @@ async function load() {
if (j.txs.length) chips.push(`<span class="chip">${j.txs.length} transaction${j.txs.length === 1 ? '' : 's'} executed</span>`);
$('chips').innerHTML = chips.join('');
$('summary').innerHTML = dl([
['Network', 'Devnet 3' + (j.chain_id ? ', chain id ' + esc(j.chain_id) + ' as the node reports it' : '')],
['Network', 'The devnet' + (j.chain_id ? ', chain id ' + esc(j.chain_id) + ' as the node reports it' : '')],
['Number', b.number === null ? '<span class="kv">none, not a chain block</span>' : (b.chain_now === false ? `${int(b.number)} <span class="kv">as the observer first saw it; a tip reorg gave this number to another block, so the EVM executed that one</span>` : int(b.number))],
['Time', `${utc(b.ts)} <span class="kv">(${rel(now - b.ts)})</span>`],
['DAA score', int(b.daa)], ['Blue score', int(b.blue_score)],

View file

@ -90,7 +90,7 @@ table{min-width:560px}
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -120,12 +120,10 @@ table{min-width:560px}
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -143,7 +141,7 @@ table{min-width:560px}
<div class="panel-list">
<a href="/build" data-nav="build" aria-current="page"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -163,12 +161,10 @@ table{min-width:560px}
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -182,7 +178,7 @@ table{min-width:560px}
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build" aria-current="page"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -255,20 +251,21 @@ table{min-width:560px}
<p>This file is the source of <a href="https://igneum.network/build" rel="noopener">igneum.network/build</a>. The site build renders it as the page. The other files in this directory are the walkthrough, the RPC list, the faucet, the verifier and the grants.</p>
</section>
<section class="doc-section"><h2 id="what-is-different">What is different</h2>
<p><strong>Every block is built to be proven.</strong> A chain block carries a zero-knowledge proof of its execution. The miners are the provers: the same cards that find blocks prove them, in shards. On Devnet 3 a share of blocks carries a proof today; the live page shows the share and the lag, and the design target at launch is under a minute. Full nodes execute every block themselves, so a bad proof is a light-client problem and never a chain split.</p>
<p><strong>Every block is built to be proven.</strong> A chain block carries a zero-knowledge proof of its execution. The miners are the provers: the same cards that find blocks prove them, in shards. On the devnet a share of blocks carries a proof today; the live page shows the share and the lag, and the design target at launch is under a minute. Full nodes execute every block themselves, so a bad proof is a light-client problem and never a chain split.</p>
<p><strong>A lock in minutes, not an hour of confirmations.</strong> Miners sign a checkpoint every 30 seconds. When two thirds of the mining weight of the last 30 days have signed, the checkpoint is locked. Weight is blocks mined, nothing else. The lock lands in about two minutes. The <a href="/litepaper">litepaper</a> has the rule.</p>
<p><strong>Nothing to stake.</strong> No validator set, no delegation, no slashing, no bonded class above the miners. Finality comes from mining weight alone. Nobody holds a key that the chain depends on.</p>
<p><strong>The EVM you already know.</strong> Solidity deploys unchanged. Standard JSON-RPC, EIP-1559 transactions, the chain id in the signature, <code>cancun</code> as the EVM version. Gas has two dimensions on Igneum, execution and proving, and the node folds the second into the price it quotes, so <code>eth_estimateGas</code> and <code>eth_gasPrice</code> work as they do on Ethereum.</p>
</section>
<section class="doc-section"><h2 id="networks">Networks</h2>
<div class="tbl"><table><thead><tr><th></th><th>Devnet 3</th><th>Testnet</th><th>Mainnet</th></tr></thead><tbody><tr><td>Chain id</td><td><span data-rm="network.chain_id">4464</span> (<code><span data-rm="network.chain_id_hex">0x1170</span></code>) since its class v5 floor on 8 October 2026; 4463 below it</td><td>4462 (<code>0x116e</code>)</td><td>4461 (<code>0x116d</code>)</td></tr><tr><td>Network id</td><td><code><span data-rm="network.id">igneum-devnet-3</span></code></td><td><code>igneum-testnet-1</code></td><td>not started</td></tr><tr><td>RPC</td><td><code><span data-rm="network.rpc">https://rpc.devnet.igneum.network</span></code> (a node you run serves <code>http://127.0.0.1:26790</code>)</td><td><code>https://rpc.testnet.igneum.network</code> (answers; nothing mines there yet, so a transaction waits)</td><td>none</td></tr><tr><td>Coins</td><td>no value, resets without notice</td><td>no value, resets with notice</td><td>not started</td></tr><tr><td>Symbol, decimals</td><td>IGN, 18</td><td>IGN, 18</td><td>IGN, 18</td></tr><tr><td>Machine-readable</td><td><a href="/release.json">/release.json</a>: the chain id, the source commits and fingerprints, the mining class, the finality rule, the proof program ids, the fee schedule and the current version per platform, with a generated date</td><td></td><td></td></tr></tbody></table></div>
<p>Devnet 3 is where you build today. It is a developer network: it resets without notice and its coins have no value. Its public RPC takes the read methods, <code>eth_sendRawTransaction</code> and a wRPC websocket at <code>/ws</code>, at 20 requests a second per address. The public testnet exists, its RPC answers, and no blocks are being produced on it until it opens. Mainnet has no date. Devnet 3 answered 4463 until its class v5 floor at DAA 68,400 on 8 October 2026 and 4464 from it; read it with <code>eth_chainId</code> rather than fixing it, since a transaction signed for the wrong id is refused.</p>
<div class="tbl"><table><thead><tr><th></th><th>Igneum 2.0 devnet</th></tr></thead><tbody><tr><td>Chain id</td><td>4464 (<code>0x1170</code>)</td></tr><tr><td>Network id</td><td><code>igneum-devnet-4</code></td></tr><tr><td>RPC</td><td><code>https://rpc.devnet.igneum.network</code> (a node you run serves <code>http://127.0.0.1:26790</code>)</td></tr><tr><td>Coins</td><td>no value, resets without notice</td></tr><tr><td>Symbol, decimals</td><td>IGN, 18</td></tr><tr><td>Machine-readable</td><td><a href="/release.json">/release.json</a>: the chain id, the source commits and fingerprints, the mining class, the finality rule, the proof program ids, the fee schedule and the current version per platform, with a generated date</td></tr></tbody></table></div>
<p>The devnet is where you build today. It is a developer network: it resets without notice and its coins have no value. Its public RPC takes the read methods, <code>eth_sendRawTransaction</code> and a wRPC websocket at <code>/ws</code>, at 20 requests a second per address. Read the chain id with <code>eth_chainId</code> rather than fixing it, since a transaction signed for the wrong id is refused.</p>
<p>Mainnet has not started and has no date. Its chain id, 4461 (<code>0x116d</code>), is reserved in the node.</p>
</section>
<section class="doc-section"><h2 id="endpoints-and-tools">Endpoints and tools</h2>
<ul><li><strong>Wallet.</strong> Any Ethereum wallet. <a href="/metamask">Add Igneum to MetaMask</a> with one click, or the <a href="/wallet">Igneum wallet</a>.</li><li><strong>Faucet.</strong> <a href="/faucet">10 IGN of Devnet 3 coin</a> per address per day. No account.</li><li><strong>Explorer.</strong> <a href="/explorer">The explorer</a> shows blocks, the DAG, miners and addresses. The EVM views, transactions and contracts, are being built and link from the same page as they land.</li><li><strong>Swap.</strong> <a href="/swap">The swap</a>: test tokens on Devnet 3, every swap in a proven block.</li><li><strong>Source.</strong> <a href="https://git.igneum.network/igneum-network/igneum" rel="noopener">git.igneum.network/igneum-network/igneum</a>: the node, the miner, the site, and these pages under <code>docs/build/</code>.</li></ul>
<ul><li><strong>Wallet.</strong> Any Ethereum wallet. <a href="/metamask">Add Igneum to MetaMask</a> with one click, or the <a href="/wallet">Igneum wallet</a>.</li><li><strong>Faucet.</strong> <a href="/faucet">10 IGN of the devnet coin</a> per address per day. No account.</li><li><strong>Explorer.</strong> <a href="/explorer">The explorer</a> shows blocks, the DAG, miners and addresses. The EVM views, transactions and contracts, are being built and link from the same page as they land.</li><li><strong>Swap.</strong> <a href="/swap">The swap</a>: test tokens on the devnet, every swap in a proven block.</li><li><strong>Source.</strong> <a href="https://git.igneum.network/igneum-network/igneum" rel="noopener">git.igneum.network/igneum-network/igneum</a>: the node, the miner, the site, and these pages under <code>docs/build/</code>.</li></ul>
</section>
<section class="doc-section"><h2 id="your-first-contract-in-five-minutes">Your first contract in five minutes</h2>
<p>With <a href="https://getfoundry.sh" rel="noopener">Foundry</a>. Tested end to end on Devnet 3 on a build box; the full walkthrough with the expected output is <a href="https://git.igneum.network/igneum-network/igneum/src/branch/master/docs/build/first-contract.md" rel="noopener">docs/build/first-contract.md</a>.</p>
<p>With <a href="https://getfoundry.sh" rel="noopener">Foundry</a>. Tested end to end on the devnet on a build box; the full walkthrough with the expected output is <a href="https://git.igneum.network/igneum-network/igneum/src/branch/master/docs/build/first-contract.md" rel="noopener">docs/build/first-contract.md</a>.</p>
<pre>curl -L https://foundry.paradigm.xyz | bash &amp;&amp; foundryup
export RPC=https://rpc.devnet.igneum.network
cast wallet new # an address and a private key, for the devnet only</pre>
@ -283,7 +280,7 @@ cast call 0xDEPLOYED "number()(uint256)" --rpc-url $RPC</pre>
<p>The call answers <code>1</code>. Paste the transaction hash into <a href="/explorer">the explorer</a>. Hardhat, ethers and viem work the same way: chain id 4464, the RPC above.</p>
</section>
<section class="doc-section"><h2 id="the-rpc-the-node-serves">The RPC the node serves</h2>
<p>Read from a Devnet 3 node, not from a spec. <code>web3_clientVersion</code> answers <code>igneumd/2.1.0/execution-layer-v3</code>. The full list, served and not served, with the probe that produced it: <a href="https://git.igneum.network/igneum-network/igneum/src/branch/master/docs/build/rpc.md" rel="noopener">docs/build/rpc.md</a>.</p>
<p>Read from a devnet node, not from a spec. <code>web3_clientVersion</code> answers <code>igneumd/2.1.0/execution-layer-v3</code>. The full list, served and not served, with the probe that produced it: <a href="https://git.igneum.network/igneum-network/igneum/src/branch/master/docs/build/rpc.md" rel="noopener">docs/build/rpc.md</a>.</p>
<ul><li><strong>Served.</strong> <code>eth_chainId</code>, <code>eth_blockNumber</code>, <code>eth_getBalance</code>, <code>eth_getTransactionCount</code>, <code>eth_getCode</code>, <code>eth_getStorageAt</code>, <code>eth_getBlockByNumber</code>, <code>eth_getBlockByHash</code>, <code>eth_getTransactionByHash</code>, <code>eth_getTransactionReceipt</code>, <code>eth_getBlockReceipts</code>, <code>eth_getLogs</code>, <code>eth_call</code>, <code>eth_estimateGas</code>, <code>eth_gasPrice</code>, <code>eth_maxPriorityFeePerGas</code>, <code>eth_feeHistory</code>, <code>eth_sendRawTransaction</code>, <code>eth_syncing</code>, <code>eth_accounts</code>, <code>net_version</code>, <code>net_peerCount</code>, <code>net_listening</code>, <code>web3_clientVersion</code>.</li><li><strong>Igneum's own.</strong> <code>igneum_getExecStatus</code>, <code>igneum_getProvingStatus</code>, <code>igneum_getShardPlan</code>, <code>igneum_getProofRecords</code>, <code>igneum_getTransactionStatus</code>, <code>igneum_estimateGas</code>, <code>igneum_getBudgets</code> and the segment and proof calls. <code>igneum_estimateGas</code> returns both gas dimensions and whether a call exceeds the proving limit.</li><li><strong>Not served.</strong> Filters and subscriptions (<code>eth_newFilter</code>, <code>eth_subscribe</code>), <code>txpool_*</code>, <code>debug_*</code>, <code>trace_*</code>, <code>eth_sendTransaction</code>, <code>eth_sign</code>, <code>eth_getProof</code>, the uncle calls. Poll <code>eth_blockNumber</code> and <code>eth_getLogs</code>. Sign on your side.</li></ul>
</section>
<section class="doc-section"><h2 id="verify-a-block-in-your-browser">Verify a block in your browser</h2>
@ -295,7 +292,7 @@ console.log(r.verified, r.signers, 'of', r.voters, 'voters', r.ms, 'ms');</pre>
</section>
<section class="doc-section"><h2 id="where-to-ask">Where to ask</h2>
<ul><li>An issue on <a href="https://git.igneum.network/igneum-network/igneum/issues" rel="noopener">the repository</a>.</li><li><a href="https://discord.gg/igneum" rel="noopener">Discord</a>, the builders channel.</li><li><a href="/grants">Grants</a> for tooling, reference apps, infrastructure and research.</li></ul>
<p>Devnet and testnet coins have no value. Nothing on this page is an offer to sell anything.</p></section></article>
<p>Devnet coins have no value. Nothing on this page is an offer to sell anything.</p></section></article>
</div>
<p class="gen">Generated from docs/build/build.md in the repository at build time. Times are UTC.</p>
</div></section>
@ -303,6 +300,7 @@ console.log(r.verified, r.signers, 'of', r.voters, 'voters', r.ms, 'ms');</pre>
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -328,7 +326,6 @@ console.log(r.verified, r.signers, 'of', r.voters, 'voters', r.ms, 'ms');</pre>
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -340,7 +337,6 @@ console.log(r.verified, r.signers, 'of', r.voters, 'voters', r.ms, 'ms');</pre>
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -366,7 +362,7 @@ console.log(r.verified, r.signers, 'of', r.voters, 'voters', r.ms, 'ms');</pre>
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -1,5 +1,5 @@
// Igneum site build: renders the engineering log from the repository's markdown into a branded
// page and merges the log's dated entries into the journey feed. The FUD ledger is internal and
// Igneum site build: injects the shared head, nav and footer, renders the generated pages from the
// repository's markdown and data, and stamps the download buttons. The FUD ledger is internal and
// is never rendered here.
// Runs on every deploy (Vercel build command) and locally with `node build.mjs`.
import { readFileSync, writeFileSync, existsSync } from 'node:fs';
@ -48,10 +48,16 @@ function md(src) {
}
// Shared chrome: fonts and tokens (head), the nav bar and the footer live once in site/partials/ and are injected into every
// page between HTML comment markers (<!-- head:start --> ... <!-- head:end -->, nav, footer; journey on the homepage).
// page between HTML comment markers (<!-- head:start --> ... <!-- head:end -->, nav, footer).
// The committed pages carry the injected copy, so they are right with or without a build; the build keeps them in step.
const partial = name => readFileSync(join(here, 'partials', name), 'utf8').trim();
const HEAD = partial('head.html'), NAV = partial('nav.html'), FOOT = partial('footer.html');
// The devnet state (Igneum 2.0, 8 October 2026): ONE string in ONE place. 'starting' until the Igneum 2.0 devnet's first
// block; set 'live' on the landing that re-points the feeds. Every element carrying data-devnet-state (the nav pill, the
// devnet notices) is stamped with the state and its label, and the nav script only reads the live feed once the state is 'live'.
const DEVNET_STATE = 'starting';
const DEVNET_LABEL = { starting: 'Igneum 2.0 devnet starting', live: 'Devnet live' }[DEVNET_STATE];
const stampDevnet = html => html.replace(/<(b|span)([^>]*?) data-devnet-state="[^"]*"([^>]*)>[^<]*<\/\1>/g, (m, tag, a, b) => `<${tag}${a} data-devnet-state="${DEVNET_STATE}"${b}>${DEVNET_LABEL}</${tag}>`);
const HEAD = partial('head.html'), NAV = stampDevnet(partial('nav.html')), FOOT = partial('footer.html');
// the reference apps' shared definitions (8 Oct 2026): included, executed, proven, finalised, one source for the three pages
const TERMS = partial('terms.html');
function navFor(active) {
@ -147,7 +153,7 @@ function sectionise(bodyHtml) {
const hist = (p) => p.replace(/^(<h2 id="(\d{4}-\d{2}-\d{2})[^"]*">[\s\S]*?<\/h2>)/, (m, h, d) => `${h}<p class="src"><b>Historical record</b> of ${d}: the code and the chain as they stood that day. The chain's current state is the <a href="/release.json">release manifest</a>.</p>`);
return parts.filter(p => p.trim()).map(p => `<section class="doc-section">${hist(p)}</section>`).join('\n');
}
function page(title, desc, bodyHtml, toc, note, { path = '/bench', heading = title, eyebrow, crumb, filter = true } = {}) {
function page(title, desc, bodyHtml, toc, note, { path = '/', heading = title, eyebrow, crumb, filter = true } = {}) {
const active = path.replace(/^\//, '');
const h2s = toc.filter(t => t.lvl === 2);
const nav = h2s.map(t => `<a href="#${t.id}">${esc(t.t)}</a>`).join('');
@ -212,92 +218,18 @@ ${FOOT}
}
let built = [];
if (existsSync(join(docs, 'bench-log.md'))) {
// the public /bench page renders a SCRUBBED copy (site/scrub.mjs; the build fails on any private string, R4.6.1)
const src = scrubBench(readFileSync(join(docs, 'bench-log.md'), 'utf8'));
const { html, toc } = md(src);
writeFileSync(join(here, 'bench.html'), page('Igneum engineering log', 'Every Igneum benchmark and test, with the hardware and the commands that produced it. Prototype numbers are labelled as such.', html, toc,
'Every measurement the project has made, newest at the bottom, written by the people and agents who ran it, with the commands and hardware. Prototype numbers are not mining numbers and say so.',
{ path: '/bench', heading: 'Engineering log', crumb: 'Engineering log' }));
built.push('bench.html');
// journey feed: dated headings become log entries. `short` is the homepage line (one clause, under 72 characters);
// SHORT holds hand-written lines keyed by the start of the heading, the rule below covers the rest.
const SHORT = [
['Generator version 2 adopted', 'Generator v2 adopted: every hash does 128 distinct reads'],
['Sim/economy', 'Economy simulation: mining versus proving under stress'],
['Difficulty rule under attack', 'Difficulty rule attacked seven ways'],
['Difficulty rule: timestamp attack fixed', 'Timestamp attack on the difficulty rule fixed'],
['Devnet-v4 integration', 'Devnet v4: nine branches merged into one node'],
['Per-identity hash rate', 'RTX 5090 hash-rate decay diagnosed: a miner bug, fixed'],
['Igneum-node devnet v2', 'Finality rule v2 live on a four-miner test network'],
['Execution layer devnet v3', 'EVM execution layer: identical state on three nodes'],
['Weak-program census', 'Census of 400,000 programs: redundant loads found'],
['First machine in the United States', 'First machine in the United States: a laptop on an integrated GPU, synced and voting'],
['Shard proving on the RTX 5090', 'Shard layer on the RTX 5090: a full shard proven in 10.9 s, a block aggregated in 2.2 s'],
['Proving v0 on the RTX 5090', 'First GPU proof of an Igneum block: 1.4 s on an RTX 5090'],
['Proving v0', 'First SP1 proof of an Igneum block, on a laptop CPU'],
['Windows node package', 'Windows node package: cross-compiled, two-peer sync'],
['R3.26 / M15', 'Cache-build attack closed: 10.6 s of rebuilds to 14 ms'],
['Difficulty controller', 'Igneum dual-lane difficulty rule built and simulated'],
['Devnet started four months', 'Devnet started four months ahead of plan'],
['First blocks mined over the network', 'First blocks from a Windows PC: RTX 5090 and AMD'],
['First devnet blocks on the real lottery', 'First devnet blocks on the real lottery hash'],
['Igneum-node devnet v0', 'Devnet v0: three nodes at one block per second'],
['Proto-opencl', 'OpenCL worker built and proven without AMD silicon'],
['AMD gfx1036', 'AMD integrated GPU runs the hash through OpenCL'],
['RTX 5090 through NVIDIA OpenCL', 'RTX 5090 through NVIDIA OpenCL'],
['RTX 5090 first run', 'RTX 5090 first run'],
['RTX 5090, memory-hard', 'RTX 5090 on the memory-hard dataset'],
['RTX 5090 ran two generated programs', 'RTX 5090 matches Apple silicon hash for hash, 192 of 192'],
['Fuzzing', 'Fuzzing: 1.3 million hashes, zero GPU to CPU mismatches'],
['Second hostile review', 'Second hostile review: two fatal flaws found and fixed'],
['First prototype of the random-program', 'First prototype of the lottery hash on Apple silicon'],
['Igneum named', 'Igneum named. Litepaper, brand and wallet designs published'],
['Finality floor', 'Finality floor raised to two thirds of all weight'],
['First hourly program swap on the live devnet', 'First live hourly swap: no pause on Mac, NVIDIA or AMD'],
['First finality lock on the live devnet', 'First live finality lock: 77.4% of weight, 17 voters'],
['First machine on the Igneum Miner app', 'First machine on the one-click app: a 5090 at 118 MH/s'],
['Difficulty rule v2 activated on the live devnet', 'Difficulty rule v2 switched on the live devnet by height, no fresh chain'],
['First outside machine on the devnet', 'First outside machine: a friend\'s Mac mining through the app'],
['Devnet v4 cut-over', 'Devnet v4 live: generator v2, two-thirds floor, fresh chain'],
];
function shortTitle(t) {
for (const [k, v] of SHORT) if (t.startsWith(k)) return v;
let s = t.split(/[:;]/)[0].trim();
if (s.length < 16) s = t.split(/[,;]/).slice(0, 2).join(',').trim();
if (s.length > 72) s = s.slice(0, 69).replace(/\s+\S*$/, '') + '…';
return s.replace(/[.,]$/, '');
}
const entries = [];
for (const m of src.matchAll(/^##+\s+(\d{1,2}\s+\w+\s+\d{4})[,:]?\s*(.*)$/gm)) {
const d = new Date(m[1] + ' 12:00:00 UTC'); if (isNaN(d)) continue;
const iso = d.toISOString().slice(0, 10);
// "(night), ledger M30: ..." loses its bracket and then its leading comma
const text = m[2].replace(/\(.*?\)/g, '').replace(/^\s*[,:;]\s*/, '').replace(/\s+/g, ' ').trim();
if (text) { const t = text.charAt(0).toUpperCase() + text.slice(1); entries.push({ date: iso, text: t, short: shortTitle(t) }); }
}
const jp = join(here, 'journey.json');
const j = JSON.parse(readFileSync(jp, 'utf8'));
for (const e of j.log) { const t = scrubBench(e.text.replace(/^\s*[,:;]\s*/, '')); e.text = t.charAt(0).toUpperCase() + t.slice(1); } // entries stored before the leading-comma fix, and before a scrub rule was added, are re-scrubbed
const seen = new Set(j.log.map(e => e.date + '|' + e.text));
for (const e of entries.reverse()) { const k = e.date + '|' + e.text; if (!seen.has(k)) { j.log.unshift(e); seen.add(k); } }
for (const e of j.log) e.short = shortTitle(e.text);
j.log.sort((a, b) => (a.date < b.date ? 1 : a.date > b.date ? -1 : 0));
j.log = j.log.slice(0, 40);
j.updated = j.log[0] ? j.log[0].date : j.updated;
writeFileSync(jp, JSON.stringify(j, null, 2) + '\n');
built.push('journey.json (' + j.log.length + ' entries)');
}
// Igneum 2.0 site reset (8 October 2026): the engineering log (/bench) and the journey (/journey) are history and are not
// served; docs/bench-log.md stays in the repository as the measurement record.
// The builder programme (8 October 2026): /build and /grants are rendered from docs/build/build.md and docs/build/grants.md
// through the same generated-page shell as /bench, so the markdown is the source and the served page follows it. The other
// through the same generated-page shell, so the markdown is the source and the served page follows it. The other
// files of docs/build/ (the walkthrough, the RPC list, the faucet, the verifier) are linked from /build on the git host.
for (const [src, file, title, desc, heading, lead, eyebrow] of [
['build.md', 'build.html', 'Build on Igneum: chain ids, RPC, a contract in five minutes', '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.', 'Build on Igneum', 'Built to prove every block. A lock in minutes. Nothing to stake. The EVM you already know: Solidity deploys unchanged. Here are the chain ids, the endpoints and a contract in five minutes.', 'Developers'],
['grants.md', 'grants.html', 'Igneum grants: tooling, reference apps, infrastructure, research', '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.', 'Grants', 'Paid in IGN from the dev fee fund, on delivery, on the public testnet first. Four tiers. One issue to apply. A weekly review.', 'The programme'],
['grants.md', 'grants.html', 'Igneum grants: tooling, reference apps, infrastructure, research', '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.', 'Grants', 'Paid in IGN from the dev fee fund, on delivery, on the devnet first. Four tiers. One issue to apply. A weekly review.', 'The programme'],
]) {
const mdp = join(docs, 'build', src);
if (!existsSync(mdp)) continue; // the gate builds a copy of site/ alone: the committed page stands, as for /bench
if (!existsSync(mdp)) continue; // the gate builds a copy of site/ alone: the committed page stands
const { html: mdHtml, toc } = md(readFileSync(mdp, 'utf8'));
const html = fillManifest(mdHtml);
const path = '/' + file.replace(/\.html$/, '');
@ -305,9 +237,7 @@ for (const [src, file, title, desc, heading, lead, eyebrow] of [
built.push(file);
}
// The hand-written pages: shared head, nav (with the active link marked) and footer injected in place; the homepage also
// gets journey.json inlined so the phases and the log render without a fetch and without a layout shift.
const journey = JSON.parse(readFileSync(join(here, 'journey.json'), 'utf8'));
// The hand-written pages: shared head, nav (with the active link marked) and footer injected in place.
// The miner's product name lives HERE and nowhere else (the founder, 5 October 2026: Ember). Pages carry
// <span data-product="full|name|app|caption">…</span> and the build stamps every span from this table, so a rename is one
// edit. `full` is the first mention on a page and the headings where the brand matters, `name` every mention after that,
@ -325,16 +255,14 @@ function stampProduct(html, file) {
return `<span data-product="${k}">${esc(PRODUCT[k])}</span>`;
});
}
// Downloads (5 October 2026, testnet launch). The buttons link the PUBLIC downloads path, which carries no token:
// Downloads (5 October 2026). The buttons link the PUBLIC downloads path, which carries no token:
// https://dl.igneum.network/public/<alias>, four aliases that packaging/ota/publish-public.sh rewrites to the current
// files. The version and the size on every button come from the index that script writes next to the signed manifests
// (dl/public/igneum-downloads.json), read here at build time; site/downloads.json is the last copy that was read, so a
// build without network (CI, a laptop offline) still stamps real numbers, and a successful read refreshes it.
// Pages carry: <a data-dl="miner-windows|miner-mac|miner-hive|wallet-mac"> (href stamped), <span data-dl-meta="key">
// (version and size), <code data-dl-url="key"> (the versioned URL, for the HiveOS Flight Sheet) and <span data-dl-sha="key">.
// TESTNET_OPEN: the one flag of the go. While false every download section keeps its "Public testnet: not yet open" line
// (elements marked data-testnet-notice); true removes them.
const TESTNET_OPEN = false;
// Igneum 2.0 (8 October 2026): no testnet is served; any leftover paragraph marked data-testnet-notice is removed at build.
const DL_HOST = 'https://dl.igneum.network';
const DL_SNAPSHOT = join(here, 'downloads.json');
// The snapshot is a tracked file: the build rewrites it only on an explicit refresh (SITE_DOWNLOADS_REFRESH=1 or
@ -373,7 +301,7 @@ function stampDownloads(html, file, dl) {
html = html.replace(/<span([^>]*\sdata-dl-meta="([a-z-]+)"[^>]*)>[^<]*<\/span>/g, (m, attrs, key) => `<span${attrs}>${f[key] ? `v${esc(String(f[key].version))} · ${fmtMB(f[key].size)}` : 'not published yet'}</span>`);
html = html.replace(/<code([^>]*\sdata-dl-url="([a-z-]+)"[^>]*)>[^<]*<\/code>/g, (m, attrs, key) => `<code${attrs}>${f[key] ? `${DL_HOST}${esc(f[key].path)}` : '(not published yet)'}</code>`);
html = html.replace(/<span([^>]*\sdata-dl-sha="([a-z-]+)"[^>]*)>[^<]*<\/span>/g, (m, attrs, key) => `<span${attrs}>${f[key] ? esc(String(f[key].sha256)) : 'not published yet'}</span>`);
if (TESTNET_OPEN) html = html.replace(/\n?[ \t]*<p data-testnet-notice[^>]*>[\s\S]*?<\/p>/g, '');
html = html.replace(/\n?[ \t]*<p data-testnet-notice[^>]*>[\s\S]*?<\/p>/g, '');
for (const key of ['miner-windows', 'miner-mac', 'miner-hive', 'wallet-mac']) if (html.includes(`data-dl="${key}"`) && !f[key]) console.warn(`${file}: ${key} has no published file yet; its button points at #get`);
return html;
}
@ -400,7 +328,7 @@ function renderEvidence(html) {
counts[LABELS[idx]]++;
return `<tr data-status="${LABELS[idx]}"><td class="n">${n}</td><td class="claim">${inl(claim)}<div class="where">${inl(where)}</div></td><td><span class="st st-${idx}">${inl(status)}</span></td><td class="mono">${inl(ver)}</td><td>${inl(test)}</td><td>${inl(result)}</td><td class="iv">${inl(iv)}</td></tr>`;
}).join('\n');
// the same scrub as /bench: local-time stamps to UTC and the private-string check (the build fails on any hit)
// the same scrub as the generated pages: local-time stamps to UTC and the private-string check (the build fails on any hit)
const trs = scrubBench(tr);
html = html.replace(/(<table id="claims">[\s\S]*?<tbody>)[\s\S]*?(<\/tbody>)/, (m, a, b) => `${a}\n${trs}\n${b}`);
for (const k of LABELS) {
@ -476,8 +404,7 @@ for (const [file, active] of PAGES) {
<p class="src"><b>Modelled</b> from <code>emission.rs</code> (the schedule as <code>site/lib/emission.mjs</code> carries it) and the release manifest at build time, with today's measured shard count (${PV.shards_planned_24h.toLocaleString('en-GB')} planned in 24 hours) and key count (${PV.prover_keys_24h}) held constant; the per-shard figure is the pool's credit per planned shard, the per-key figure the pool per day divided by the keys and by 24. More shards or more keys lower both; a block's unproven shards leave their credit in the escrow.</p>`;
html = inject(html, 'proving-model', table, file);
}
html = fillManifest(html);
if (file === 'index.html' && html.includes('<!-- journey:start -->')) html = inject(html, 'journey', `<script type="application/json" id="journey-data">${JSON.stringify(journey).replace(/</g, '\\u003c')}</script>`, file);
html = stampDevnet(fillManifest(html));
// /income (8 October 2026): the calculator's card list is the bench table's current rows, stock and tuned apart, inlined
// at build so the page needs no fetch; a row's watts carry their class when they were read under another (watts_class)
if (file === 'income.html' && html.includes('<!-- income-data:start -->')) {
@ -494,7 +421,7 @@ for (const [file, active] of PAGES) {
}
// the public bench table (/miners): one row per card, generator version and miner version, from site/miner-bench.json
// (the bench-log numbers that exist today, and rows later jobs append); rendered through the same scrub as /bench.
// (the bench-log numbers that exist today, and rows later jobs append); rendered through the same scrub as the generated pages.
// 7 October 2026 (the founder): the CURRENT class is the table (class v4, or class v3 re-measured with its v4 cost, 6 October
// on); cards you can buy first by hash rate, the datacentre rows collapsed, the earlier classes collapsed; one row per
// card; the card's vendor mark and name lead, the rate is the big tabular number, MH per wall watt beside it in the ember
@ -508,7 +435,6 @@ for (const [file, active] of PAGES) {
const curAll = bj.rows.filter(isCurrent).sort(byRate);
const cur = curAll.filter(r => r.group !== 'datacentre');
const dcRows = curAll.filter(r => r.group === 'datacentre');
const earlier = bj.rows.filter(r => !isCurrent(r)).sort(byRate);
const rows = bj.rows;
const fmt = (n) => Number(n).toLocaleString('en-GB', { maximumFractionDigits: 1 });
const fmt3 = (n) => Number(n).toLocaleString('en-GB', { maximumFractionDigits: 3 });
@ -527,7 +453,7 @@ for (const [file, active] of PAGES) {
else parts.push('<b>Hive flight sheet</b> stock' + (r.hive && r.hive.label ? ' (' + esc(r.hive.label.replace(/^stock \(|\)$/g, '')) + ')' : ''));
parts.push('<b>Class v4 cost</b> ' + esc(r.v4_cost || 'not measured'));
parts.push('<b>Tuned</b> ' + esc(r.tuned || 'stock, mining'));
parts.push('<b>Generator</b> ' + esc(r.generator) + ' · <b>Miner</b> ' + esc(r.miner + (r.driver_os ? ' (' + r.driver_os + ')' : '')));
parts.push('<b>Generator</b> ' + esc(r.generator) + (r.driver_os ? ' · <b>Driver</b> ' + esc(r.driver_os) : ''));
parts.push('<b>Source</b> ' + esc(r.source) + ' · <b>Who</b> ' + esc(r.by));
if (r.note) parts.push('<b>Note</b> ' + esc(r.note));
return parts.map(x => '<span class="d">' + x + '</span>').join('');
@ -554,7 +480,6 @@ for (const [file, active] of PAGES) {
};
const table = render(cur, 'bench-current');
const dcTable = render(dcRows, 'bench-datacentre');
const earlierTable = render(earlier, 'bench-earlier');
// the lede recomputes from the data (8 October 2026): the best desktop card by rate, then the best stock and the best tuned
// MH per wall watt as separate claims, so a rented stock row never reads as a tuned one and a tuned lock never reads as stock
// a row whose watts were read under another class (watts_class 'v3': the fleet's bench pack, 7 and 8 October 2026) is ranked by rate,
@ -645,17 +570,10 @@ table.bench2 tr.detail .d{display:block;margin:0 0 4px}table.bench2 tr.detail b{
'<p>One row per card on the current class: the class v4 program (the latency-shadow block over the class v3 hash), or a class v3 row re-measured with its class v4 cost on 6 October 2026 or later. MH per wall watt uses board or wall power; a row whose watts are the chip\'s (Apple silicon: GPU plus DRAM from IOReport) says so and is not ranked on that column. Integrated GPUs are not listed.</p>',
'<h3 class="grp" id="buy">Cards you can buy</h3>',
table,
`<p class="gen">${cur.length} cards. Details opens a card\'s Hive flight-sheet values, its full class v4 cost, miner, source and note.</p>`,
`<p class="gen">${cur.length} cards. Details opens a card\'s Hive flight-sheet values, its full class v4 cost, source and note.</p>`,
'<details class="grp"><summary>Datacentre (' + dcRows.length + ' cards, rented for the measurement; about three times the rented dollars per hash of a desktop card)</summary>',
dcTable,
'</details>',
'<details class="grp"><summary>Earlier classes (' + earlier.length + ' rows: the genesis program, the hourly program, class v3 before the shadow; not comparable with the table above)</summary>',
'<p>The bench numbers of 3 and 4 October 2026. A higher MH/s here is a different hash, not a faster card.</p>',
earlierTable,
'</details>',
'<details class="grp"><summary>Why the rates changed</summary>',
'<p>The genesis program did 104 dependent random 4-byte loads per hash over a 1 GiB dataset; the hourly program and class v3 do 128, with the mixer between them; class v4 adds about 100,000 integer operations per hash that ride in the memory wait. So the hash is bound by random-read bandwidth by design, and a card\'s MH/s is a relative number: the difficulty follows it, and the same card earns the same share of blocks at 136 MH/s on class v3 as it did at 228 MH/s on the genesis program. What a miner compares is hash per watt, and what the chain cares about is the chip edge, which the shadow work is there to cut.</p>',
'</details>',
'<h2 id="how">How a row gets here</h2>',
'<p>Every row names the engineering log entry or the job it came from. "Measured by the team" means our own hardware and our own log. "Reported by the fleet" or "measured by the fleet" means a machine we rent or do not own, read from the status lines its miner uploads or from a bench run on it.</p>',
'<p>MH per watt needs the card\'s power draw during the run. The app reads it on NVIDIA cards through the driver. Rows get the figure when a run records it. The class v4 cost column is what the latency-shadow work costs that card against the class v3 control, in watts and rate, where it was measured. The tuned column is the card\'s state at the row: a full Ember Tune names its point; stock means the card as it came, bench only or mining.</p>',
@ -669,8 +587,8 @@ table.bench2 tr.detail .d{display:block;margin:0 0 4px}table.bench2 tr.detail b{
`<p>Rows: ${prows.length}${pj.generated ? ', generated ' + pj.generated : ''}. Written from the fleet's tune records at build time.</p>`,
].join('\n'));
const toc = [{ lvl: 2, t: 'The table', id: 'table' }, { lvl: 2, t: 'How a row gets here', id: 'how' }, { lvl: 2, t: 'Fleet tuning priors', id: 'priors' }];
writeFileSync(join(here, 'miners.html'), page('Igneum GPU bench table', '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.', body, toc,
'Measured hash rates per card on the Igneum lottery hash, with the generator version, the miner version, the date and the log entry behind each number.',
writeFileSync(join(here, 'miners.html'), page('Igneum GPU bench table', 'Measured Igneum hash rates per GPU on the current program: card, best MH/s, MH per wall watt where measured, date and the record each number came from.', body, toc,
'Measured hash rates per card on the Igneum lottery hash, on the current program, with the date and the record behind each number.',
{ path: '/miners', heading: 'GPU bench table', eyebrow: `${cur.length} cards you can buy, ${dcRows.length} datacentre, ${prows.length} fleet tuning models`, crumb: 'GPU bench table' }));
built.push('miners.html (' + rows.length + ' rows)');
}
@ -678,7 +596,7 @@ table.bench2 tr.detail .d{display:block;margin:0 0 4px}table.bench2 tr.detail b{
// The secondary pages (7 Oct 2026, the redesign): each one is rendered from ONE source so no sentence is kept twice by hand.
// /claims and /randomx are the litepaper's own sections (their ledger sentences stay on the litepaper, which is what the
// ledger text check reads); /dev-fee is the miner page's fee section; /provenance is docs/provenance.md through the same
// scrub as /bench; /journey is journey.json (the phases and the log the bench entries feed). A page with no source is not written.
// scrub as the measurement record. A page with no source is not written.
function shell({ title, desc, path, crumb, eyebrow, heading, lead, body, style = '', after = '' }) {
const active = path.replace(/^\//, '');
return stampMarks(`<!doctype html>
@ -785,7 +703,7 @@ function onward(links) { return `<div class="onward">${links.map(([href, label])
lead: fee.lead || 'The protocol carries no fee. The software fee is the miner app’s, like every other GPU miner’s, and one flag turns it off.',
body: fee.html,
style: '.feecard{display:grid;grid-template-columns:1fr;gap:var(--s-4)}@media (min-width:900px){.feecard{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:start}}pre b{color:var(--molten-text);font-weight:500}',
after: onward([['/miner#get', 'Get the miner'], ['/litepaper#economics', 'The economics'], ['/bench', 'The engineering log']]),
after: onward([['/miner#get', 'Get the miner'], ['/litepaper#economics', 'The economics'], ['/evidence', 'Every claim and its status']]),
}));
built.push('dev-fee.html (from miner#fee)');
}
@ -797,26 +715,6 @@ if (existsSync(join(docs, 'provenance.md'))) {
{ path: '/provenance', heading: 'Built on the shoulders', eyebrow: 'Provenance · the decision of 3 October 2026', crumb: 'Built on the shoulders', filter: false }));
built.push('provenance.html (from docs/provenance.md)');
}
{
const j = JSON.parse(readFileSync(join(here, 'journey.json'), 'utf8'));
const STATUS = { active: ['current', 'Under way'], next: ['next', 'Next'], done: ['done', 'Done'] };
const phases = (j.phases || []).map((p, i) => { const [cls, word] = STATUS[p.status] || ['', p.status]; return `<div class="milestone ${cls}" id="${esc(p.id)}"><div class="when">${esc(p.when)}</div><div><span class="badge${cls === 'current' ? ' warm' : ''}">${word}</span><h3>${i + 1}. ${esc(p.name)}</h3><p>${esc(p.line)}</p>${p.gate ? `<p class="gate"><b>Gate:</b> ${esc(p.gate)}</p>` : ''}</div></div>`; }).join('\n');
const MON = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
const day = d => { const [y, m, dd] = d.split('-'); return `${Number(dd)} ${MON[Number(m) - 1]} ${y}`; };
const log = (j.log || []).map(e => `<article class="record"><div class="record-top"><time datetime="${esc(e.date)}">${day(e.date)}</time><span class="badge">log</span></div><h3>${esc(e.short || e.text)}</h3>${e.short && e.short !== e.text ? `<p>${esc(e.text)}</p>` : ''}</article>`).join('\n');
writeFileSync(join(here, 'journey.html'), shell({
title: 'The Igneum journey: six phases, four gates', desc: '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.',
path: '/journey', crumb: 'The journey', eyebrow: `Six phases · updated ${day(j.updated)}`, heading: 'The journey.',
lead: 'Six phases from the specification to a fair launch. Each closes at its gate, a measurement published whether it passes or fails, so there is no date to slip. Below the phases, the latest entries of the engineering log.',
body: `<div class="timeline">${phases}</div>
<div class="section-head" style="margin-top:100px"><div><div class="eyebrow"><span class="line"></span>The log, newest first</div><h2>Lately, in the&nbsp;log.</h2></div><div class="searchbar" style="min-width:min(100%,360px)"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><circle cx="10.5" cy="10.5" r="6.5"/><path d="m16 16 5 5"/></svg><label for="log-q" class="visually-hidden">Filter the log</label><input id="log-q" data-filter-input="log" placeholder="Filter: a card, a date, a word" autocomplete="off" spellcheck="false"><span class="small" data-filter-count="log"></span></div></div>
<div class="record-count" data-filter-count="log"></div><div class="record-grid" data-filter-list="log">${log}</div>
<p class="empty-state" data-filter-empty="log" hidden>Nothing in the log matches that.</p>
<p class="note">Every entry is a dated heading of <a href="/bench">the engineering log</a>, where the commands and the hardware are. The phases and their gates are the litepaper’s <a href="/litepaper#roadmap">roadmap</a>.</p>`,
after: onward([['/bench', 'The engineering log'], ['/evidence', 'Every claim and its status'], ['/live', 'The live devnet']]),
}));
built.push('journey.html (' + (j.phases || []).length + ' phases, ' + (j.log || []).length + ' entries)');
}
console.log('built: ' + built.join(', '));
// the header rule: every served page carries the full nav (tools/ci/site-nav-check.mjs); the build fails on a shorter one
// (the gate builds a copy of site/ alone and runs the check as its own line, so a missing tools/ is not a failure here)

View file

@ -89,7 +89,7 @@
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -119,12 +119,10 @@
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -142,7 +140,7 @@
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -162,12 +160,10 @@
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -181,7 +177,7 @@
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -272,6 +268,7 @@
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -297,7 +294,6 @@
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -309,7 +305,6 @@
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -335,7 +330,7 @@
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -89,7 +89,7 @@
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" data-active aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -119,12 +119,10 @@
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -142,7 +140,7 @@
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -162,12 +160,10 @@
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -181,7 +177,7 @@
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -262,7 +258,7 @@
<tr><td>Mining to a pool</td><td>nothing to turn off: the pool issues the templates, so the 1-in-100 mechanism does not exist, and the pool's own fee is the only one</td></tr>
</tbody>
</table></div>
<p class="note">Measured on a test network, 4 Oct 2026: 9 fee blocks in the 785 blocks of two fee-paying miners (1.146%); the control miner at <span class="mono">--dev-fee 0</span> paid none; the miners’ counters and both nodes agree. <a href="/bench">The log</a>.</p>
<p class="note">Measured on a private test network, 4 Oct 2026: 9 fee blocks in the 785 blocks of two fee-paying miners (1.146%); the control miner at <span class="mono">--dev-fee 0</span> paid none; the miners’ counters and both nodes agree. Details are in the measurement record in the repository (docs/bench-log.md).</p>
</div>
<div class="card">
<div class="eyebrow">Settings, as the app shows it</div>
@ -274,13 +270,14 @@
</div>
</div>
</div>
<div class="onward"><a href="/miner#get" class="btn">Get the miner</a><a href="/litepaper#economics" class="btn">The economics</a><a href="/bench" class="btn">The engineering log</a></div>
<div class="onward"><a href="/miner#get" class="btn">Get the miner</a><a href="/litepaper#economics" class="btn">The economics</a><a href="/evidence" class="btn">Every claim and its status</a></div>
</div>
</section>
</main>
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -306,7 +303,6 @@
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -318,7 +314,6 @@
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -344,7 +339,7 @@
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -79,7 +79,7 @@
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" data-active aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -109,12 +109,10 @@
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -132,7 +130,7 @@
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -152,12 +150,10 @@
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -171,7 +167,7 @@
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -284,7 +280,6 @@
</div>
<p class="yourcard" data-yourcard style="margin-top:16px">Your card: pending</p>
<p class="home-quiet" data-devnet-notice><b>Devnet.</b> Coins have no value and the chain may be reset.</p>
<p class="home-quiet" data-testnet-notice>Public testnet: not yet open; the devnet build is here for people who want to look. The public testnet is armed: three seed nodes and the public RPC are up, and it opens on the go word.</p>
<p class="home-quiet">The protocol carries no fee. The one payment to the project is the Ember software’s optional 1% dev fee, like other GPU miners, off with one flag. <a href="/dev-fee">The fee, in full view.</a></p>
</div>
</section>
@ -318,6 +313,7 @@
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -343,7 +339,6 @@
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -355,7 +350,6 @@
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -381,7 +375,7 @@
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -63,7 +63,7 @@
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -93,12 +93,10 @@
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -116,7 +114,7 @@
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -136,12 +134,10 @@
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -155,7 +151,7 @@
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -218,18 +214,18 @@
<p class="lead">Every number below is read from the node’s source at one commit, with the file and the line, and the constants the chain runs on are the <a href="/release.json">release manifest</a>’s, filled at build time (node <span data-rm="source.node.commit">f8da7515</span>, <span data-rm="read_at_short">read 8 October 2026, 15:50 UK</span>). No price of IGN appears and nothing is projected: this page says what the code pays, to whom, and from what.</p>
</div></section>
<section class="section"><div class="container">
<p class="src"><b>Source:</b> the node fork, branch <code>release-0.3.25-node</code> at <code>e0644958</code> (the Devnet 3 cut of 8 October 2026), confirmed by the node lane on 8 October 2026; every line number is that commit’s. Devnet 3 inherits the devnet parameters (<code>consensus/core/src/config/params.rs</code> 2173 and 2207).</p>
<p class="src"><b>Source:</b> the node fork at commit <code>e0644958</code> (the devnet cut of 8 October 2026), confirmed by the node lane on 8 October 2026; every line number is that commit’s. The devnet runs the devnet parameters (<code>consensus/core/src/config/params.rs</code> 2173 and 2207).</p>
<h2>Emission</h2>
<p>The node carries two schedules in one struct (<code>consensus/core/src/emission.rs</code> 85 to 123) and installs one per network (<code>params.rs</code> 2158, 1910, 1764). A year is 31,557,600 seconds (<code>emission.rs</code> 32); the chain counts time in DAA seconds, one a block at one block a second.</p>
<p>The node defines the emission schedule in one struct (<code>consensus/core/src/emission.rs</code> 85 to 123) and installs it per network (<code>params.rs</code> 2158, 1910, 1764). A year is 31,557,600 seconds (<code>emission.rs</code> 32); the chain counts time in DAA seconds, one a block at one block a second.</p>
<div class="tbl"><table>
<thead><tr><th>Field</th><th><code>CURRENT</code> (Devnet 3 today, mainnet)</th><th><code>TESTNET_1</code> (igneum-testnet-1)</th><th>Where</th></tr></thead>
<thead><tr><th>Field</th><th><code>CURRENT</code> (the devnet today, mainnet)</th><th>Where</th></tr></thead>
<tbody>
<tr><td>Launch rate</td><td class="num"><span data-rm="fees.emission.launch_rate_base_units_per_daa_second">3,168,808,781</span> base units a DAA second (10<sup>9</sup> IGN x 10<sup>8</sup> / 31,557,600, floored: one billion IGN in year one)</td><td class="num">100 IGN a DAA second</td><td><code>emission.rs</code> 85 to 123; <code>igneum.rs</code> 34</td></tr>
<tr><td>Ramp</td><td class="num">2,592,000 s (30 days) from 10 percent</td><td class="num">7,776,000 s (90 days) from 10 percent</td><td><code>igneum.rs</code> 76 <code>launch_ramp</code></td></tr>
<tr><td>Step</td><td class="num">63,115,200 s (two years), the rate halved each step (decay 2<sup>31</sup> of 2<sup>32</sup>)</td><td class="num">2,629,800 s (a month), the rate times 2<sup>-1/24</sup> each step (decay 4,172,697,914 of 2<sup>32</sup>: a two-year half-life)</td><td><code>emission.rs</code> 85 to 123</td></tr>
<tr><td>Tail</td><td class="num">none: the curve runs to zero and the sum is the hard cap, 4,000,000,000 IGN</td><td class="num">1 percent of supply a year (100 basis points) once the glide falls below it</td><td><code>emission.rs</code> 69 to 71</td></tr>
<tr><td>Where each runs</td><td>Devnet 3 (8 decimals); mainnet (rescaled to 18)</td><td>igneum-testnet-1 (rescaled to 18)</td><td><code>params.rs</code> 2158, 1764, 1910</td></tr>
<tr><td>Launch rate</td><td class="num"><span data-rm="fees.emission.launch_rate_base_units_per_daa_second">3,168,808,781</span> base units a DAA second (10<sup>9</sup> IGN x 10<sup>8</sup> / 31,557,600, floored: one billion IGN in year one)</td><td><code>emission.rs</code> 85 to 123; <code>igneum.rs</code> 34</td></tr>
<tr><td>Ramp</td><td class="num">2,592,000 s (30 days) from 10 percent</td><td><code>igneum.rs</code> 76 <code>launch_ramp</code></td></tr>
<tr><td>Step</td><td class="num">63,115,200 s (two years), the rate halved each step (decay 2<sup>31</sup> of 2<sup>32</sup>)</td><td><code>emission.rs</code> 85 to 123</td></tr>
<tr><td>Tail</td><td class="num">none: the curve runs to zero and the sum is the hard cap, 4,000,000,000 IGN</td><td><code>emission.rs</code> 69 to 71</td></tr>
<tr><td>Where each runs</td><td>The devnet (8 decimals); mainnet (rescaled to 18)</td><td><code>params.rs</code> 2158, 1764</td></tr>
</tbody>
</table></div>
<p>The schedule is a genesis parameter: the devnet digest does not move when a network installs another (<code>params.rs</code> 2095, the test). The live devnet’s block reward at its current DAA score is on <a href="/income">the income page</a>, computed from the <code>CURRENT</code> rule.</p>
@ -249,15 +245,15 @@
<div class="tbl"><table>
<thead><tr><th>Route</th><th>What happens</th><th>State</th><th>Where</th></tr></thead>
<tbody>
<tr><td>Base fee, both gas dimensions</td><td>burned in full: gas used times the execution base fee, pgas used times the proving base fee, debited and credited to no one</td><td>in the code on Devnet 3</td><td><code>igneum/exec/src/executor.rs</code> 320 to 371 (327 and 357, 328 and 360)</td></tr>
<tr><td>Priority fee (the tip)</td><td><span data-rm="fees.priority_fee.miner_percent">80</span> percent to the block’s miner; <span data-rm="fees.priority_fee.developer_percent">20</span> percent to the developer registrations of the contracts whose code ran, pro rata by each frame’s gas; an unregistered frame’s part is credited to nobody, which is a burn</td><td>in the code on Devnet 3</td><td><code>executor.rs</code> 335 to 339; <code>igneum/exec/src/pgas.rs</code> 290; <code>igneum/exec/src/config.rs</code> 76 (<code>DEVELOPER_SHARE_PERCENT = 20</code>)</td></tr>
<tr><td>Base fee, both gas dimensions</td><td>burned in full: gas used times the execution base fee, pgas used times the proving base fee, debited and credited to no one</td><td>in the code on the devnet</td><td><code>igneum/exec/src/executor.rs</code> 320 to 371 (327 and 357, 328 and 360)</td></tr>
<tr><td>Priority fee (the tip)</td><td><span data-rm="fees.priority_fee.miner_percent">80</span> percent to the block’s miner; <span data-rm="fees.priority_fee.developer_percent">20</span> percent to the developer registrations of the contracts whose code ran, pro rata by each frame’s gas; an unregistered frame’s part is credited to nobody, which is a burn</td><td>in the code on the devnet</td><td><code>executor.rs</code> 335 to 339; <code>igneum/exec/src/pgas.rs</code> 290; <code>igneum/exec/src/config.rs</code> 76 (<code>DEVELOPER_SHARE_PERCENT = 20</code>)</td></tr>
<tr><td>External proving jobs</td><td>90 percent to the provers who delivered, 10 percent burned, once jobs settle in IGN</td><td>designed, not in the code: no constant exists; at launch a job is paid on the customer’s own chain</td><td>spec 05 section 5.4; the litepaper’s Proving section</td></tr>
<tr><td>The provers’ part of the tip</td><td>designed: a share of the producer’s <span data-rm="fees.priority_fee.miner_percent">80</span> percent paid per block to the block’s provers in the proportion the proving protocol defines, per shard with the pool credit</td><td>designed, not in the code: no constant exists; the executor credits the whole <span data-rm="fees.priority_fee.miner_percent">80</span> percent to the miner (<code>executor.rs</code> 335 to 339)</td><td>spec 05 sections 5.2 and 5.3</td></tr>
</tbody>
</table></div>
<h2>The proving-fee market</h2>
<p>The second income of a card is the proving pool above: 20 percent of every block, paid per shard against a valid proof record. A provers’ part of the priority fee is designed (spec 05, 5.2: a share of the producer’s 80 percent paid per block to the block’s provers) and is not in the code: today the whole 80 percent of the tip goes to the miner, the executor’s line above, and the pool is the only thing that pays an internal prover. The price a prover must charge an outside customer is the subsidy it forgoes while it proves, which falls as one over the network’s hash rate; the formula and its measured inputs are in the litepaper (<a href="/litepaper#building">Building on Igneum</a>). The market itself is designed and not built. What the pool pays today is measured: on Devnet 3 in the 24 hours to 12:16 UK on 8 October 2026 the chain paid 8,209 shards, 9,913.09 IGN in all, to 29 prover keys; 905 shards were paid in the hour to that minute; the lag from a proven block to the block that pays its shards read p50 514 and p90 953 DAA seconds; 40,502 shards were planned and 54 proving at that minute (the observer’s proof tables, read through <code>/api/explorer?proving=1</code>; the same numbers live on <a href="/proving">the proving page</a>). Devnet 3 IGN has no value; the rows show the mechanism paying, not an income.</p>
<p>The second income of a card is the proving pool above: 20 percent of every block, paid per shard against a valid proof record. A provers’ part of the priority fee is designed (spec 05, 5.2: a share of the producer’s 80 percent paid per block to the block’s provers) and is not in the code: today the whole 80 percent of the tip goes to the miner, the executor’s line above, and the pool is the only thing that pays an internal prover. The price a prover must charge an outside customer is the subsidy it forgoes while it proves, which falls as one over the network’s hash rate; the formula and its measured inputs are in the litepaper (<a href="/litepaper#building">Building on Igneum</a>). The market itself is designed and not built. What the pool pays today is measured: on the devnet in the 24 hours to 12:16 UK on 8 October 2026 the chain paid 8,209 shards, 9,913.09 IGN in all, to 29 prover keys; 905 shards were paid in the hour to that minute; the lag from a proven block to the block that pays its shards read p50 514 and p90 953 DAA seconds; 40,502 shards were planned and 54 proving at that minute (the observer’s proof tables, read through <code>/api/explorer?proving=1</code>; the same numbers live on <a href="/proving">the proving page</a>). Devnet IGN has no value; the rows show the mechanism paying, not an income.</p>
<h2>The client fee and the fund it fills</h2>
<div class="tbl"><table>
@ -273,12 +269,12 @@
<p>Three incomes, kept apart. Each has its own source and its own state.</p>
<div class="tbl"><table><thead><tr><th>Income</th><th>Where it comes from</th><th>Who gets it</th><th>State</th></tr></thead><tbody>
<tr><td>Block security</td><td>the block subsidy (<span data-rm="fees.subsidy_split.miner_percent">80</span> percent of each block) and <span data-rm="fees.priority_fee.miner_percent">80</span> percent of the priority fee</td><td>the miner whose key found the block</td><td>in consensus on every network (measured)</td></tr>
<tr><td>Internal proving</td><td>the proving pool: a fifth of each block’s subsidy (<span data-rm="fees.subsidy_split.proving_pool_percent">20</span> percent), paid per shard against a valid proof record; nothing else pays an internal prover today</td><td>the prover keys that delivered the shards</td><td>in consensus on Devnet 3 (measured below); the provers’ part of the tip designed, not in the code</td></tr>
<tr><td>Internal proving</td><td>the proving pool: a fifth of each block’s subsidy (<span data-rm="fees.subsidy_split.proving_pool_percent">20</span> percent), paid per shard against a valid proof record; nothing else pays an internal prover today</td><td>the prover keys that delivered the shards</td><td>in consensus on the devnet (measured below); the provers’ part of the tip designed, not in the code</td></tr>
<tr><td>External customers</td><td>payments from other chains for proofs, settled in IGN: <span data-rm="fees.external_jobs.provers_percent">90</span> percent to the provers, <span data-rm="fees.external_jobs.burn_percent">10</span> percent burned</td><td>the provers who took the job</td><td>designed, not implemented: no constant exists, no job has been paid</td></tr>
</tbody></table></div>
<p><b>The proving base fee pays nobody.</b> A transaction’s pgas times the proving base fee is burned in full today (<code>executor.rs</code>, the base-fee row above). It is not a prover’s income and it does not fill the pool. The pool is filled by the subsidy alone, and the subsidy halves every two years.</p>
<h3>What the pool pays, measured</h3>
<p>On Devnet 3 in the 24 hours to <span data-rm="proving_view.read_at">12:16 UK on 8 October 2026</span>: <span data-rm="proving_view.shards_paid_24h">8,209</span> shards paid, <span data-rm="proving_view.ign_paid_24h">9,913.09</span> IGN in all, to <span data-rm="proving_view.prover_keys_24h">29</span> prover keys; <span data-rm="proving_view.shards_planned_24h">40,502</span> shards planned, so about a fifth of the planned shards were proven and paid and the rest left their credit in the escrow; <span data-rm="proving_view.paid_per_hour">905</span> shards paid in the last hour; the lag from a proven block to the block that pays p50 <span data-rm="proving_view.lag_p50_daa">514</span> and p90 <span data-rm="proving_view.lag_p90_daa">953</span> DAA seconds. Per shard paid that is about 1.21 IGN; per key about 12 shards and 14 IGN an hour averaged over the day, across keys that prove at very different rates (measured; the observer’s proof tables through <code>/api/explorer?proving=1</code>).</p>
<p>On the devnet in the 24 hours to <span data-rm="proving_view.read_at">12:16 UK on 8 October 2026</span>: <span data-rm="proving_view.shards_paid_24h">8,209</span> shards paid, <span data-rm="proving_view.ign_paid_24h">9,913.09</span> IGN in all, to <span data-rm="proving_view.prover_keys_24h">29</span> prover keys; <span data-rm="proving_view.shards_planned_24h">40,502</span> shards planned, so about a fifth of the planned shards were proven and paid and the rest left their credit in the escrow; <span data-rm="proving_view.paid_per_hour">905</span> shards paid in the last hour; the lag from a proven block to the block that pays p50 <span data-rm="proving_view.lag_p50_daa">514</span> and p90 <span data-rm="proving_view.lag_p90_daa">953</span> DAA seconds. Per shard paid that is about 1.21 IGN; per key about 12 shards and 14 IGN an hour averaged over the day, across keys that prove at very different rates (measured; the observer’s proof tables through <code>/api/explorer?proving=1</code>).</p>
<h3>What reaches provers under the schedule, modelled</h3>
<p>Low fees and no external demand, which is the chain today: the pool is a fifth of the subsidy and nothing else. The table holds today’s shard count and key count constant and walks the halvings. No price of IGN appears; whether a row covers a card’s electricity depends on the price, which this page does not state.</p>
<!-- proving-model:start -->
@ -286,10 +282,10 @@
<p class="src"><b>Modelled</b> from <code>emission.rs</code> (the schedule as <code>site/lib/emission.mjs</code> carries it) and the release manifest at build time, with today's measured shard count (40,502 planned in 24 hours) and key count (29) held constant; the per-shard figure is the pool's credit per planned shard, the per-key figure the pool per day divided by the keys and by 24. More shards or more keys lower both; a block's unproven shards leave their credit in the escrow.</p>
<!-- proving-model:end -->
<h3>Per card, per hour, now and at each halving</h3>
<p>A card’s proving income is its shards times the credit per shard. Measured rates: an RTX 5090 proves an empty live shard beside its miner in 7.0 to 7.7 s and a full shard in 10.9 s alone, about 37 s a shard end to end (export, cut, key set-up, prove, sign, submit), 1.4 shards a minute; an RTX 3060 (12 GB) proves the v1 shard beside its miner in 37.5 s; an RTX 4060 (8 GB) proves it alone in 18.4 s (the engineering log, 4 to 6 October 2026). At those rates one card can prove 80 to 100 shards an hour, more than the <span data-rm="proving_view.paid_per_hour">905</span> an hour the whole chain paid to <span data-rm="proving_view.prover_keys_24h">29</span> keys, so today a prover is limited by the shards on offer, not by its card: the hourly figure per key in the table is the ceiling an evenly shared pool gives, and a 5090 and a 3060 take the same credit per shard. At each halving the credit per shard halves with the pool; a card’s watts do not. (Modelled from the measured rates; the chain’s shard count is the real limit.)</p>
<p>A card’s proving income is its shards times the credit per shard. Measured rates: an RTX 5090 proves an empty live shard beside its miner in 7.0 to 7.7 s and a full shard in 10.9 s alone, about 37 s a shard end to end (export, cut, key set-up, prove, sign, submit), 1.4 shards a minute; an RTX 3060 (12 GB) proves the v1 shard beside its miner in 37.5 s; an RTX 4060 (8 GB) proves it alone in 18.4 s (measured 4 to 6 October 2026; the measurement record in the repository, docs/bench-log.md). At those rates one card can prove 80 to 100 shards an hour, more than the <span data-rm="proving_view.paid_per_hour">905</span> an hour the whole chain paid to <span data-rm="proving_view.prover_keys_24h">29</span> keys, so today a prover is limited by the shards on offer, not by its card: the hourly figure per key in the table is the ceiling an evenly shared pool gives, and a 5090 and a 3060 take the same credit per shard. At each halving the credit per shard halves with the pool; a card’s watts do not. (Modelled from the measured rates; the chain’s shard count is the real limit.)</p>
<h3>Two honest routes to sustain it</h3>
<div class="tbl"><table><thead><tr><th>Route</th><th>What it does</th><th>What it is worth</th><th>State</th></tr></thead><tbody>
<tr><td>A defined share of fees to the proving pool</td><td>a fixed percentage of the base fees burned today (both gas dimensions) credited to the pool instead, by a rule at genesis or a class change</td><td>each percent of the share adds one percent of the day’s burned base fees to the pool. Priced per unit, not predicted: at 100,000 IGN of base fees burned in a day (a hypothetical volume, not a forecast) a 10 percent share adds 10,000 IGN a day, about today’s measured payout; at Devnet 3’s fee volume today it adds almost nothing, because almost nothing is burned</td><td>designed as an option; no constant exists</td></tr>
<tr><td>A defined share of fees to the proving pool</td><td>a fixed percentage of the base fees burned today (both gas dimensions) credited to the pool instead, by a rule at genesis or a class change</td><td>each percent of the share adds one percent of the day’s burned base fees to the pool. Priced per unit, not predicted: at 100,000 IGN of base fees burned in a day (a hypothetical volume, not a forecast) a 10 percent share adds 10,000 IGN a day, about today’s measured payout; at the devnet’s fee volume today it adds almost nothing, because almost nothing is burned</td><td>designed as an option; no constant exists</td></tr>
<tr><td>External settlement in IGN</td><td>other chains pay for proofs in IGN; <span data-rm="fees.external_jobs.provers_percent">90</span> percent to the provers, <span data-rm="fees.external_jobs.burn_percent">10</span> percent burned</td><td>the price a prover must charge is the subsidy it forgoes while it proves: per shard, (card hash ÷ network hash) × 0.8 × the block subsidy × shard seconds. For an RTX 5090 at 136 MH/s on a 1 GH/s network and a 37 s shard that is about 16 IGN a shard inside the ramp today and about 128 IGN at the full rate, against the pool’s 1.2 IGN a shard measured; the quote falls as one over network hash and is competitive near 100 GH/s (the litepaper, Building on Igneum)</td><td>designed; the settlement contract is not built</td></tr>
</tbody></table></div>
<p>The chip question (whether a chip gets built against the hash, and what it would earn) is a conditional argument of its own on the litepaper’s <a href="/litepaper#chip-model">chip model</a>, not part of this page.</p>
@ -297,21 +293,21 @@
<div class="tbl"><table>
<thead><tr><th>Network</th><th>Consensus side</th><th>EVM side</th><th>Where</th></tr></thead>
<tbody>
<tr><td>Devnet 3 (today)</td><td class="num">8 decimals (base units of 10<sup>-8</sup> IGN)</td><td class="num">18 decimals, through a bridge of 10<sup>10</sup> wei per unit</td><td><code>params.rs</code> 2120; <code>consensus/core/src/unit.rs</code>; <code>igneum/exec/src/config.rs</code> 51</td></tr>
<tr><td>igneum-testnet-1</td><td class="num">18 decimals</td><td class="num">18 decimals</td><td><code>params.rs</code> 1866; the emission rescaled by 10<sup>10</sup></td></tr>
<tr><td>The devnet (today)</td><td class="num">8 decimals (base units of 10<sup>-8</sup> IGN)</td><td class="num">18 decimals, through a bridge of 10<sup>10</sup> wei per unit</td><td><code>params.rs</code> 2120; <code>consensus/core/src/unit.rs</code>; <code>igneum/exec/src/config.rs</code> 51</td></tr>
<tr><td>Mainnet</td><td class="num">18 decimals</td><td class="num">18 decimals</td><td><code>params.rs</code> 1724</td></tr>
</tbody>
</table></div>
<p>The symbol is IGN on every network. A wallet shows 18 decimals everywhere; on Devnet 3 the chain pays in 8 and the bridge shows the same amount at 18.</p>
<p>The symbol is IGN on every network. A wallet shows 18 decimals everywhere; on the devnet the chain pays in 8 and the bridge shows the same amount at 18.</p>
<h2>What this page does not do</h2>
<p>It names no price and models no market; the proving model above walks the subsidy schedule at today’s measured shard and key counts and states no price. The <a href="/income">income page</a> turns these rules into IGN a day for a card you pick, and money a day only at a price you type. Devnet and testnet IGN have no value.</p>
<p>It names no price and models no market; the proving model above walks the subsidy schedule at today’s measured shard and key counts and states no price. The <a href="/income">income page</a> turns these rules into IGN a day for a card you pick, and money a day only at a price you type. Devnet IGN has no value.</p>
<p>Not legal advice.</p>
</div></section>
</main>
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -337,7 +333,6 @@
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -349,7 +344,6 @@
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -375,7 +369,7 @@
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -100,7 +100,7 @@ td.mono{font-family:var(--f-mono);font-size:12.5px;min-width:180px}td.iv{color:v
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" data-active aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -130,12 +130,10 @@ td.mono{font-family:var(--f-mono);font-size:12.5px;min-width:180px}td.iv{color:v
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence" aria-current="page"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -153,7 +151,7 @@ td.mono{font-family:var(--f-mono);font-size:12.5px;min-width:180px}td.iv{color:v
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -173,12 +171,10 @@ td.mono{font-family:var(--f-mono);font-size:12.5px;min-width:180px}td.iv{color:v
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence" aria-current="page"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -192,7 +188,7 @@ td.mono{font-family:var(--f-mono);font-size:12.5px;min-width:180px}td.iv{color:v
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -315,6 +311,7 @@ td.mono{font-family:var(--f-mono);font-size:12.5px;min-width:180px}td.iv{color:v
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -340,7 +337,6 @@ td.mono{font-family:var(--f-mono);font-size:12.5px;min-width:180px}td.iv{color:v
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -352,7 +348,6 @@ td.mono{font-family:var(--f-mono);font-size:12.5px;min-width:180px}td.iv{color:v
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -378,7 +373,7 @@ td.mono{font-family:var(--f-mono);font-size:12.5px;min-width:180px}td.iv{color:v
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -3,31 +3,31 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Igneum Devnet 3 explorer</title>
<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.">
<title>Igneum 2.0 devnet explorer</title>
<meta name="description" content="The devnet, 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="Every block, transaction, account and proof on Devnet 3, with its finality lock. Test coins, no value.">
<meta property="og:title" content="Igneum devnet explorer">
<meta property="og:description" content="Every block, transaction, account and proof on the devnet, 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/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:alt" content="The devnet, 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 property="og:image:alt" content="The devnet, 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="Every block, transaction, account and proof on Devnet 3, with its finality lock. Test coins, no value.">
<meta name="twitter:title" content="Igneum devnet explorer">
<meta name="twitter:description" content="Every block, transaction, account and proof on the devnet, 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">
<meta name="twitter:image:alt" content="The devnet, 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">
@ -116,7 +116,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" data-active aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -146,12 +146,10 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer" aria-current="page"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -169,7 +167,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -189,12 +187,10 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer" aria-current="page"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -208,7 +204,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -267,12 +263,12 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<main id="main" class="wrap">
<div class="head">
<div class="breadcrumb"><a href="/">Igneum</a><span>/</span><span>Explorer</span></div>
<div class="eyebrow"><span class="line"></span>Devnet 3<span id="st-chain"></span></div>
<h1>Devnet 3 explorer<span class="accent">.</span></h1>
<p>Every block Devnet 3 made in the last day and every transaction of the last seven days, read from a node by the observer and the indexer. Paste a block hash, a transaction hash, a chain block number or an address, or click any row. Devnet 3 is a test network: its coins have no value and the chain may reset. Every number here comes from one node on the build box, the chain the finality certificates follow; the indexer reads that node's execution RPC and nothing else.</p>
<p class="note" id="src-note">Source since 12:25 UTC on 8 October 2026: node1-dn3 (the build box's first node). The observer node that served before it drifted from the chain at DAA 67,787 during a re-walk and re-executes from genesis; every balance, receipt and account was re-read from node1-dn3 at 12:27 UTC. Until the 0.3.25 move restarts the observer node on the pinned binary, a block list read before 12:27 UTC may differ by a few blocks from this one.</p>
<div class="eyebrow"><span class="line"></span>The devnet<span id="st-chain"></span></div>
<h1>The devnet explorer<span class="accent">.</span></h1>
<p>Every block the devnet made in the last day and every transaction of the last seven days, read from a node by the observer and the indexer. Paste a block hash, a transaction hash, a chain block number or an address, or click any row. The devnet is a test network: its coins have no value and the chain may reset. Every number here comes from one node on the build box, the chain the finality certificates follow; the indexer reads that node's execution RPC and nothing else.</p>
<p class="note" id="src-note">Source since 12:25 UTC on 8 October 2026: node1-dn3 (the build box's first node). The observer node that served before it drifted from the chain at DAA 67,787 during a re-walk and re-executes from genesis; every balance, receipt and account was re-read from node1-dn3 at 12:27 UTC. Until the observer node restarts on the pinned binary, a block list read before 12:27 UTC may differ by a few blocks from this one.</p>
<form class="search" id="search" role="search">
<input id="q" type="search" autocomplete="off" spellcheck="false" placeholder="block hash, transaction hash, chain block number, 0x address or igneumdev:… address" aria-label="Search the Devnet 3 explorer">
<input id="q" type="search" autocomplete="off" spellcheck="false" placeholder="block hash, transaction hash, chain block number, 0x address or igneumdev:… address" aria-label="Search the devnet explorer">
<button class="btn primary" type="submit">Search</button>
</form>
<div class="msg" id="msg" aria-live="polite"></div>
@ -289,7 +285,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
</div>
<div class="card" aria-label="The DAG">
<div class="viz-head"><h2>The DAG</h2><div class="eyebrow" id="dag-eyebrow">the newest 150 blocks, one lane per miner</div></div>
<div class="dagbox"><canvas id="dag" aria-label="The last 150 blocks of Devnet 3 as a graph: time left to right, one lane per miner, lines to parents"></canvas><div class="dagtip" id="dag-tip"></div></div>
<div class="dagbox"><canvas id="dag" aria-label="The last 150 blocks of the devnet as a graph: time left to right, one lane per miner, lines to parents"></canvas><div class="dagtip" id="dag-tip"></div></div>
<div class="legend" style="margin-top:12px"><span><i class="sw chain"></i>chain block</span><span><i class="sw blue"></i>blue, merged</span><span><i class="sw red"></i>red, excluded</span><span><i class="sw"></i>pending</span><span>◆ under a lock</span><span>● every shard paid</span></div>
<p class="note">Left to right is arrival order at the observer; a line joins a block to each parent in the picture. Blue blocks are merged and paid; red blocks are excluded from the order. A diamond outline marks a block under a finality lock, a filled dot a block whose every planned shard has been paid. Click a block for its page.</p>
</div>
@ -326,13 +322,14 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<dt>/api/checkpoint</dt><dd><a href="/api/checkpoint" class="hash">the newest certified checkpoint with its voter table and headers; ?index=N for one</a></dd>
<dt>/api/live</dt><dd><a href="/api/live" class="hash">the observer's feed: blocks of the last 90 s, miners, events, finality, proving</a></dd>
</dl>
<p class="note">Every answer names the network (Devnet 3) and the chain id the node reports (4463 below the class v5 floor, 4464 from DAA 68,400). The RPC itself is at rpc.devnet.igneum.network (read methods and eth_sendRawTransaction, 20 requests per second per address).</p>
<p class="note">Every answer names the network (the Igneum 2.0 devnet) and the chain id the node reports (4464). The RPC itself is at rpc.devnet.igneum.network (read methods and eth_sendRawTransaction, 20 requests per second per address).</p>
</div>
</div>
</main>
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -358,7 +355,6 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -370,7 +366,6 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -396,7 +391,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->
@ -457,7 +452,7 @@ async function loadStats() {
const s = await fetch('/api/explorer?stats=1').then(r => r.json()); if (!s.ok) throw new Error(s.error);
document.body.classList.toggle('on', !s.stale); document.body.classList.toggle('off', !!s.stale);
$('st-status').textContent = s.stale ? 'OFFLINE' : 'LIVE';
$('st-age').textContent = s.stale ? 'observer stale' : `${s.network || 'Devnet 3'}, node ${s.node_version || '?'}, read ${stamp(s.now)}`;
$('st-age').textContent = s.stale ? 'observer stale' : `${s.network || 'The devnet'}, node ${s.node_version || '?'}, read ${stamp(s.now)}`;
$('st-height').textContent = s.height === null ? 'n/a' : int(s.height);
$('st-chain').textContent = s.chain_id ? `, chain id ${s.chain_id}` : '';
$('st-count').textContent = `chain block number, ${int(s.block_count)} blocks in the DAG`;

View file

@ -3,15 +3,15 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Igneum Devnet 3 faucet. 10 IGN a day for building</title>
<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.">
<title>Igneum 2.0 devnet faucet. 10 IGN a day for building</title>
<meta name="description" content="Devnet 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: a daily allowance per address, no value, no account.">
<meta property="og:title" content="Igneum devnet faucet">
<meta property="og:description" content="Devnet 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/faucet.png?v=4">
<meta property="og:image:type" content="image/png">
@ -24,8 +24,8 @@
<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: a daily allowance per address, no value, no account.">
<meta name="twitter:title" content="Igneum devnet faucet">
<meta name="twitter:description" content="Devnet 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 -->
@ -93,7 +93,7 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:14px;overflo
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -123,12 +123,10 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:14px;overflo
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -146,7 +144,7 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:14px;overflo
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet" aria-current="page"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -166,12 +164,10 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:14px;overflo
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -185,7 +181,7 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:14px;overflo
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet" aria-current="page"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -243,16 +239,16 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:14px;overflo
<!-- nav:end -->
<main id="main" class="wrap">
<div class="head">
<div class="breadcrumb"><a href="/">Igneum</a><span>/</span><span>Devnet 3 faucet</span></div>
<div class="eyebrow"><span class="line"></span>Devnet 3 faucet</div>
<div class="breadcrumb"><a href="/">Igneum</a><span>/</span><span>The devnet faucet</span></div>
<div class="eyebrow"><span class="line"></span>The devnet faucet</div>
<h1>10 IGN a day, <span class="accent">for building.</span></h1>
<p>Paste an address. The faucet sends 10 IGN of Devnet 3 coin and shows you the transaction hash. Once per address per day, once per connection per day. No account, no sign-in, nothing to install.</p>
<p class="notice" id="faucet-state">Devnet 3, chain id 4464 since its class v5 floor. The coins have no value and the chain resets without notice. <span id="faucet-balance"></span></p>
<p>Paste an address. The faucet sends 10 IGN of the devnet coin and shows you the transaction hash. Once per address per day, once per connection per day. No account, no sign-in, nothing to install.</p>
<p class="notice" id="faucet-state">The Igneum 2.0 devnet, chain id 4464. The coins have no value and the chain resets without notice. <span id="faucet-balance"></span></p>
</div>
<div class="grid">
<section class="card" aria-labelledby="ask">
<h2 id="ask">Ask for 10 IGN</h2>
<p>An Ethereum-style address: 0x and 40 hex characters. The one <code>cast wallet new</code> printed, the one the miner made for you, or any wallet you have pointed at Devnet 3.</p>
<p>An Ethereum-style address: 0x and 40 hex characters. The one <code>cast wallet new</code> printed, the one the miner made for you, or any wallet you have pointed at the devnet.</p>
<form id="faucet-form" novalidate>
<label for="address">Address</label>
<input id="address" name="address" inputmode="text" autocomplete="off" spellcheck="false" placeholder="0x…" required pattern="^0x[0-9a-fA-F]{40}$" aria-describedby="status">
@ -265,15 +261,14 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:14px;overflo
<div class="rules">
<div class="rule"><span class="num">01</span><div><b>No value</b><span>Devnet IGN cannot be sold, bought or redeemed, now or at mainnet. Mainnet starts from an empty genesis.</span></div></div>
<div class="rule"><span class="num">02</span><div><b>10 IGN per address per day</b><span>And 10 per connection per day, 500 sends a day in all. The limit resets 24 hours after the last send.</span></div></div>
<div class="rule"><span class="num">03</span><div><b>Resets</b><span>Devnet 3 is a developer network. It restarts from a fresh genesis without notice. Balances do not carry over.</span></div></div>
<div class="rule"><span class="num">03</span><div><b>Resets</b><span>The devnet is a developer network. It restarts from a fresh genesis without notice. Balances do not carry over.</span></div></div>
<div class="rule"><span class="num">04</span><div><b>What is stored</b><span>The address, the connection's IP, the transaction hash and the time, on the box that runs the faucet, for 24 hours of rate limiting. Nothing else.</span></div></div>
</div>
<dl>
<dt>Chain id</dt><dd>4464 (Devnet 3; 4463 before 8 October 2026)</dd>
<dt>Chain id</dt><dd>4464 (the Igneum 2.0 devnet)</dd>
<dt>RPC</dt><dd>https://rpc.devnet.igneum.network</dd>
<dt>Wallet set-up</dt><dd><a href="/metamask">MetaMask: chain id, RPC, one click</a></dd>
<dt>Then</dt><dd><a href="/build">Deploy a contract in five minutes</a></dd>
<dt>Testnet</dt><dd>its faucet opens with the public testnet</dd>
</dl>
</aside>
</div>
@ -281,6 +276,7 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:14px;overflo
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -306,7 +302,6 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:14px;overflo
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -318,7 +313,6 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:14px;overflo
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -344,7 +338,7 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:14px;overflo
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -90,7 +90,7 @@ table{min-width:560px}
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -120,12 +120,10 @@ table{min-width:560px}
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -143,7 +141,7 @@ table{min-width:560px}
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants" aria-current="page"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -163,12 +161,10 @@ table{min-width:560px}
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -182,7 +178,7 @@ table{min-width:560px}
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants" aria-current="page"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -244,7 +240,7 @@ table{min-width:560px}
<div class="breadcrumb"><a href="/">Igneum</a><span>/</span><span>Grants</span></div>
<div class="page-heading"><div><div class="eyebrow"><span class="line"></span>The programme</div>
<h1>Grants</h1>
<p class="lead">Paid in IGN from the dev fee fund, on delivery, on the public testnet first. Four tiers. One issue to apply. A weekly review.</p></div></div>
<p class="lead">Paid in IGN from the dev fee fund, on delivery, on the devnet first. Four tiers. One issue to apply. A weekly review.</p></div></div>
</div>
</section>
<section class="section compact"><div class="container">
@ -255,7 +251,7 @@ table{min-width:560px}
<p>This file is the source of <a href="https://igneum.network/grants" rel="noopener">igneum.network/grants</a>.</p>
</section>
<section class="doc-section"><h2 id="what-a-grant-is">What a grant is</h2>
<p>Grants are paid in IGN from the dev fee fund, on delivery. You propose a piece of work, it is accepted with a written definition of done, you build it, and it runs on the public testnet. Not a salary, not an advance, not an investment.</p>
<p>Grants are paid in IGN from the dev fee fund, on delivery. You propose a piece of work, it is accepted with a written definition of done, you build it, and it runs on the devnet. Not a salary, not an advance, not an investment.</p>
<p>The money is the dev fee fund: the IGN that the Ember dev fee collects. Ember, the official miner, takes an optional 1% of a miner's rewards, in full view and off with one flag; that fee goes to Igneum Labs, the company that ships the software. The protocol itself carries no fee, no fund and no allocation, and no grant is paid from emission. <a href="/dev-fee">The dev fee</a> has the mechanism.</p>
</section>
<section class="doc-section"><h2 id="the-tiers">The tiers</h2>
@ -264,14 +260,14 @@ table{min-width:560px}
</section>
<section class="doc-section"><h2 id="how-to-apply">How to apply</h2>
<p>Open an issue on <a href="https://git.igneum.network/igneum-network/igneum/issues/new?template=.forgejo%2Fissue_template%2Fgrant.md" rel="noopener">git.igneum.network/igneum-network/igneum</a> and pick the Grant template. It asks for:</p>
<ol><li>What you will build, in a paragraph, and which tier it is.</li><li>What done looks like: what runs where, what a reviewer can click or call to see it working on the public testnet.</li><li>Your public work: a repository, a package, a paper, a deployed thing.</li><li>How you want to be reached.</li></ol>
<ol><li>What you will build, in a paragraph, and which tier it is.</li><li>What done looks like: what runs where, what a reviewer can click or call to see it working on the devnet.</li><li>Your public work: a repository, a package, a paper, a deployed thing.</li><li>How you want to be reached.</li></ol>
<p>A short issue is fine. The definition of done is the part that matters.</p>
</section>
<section class="doc-section"><h2 id="the-review">The review</h2>
<ul><li>Every Friday. Each open application gets one of three answers inside seven days: accepted with a definition of done, questions, or no with the reason.</li><li>Accepted work is tracked in its issue. The reviewer and the builder agree the definition of done there before any work starts.</li><li>Delivery is reviewed on the public testnet first. Payment follows the review, in the issue, in the open.</li></ul>
<ul><li>Every Friday. Each open application gets one of three answers inside seven days: accepted with a definition of done, questions, or no with the reason.</li><li>Accepted work is tracked in its issue. The reviewer and the builder agree the definition of done there before any work starts.</li><li>Delivery is reviewed on the devnet. Payment follows the review, in the issue, in the open.</li></ul>
</section>
<section class="doc-section"><h2 id="the-honest-lines">The honest lines</h2>
<ul><li>Devnet and testnet coins have no value. Before mainnet there is no IGN with value: a grant delivered on the testnet is recorded in its issue, and payment comes from the fund when the fund holds IGN. Nothing is promised about when, or whether, that is.</li><li>No amount, price or date is promised. The fund is what the dev fee collects, and it is zero today.</li><li>A grant is for work delivered, never for a user count, a listing, a post or a referral.</li><li>Igneum Labs may decline any application and may close the programme; what has been accepted and delivered is still paid.</li></ul>
<ul><li>Devnet coins have no value. Before mainnet there is no IGN with value: a grant delivered on the devnet is recorded in its issue, and payment comes from the fund when the fund holds IGN. Nothing is promised about when, or whether, that is.</li><li>No amount, price or date is promised. The fund is what the dev fee collects, and it is zero today.</li><li>A grant is for work delivered, never for a user count, a listing, a post or a referral.</li><li>Igneum Labs may decline any application and may close the programme; what has been accepted and delivered is still paid.</li></ul>
<p>Not legal advice.</p></section></article>
</div>
<p class="gen">Generated from docs/build/grants.md in the repository at build time. Times are UTC.</p>
@ -280,6 +276,7 @@ table{min-width:560px}
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -305,7 +302,6 @@ table{min-width:560px}
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -317,7 +313,6 @@ table{min-width:560px}
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -343,7 +338,7 @@ table{min-width:560px}
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -3,7 +3,7 @@
there is no market), and read IGN a day and money a day at that price. The network's hash rate and the newest block's
DAA score come from /api/live every 15 s; the block reward is the chain's own rule at that DAA (/lib/emission.mjs, the
emission the node encodes), the miner's share 80 percent. The arithmetic is /lib/income-calc.mjs; its test holds the
known-failed case (no price, no money figure). Devnet and testnet IGN have no value; the page says so beside the figure. */
known-failed case (no price, no money figure). Devnet IGN has no value; the page says so beside the figure. */
(function () {
var root = document.getElementById('income-calc'); if (!root) return;
var data = document.getElementById('income-data'); if (!data) return;
@ -31,14 +31,14 @@
(tuned.length ? '<optgroup label="Tuned (Ember Tune or a core lock, measured)">' + tuned.map(function (r) { return option(r, rows.indexOf(r)); }).join('') + '</optgroup>' : '') +
'</select></label>' +
'<label class="field"><span>Electricity, per kWh (' + esc(cur) + ')</span><input id="ic-kwh" type="number" inputmode="decimal" min="0" step="0.01" value="' + kwhDefault + '" aria-describedby="ic-kwh-note"><small id="ic-kwh-note">' + esc(tariffSource) + '. Your own bill is the number.</small></label>' +
'<label class="field"><span>IGN price (' + esc(cur) + ')</span><input id="ic-price" type="number" inputmode="decimal" min="0" step="any" placeholder="no market yet: enter a price to see the figure" aria-describedby="ic-price-note"><small id="ic-price-note">Nobody sells IGN and the project quotes no price. Devnet and testnet IGN have no value.</small></label>' +
'<label class="field"><span>IGN price (' + esc(cur) + ')</span><input id="ic-price" type="number" inputmode="decimal" min="0" step="any" placeholder="no market yet: enter a price to see the figure" aria-describedby="ic-price-note"><small id="ic-price-note">Nobody sells IGN and the project quotes no price. Devnet IGN has no value.</small></label>' +
'</div>' +
'<div class="calc-out" aria-live="polite">' +
'<div class="k">Network hash rate</div><div class="v" id="ic-net">connecting</div><div class="d" id="ic-net-d">from the observer, every 15 s</div>' +
'<div class="k">Block reward now</div><div class="v" id="ic-reward">pending</div><div class="d" id="ic-reward-d">the chain’s own rule at the newest block’s DAA score, 80 percent of it to the miner</div>' +
'<div class="k">Your share</div><div class="v" id="ic-ign">pending</div><div class="d" id="ic-ign-d">IGN a day; one block about every <b id="ic-wait">pending</b></div>' +
'<div class="k">Electricity</div><div class="v" id="ic-el">pending</div><div class="d" id="ic-el-d">a day at your price</div>' +
'<div class="k">Money a day</div><div class="v" id="ic-money">enter a price</div><div class="d" id="ic-money-d">IGN a day at the price you typed, electricity taken off. Devnet and testnet IGN have no value: this is arithmetic on a number you chose, not an income.</div>' +
'<div class="k">Money a day</div><div class="v" id="ic-money">enter a price</div><div class="d" id="ic-money-d">IGN a day at the price you typed, electricity taken off. Devnet IGN has no value: this is arithmetic on a number you chose, not an income.</div>' +
'</div>';
var sel = document.getElementById('ic-card'), kwh = document.getElementById('ic-kwh'), price = document.getElementById('ic-price');
function row() { var i = Number(sel.value); return rows[i] || rows[0]; }

File diff suppressed because one or more lines are too long

View file

@ -2,7 +2,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Igneum, the GPU-mined layer 1</title>
<meta name="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="description" content="A GPU-secured network for Ethereum-compatible applications and verifiable computation. Its mining program rewrites itself every hour, and the miners also prove the blocks. No premine, no stake, no fee to any team.">
<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)">
@ -10,7 +10,7 @@
<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="Mined by GPUs, every block proven by the miners. No premine, no stake, no fee to any team.">
<meta property="og:description" content="A GPU-secured network for Ethereum-compatible applications and verifiable computation.">
<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">
@ -24,7 +24,7 @@
<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="Mined by GPUs, every block proven by the miners. No premine, no stake, no fee to any team.">
<meta name="twitter:description" content="A GPU-secured network for Ethereum-compatible applications and verifiable computation.">
<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 -->
@ -81,7 +81,7 @@
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -111,12 +111,10 @@
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -134,7 +132,7 @@
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -154,12 +152,10 @@
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -173,7 +169,7 @@
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -236,7 +232,7 @@
<div class="fold-body">
<div class="fold-coin"><span class="fold-glow"></span><svg viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="230" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg></div>
<h1>The card you own has <span class="accent">a new chain</span> to&nbsp;mine.</h1>
<p class="lead">Hardware that stays useful. Income without a cliff. A fair supply. One click installs the node, the miner and the prover, and the card starts.</p>
<p class="lead">A GPU-secured network for Ethereum-compatible applications and verifiable computation. One click installs the node, the miner and the prover, and the card starts.</p>
<div class="fold-actions" id="fold-actions">
<a data-dl="miner-windows" href="https://dl.igneum.network/public/igneum-miner-windows.exe" data-os-button="windows" class="btn primary"><span class="osmark bare" data-os="windows" title="Windows"><svg viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false" fill="currentColor"><path d="M3 5.6l7.3-1v7.1H3zM11.4 4.4L21 3v8.7h-9.6zM3 12.3h7.3v7.1L3 18.4zM11.4 12.3H21V21l-9.6-1.4z"/></svg></span>Download for Windows<span class="meta" data-dl-meta="miner-windows">v0.3.20 · 63.0 MB</span></a>
<a data-dl="miner-mac" href="https://dl.igneum.network/public/igneum-miner-mac.dmg" data-os-button="mac" class="btn"><span class="osmark bare" data-os="mac" title="macOS"><svg viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false" fill="currentColor"><path d="M16.4 12.6c0-2.5 2-3.6 2.1-3.7-1.2-1.7-3-1.9-3.6-2-1.5-.2-3 .9-3.8.9-.8 0-2-.9-3.3-.8-1.7 0-3.2 1-4.1 2.5-1.8 3-.5 7.6 1.3 10.1.9 1.2 1.9 2.6 3.2 2.5 1.3 0 1.8-.8 3.3-.8 1.6 0 2 .8 3.3.8 1.4 0 2.3-1.2 3.1-2.5 1-1.4 1.4-2.8 1.4-2.9 0 0-2.7-1-2.9-4.1zM13.9 5.3c.7-.8 1.2-2 1-3.2-1 0-2.2.7-2.9 1.5-.6.7-1.2 1.9-1 3 1.1.1 2.2-.5 2.9-1.3z"/></svg></span>Download for macOS<span class="meta" data-dl-meta="miner-mac">v0.3.20 · 44.5 MB</span></a>
@ -255,8 +251,8 @@
<div class="home-tile"><div class="k">Locked checkpoint</div><div class="v" id="f-lock">pending</div><div class="d" id="f-lock-d">signed by two thirds of all 30-day weight</div></div>
</div>
<p class="home-quiet" id="facts-note">One node is read every 2 s.</p>
<p class="home-quiet" data-devnet-notice><b>Devnet.</b> Coins have no value and the chain may be reset.</p>
<p class="home-quiet" data-testnet-notice>Public testnet: not yet open; the devnet build is here for people who want to look. The public testnet is armed: three seed nodes and the public RPC are up, and it opens on the go word.</p>
<p class="home-quiet" data-devnet-notice><b data-devnet-state="starting">Igneum 2.0 devnet starting</b>. Coins have no value and the chain may be reset.</p>
<p class="home-quiet">The Igneum 2.0 devnet is the network today.</p>
</div>
</section>
<section class="section compact" id="miner">
@ -287,6 +283,7 @@
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -312,7 +309,6 @@
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -324,7 +320,6 @@
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -350,7 +345,7 @@
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -1,376 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>The Igneum journey: six phases, four gates</title>
<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/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="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/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">
<link rel="icon" href="/icon-192.png" type="image/png" sizes="192x192">
<link rel="icon" href="/icon-512.png" type="image/png" sizes="512x512">
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180">
<link rel="manifest" href="/site.webmanifest">
<!-- 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>
<meta name="color-scheme" content="dark light">
<link rel="stylesheet" href="/site.css">
<style>
/* Shared by every page: the head partial, injected by the build between the head markers. Edit the partial, not the page. */
/* Fonts, self-hosted (latin subsets, OFL): Unbounded 500/700/900, IBM Plex Sans 400/500/600, IBM Plex Mono 400/500. Fallbacks carry size and ascent overrides so the swap does not move the layout. The tokens, type and components are in /site.css (docs/plans/site-ui-3.md). */
@font-face{font-family:'Unbounded';font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/unbounded-500.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/unbounded-700.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:900;font-display:swap;src:url(/fonts/unbounded-900.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-sans-400.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plex-sans-500.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/plex-sans-600.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-mono-400.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plex-mono-500.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Unbounded Fallback';src:local('Arial Black'),local('Arial-Black'),local('Impact');size-adjust:114%;ascent-override:87.5%;descent-override:21.5%;line-gap-override:0%}
@font-face{font-family:'Plex Sans Fallback';src:local('Arial'),local('Helvetica Neue'),local('Helvetica');size-adjust:100.5%;ascent-override:102%;descent-override:27.4%;line-gap-override:0%}
@font-face{font-family:'Plex Mono Fallback';src:local('Courier New'),local('Menlo');size-adjust:100%;ascent-override:102.5%;descent-override:27.5%;line-gap-override:0%}
</style>
<script>
/* theme before first paint: ?theme=light|dark for one view (the capture tool), else the stored choice under igneum-theme, else the system setting; ?motion=off marks the page data-motion=off so every .reveal is drawn at once (a headless render never scrolls) */
(function(){var t=null;try{t=new URLSearchParams(location.search).get("theme");}catch(e){}if(t!=="light"&&t!=="dark"){try{t=localStorage.getItem("igneum-theme");}catch(e){t=null;}}if(t!=="light"&&t!=="dark")t=window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark";document.documentElement.setAttribute("data-theme",t);try{if(new URLSearchParams(location.search).get("motion")==="off")document.documentElement.setAttribute("data-motion","off");}catch(e){}})();
</script>
<!-- head:end -->
<style>
/* derived-page block (rendered by the build from its source page or document); tokens, type and components are in /site.css */
[id]{scroll-margin-top:calc(var(--nav-h) + 16px)}
.page-hero .lead{max-width:72ch}
.derived{max-width:78ch;color:var(--ink-2)}
.derived h2{font-size:var(--t-h3);margin:var(--s-6) 0 var(--s-3)}
.derived h3{font-size:16px;margin:var(--s-5) 0 var(--s-2)}
.derived ul,.derived ol{margin:0 0 var(--s-4);padding-left:22px}
.derived li{margin-bottom:8px}
.derived strong{color:var(--bone);font-weight:600}
.derived p,.derived li{overflow-wrap:anywhere}
.derived .tbl{margin:var(--s-4) 0 var(--s-5)}
.derived .pull{margin:var(--s-5) 0;padding:var(--s-4) var(--s-5);border-left:2px solid var(--ember);background:var(--row);border-radius:0 var(--r-row) var(--r-row) 0;font:500 var(--t-lg)/1.45 var(--f-sans);color:var(--bone)}
.derived .src{margin:calc(-1 * var(--s-2)) 0 var(--s-5);font:400 13px/1.5 var(--f-mono);color:var(--ash)}
.derived .src b{font-weight:500;color:var(--ink-2)}
.onward{display:flex;flex-wrap:wrap;gap:var(--s-3);margin-top:var(--s-6);padding-top:var(--s-5);border-top:1px solid var(--line)}
</style>
</head>
<body>
<!-- nav:start -->
<a class="skip" href="#main">Skip to content</a>
<nav class="nav" aria-label="Main" data-nav-version="5">
<div class="container nav-row">
<a href="/" class="logo" aria-label="Igneum home">
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" data-active aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-learn" data-group="learn" aria-expanded="false" aria-controls="nav-panel-learn" aria-haspopup="true">Learn<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-build" data-group="build" aria-expanded="false" aria-controls="nav-panel-build" aria-haspopup="true">Build<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
</div>
<div class="nav-controls">
<button class="btn icon-btn" type="button" data-theme-toggle aria-label="Switch to light theme"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2m0 16v2M2 12h2m16 0h2M5 5l1 1m12 12 1 1M5 19l1-1M18 6l1-1"/></svg></button>
<a href="/download" class="btn primary small cta" data-nav="download">Download</a>
<button class="burger" id="nav-burger" type="button" aria-expanded="false" aria-controls="nav-sheet" aria-label="Open the menu" aria-haspopup="true"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path class="bars" d="M4 6h16M4 12h16M4 18h16"/><path class="cross" d="m6 6 12 12M6 18 18 6"/></svg></button>
</div>
</div>
<div class="panels" id="nav-panels">
<div class="panel-wrap container">
<div class="nav-panel" id="nav-panel-mine" data-group="mine" role="region" aria-labelledby="nav-btn-mine" hidden>
<div class="panel-list">
<a href="/miner" data-nav="miner"><b>Ember, the miner</b><span>One click installs the node, the miner and the prover.</span></a>
<a href="/download" data-nav="download"><b>Download</b><span>Windows, macOS, Linux and HiveOS.</span></a>
<a href="/app" data-nav="app"><b>The app</b><span>What you see while the card mines.</span></a>
<a href="/wallet" data-nav="wallet"><b>The wallet</b><span>Your coins. Final means final.</span></a>
<a href="/miners" data-nav="miners"><b>GPU bench table</b><span>Measured rates, card by card.</span></a>
<a href="/dev-fee" data-nav="dev-fee"><b>The dev fee</b><span>The optional one, in full view, off with one flag.</span></a>
<a href="/metamask" data-nav="metamask"><b>Add to MetaMask</b><span>Igneum as a network in your wallet.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-network" data-group="network" role="region" aria-labelledby="nav-btn-network" hidden>
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey" aria-current="page"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
<div class="panel-list">
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a>
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
<a href="/provenance" data-nav="provenance"><b>Built on the shoulders</b><span>Every borrowed part, credited.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-build" data-group="build" role="region" aria-labelledby="nav-btn-build" hidden>
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
</div>
</div>
<div class="nav-sheet" id="nav-sheet" role="dialog" aria-modal="true" aria-label="Menu" hidden>
<div class="sheet-scroll">
<div class="sheet-group"><div class="sheet-head">Mine</div>
<a href="/miner" data-nav="miner"><b>Ember, the miner</b><span>One click installs the node, the miner and the prover.</span></a>
<a href="/download" data-nav="download"><b>Download</b><span>Windows, macOS, Linux and HiveOS.</span></a>
<a href="/app" data-nav="app"><b>The app</b><span>What you see while the card mines.</span></a>
<a href="/wallet" data-nav="wallet"><b>The wallet</b><span>Your coins. Final means final.</span></a>
<a href="/miners" data-nav="miners"><b>GPU bench table</b><span>Measured rates, card by card.</span></a>
<a href="/dev-fee" data-nav="dev-fee"><b>The dev fee</b><span>The optional one, in full view, off with one flag.</span></a>
<a href="/metamask" data-nav="metamask"><b>Add to MetaMask</b><span>Igneum as a network in your wallet.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey" aria-current="page"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
<a href="/income" data-nav="income"><b>Income</b><span>What your card would mine, from the live network.</span></a>
<a href="/economics" data-nav="economics"><b>Economics</b><span>The emission, the split and the fees, each with its line in the node.</span></a>
<a href="/ledger" data-nav="ledger"><b>Ledger</b><span>Every criticism, answered or conceded.</span></a>
<a href="/claims" data-nav="claims"><b>What Igneum does not claim</b><span>The limits, stated first.</span></a>
<a href="/randomx" data-nav="randomx"><b>Igneum vs RandomX</b><span>What was kept and what was rebuilt for GPUs.</span></a>
<a href="/provenance" data-nav="provenance"><b>Built on the shoulders</b><span>Every borrowed part, credited.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
<a href="/download" class="btn primary big" data-nav="download">Download</a>
<div class="sheet-social"><a href="https://discord.gg/igneum" target="_blank" rel="noopener">Discord</a><a href="https://git.igneum.network/igneum-network/spec" target="_blank" rel="noopener">Source</a><a href="https://www.reddit.com/user/Igneum_network/" target="_blank" rel="noopener">Reddit</a></div>
</div>
</div>
</div>
</nav>
<script>
(function(){
// the slim bar (site-ui-5, 7 Oct 2026): three group buttons open one panel each; the burger opens the sheet on phones.
// Keyboard: Enter or Space opens a group, Escape closes it and returns focus to its button, arrows move between the
// group buttons, Tab walks the open panel's links, a click outside closes. The theme toggle flips data-theme and stores it.
var n=document.querySelector('.nav');if(!n)return;
var btns=[].slice.call(n.querySelectorAll('.group-btn')),panels=[].slice.call(n.querySelectorAll('.nav-panel')),wrap=n.querySelector('.panels');
var burger=document.getElementById('nav-burger'),sheet=document.getElementById('nav-sheet');
function panelOf(g){return panels.filter(function(p){return p.getAttribute('data-group')===g;})[0];}
function closeAll(focusBack){var was=null;btns.forEach(function(b){if(b.getAttribute('aria-expanded')==='true')was=b;b.setAttribute('aria-expanded','false');});panels.forEach(function(p){p.hidden=true;});n.classList.remove('panel-open');if(focusBack&&was)was.focus();}
function open(g){closeAll(false);var b=btns.filter(function(x){return x.getAttribute('data-group')===g;})[0],p=panelOf(g);if(!b||!p)return;b.setAttribute('aria-expanded','true');p.hidden=false;n.classList.add('panel-open');anchor(b,p);}
// the panel sits under its button; a panel that would run past the container's right edge aligns its right edge to the button's right edge instead (never past the viewport)
function anchor(b,p){var pw=n.querySelector('.panel-wrap');if(!pw)return;var cr=pw.getBoundingClientRect(),br=b.getBoundingClientRect(),w=p.offsetWidth,left=br.left-cr.left;if(left+w>cr.width)left=(br.right-cr.left)-w;if(left<0)left=0;p.style.setProperty('--panel-left',Math.round(left)+'px');}
window.addEventListener('resize',function(){var o=btns.filter(function(x){return x.getAttribute('aria-expanded')==='true';})[0];if(o)anchor(o,panelOf(o.getAttribute('data-group')));}); btns.forEach(function(b,i){
b.addEventListener('click',function(){var on=b.getAttribute('aria-expanded')==='true';if(on)closeAll(false);else open(b.getAttribute('data-group'));});
b.addEventListener('keydown',function(e){
var k=e.key;
if(k==='ArrowRight'||k==='ArrowLeft'){e.preventDefault();var j=(i+(k==='ArrowRight'?1:btns.length-1))%btns.length;btns[j].focus();if(n.classList.contains('panel-open'))open(btns[j].getAttribute('data-group'));}
else if(k==='ArrowDown'){e.preventDefault();open(b.getAttribute('data-group'));var f=panelOf(b.getAttribute('data-group')).querySelector('a');if(f)f.focus();}
else if(k==='Escape'){closeAll(true);}
});
});
if(wrap)wrap.addEventListener('keydown',function(e){if(e.key==='Escape'){e.stopPropagation();closeAll(true);}});
document.addEventListener('click',function(e){if(!n.classList.contains('panel-open'))return;if(e.target.closest('.group-btn')||e.target.closest('.nav-panel'))return;closeAll(false);});
document.addEventListener('focusin',function(e){if(!n.classList.contains('panel-open'))return;if(n.contains(e.target))return;closeAll(false);});
document.addEventListener('keydown',function(e){if(e.key==='Escape'&&n.classList.contains('panel-open'))closeAll(true);});
// the sheet on phones
function setSheet(o){if(!burger||!sheet)return;n.classList.toggle('open',o);sheet.hidden=!o;burger.setAttribute('aria-expanded',o?'true':'false');burger.setAttribute('aria-label',o?'Close the menu':'Open the menu');document.documentElement.classList.toggle('nav-locked',o);if(o){var f=sheet.querySelector('a');if(f)f.focus();}}
if(burger&&sheet){
burger.addEventListener('click',function(){setSheet(!n.classList.contains('open'));});
sheet.addEventListener('click',function(e){if(e.target.closest('a'))setSheet(false);});
sheet.addEventListener('keydown',function(e){
if(e.key==='Escape'){setSheet(false);burger.focus();return;}
if(e.key!=='Tab')return;var f=sheet.querySelectorAll('a,button');if(!f.length)return;var first=f[0],last=f[f.length-1];
if(e.shiftKey&&document.activeElement===first){e.preventDefault();burger.focus();}else if(!e.shiftKey&&document.activeElement===last){e.preventDefault();burger.focus();}
});
burger.addEventListener('keydown',function(e){if(e.key==='Tab'&&!e.shiftKey&&n.classList.contains('open')){e.preventDefault();var f=sheet.querySelector('a');if(f)f.focus();}});
var mq=window.matchMedia('(min-width:861px)');if(mq.addEventListener)mq.addEventListener('change',function(){setSheet(false);});
}
// the theme toggle
var t=n.querySelector('[data-theme-toggle]');
function paintToggle(){var dark=document.documentElement.getAttribute('data-theme')!=='light';t.setAttribute('aria-label',dark?'Switch to light theme':'Switch to dark theme');t.innerHTML=dark?'<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2m0 16v2M2 12h2m16 0h2M5 5l1 1m12 12 1 1M5 19l1-1M18 6l1-1"/></svg>':'<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20.7 13.3A8.5 8.5 0 0 1 10.7 3.3 8.5 8.5 0 1 0 20.7 13.3Z"/></svg>';}
if(t){t.addEventListener('click',function(){var v=document.documentElement.getAttribute('data-theme')==='light'?'dark':'light';document.documentElement.setAttribute('data-theme',v);try{localStorage.setItem('igneum-theme',v);}catch(e){}document.dispatchEvent(new CustomEvent('igneum-theme'));});paintToggle();document.addEventListener('igneum-theme',paintToggle);}
})();
</script>
<!-- nav:end -->
<main id="main">
<section class="page-hero">
<div class="container">
<div class="breadcrumb"><a href="/">Igneum</a><span>/</span><span>The journey</span></div>
<div class="page-heading"><div><div class="eyebrow"><span class="line"></span>Six phases · updated 8 Oct 2026</div>
<h1>The journey.</h1>
<p class="lead">Six phases from the specification to a fair launch. Each closes at its gate, a measurement published whether it passes or fails, so there is no date to slip. Below the phases, the latest entries of the engineering log.</p></div></div>
</div>
</section>
<section class="section compact">
<div class="container">
<div class="timeline"><div class="milestone current" id="phase-1"><div class="when">Under way; closes when the specification is out for external review</div><div><span class="badge warm">Under way</span><h3>1. Specification</h3><p>Mining generator, shard proving, finality rules, written for external review</p></div></div>
<div class="milestone current" id="phase-2"><div class="when">Under way; closes at its gate</div><div><span class="badge warm">Under way</span><h3>2. Prove the proving</h3><p>Mining program proven on Apple, NVIDIA and AMD; shard proving benchmark on consumer cards still to run</p><p class="gate"><b>Gate:</b> A fixed published workload, job received to accepted proof on a declared consumer card, sustained with no growing backlog, reproduced by three independent operators</p></div></div>
<div class="milestone current" id="phase-3"><div class="when">Devnet 3 live, testnet next</div><div><span class="badge warm">Under way</span><h3>3. Devnet</h3><p>Devnet 3 since 7 October 2026 with every upgrade on from block zero; GPU miners on three vendors; EVM execution and proving live</p><p class="gate"><b>Gate:</b> 1 block a second held with proofs under 60 s behind the tip</p></div></div>
<div class="milestone next" id="phase-4"><div class="when">Closes when the finality design passes external review</div><div><span class="badge">Next</span><h3>4. Finality and job market</h3><p>Sustained-mining finality, external proving jobs, miner client with auto-switching</p><p class="gate"><b>Gate:</b> Finality design passes external review</p></div></div>
<div class="milestone next" id="phase-5"><div class="when">Armed: opens on the go word</div><div><span class="badge">Next</span><h3>5. Public testnet</h3><p>Three seed nodes and the public RPC are up; the one-click miner app on Windows, macOS and Linux, HiveOS, pools, the first rollup as a proving customer, no coin yet</p><p class="gate"><b>Gate:</b> 1,000 independent miners run 30 days and rollup proofs are delivered on time</p></div></div>
<div class="milestone next" id="phase-6"><div class="when">After the testnet has passed its gate (1,000 independent miners for 30 days, rollup proofs on time) and one proving customer has signed: a customer paying for proofs at a published rate, or a letter of intent with a volume</div><div><span class="badge">Next</span><h3>6. Mainnet fair launch</h3><p>Genesis with no premine, 30-day ramp. No listing is arranged, promised or sought by the project</p></div></div></div>
<div class="section-head" style="margin-top:100px"><div><div class="eyebrow"><span class="line"></span>The log, newest first</div><h2>Lately, in the&nbsp;log.</h2></div><div class="searchbar" style="min-width:min(100%,360px)"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><circle cx="10.5" cy="10.5" r="6.5"/><path d="m16 16 5 5"/></svg><label for="log-q" class="visually-hidden">Filter the log</label><input id="log-q" data-filter-input="log" placeholder="Filter: a card, a date, a word" autocomplete="off" spellcheck="false"><span class="small" data-filter-count="log"></span></div></div>
<div class="record-count" data-filter-count="log"></div><div class="record-grid" data-filter-list="log"><article class="record"><div class="record-top"><time datetime="2026-10-08">8 Oct 2026</time><span class="badge">log</span></div><h3>The hot-table packs on the RTX 5090</h3><p>The hot-table packs on the RTX 5090: ld.global.cs against the plain load, unlocked and at the 1,300 MHz lock</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-07">7 Oct 2026</time><span class="badge">log</span></div><h3>The first 16 GB card</h3><p>The first 16 GB card: an RTX 5060 Ti in a Thunderbolt enclosure on the RTX 5090 Windows rig</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-06">6 Oct 2026</time><span class="badge">log</span></div><h3>Counter ASIC 3.0</h3><p>Counter ASIC 3.0: the class v4 rehearsal</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-06">6 Oct 2026</time><span class="badge">log</span></div><h3>16:01Z: Ember run 6 on the three-card Windows rig</h3></article>
<article class="record"><div class="record-top"><time datetime="2026-10-06">6 Oct 2026</time><span class="badge">log</span></div><h3>Counter ASIC 3.0 item 2</h3><p>Counter ASIC 3.0 item 2: the per-day derivation</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-06">6 Oct 2026</time><span class="badge">log</span></div><h3>Counter ASIC 3.0 item 8</h3><p>Counter ASIC 3.0 item 8: program work in the latency shadow</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-06">6 Oct 2026</time><span class="badge">log</span></div><h3>Counter ASIC 3.0 item 6</h3><p>Counter ASIC 3.0 item 6: the reserve families' step costs</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-06">6 Oct 2026</time><span class="badge">log</span></div><h3>Counter ASIC 3.0 gate run, the hash side</h3></article>
<article class="record"><div class="record-top"><time datetime="2026-10-06">6 Oct 2026</time><span class="badge">log</span></div><h3>16:01Z: Ember run 6 on the three-card Windows rig (RTX 5090, RTX 4070</h3><p>16:01Z: Ember run 6 on the three-card Windows rig (RTX 5090, RTX 4070, RX 9070 XT)</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-06">6 Oct 2026</time><span class="badge">log</span></div><h3>00:4xZ, the empty `/api/state` reply</h3></article>
<article class="record"><div class="record-top"><time datetime="2026-10-06">6 Oct 2026</time><span class="badge">log</span></div><h3>07:12Z to 07:17Z, the host's chain mode with --save-shards records…</h3><p>07:12Z to 07:17Z, the host's chain mode with --save-shards records and --prev, on the Apple M5 Max's CPU</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-06">6 Oct 2026</time><span class="badge">log</span></div><h3>07:52Z to 08:24Z, the segment-aligned prover beside the miner on the…</h3><p>07:52Z to 08:24Z, the segment-aligned prover beside the miner on the RTX 5090 Windows rig's RTX 5090</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-06">6 Oct 2026</time><span class="badge">log</span></div><h3>08:26Z to 08:35Z, the fast-time harness on the fresh-record rule</h3></article>
<article class="record"><div class="record-top"><time datetime="2026-10-06">6 Oct 2026</time><span class="badge">log</span></div><h3>12:25 to 13:20Z, the finality route: why 26 fresh nodes lost the…</h3><p>12:25 to 13:20Z, the finality route: why 26 fresh nodes lost the seed every checkpoint</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>Igneum Wallet v1 on a test network</h3><p>Igneum Wallet v1 on a test network: created, paid by the miner, a transfer sent and shown final under a checkpoint the wallet verified itself</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>Ember Tune: the two-knob efficiency tune, the fleet prior</h3><p>Ember Tune: the two-knob efficiency tune, the fleet prior, and what the three-card Windows rig could measure tonight</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>The SP1 CPU prover on the three-card Windows rig beside the miners,…</h3><p>The SP1 CPU prover on the three-card Windows rig beside the miners, and the backend survey: no zkVM proves on AMD</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>The 9070 XT on the eGPU</h3><p>The 9070 XT on the eGPU: why 17.9 MH/s, and what moved</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>Ember Tune: the two-knob efficiency tune, the fleet prior</h3><p>Ember Tune: the two-knob efficiency tune, the fleet prior, and what the three-card Windows rig (RTX 5090, RTX 4070, RX 9070 XT) could measure tonight</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>Read width of the lottery hash</h3><p>Read width of the lottery hash: 4, 16 and 64-byte loads, a per-load mix, a written scratch; three cards</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>The hot table on the M5 Max</h3><p>The hot table on the M5 Max: a second table sized to GPU cache beside the 1 GiB dataset</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>Mixer x4 and the cache growth rule</h3><p>Mixer x4 and the cache growth rule: the class v3 dataset construction, with the x8 candidate</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>The SP1 CPU prover on the three-card Windows rig (RTX 5090, RTX…</h3><p>The SP1 CPU prover on the three-card Windows rig (RTX 5090, RTX 4070, RX 9070 XT) beside the miners, and the backend survey: no zkVM proves on AMD</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>Proving v1: segment records, the chain rule</h3><p>Proving v1: segment records, the chain rule, the unproven rule; what was measured tonight</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>Dp4a-class throughput on the M5 Max</h3><p>Dp4a-class throughput on the M5 Max: the dot4 emulation against the ALU chain</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>Layer 3 scratch soundness</h3></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>Epoch length as an era parameter</h3><p>Epoch length as an era parameter : the Apple M5 Max's compile-ahead per program</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>Aggregation cost on the RTX 5090</h3><p>Aggregation cost on the RTX 5090: what a per-block aggregation spends and what each lever gives</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>The C4 fix: certificate-driven reorg</h3></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>EVM transaction relay</h3><p>EVM transaction relay: three nodes in a chain, every transaction sent to one end included by the other two miners</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>The prover carries both fee tables and the height switch</h3><p>The prover carries both fee tables and the height switch: one pinned guest on either side of DAA 210,000</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>FUD ledger sweep round 6</h3></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>Live devnet: real transactions, the first non-empty shard proven and…</h3><p>Live devnet: real transactions, the first non-empty shard proven and paid, and the exporter's block structure fixed</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>The program id split</h3><p>The program id split: why the Apple M5 Max rejected the RTX 5090 Windows rig's proofs, and the verifier at 114 s</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-05">5 Oct 2026</time><span class="badge">log</span></div><h3>Live devnet: the first shards proven, verified and paid</h3></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>Economy simulation: mining versus proving under stress</h3><p>Sim/economy: mining versus proving under stress, agent-based</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>Difficulty rule attacked seven ways</h3><p>Difficulty rule under attack: pool hopping, pulsed rental, timestamp stretching, short-lane oscillation, epoch games, polluted window, block flood</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>Timestamp attack on the difficulty rule fixed</h3><p>Difficulty rule: timestamp attack fixed , simulator regression, 3-node forger test</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>Devnet v4: nine branches merged into one node</h3><p>Devnet-v4 integration: nine branches merged, 3-node test network on the merged node, Windows cross-build</p></article>
<article class="record"><div class="record-top"><time datetime="2026-10-04">4 Oct 2026</time><span class="badge">log</span></div><h3>Generator v2 adopted: every hash does 128 distinct reads</h3><p>Generator version 2 adopted: exact load count, fresh-source loads, program acceptance; every vector re-cut, three workers re-checked, 20,000-program census, devnet-v4 binaries rebuilt</p></article></div>
<p class="empty-state" data-filter-empty="log" hidden>Nothing in the log matches that.</p>
<p class="note">Every entry is a dated heading of <a href="/bench">the engineering log</a>, where the commands and the hardware are. The phases and their gates are the litepaper’s <a href="/litepaper#roadmap">roadmap</a>.</p>
<div class="onward"><a href="/bench" class="btn">The engineering log</a><a href="/evidence" class="btn">Every claim and its status</a><a href="/live" class="btn">The live devnet</a></div>
</div>
</section>
</main>
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
<p>Mined by GPUs. Proven by fire.</p>
<div class="social" aria-label="Igneum elsewhere">
<a href="https://git.igneum.network/igneum-network/spec" target="_blank" rel="noopener" aria-label="Igneum source: the spec, the vectors and the issues"><svg viewBox="0 0 24 24" width="22" height="22" fill="currentColor" aria-hidden="true"><path d="M8.6 17.6 3 12l5.6-5.6 1.4 1.4L5.8 12l4.2 4.2zm6.8 0-1.4-1.4L18.2 12 14 7.8l1.4-1.4L21 12z"></path></svg></a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener" aria-label="The Igneum Discord"><svg viewBox="0 0 24 24" width="22" height="22" fill="currentColor" aria-hidden="true"><path d="M19.6 5.3A17 17 0 0 0 15.4 4l-.2.4a15.6 15.6 0 0 1 3.9 1.9 13.6 13.6 0 0 0-14.2 0A15.6 15.6 0 0 1 8.8 4.4L8.6 4a17 17 0 0 0-4.2 1.3C1.8 9.2 1.1 13 1.4 16.7a17.1 17.1 0 0 0 5.2 2.6l1.1-1.8a10.8 10.8 0 0 1-1.7-.8l.4-.3a12.2 12.2 0 0 0 11.2 0l.4.3-1.7.8 1.1 1.8a17 17 0 0 0 5.2-2.6c.4-4.3-.7-8-3-11.4zM8.7 14.4c-1 0-1.8-.9-1.8-2.1s.8-2.1 1.8-2.1 1.9 1 1.8 2.1c0 1.2-.8 2.1-1.8 2.1zm6.6 0c-1 0-1.8-.9-1.8-2.1s.8-2.1 1.8-2.1 1.9 1 1.8 2.1c0 1.2-.8 2.1-1.8 2.1z"></path></svg></a>
<a data-social="reddit" href="https://www.reddit.com/user/Igneum_network/" target="_blank" rel="noopener" aria-label="Igneum on Reddit"><svg viewBox="0 0 24 24" width="22" height="22" fill="currentColor" aria-hidden="true"><path d="M22 12.1a2.2 2.2 0 0 0-3.7-1.6 10.8 10.8 0 0 0-5.8-1.8l1-4.6 3.2.7a1.5 1.5 0 1 0 .2-.9l-3.6-.8a.5.5 0 0 0-.5.4l-1.1 5.2a10.8 10.8 0 0 0-5.9 1.8A2.2 2.2 0 1 0 3.4 14a4.3 4.3 0 0 0 0 .7c0 3.4 3.9 6.1 8.6 6.1s8.6-2.7 8.6-6.1a4.3 4.3 0 0 0 0-.7 2.2 2.2 0 0 0 1.4-1.9zM7 13.6a1.5 1.5 0 1 1 1.5 1.5A1.5 1.5 0 0 1 7 13.6zm8.6 4.1a5.7 5.7 0 0 1-3.6 1.1 5.7 5.7 0 0 1-3.6-1.1.4.4 0 0 1 .6-.6 4.9 4.9 0 0 0 3 .9 4.9 4.9 0 0 0 3-.9.4.4 0 0 1 .6.6zm-.3-2.6a1.5 1.5 0 1 1 1.5-1.5 1.5 1.5 0 0 1-1.5 1.5z"></path></svg></a>
</div>
<div class="footer-dl" aria-label="Download Ember"><a href="/download#windows"><span class="osmark mini" data-os="windows" title="Windows"><svg viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false" fill="currentColor"><path d="M3 5.6l7.3-1v7.1H3zM11.4 4.4L21 3v8.7h-9.6zM3 12.3h7.3v7.1L3 18.4zM11.4 12.3H21V21l-9.6-1.4z"/></svg></span>Windows</a><a href="/download#mac"><span class="osmark mini" data-os="mac" title="macOS"><svg viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false" fill="currentColor"><path d="M16.4 12.6c0-2.5 2-3.6 2.1-3.7-1.2-1.7-3-1.9-3.6-2-1.5-.2-3 .9-3.8.9-.8 0-2-.9-3.3-.8-1.7 0-3.2 1-4.1 2.5-1.8 3-.5 7.6 1.3 10.1.9 1.2 1.9 2.6 3.2 2.5 1.3 0 1.8-.8 3.3-.8 1.6 0 2 .8 3.3.8 1.4 0 2.3-1.2 3.1-2.5 1-1.4 1.4-2.8 1.4-2.9 0 0-2.7-1-2.9-4.1zM13.9 5.3c.7-.8 1.2-2 1-3.2-1 0-2.2.7-2.9 1.5-.6.7-1.2 1.9-1 3 1.1.1 2.2-.5 2.9-1.3z"/></svg></span>macOS</a><a href="/download#linux"><span class="osmark mini" data-os="linux" title="Linux"><svg viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false" fill="currentColor"><path d="M12 2c-2.4 0-4 1.9-4 4.6 0 1.2.2 2 0 2.8-.6 1.4-2.1 2.9-2.6 4.9-.3 1.1-.1 2 .3 2.6-.6.4-1.3 1-1.1 1.7.3 1 2.1 1.2 3.2 1.8.7.4 1.5.6 2.1.1.6.2 1.3.3 2.1.3s1.5-.1 2.1-.3c.6.5 1.4.3 2.1-.1 1.1-.6 2.9-.8 3.2-1.8.2-.7-.5-1.3-1.1-1.7.4-.6.6-1.5.3-2.6-.5-2-2-3.5-2.6-4.9-.2-.8 0-1.6 0-2.8C16 3.9 14.4 2 12 2zm-1.4 4.2c.5 0 .8.5.8 1.2s-.3 1.2-.8 1.2-.8-.5-.8-1.2.3-1.2.8-1.2zm2.8 0c.5 0 .8.5.8 1.2s-.3 1.2-.8 1.2-.8-.5-.8-1.2.3-1.2.8-1.2zM12 9.3c.9 0 1.9.5 1.9 1s-1 1.2-1.9 1.2-1.9-.7-1.9-1.2 1-1 1.9-1zm0 3.4c2.2 0 3.6 2.6 3.6 4.4 0 1.5-1.6 2.3-3.6 2.3s-3.6-.8-3.6-2.3c0-1.8 1.4-4.4 3.6-4.4z"/></svg></span>Linux</a><a href="/download#hive"><span class="osmark mini" data-os="hive" title="HiveOS"><svg viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linejoin="round" stroke-linecap="round"><path d="M12 2.6 20.2 7.3v9.4L12 21.4 3.8 16.7V7.3z"/><path d="M12 7.4 16 9.7v4.6L12 16.6 8 14.3V9.7z"/><path d="M12 7.4V2.6M16 9.7l4.2-2.4M16 14.3l4.2 2.4M12 16.6v4.8M8 14.3l-4.2 2.4M8 9.7 3.8 7.3"/></svg></span>HiveOS</a></div>
<a href="https://git.igneum.network/igneum-network/spec" target="_blank" rel="noopener" class="text-link">Specification and test vectors<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 18 18 6M6 6h12v12"/></svg></a>
</div>
<div class="footer-column"><h4>Run</h4><div>
<a href="/download">Download Ember</a>
<a href="/miner">The miner</a>
<a href="/app">The app</a>
<a href="/wallet">The wallet</a>
<a href="/miners">GPU bench table</a>
<a href="/dev-fee">The dev fee</a>
<a href="/faucet">Devnet faucet</a>
<a href="/metamask">Add Igneum to MetaMask</a>
</div></div>
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
<a href="/provenance">Built on the shoulders</a>
</div></div>
<div class="footer-column"><h4>Explore</h4><div>
<a href="/live">Live devnet</a>
<a href="/explorer">Explorer</a>
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
<a href="https://git.igneum.network/igneum-network/spec/issues" rel="noopener">An issue on the spec</a>
</div></div>
</div>
<div class="footer-bottom">
<p>Igneum Labs LTD · Unit IH-00-01-01-OF-01, Level 01, Innovation One, Dubai International Financial Centre. Experimental software. Nothing on this site is an offer to sell anything.<br>Report a flaw by email or by an issue on the spec. Nobody from Igneum will ask for your seed. © 2026 Igneum · not an offer to sell anything</p>
<div class="theme-group" role="group" aria-label="Theme"><button type="button" data-theme-set="system" aria-pressed="true">System</button><button type="button" data-theme-set="light" aria-pressed="false">Light</button><button type="button" data-theme-set="dark" aria-pressed="false">Dark</button></div>
</div>
</div>
</footer>
<script>
(function(){
// theme control: stores light or dark under igneum-theme; system clears it and follows the OS. The head applied the value before paint.
var bs=document.querySelectorAll('[data-theme-set]');if(!bs.length)return;
var media=window.matchMedia('(prefers-color-scheme: light)');
function stored(){try{var t=localStorage.getItem('igneum-theme');return t==='light'||t==='dark'?t:'system';}catch(e){return 'system';}}
function apply(){var c=stored();document.documentElement.setAttribute('data-theme',c==='system'?(media.matches?'light':'dark'):c);bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});document.dispatchEvent(new CustomEvent('igneum-theme'));}
bs.forEach(function(b){b.addEventListener('click',function(){var v=b.getAttribute('data-theme-set');try{if(v==='system')localStorage.removeItem('igneum-theme');else localStorage.setItem('igneum-theme',v);}catch(e){}apply();});});
if(media.addEventListener)media.addEventListener('change',function(){if(stored()==='system')apply();});
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->
<script src="/ui.js" defer></script>
</body>
</html>

View file

@ -1,254 +0,0 @@
{
"updated": "2026-10-08",
"stage": "phase-3",
"phases": [
{
"id": "phase-1",
"name": "Specification",
"when": "Under way; closes when the specification is out for external review",
"status": "active",
"line": "Mining generator, shard proving, finality rules, written for external review"
},
{
"id": "phase-2",
"name": "Prove the proving",
"when": "Under way; closes at its gate",
"status": "active",
"line": "Mining program proven on Apple, NVIDIA and AMD; shard proving benchmark on consumer cards still to run",
"gate": "A fixed published workload, job received to accepted proof on a declared consumer card, sustained with no growing backlog, reproduced by three independent operators"
},
{
"id": "phase-3",
"name": "Devnet",
"when": "Devnet 3 live, testnet next",
"status": "active",
"line": "Devnet 3 since 7 October 2026 with every upgrade on from block zero; GPU miners on three vendors; EVM execution and proving live",
"gate": "1 block a second held with proofs under 60 s behind the tip"
},
{
"id": "phase-4",
"name": "Finality and job market",
"when": "Closes when the finality design passes external review",
"status": "next",
"line": "Sustained-mining finality, external proving jobs, miner client with auto-switching",
"gate": "Finality design passes external review"
},
{
"id": "phase-5",
"name": "Public testnet",
"when": "Armed: opens on the go word",
"status": "next",
"line": "Three seed nodes and the public RPC are up; the one-click miner app on Windows, macOS and Linux, HiveOS, pools, the first rollup as a proving customer, no coin yet",
"gate": "1,000 independent miners run 30 days and rollup proofs are delivered on time"
},
{
"id": "phase-6",
"name": "Mainnet fair launch",
"when": "After the testnet has passed its gate (1,000 independent miners for 30 days, rollup proofs on time) and one proving customer has signed: a customer paying for proofs at a published rate, or a letter of intent with a volume",
"status": "next",
"line": "Genesis with no premine, 30-day ramp. No listing is arranged, promised or sought by the project"
}
],
"log": [
{
"date": "2026-10-08",
"text": "The hot-table packs on the RTX 5090: ld.global.cs against the plain load, unlocked and at the 1,300 MHz lock",
"short": "The hot-table packs on the RTX 5090"
},
{
"date": "2026-10-07",
"text": "The first 16 GB card: an RTX 5060 Ti in a Thunderbolt enclosure on the RTX 5090 Windows rig",
"short": "The first 16 GB card"
},
{
"date": "2026-10-06",
"text": "Counter ASIC 3.0: the class v4 rehearsal",
"short": "Counter ASIC 3.0"
},
{
"date": "2026-10-06",
"text": "16:01Z: Ember run 6 on the three-card Windows rig",
"short": "16:01Z: Ember run 6 on the three-card Windows rig"
},
{
"date": "2026-10-06",
"text": "Counter ASIC 3.0 item 2: the per-day derivation",
"short": "Counter ASIC 3.0 item 2"
},
{
"date": "2026-10-06",
"text": "Counter ASIC 3.0 item 8: program work in the latency shadow",
"short": "Counter ASIC 3.0 item 8"
},
{
"date": "2026-10-06",
"text": "Counter ASIC 3.0 item 6: the reserve families' step costs",
"short": "Counter ASIC 3.0 item 6"
},
{
"date": "2026-10-06",
"text": "Counter ASIC 3.0 gate run, the hash side",
"short": "Counter ASIC 3.0 gate run, the hash side"
},
{
"date": "2026-10-06",
"text": "16:01Z: Ember run 6 on the three-card Windows rig (RTX 5090, RTX 4070, RX 9070 XT)",
"short": "16:01Z: Ember run 6 on the three-card Windows rig (RTX 5090, RTX 4070"
},
{
"date": "2026-10-06",
"text": "00:4xZ, the empty `/api/state` reply",
"short": "00:4xZ, the empty `/api/state` reply"
},
{
"date": "2026-10-06",
"text": "07:12Z to 07:17Z, the host's chain mode with --save-shards records and --prev, on the Apple M5 Max's CPU",
"short": "07:12Z to 07:17Z, the host's chain mode with --save-shards records…"
},
{
"date": "2026-10-06",
"text": "07:52Z to 08:24Z, the segment-aligned prover beside the miner on the RTX 5090 Windows rig's RTX 5090",
"short": "07:52Z to 08:24Z, the segment-aligned prover beside the miner on the…"
},
{
"date": "2026-10-06",
"text": "08:26Z to 08:35Z, the fast-time harness on the fresh-record rule",
"short": "08:26Z to 08:35Z, the fast-time harness on the fresh-record rule"
},
{
"date": "2026-10-06",
"text": "12:25 to 13:20Z, the finality route: why 26 fresh nodes lost the seed every checkpoint",
"short": "12:25 to 13:20Z, the finality route: why 26 fresh nodes lost the…"
},
{
"date": "2026-10-05",
"text": "Igneum Wallet v1 on a test network: created, paid by the miner, a transfer sent and shown final under a checkpoint the wallet verified itself",
"short": "Igneum Wallet v1 on a test network"
},
{
"date": "2026-10-05",
"text": "Ember Tune: the two-knob efficiency tune, the fleet prior, and what the three-card Windows rig could measure tonight",
"short": "Ember Tune: the two-knob efficiency tune, the fleet prior"
},
{
"date": "2026-10-05",
"text": "The SP1 CPU prover on the three-card Windows rig beside the miners, and the backend survey: no zkVM proves on AMD",
"short": "The SP1 CPU prover on the three-card Windows rig beside the miners,…"
},
{
"date": "2026-10-05",
"text": "The 9070 XT on the eGPU: why 17.9 MH/s, and what moved",
"short": "The 9070 XT on the eGPU"
},
{
"date": "2026-10-05",
"text": "Ember Tune: the two-knob efficiency tune, the fleet prior, and what the three-card Windows rig (RTX 5090, RTX 4070, RX 9070 XT) could measure tonight",
"short": "Ember Tune: the two-knob efficiency tune, the fleet prior"
},
{
"date": "2026-10-05",
"text": "Read width of the lottery hash: 4, 16 and 64-byte loads, a per-load mix, a written scratch; three cards",
"short": "Read width of the lottery hash"
},
{
"date": "2026-10-05",
"text": "The hot table on the M5 Max: a second table sized to GPU cache beside the 1 GiB dataset",
"short": "The hot table on the M5 Max"
},
{
"date": "2026-10-05",
"text": "Mixer x4 and the cache growth rule: the class v3 dataset construction, with the x8 candidate",
"short": "Mixer x4 and the cache growth rule"
},
{
"date": "2026-10-05",
"text": "The SP1 CPU prover on the three-card Windows rig (RTX 5090, RTX 4070, RX 9070 XT) beside the miners, and the backend survey: no zkVM proves on AMD",
"short": "The SP1 CPU prover on the three-card Windows rig (RTX 5090, RTX…"
},
{
"date": "2026-10-05",
"text": "Proving v1: segment records, the chain rule, the unproven rule; what was measured tonight",
"short": "Proving v1: segment records, the chain rule"
},
{
"date": "2026-10-05",
"text": "Dp4a-class throughput on the M5 Max: the dot4 emulation against the ALU chain",
"short": "Dp4a-class throughput on the M5 Max"
},
{
"date": "2026-10-05",
"text": "Layer 3 scratch soundness",
"short": "Layer 3 scratch soundness"
},
{
"date": "2026-10-05",
"text": "Epoch length as an era parameter : the Apple M5 Max's compile-ahead per program",
"short": "Epoch length as an era parameter"
},
{
"date": "2026-10-05",
"text": "Aggregation cost on the RTX 5090: what a per-block aggregation spends and what each lever gives",
"short": "Aggregation cost on the RTX 5090"
},
{
"date": "2026-10-05",
"text": "The C4 fix: certificate-driven reorg",
"short": "The C4 fix: certificate-driven reorg"
},
{
"date": "2026-10-05",
"text": "EVM transaction relay: three nodes in a chain, every transaction sent to one end included by the other two miners",
"short": "EVM transaction relay"
},
{
"date": "2026-10-05",
"text": "The prover carries both fee tables and the height switch: one pinned guest on either side of DAA 210,000",
"short": "The prover carries both fee tables and the height switch"
},
{
"date": "2026-10-05",
"text": "FUD ledger sweep round 6",
"short": "FUD ledger sweep round 6"
},
{
"date": "2026-10-05",
"text": "Live devnet: real transactions, the first non-empty shard proven and paid, and the exporter's block structure fixed",
"short": "Live devnet: real transactions, the first non-empty shard proven and…"
},
{
"date": "2026-10-05",
"text": "The program id split: why the Apple M5 Max rejected the RTX 5090 Windows rig's proofs, and the verifier at 114 s",
"short": "The program id split"
},
{
"date": "2026-10-05",
"text": "Live devnet: the first shards proven, verified and paid",
"short": "Live devnet: the first shards proven, verified and paid"
},
{
"date": "2026-10-04",
"text": "Sim/economy: mining versus proving under stress, agent-based",
"short": "Economy simulation: mining versus proving under stress"
},
{
"date": "2026-10-04",
"text": "Difficulty rule under attack: pool hopping, pulsed rental, timestamp stretching, short-lane oscillation, epoch games, polluted window, block flood",
"short": "Difficulty rule attacked seven ways"
},
{
"date": "2026-10-04",
"text": "Difficulty rule: timestamp attack fixed , simulator regression, 3-node forger test",
"short": "Timestamp attack on the difficulty rule fixed"
},
{
"date": "2026-10-04",
"text": "Devnet-v4 integration: nine branches merged, 3-node test network on the merged node, Windows cross-build",
"short": "Devnet v4: nine branches merged into one node"
},
{
"date": "2026-10-04",
"text": "Generator version 2 adopted: exact load count, fresh-source loads, program acceptance; every vector re-cut, three workers re-checked, 20,000-program census, devnet-v4 binaries rebuilt",
"short": "Generator v2 adopted: every hash does 128 distinct reads"
}
]
}

View file

@ -93,7 +93,7 @@ blockquote{margin:10px 0;padding:10px 14px;border-left:3px solid var(--line-2);c
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -123,12 +123,10 @@ blockquote{margin:10px 0;padding:10px 14px;border-left:3px solid var(--line-2);c
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -146,7 +144,7 @@ blockquote{margin:10px 0;padding:10px 14px;border-left:3px solid var(--line-2);c
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -166,12 +164,10 @@ blockquote{margin:10px 0;padding:10px 14px;border-left:3px solid var(--line-2);c
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -185,7 +181,7 @@ blockquote{margin:10px 0;padding:10px 14px;border-left:3px solid var(--line-2);c
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -1452,6 +1448,7 @@ blockquote{margin:10px 0;padding:10px 14px;border-left:3px solid var(--line-2);c
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -1477,7 +1474,6 @@ blockquote{margin:10px 0;padding:10px 14px;border-left:3px solid var(--line-2);c
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -1489,7 +1485,6 @@ blockquote{margin:10px 0;padding:10px 14px;border-left:3px solid var(--line-2);c
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -1515,7 +1510,7 @@ blockquote{margin:10px 0;padding:10px 14px;border-left:3px solid var(--line-2);c
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -4,14 +4,14 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Igneum light wallet</title>
<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.">
<meta name="description" content="A devnet balance your browser proves itself: certificate, headers, coinbase, segment record and account proof, all recomputed in the tab. The devnet, 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 and account proof, recomputed in the tab.">
<meta property="og:description" content="A devnet 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/light.png?v=4">
<meta property="og:image:type" content="image/png">
@ -25,7 +25,7 @@
<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 and account proof, recomputed in the tab.">
<meta name="twitter:description" content="A devnet 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 -->
@ -97,7 +97,7 @@
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" data-active aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -127,12 +127,10 @@
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light" aria-current="page"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -150,7 +148,7 @@
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -170,12 +168,10 @@
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light" aria-current="page"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -189,7 +185,7 @@
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -248,10 +244,10 @@
<main id="main" class="wrap">
<div class="head">
<div class="breadcrumb"><a href="/">Igneum</a><span>/</span><span>Light wallet</span></div>
<div class="eyebrow"><span class="line"></span>Reference app 1 · Devnet 3, no value</div>
<div class="eyebrow"><span class="line"></span>Reference app 1 · the devnet, no value</div>
<h1>A balance verified in your browser, trust stated<span class="accent">.</span></h1>
</div>
<p class="note">Paste a Devnet 3 address. This tab fetches the latest finality certificate, the header chain, the carrier block's coinbase, the segment record and an account proof from a read service, then recomputes every link itself: BLS over the checkpoint, every header hash and parent link, the merkle path, the aggregator's signature, the Merkle Patricia proof under the committed state root. This is a verification path with stated trust assumptions, listed below; it is not a browser that needs no trusted inputs. The read service cannot change what those inputs commit to. It can only refuse to answer.</p>
<p class="note">Paste a devnet address. This tab fetches the latest finality certificate, the header chain, the carrier block's coinbase, the segment record and an account proof from a read service, then recomputes every link itself: BLS over the checkpoint, every header hash and parent link, the merkle path, the aggregator's signature, the Merkle Patricia proof under the committed state root. This is a verification path with stated trust assumptions, listed below; it is not a browser that needs no trusted inputs. The read service cannot change what those inputs commit to. It can only refuse to answer.</p>
<div class="trust"><h3>Trusted inputs, stated</h3><ul>
<li>The voter table with weights comes from the node (no header field commits to it yet; spec 10.1). A node that lies about the table could present a different set of signers.</li>
<li>The aggregator's execution statement (the state root in the segment record) is taken as the true execution result. Nodes check it against their own execution before paying the record; a carried record that fails that check is ignored, not a block fault.</li>
@ -266,16 +262,16 @@
<section class="card" aria-labelledby="verify">
<h2 id="verify">Verify a balance</h2>
<form class="vform" data-form="light" novalidate>
<label for="address">Devnet 3 address</label>
<label for="address">Devnet address</label>
<div class="row"><input id="address" name="address" inputmode="text" autocomplete="off" spellcheck="false" placeholder="0x…" pattern="^0x[0-9a-fA-F]{40}$"><button class="btn primary" type="submit">Verify in this tab</button></div>
<div class="vstatus" data-status role="status" aria-live="polite">Devnet 3, no value. Nothing here is a wallet that sends. It reads and proves.</div>
<div class="vstatus" data-status role="status" aria-live="polite">The devnet, no value. Nothing here is a wallet that sends. It reads and proves.</div>
</form>
<div data-result></div>
</section>
<h2 id="checked">What is checked, in order</h2>
<ol>
<li>The certificate: the aggregate BLS signature of the signers over <code>igneum-vote-v1/igneum-devnet-3 || index || checkpoint hash</code>, the canonical voter order, the rule (two thirds of active weight and two thirds of total weight), and the header chain from the previous lock.</li>
<li>The certificate: the aggregate BLS signature of the signers over <code>igneum-vote-v1/{network id} || index || checkpoint hash</code>, the canonical voter order, the rule (two thirds of active weight and two thirds of total weight), and the header chain from the previous lock.</li>
<li>The header path from the carrier block up to the certified checkpoint: every header hash recomputes (BLAKE2b-256 keyed BlockHash over the header fields), every next header names the previous as a direct parent.</li>
<li>The coinbase transaction is in the carrier block: its hash recomputes (BLAKE2b-256 keyed TransactionHash over the serialized transaction) and the merkle path reaches the header's <code>hash_merkle_root</code>.</li>
<li>The segment record in the coinbase extra data: the aggregator's BLS signature over the record under the network's tag, whether the key is a voter with weight or a prove-only key, and the statement names the chain and the block whose state it commits.</li>
@ -291,15 +287,16 @@
<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>
<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>). The devnet, no value.</p>
</section>
<!-- terms:end -->
<p class="asof">Devnet 3, no value. The chain may reset. Pages like this one are demonstrations of the verification path, not a product.</p>
<p class="asof">The devnet, no value. The chain may reset. Pages like this one are demonstrations of the verification path, not a product.</p>
</main>
<script type="module" src="/lc/app.js"></script>
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -325,7 +322,6 @@
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -337,7 +333,6 @@
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -363,7 +358,7 @@
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->
@ -371,7 +366,6 @@
(function(){
// one request per button; the wallet shows the chain to the user and decides. No key, no seed, no signature here.
var CHAINS = {
testnet: { chainId: '0x116e', chainName: 'Igneum Testnet', nativeCurrency: { name: 'Igneum', symbol: 'IGN', decimals: 18 }, rpcUrls: ['https://rpc.testnet.igneum.network'], blockExplorerUrls: [] },
devnet: { chainId: '0x116f', chainName: 'Igneum Devnet (local node)', nativeCurrency: { name: 'Igneum', symbol: 'IGN', decimals: 18 }, rpcUrls: ['http://127.0.0.1:26790'], blockExplorerUrls: [] }
};
function status(name, text) { var el = document.querySelector('[data-status="' + name + '"]'); if (el) el.textContent = text; }

View file

@ -146,7 +146,7 @@ body.all .pager{display:none}
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -176,12 +176,10 @@ body.all .pager{display:none}
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -199,7 +197,7 @@ body.all .pager{display:none}
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -219,12 +217,10 @@ body.all .pager{display:none}
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper" aria-current="page"><b>Litepaper</b><span>The design, as published.</span></a>
@ -238,7 +234,7 @@ body.all .pager{display:none}
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -433,7 +429,7 @@ body.all .pager{display:none}
<div class="cap">Five layers plus the external proving market. A block flows down the column; outside demand feeds the same miners from the side.</div>
</div>
<h3>Live on Devnet 3, 7 October 2026</h3>
<p>Devnet 3 (<span data-rm="network.id">igneum-devnet-3</span>, chain id <span data-rm="network.chain_id">4464</span> since its class v5 floor at DAA <span data-rm="mining.class_since_daa">68,400</span>, 4463 from genesis to the floor; the chain’s current state is the <a href="/release.json">release manifest</a>) made its first block at 18:06 UK on 7 October 2026 with every upgrade on from block zero, and locked its first checkpoint at 20:02 UK. The first devnet ran from 3 October 2026 and took each upgrade by height. Coins on Devnet 3 have no value and the chain may be reset. What is on it:</p>
<p>Devnet 3 (<span data-rm="network.id">igneum-devnet-4</span>, chain id <span data-rm="network.chain_id">4464</span> since its class v5 floor at DAA <span data-rm="mining.class_since_daa">68,400</span>, 4463 from genesis to the floor; the chain’s current state is the <a href="/release.json">release manifest</a>) made its first block at 18:06 UK on 7 October 2026 with every upgrade on from block zero, and locked its first checkpoint at 20:02 UK. The first devnet ran from 3 October 2026 and took each upgrade by height. Coins on Devnet 3 have no value and the chain may be reset. What is on it:</p>
<div class="tbl"><table>
<thead><tr><th>Layer</th><th>State</th><th>Since</th></tr></thead>
<tbody>
@ -856,6 +852,7 @@ body.all .pager{display:none}
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -881,7 +878,6 @@ body.all .pager{display:none}
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -893,7 +889,6 @@ body.all .pager{display:none}
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -919,7 +914,7 @@ body.all .pager{display:none}
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -230,7 +230,7 @@ details.tablebar summary{display:flex;align-items:center}
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" data-active aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -260,12 +260,10 @@ details.tablebar summary{display:flex;align-items:center}
<div class="panel-list">
<a href="/live" data-nav="live" aria-current="page"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -283,7 +281,7 @@ details.tablebar summary{display:flex;align-items:center}
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -303,12 +301,10 @@ details.tablebar summary{display:flex;align-items:center}
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live" aria-current="page"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -322,7 +318,7 @@ details.tablebar summary{display:flex;align-items:center}
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -520,6 +516,7 @@ details.tablebar summary{display:flex;align-items:center}
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -545,7 +542,6 @@ details.tablebar summary{display:flex;align-items:center}
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -557,7 +553,6 @@ details.tablebar summary{display:flex;align-items:center}
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -583,7 +578,7 @@ details.tablebar summary{display:flex;align-items:center}
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -4,7 +4,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Add Igneum to MetaMask</title>
<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.">
<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. The devnet is live.">
<link rel="canonical" href="https://igneum.network/metamask">
<meta name="theme-color" content="#0C0C0E">
<!-- share:start -->
@ -91,7 +91,7 @@ ol{margin:0 0 14px;padding-left:22px}li{margin-bottom:6px}
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" data-active aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -121,12 +121,10 @@ ol{margin:0 0 14px;padding-left:22px}li{margin-bottom:6px}
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -144,7 +142,7 @@ ol{margin:0 0 14px;padding-left:22px}li{margin-bottom:6px}
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -164,12 +162,10 @@ ol{margin:0 0 14px;padding-left:22px}li{margin-bottom:6px}
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -183,7 +179,7 @@ ol{margin:0 0 14px;padding-left:22px}li{margin-bottom:6px}
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -248,28 +244,13 @@ ol{margin:0 0 14px;padding-left:22px}li{margin-bottom:6px}
<p class="note">Igneum runs the Ethereum virtual machine, so MetaMask and every other Ethereum wallet work unchanged. The wallet needs four things: the chain id, an RPC URL, the symbol <b>IGN</b> and <b>18</b> decimals. The button below sends them to the wallet with the standard <code>wallet_addEthereumChain</code> request; the wallet shows them to you and asks before adding anything. Nothing on this page asks for a seed phrase or a key. Nobody from Igneum will ask for your seed.</p>
<div class="grid">
<div class="card" id="testnet">
<span class="tag">Public testnet · coming</span>
<h3>Igneum testnet</h3>
<p>The network the one-click miner app joins at public testnet. Coins on it have no value and the chain resets with notice (<a href="/litepaper#testnet-terms">testnet terms</a>).</p>
<dl>
<dt>Network name</dt><dd>Igneum Testnet</dd>
<dt>Chain id</dt><dd>4462 (0x116e)</dd>
<dt>RPC URL</dt><dd id="testnet-rpc">https://rpc.testnet.igneum.network <span style="color:var(--ash)">(published with the testnet)</span></dd>
<dt>Symbol</dt><dd>IGN</dd>
<dt>Decimals</dt><dd>18</dd>
<dt>Explorer</dt><dd>published with the testnet</dd>
</dl>
<button class="btn" type="button" data-add="testnet" disabled>Add Igneum Testnet to MetaMask</button>
<p class="status" data-status="testnet">The button switches on when the public RPC is live.</p>
</div>
<div class="card" id="devnet">
<span class="tag">Devnet · live now</span>
<h3>Igneum Devnet 3, through the public RPC or your own node</h3>
<h3>Igneum 2.0 devnet, through the public RPC or your own node</h3>
<p>The public RPC answers at rpc.devnet.igneum.network; the Igneum Miner app also runs a full node on your machine and serves the Ethereum RPC on it, and the wallet can point at either. The devnet is a developer network: it resets without notice and its coins have no value.</p>
<dl>
<dt>Network name</dt><dd>Igneum Devnet 3</dd>
<dt>Chain id</dt><dd id="dev-chain">4464 (0x1170) on Devnet 3, since its class v5 floor at DAA 68,400 on 8 October 2026 (4463 before it)</dd>
<dt>Network name</dt><dd>Igneum 2.0 devnet</dd>
<dt>Chain id</dt><dd id="dev-chain">4464 (0x1170)</dd>
<dt>RPC URL</dt><dd>https://rpc.devnet.igneum.network (a node you run serves http://127.0.0.1:26790)</dd>
<dt>Symbol</dt><dd>IGN</dd>
<dt>Decimals</dt><dd>18</dd>
@ -281,11 +262,11 @@ ol{margin:0 0 14px;padding-left:22px}li{margin-bottom:6px}
</div>
<h2 id="manual">Add it by hand</h2>
<p class="note">If the wallet has no one-click support, or you prefer to type: MetaMask, Settings, Networks, Add a network manually. Enter the values from the card above. Any wallet that supports custom EVM networks takes the same four fields.</p>
<p class="note">If the wallet has no one-click support, or you prefer to type: MetaMask, Settings, Networks, Add a network manually. Enter the values from the devnet card above. Any wallet that supports custom EVM networks takes the same four fields.</p>
<ol>
<li>Network name: Igneum Testnet (or Igneum Devnet for your own node).</li>
<li>Network name: Igneum 2.0 devnet.</li>
<li>RPC URL: the one on the card.</li>
<li>Chain id: 4462 for the testnet, 4464 for Devnet 3.</li>
<li>Chain id: 4464 for the devnet.</li>
<li>Currency symbol: IGN. Decimals: 18.</li>
</ol>
@ -294,23 +275,24 @@ ol{margin:0 0 14px;padding-left:22px}li{margin-bottom:6px}
<pre>await window.ethereum.request({
method: 'wallet_addEthereumChain',
params: [{
chainId: '0x116e', // 4462, the Igneum testnet (0x1170 = 4464, Devnet 3)
chainName: 'Igneum Testnet',
chainId: '0x1170', // 4464, Igneum 2.0 devnet
chainName: 'Igneum 2.0 devnet',
nativeCurrency: { name: 'Igneum', symbol: 'IGN', decimals: 18 },
rpcUrls: ['https://rpc.testnet.igneum.network'],
blockExplorerUrls: []
rpcUrls: ['https://rpc.devnet.igneum.network'],
blockExplorerUrls: ['https://igneum.network/explorer']
}]
});</pre>
<p class="note">Igneum signs transactions with the Ethereum rules (EIP-155, EIP-1559 and legacy envelopes). A transaction signed for another chain id is refused. Gas has two dimensions on Igneum, execution and proving, and the node folds the second into the price it quotes, so <code>eth_gasPrice</code> and <code>eth_estimateGas</code> work as they do on Ethereum. The <a href="/litepaper#builders-ask">litepaper</a> has the differences.</p>
<h2 id="app-wallet">The app and the Igneum Wallet</h2>
<p class="note">The Igneum Ember app (still labelled Igneum Miner in its window) makes an address for your earnings and shows you its seed phrase once. That address is an ordinary Ethereum account: import the seed into MetaMask and the balance is there. <a href="/wallet">Igneum Wallet</a> 0.1.5 is out for macOS and verifies finality itself; its Apps tab is in the roadmap. MetaMask works today and is the way in on Windows and Linux.</p>
<p class="note">The Igneum Ember app (still labelled Igneum Miner in its window) makes an address for your earnings and shows you its seed phrase once. That address is an ordinary Ethereum account: import the seed into MetaMask and the balance is there. <a href="/wallet">Igneum Wallet</a> is out for macOS and verifies finality itself; its Apps tab is in the roadmap. MetaMask works today and is the way in on Windows and Linux.</p>
<p class="asof">Testnet coin for testing: <a href="/faucet">the faucet</a> sends 10 IGN per address per day. Chain ids 4461 (mainnet) and 4462 (testnet) are fixed in the node; Devnet 3 answers 4464 since its class v5 floor crossed at DAA 68,400 on 8 October 2026 (4463 before it), and eth_chainId on the public RPC is the answer to trust. The testnet RPC URL above is a placeholder until the testnet opens; this page is updated the day it does.</p>
<p class="asof">Coin for testing: <a href="/faucet">the faucet</a> sends 10 IGN per address per day on the devnet. Chain id 4461 is reserved for mainnet, which has not started. The devnet answers 4464, and eth_chainId on the public RPC is the answer to trust.</p>
</main>
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -336,7 +318,6 @@ ol{margin:0 0 14px;padding-left:22px}li{margin-bottom:6px}
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -348,7 +329,6 @@ ol{margin:0 0 14px;padding-left:22px}li{margin-bottom:6px}
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -374,7 +354,7 @@ ol{margin:0 0 14px;padding-left:22px}li{margin-bottom:6px}
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->
@ -382,18 +362,17 @@ ol{margin:0 0 14px;padding-left:22px}li{margin-bottom:6px}
(function(){
// one request per button; the wallet shows the chain to the user and decides. No key, no seed, no signature here.
var CHAINS = {
testnet: { chainId: '0x116e', chainName: 'Igneum Testnet', nativeCurrency: { name: 'Igneum', symbol: 'IGN', decimals: 18 }, rpcUrls: ['https://rpc.testnet.igneum.network'], blockExplorerUrls: [] },
devnet: { chainId: '0x1170', chainName: 'Igneum Devnet 3', nativeCurrency: { name: 'Igneum', symbol: 'IGN', decimals: 18 }, rpcUrls: ['https://rpc.devnet.igneum.network'], blockExplorerUrls: ['https://igneum.network/explorer'] }
devnet: { chainId: '0x1170', chainName: 'Igneum 2.0 devnet', nativeCurrency: { name: 'Igneum', symbol: 'IGN', decimals: 18 }, rpcUrls: ['https://rpc.devnet.igneum.network'], blockExplorerUrls: ['https://igneum.network/explorer'] }
};
function status(name, text) { var el = document.querySelector('[data-status="' + name + '"]'); if (el) el.textContent = text; }
// Devnet 3's chain id moves at every class floor (4463 to 4464 at the class v5 floor, 8 October 2026), so the entry's id and
// the card's figure are read from the public RPC at load; the pinned 0x1170 is the answer when the RPC does not reply.
// the devnet's chain id is read from the public RPC at load, for the entry and the card's figure;
// the pinned 0x1170 is the answer when the RPC does not reply.
fetch('https://rpc.devnet.igneum.network', { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'eth_chainId', params: [] }) })
.then(function (r) { return r.json(); })
.then(function (d) {
var hex = d && typeof d.result === 'string' && /^0x[0-9a-f]+$/i.test(d.result) ? d.result.toLowerCase() : null; if (!hex) return;
CHAINS.devnet.chainId = hex;
var cell = document.getElementById('dev-chain'); if (cell) cell.textContent = parseInt(hex, 16) + ' (' + hex + ') on Devnet 3, read from the public RPC now; 4463 before its class v5 floor at DAA 68,400 on 8 October 2026';
var cell = document.getElementById('dev-chain'); if (cell) cell.textContent = parseInt(hex, 16) + ' (' + hex + ') on the Igneum 2.0 devnet, read from the public RPC now';
}).catch(function () {});
Array.prototype.forEach.call(document.querySelectorAll('[data-add]'), function (btn) {
btn.addEventListener('click', function () {

View file

@ -1,144 +1,12 @@
{
"_about": "Rows of the public bench table at /miners (site/build.mjs). One row per card, generator version and miner version: the best measured rate. Later jobs append rows. Fields: card, generator (v1 | v2), mh_s (best measured MH/s), mh_per_w (MH per watt, null when the power was not measured), miner (the miner or package version), date (YYYY-MM-DD), source (the docs/bench-log.md heading, or the job id), by ('measured by the team' | 'reported by the fleet'), note (short, optional), watts (board power at the rate, null when not read), v4_cost (what the class v4 shadow costs this card against the class v3 control: watts and rate, measured; 'not measured' when not), tuned (the card's tune state at the row: 'full Ember Tune: <point>' | 'clock lock <MHz>, cap <W>' | 'stock, bench only' | 'stock, mining'), driver_os (driver and OS where known). No machine names, no addresses, no owner names: the build scrubs the page and fails on any that survive. hive (the copy-in HiveOS flight-sheet values at the row's tune point: core MHz (a lock), mem MHz, pl W; each labelled measured with the date, or 'stock' where no tune point exists). group ('buy' | 'datacentre'); watt_basis ('chip' when the watts are the chip's, not the wall's); v4_short (the one-clause class v4 figure for the column).",
"_about": "Rows of the public bench table at /miners (site/build.mjs). One row per card on the current program: the best measured rate. Later jobs append rows. Fields: card, generator (v1 | v2), mh_s (best measured MH/s), mh_per_w (MH per watt, null when the power was not measured), miner (the miner or package version), date (YYYY-MM-DD), source (the docs/bench-log.md heading, or the job id), by ('measured by the team' | 'reported by the fleet'), note (short, optional), watts (board power at the rate, null when not read), v4_cost (what the class v4 shadow costs this card against the class v3 control: watts and rate, measured; 'not measured' when not), tuned (the card's tune state at the row: 'full Ember Tune: <point>' | 'clock lock <MHz>, cap <W>' | 'stock, bench only' | 'stock, mining'), driver_os (driver and OS where known). No machine names, no addresses, no owner names: the build scrubs the page and fails on any that survive. hive (the copy-in HiveOS flight-sheet values at the row's tune point: core MHz (a lock), mem MHz, pl W; each labelled measured with the date, or 'stock' where no tune point exists). group ('buy' | 'datacentre'); watt_basis ('chip' when the watts are the chip's, not the wall's); v4_short (the one-clause class v4 figure for the column).",
"rows": [
{
"card": "NVIDIA RTX 5090 (32 GB)",
"generator": "v1",
"mh_s": 228.95,
"mh_per_w": null,
"miner": "proto-cuda bench (prototype, not mining)",
"date": "2026-10-03",
"source": "bench log: 3 October 2026, RTX 5090, memory-hard dataset (pack igneum-genesis-mh)",
"by": "measured by the team",
"note": "genesis program, 104 loads per hash, 1 GiB dataset",
"watts": null,
"v4_cost": "not measured",
"driver_os": "",
"tuned": "stock, bench only",
"hive": {
"core_mhz": null,
"mem_mhz": null,
"pl_w": null,
"label": "stock (no measured tune point; the 5080 and 9070 XT passes and the class v4 efficiency pass land theirs when read)"
},
"group": "buy"
},
{
"card": "NVIDIA RTX 5090 (32 GB)",
"generator": "v1",
"mh_s": 185.3,
"mh_per_w": null,
"miner": "proto-cuda bench (prototype, not mining)",
"date": "2026-10-03",
"source": "bench log: 3 October 2026, RTX 5090 first run, dataset sweep and second program",
"by": "measured by the team",
"note": "hourly program, 128 loads per hash, 1 GiB dataset",
"watts": null,
"v4_cost": "not measured",
"driver_os": "",
"tuned": "stock, bench only",
"hive": {
"core_mhz": null,
"mem_mhz": null,
"pl_w": null,
"label": "stock (no measured tune point; the 5080 and 9070 XT passes and the class v4 efficiency pass land theirs when read)"
},
"group": "buy"
},
{
"card": "NVIDIA RTX 5090 (32 GB)",
"generator": "v2",
"mh_s": 124.2,
"mh_per_w": null,
"miner": "Igneum Miner 0.3.0 package, prebuilt NVRTC worker",
"date": "2026-10-04",
"source": "bench log: 4 October 2026, the gfx1036 worker fault and what the Mac could and could not reproduce",
"by": "measured by the team",
"note": "live devnet v4, 128 loads per hash, CPU re-check clean, 0 rejected",
"watts": null,
"v4_cost": "not measured",
"driver_os": "",
"tuned": "stock, mining",
"hive": {
"core_mhz": null,
"mem_mhz": null,
"pl_w": null,
"label": "stock (no measured tune point; the 5080 and 9070 XT passes and the class v4 efficiency pass land theirs when read)"
},
"group": "buy"
},
{
"card": "Apple M5 Max (40 GPU cores, Metal)",
"generator": "v1",
"mh_s": 45.2,
"mh_per_w": null,
"miner": "proto-metal bench (prototype, not mining)",
"date": "2026-10-03",
"source": "bench log: 3 October 2026, RTX 5090 first run (the Apple row of the same table)",
"by": "measured by the team",
"note": "genesis program, 1 GiB dataset",
"watts": null,
"v4_cost": "not measured",
"driver_os": "",
"tuned": "stock, bench only",
"hive": {
"core_mhz": null,
"mem_mhz": null,
"pl_w": null,
"label": "stock (no measured tune point; the 5080 and 9070 XT passes and the class v4 efficiency pass land theirs when read)"
},
"group": "buy"
},
{
"card": "Apple M5 Max (40 GPU cores, Metal)",
"generator": "v2",
"mh_s": 26.7,
"mh_per_w": null,
"miner": "igneum-miner devnet v4, Metal worker with prepare",
"date": "2026-10-04",
"source": "bench log: 4 October 2026, first hourly program swap on the live devnet: compile-ahead, no pause, two cards",
"by": "measured by the team",
"note": "live devnet v4, unbroken through the hour boundary",
"watts": null,
"v4_cost": "not measured",
"driver_os": "",
"tuned": "stock, mining",
"hive": {
"core_mhz": null,
"mem_mhz": null,
"pl_w": null,
"label": "stock (no measured tune point; the 5080 and 9070 XT passes and the class v4 efficiency pass land theirs when read)"
},
"group": "buy"
},
{
"card": "Apple silicon laptop (model not reported)",
"generator": "v2",
"mh_s": 24.3,
"mh_per_w": null,
"miner": "Igneum Miner 0.3.1 (DMG)",
"date": "2026-10-04",
"source": "bench log: 4 October 2026, first outside machine on the devnet: an Apple silicon laptop through the Igneum Miner app",
"by": "reported by the fleet",
"note": "21.0 MH/s average over 7 minutes, 24.3 MH/s at the moment of the report, 33 accepted blocks",
"watts": null,
"v4_cost": "not measured",
"driver_os": "",
"tuned": "stock, mining",
"hive": {
"core_mhz": null,
"mem_mhz": null,
"pl_w": null,
"label": "stock (no measured tune point; the 5080 and 9070 XT passes and the class v4 efficiency pass land theirs when read)"
},
"group": "buy"
},
{
"card": "NVIDIA RTX 5060 Ti (16 GB)",
"generator": "v2",
"mh_s": 30.9,
"mh_per_w": 0.269,
"miner": "Igneum Miner 0.3.19 package, prebuilt NVRTC worker (bench mode, class v4 program)",
"miner": "Igneum Miner package, prebuilt NVRTC worker (bench mode, class v4 program)",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, the first 16 GB card: an RTX 5060 Ti in a Thunderbolt enclosure (run b)",
"by": "measured by the team",
@ -161,9 +29,9 @@
"mh_s": 136.1,
"watts": 226.8,
"mh_per_w": 0.563,
"miner": "Igneum Miner 0.3.13 + Ember Tune kit 6 (mining, class v3 program)",
"miner": "Igneum Miner + Ember Tune kit 6 (mining, class v3 program)",
"date": "2026-10-06",
"source": "bench log: 6 October 2026, Ember run 6; Counter ASIC 3.0 status: item 8's 5090 rows and the class v4 efficiency pass (7 October 2026)",
"source": "bench log: 6 October 2026, Ember run 6; the chip-model measurement record: item 8's 5090 rows and the class v4 efficiency pass (7 October 2026)",
"by": "measured by the team",
"note": "one row for the card: best rate 136.1 MH/s at 350 W stock unlocked on the class v3 control (bench, 6 October 2026); best MH per wall watt 127.71 MH/s at 226.8 W at the full Ember Tune point, 1,854 MHz (Ember run 6, 6 October 2026); the class v4 efficiency pass (7 October 2026, 60 s steps, every fingerprint matched): unlocked 136.84 MH/s at 475.5 W (0.288), the 1,400 MHz lock 134.98 at 316.3 W (0.427), the knee 1,300 MHz, the best point 1,200 MHz 133.80 at 305.1 W (0.439); the fleet's standing 5090 reads 100.6 MH/s at 308 W beside its prover (reported by the fleet)",
"v4_cost": "class v4 at the 1,200 MHz knee: 133.80 MH/s at 305.1 W (0.439 MH/W); the premium over class v3 81.8 W at the best points and 145.3 W unlocked, measured 7 October 2026",
@ -188,7 +56,7 @@
"mh_per_w": 0.389,
"miner": "igneum-worker-cuda bench (installed worker), class v3 control",
"date": "2026-10-06",
"source": "Counter ASIC 3.0 status: item 8, the RTX 4070 rows (job run-ca3-pc1-4070-shadow-20261006)",
"source": "the chip-model measurement record: item 8, the RTX 4070 rows (job run-ca3-pc1-4070-shadow-20261006)",
"by": "measured by the team",
"note": "79.3 to 79.8 W at the tune point; 28.78 MH/s at 75.6 W (0.381) in Ember run 6 mining",
"v4_cost": "+30 W (79 to 109 W) for +0.4 percent of rate at 102,100 ops per hash, measured 6 October 2026",
@ -210,21 +78,21 @@
"mh_per_w": 0.127,
"miner": "igneum-worker-opencl bench (installed worker), class v3 control",
"date": "2026-10-08",
"source": "Counter ASIC 3.0 status: the RX 9070 XT's first measured grid on the AMD knob (job run-ca3-pc1-amd-grid-9070-20261008-b, 24 of 24 points, 8 October 2026) for the rate and the watts; the 9070 XT Ember tune row (run-ca3-pc1-ember-9070-20261007) for the app's own stock reading",
"source": "the chip-model measurement record: the RX 9070 XT's first measured grid on the AMD knob (job run-ca3-pc1-amd-grid-9070-20261008-b, 24 of 24 points, 8 October 2026) for the rate and the watts; the 9070 XT Ember tune row (run-ca3-pc1-ember-9070-20261007) for the app's own stock reading",
"by": "measured by the team",
"note": "the grid's stock point reads 3,292 MHz, 195.8 W, 0.097 MH per watt (the app's own stock reading of 7 October was 202 W); the clock offset alone reaches 2,924 MHz at 159.2 W and the power limit alone 184.4 W; the best point is both together. The knob ships in 0.3.25, so until that cut serves the figure reads \"with the 0.3.25 knob\". Against the 5090 at its class v4 1,200 MHz lock (133.8 MH/s at 305 W, 0.43 MH per watt) the 9070 XT at its best point sits 3.5x behind per watt; against the 5090 at its 1,300 MHz knee (134.6 at 223 W, 0.60) about a fifth",
"note": "the grid's stock point reads 3,292 MHz, 195.8 W, 0.097 MH per watt (the app's own stock reading of 7 October was 202 W); the clock offset alone reaches 2,924 MHz at 159.2 W and the power limit alone 184.4 W; the best point is both together. Against the 5090 at its class v4 1,200 MHz lock (133.8 MH/s at 305 W, 0.43 MH per watt) the 9070 XT at its best point sits 3.5x behind per watt; against the 5090 at its 1,300 MHz knee (134.6 at 223 W, 0.60) about a fifth",
"v4_cost": "+2 percent of rate (19.29 against 18.92 MH/s) at 102,100 ops per hash, watts owed, measured 6 October 2026",
"tuned": "core -500 MHz, power -30 percent, with the 0.3.25 knob: 2,921 MHz, 149.3 W at 18.96 MH/s, a 24 percent saving at the same rate (the rate flat at 18.93 to 18.98 MH/s on all 24 points, the knob moves watts only); measured 8 October 2026",
"tuned": "core -500 MHz, power -30 percent, with the AMD knob: 2,921 MHz, 149.3 W at 18.96 MH/s, a 24 percent saving at the same rate (the rate flat at 18.93 to 18.98 MH/s on all 24 points, the knob moves watts only); measured 8 October 2026",
"driver_os": "Adrenalin 26.9.2, Windows 11",
"hive": {
"core_mhz": null,
"mem_mhz": null,
"pl_w": null,
"label": "the AMD knob is the 0.3.25 app's (core -500 MHz, power -30 percent); no Hive flight-sheet values yet"
"label": "the AMD knob is the app’s (core -500 MHz, power -30 percent); no Hive flight-sheet values yet"
},
"group": "buy",
"mh_s_display": "19.0 stock (19.0 with the 0.3.25 knob)",
"watts_display": "149.3 with the 0.3.25 knob (195.8 stock)"
"mh_s_display": "19.0 stock (19.0 with the AMD knob)",
"watts_display": "149.3 with the AMD knob (195.8 stock)"
},
{
"card": "Apple M5 Max (40 GPU cores, Metal)",
@ -234,7 +102,7 @@
"mh_per_w": 1.29,
"miner": "igneum-miner Metal worker, class v3 program",
"date": "2026-10-06",
"source": "Counter ASIC 3.0 status: item 8, the Mac rows (IOReport GPU and DRAM watts)",
"source": "the chip-model measurement record: item 8, the Mac rows (IOReport GPU and DRAM watts)",
"by": "measured by the team",
"note": "GPU plus DRAM watts from IOReport, not wall power, so its MH per watt is not ranked against the cards' wall figures",
"v4_cost": "+16 W for 1.5 percent of rate at 102,100 ops per hash, measured 6 October 2026",
@ -259,7 +127,7 @@
"date": "2026-10-07",
"source": "bench log: 7 October 2026, the Intel Arc B580 (eGPU equals slot)",
"by": "measured by the team",
"note": "the same rate in the Thunderbolt enclosure and the slot; watts not read on this run. Re-read 8 October 2026: the installed 0.3.21 OpenCL worker on this card passes its own self-test with the devnet pack (96 of 96 vector lanes) and mined 54 CPU-re-checked blocks at 10.58 MH/s, so the row stands; a kit build from a branch without the Intel rotate-fold rewrite failed its self-test on this card the same morning, a build fault and not an Arc result",
"note": "the same rate in the Thunderbolt enclosure and the slot; watts not read on this run. Re-read 8 October 2026: the installed OpenCL worker on this card passes its own self-test with the devnet pack (96 of 96 vector lanes) and mined 54 CPU-re-checked blocks at 10.58 MH/s, so the row stands; a kit build from a branch without the Intel rotate-fold rewrite failed its self-test on this card the same morning, a build fault and not an Arc result",
"v4_cost": "0.1 percent of rate, measured 7 October 2026",
"tuned": "stock, bench only",
"driver_os": "Intel driver, Windows 11",
@ -305,7 +173,7 @@
"date": "2026-10-08",
"source": "bench log: 7 to 8 October 2026, the class v4 efficiency passes: the core clock lock on the RTX 5090 and the RTX 5080",
"by": "measured by the team",
"note": "the knee sits between 1,000 and 900 MHz (the rate within 0.3 percent of unlocked down to 1,000 MHz, 5.2 percent off at 900 on class v4); the draw floors from 1,500 MHz down. The rented fleet's 5080 read 71.16 MH/s at 143.4 W stock (hive package 0.3.20, Ubuntu 24.04, 7 October 2026), 110 W under this card's stock draw: the method differs per row (nvidia-smi on Linux, the runner's card switch on Windows) and neither is taken as the card's figure until the fleet re-measures",
"note": "the knee sits between 1,000 and 900 MHz (the rate within 0.3 percent of unlocked down to 1,000 MHz, 5.2 percent off at 900 on class v4); the draw floors from 1,500 MHz down. The rented fleet's 5080 read 71.16 MH/s at 143.4 W stock (the hive package, Ubuntu 24.04, 7 October 2026), 110 W under this card's stock draw: the method differs per row (nvidia-smi on Linux, the runner's card switch on Windows) and neither is taken as the card's figure until the fleet re-measures",
"v4_cost": "83.4 W unlocked and 41 W at the best points for 0.2 percent of rate (class v4 71.41 MH/s at 253.1 W against class v3 71.28 at 169.7 W unlocked; measured 8 October 2026)",
"tuned": "core lock 1,100 MHz (the efficiency pass's best point: 71.20 MH/s at 146.6 W, 0.486 MH/W, 106.5 W recovered for 0.29 percent of rate), memory 14,801 MHz, the driver's power limit untouched",
"driver_os": "NVIDIA driver 617.14, Windows 11",
@ -326,9 +194,9 @@
"mh_s": 38.98,
"watts": 178.3,
"mh_per_w": 0.219,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; hive package 0.3.20, Ubuntu 24.04)",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; the hive package, Ubuntu 24.04)",
"by": "measured by the fleet",
"note": ". Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"v4_cost": "not measured (class v4 program only)",
@ -350,11 +218,11 @@
"mh_s": 33.66,
"watts": null,
"mh_per_w": null,
"miner": "hive package 0.3.20 igneum-miner, class v4 program",
"miner": "the hive package igneum-miner, class v4 program",
"date": "2026-10-07",
"source": "the fleet's 0.3.21 wipe canary (status line, 7 October 2026)",
"source": "a fleet canary (status line, 7 October 2026)",
"by": "reported by the fleet",
"note": "the 0.3.21 wipe canary's status line, 17:07Z, beside its node; watts not read",
"note": "a fleet canary’s status line, 17:07Z, beside its node; watts not read",
"v4_cost": "not measured (class v4 program only)",
"tuned": "stock, mining",
"driver_os": "NVIDIA driver, Ubuntu 24.04",
@ -372,7 +240,7 @@
"mh_s": 43.72,
"watts": null,
"mh_per_w": null,
"miner": "hive package 0.3.20 igneum-miner, class v4 program",
"miner": "the hive package igneum-miner, class v4 program",
"date": "2026-10-07",
"source": "the fleet's standing voter (status line, 7 October 2026) and the sweep's hands row",
"by": "reported by the fleet",
@ -394,9 +262,9 @@
"mh_s": 58.95,
"watts": 267.3,
"mh_per_w": 0.221,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; hive package 0.3.20, Ubuntu 24.04)",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; the hive package, Ubuntu 24.04)",
"by": "measured by the fleet",
"note": "283.0 W maximum. Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"v4_cost": "not measured (class v4 program only)",
@ -418,7 +286,7 @@
"mh_s": 50.04,
"watts": null,
"mh_per_w": null,
"miner": "hive package 0.3.20 igneum-miner, class v4 program",
"miner": "the hive package igneum-miner, class v4 program",
"date": "2026-10-07",
"source": "the fleet's standing voters (status lines, 7 October 2026)",
"by": "reported by the fleet",
@ -440,9 +308,9 @@
"mh_s": 61.95,
"watts": 249.5,
"mh_per_w": 0.248,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; hive package 0.3.20, Ubuntu 24.04)",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; the hive package, Ubuntu 24.04)",
"by": "measured by the fleet",
"note": ". Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"v4_cost": "not measured (class v4 program only)",
@ -464,7 +332,7 @@
"mh_s": 52.25,
"watts": 183.1,
"mh_per_w": 0.285,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, the RTX 4090 hands row",
"by": "measured by the fleet",
@ -486,11 +354,11 @@
"mh_s": 26.89,
"watts": 111.6,
"mh_per_w": 0.241,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; hive package 0.3.20, Ubuntu 24.04)",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; the hive package, Ubuntu 24.04)",
"by": "measured by the fleet",
"note": "114.5 W maximum; the Devnet 3 boxes read 23.7 to 25.7 MH/s beside their nodes. Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"note": "114.5 W maximum; the devnet boxes read 23.7 to 25.7 MH/s beside their nodes. Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"v4_cost": "not measured (class v4 program only)",
"tuned": "stock, bench only (rented, not tuned)",
"driver_os": "NVIDIA driver 580.126.09, Ubuntu 24.04",
@ -510,9 +378,9 @@
"mh_s": 33.1,
"watts": 129.5,
"mh_per_w": 0.256,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; hive package 0.3.20, Ubuntu 24.04)",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; the hive package, Ubuntu 24.04)",
"by": "measured by the fleet",
"note": ". Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"v4_cost": "not measured (class v4 program only)",
@ -534,9 +402,9 @@
"mh_s": 20.1,
"watts": 77.5,
"mh_per_w": 0.259,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; hive package 0.3.20, Ubuntu 24.04)",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; the hive package, Ubuntu 24.04)",
"by": "measured by the fleet",
"note": ". Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"v4_cost": "not measured (class v4 program only)",
@ -558,9 +426,9 @@
"mh_s": 31.26,
"watts": 107.3,
"mh_per_w": 0.291,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; hive package 0.3.20, Ubuntu 24.04)",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; the hive package, Ubuntu 24.04)",
"by": "measured by the fleet",
"note": ". Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"v4_cost": "not measured (class v4 program only)",
@ -582,9 +450,9 @@
"mh_s": 31.27,
"watts": 75.4,
"mh_per_w": 0.415,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; hive package 0.3.20, Ubuntu 24.04)",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; the hive package, Ubuntu 24.04)",
"by": "measured by the fleet",
"note": ". Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"v4_cost": "not measured (class v4 program only)",
@ -606,9 +474,9 @@
"mh_s": 52.01,
"watts": 102.8,
"mh_per_w": 0.506,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; hive package 0.3.20, Ubuntu 24.04)",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; the hive package, Ubuntu 24.04)",
"by": "measured by the fleet",
"note": ". Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"v4_cost": "not measured (class v4 program only)",
@ -630,9 +498,9 @@
"mh_s": 78.43,
"watts": 145.6,
"mh_per_w": 0.539,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; hive package 0.3.20, Ubuntu 24.04)",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; the hive package, Ubuntu 24.04)",
"by": "measured by the fleet",
"note": ". Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"v4_cost": "not measured (class v4 program only)",
@ -654,7 +522,7 @@
"mh_s": 47.64,
"watts": null,
"mh_per_w": null,
"miner": "hive package 0.3.20 igneum-miner, class v4 program",
"miner": "the hive package igneum-miner, class v4 program",
"date": "2026-10-07",
"source": "the fleet's standing voter (status line, 7 October 2026)",
"by": "reported by the fleet",
@ -676,9 +544,9 @@
"mh_s": 56.36,
"watts": 240.7,
"mh_per_w": 0.234,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; hive package 0.3.20, Ubuntu 24.04)",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; the hive package, Ubuntu 24.04)",
"by": "measured by the fleet",
"note": ". Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"v4_cost": "not measured (class v4 program only)",
@ -700,9 +568,9 @@
"mh_s": 154.97,
"watts": 299.6,
"mh_per_w": 0.517,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; hive package 0.3.20, Ubuntu 24.04)",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; the hive package, Ubuntu 24.04)",
"by": "measured by the fleet",
"note": ". Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"v4_cost": "not measured (class v4 program only)",
@ -724,9 +592,9 @@
"mh_s": 138.39,
"watts": 266.3,
"mh_per_w": 0.52,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; hive package 0.3.20, Ubuntu 24.04)",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; the hive package, Ubuntu 24.04)",
"by": "measured by the fleet",
"note": ". Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"v4_cost": "not measured (class v4 program only)",
@ -748,9 +616,9 @@
"mh_s": 313.04,
"watts": 432.9,
"mh_per_w": 0.723,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; hive package 0.3.20, Ubuntu 24.04)",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; the hive package, Ubuntu 24.04)",
"by": "measured by the fleet",
"note": ". Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"v4_cost": "not measured (class v4 program only)",
@ -772,9 +640,9 @@
"mh_s": 416.35,
"watts": 855.6,
"mh_per_w": 0.487,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; hive package 0.3.20, Ubuntu 24.04)",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; the hive package, Ubuntu 24.04)",
"by": "measured by the fleet",
"note": ". Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"v4_cost": "not measured (class v4 program only)",
@ -796,9 +664,9 @@
"mh_s": 130.49,
"watts": 288.7,
"mh_per_w": 0.452,
"miner": "hive package 0.3.20 igneum-worker-cuda, class v4 program",
"miner": "the hive package igneum-worker-cuda, class v4 program",
"date": "2026-10-07",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; hive package 0.3.20, Ubuntu 24.04)",
"source": "bench log: 7 October 2026, every rentable card on the hash (the fleet's sweep on rented cards; the hive package, Ubuntu 24.04)",
"by": "measured by the fleet",
"note": ". Watts are class v3 (read 8 October 2026, 11:4x UK): the fleet's bench pack was the class v3 program (program_class v3, generator 3, load_class mx8-erad810f22d), so this row's watts and MH per watt are class v3 figures; the rate holds under class v4 (memory-bound: a 5070 Ti measured 78.7 MH/s at 141 W on class v3 and 78.8 at 224 W on class v4). The class v4 watts rerun on the same models lands with its date, the v3 watts kept beside as the shadow premium per card",
"v4_cost": "not measured (class v4 program only)",

View file

@ -86,7 +86,7 @@ pre b{color:var(--molten-text);font-weight:500}
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" data-active aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -116,12 +116,10 @@ pre b{color:var(--molten-text);font-weight:500}
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -139,7 +137,7 @@ pre b{color:var(--molten-text);font-weight:500}
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -159,12 +157,10 @@ pre b{color:var(--molten-text);font-weight:500}
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -178,7 +174,7 @@ pre b{color:var(--molten-text);font-weight:500}
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -262,7 +258,7 @@ pre b{color:var(--molten-text);font-weight:500}
</div>
<figure class="app-window reveal" style="margin:0">
<div class="window-top"><i></i><i></i><i></i><span><span data-product="app">Igneum Miner</span> / live devnet</span><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><rect x="5" y="10" width="14" height="11" rx="2"/><path d="M8 10V7a4 4 0 0 1 8 0v3m-4 4v3"/></svg></div>
<img src="/img/miner-dashboard.webp" width="2880" height="1800" class="shot" alt="The Mine page of Igneum Miner 0.3.14 on a three-card rig: the Stop mining button, 169 MH/s at 532 W, 84 blocks this run, and one row per card: an RTX 5090 at 122 MH/s and 222 W, an RTX 4070 at 28.7 MH/s and 76 W, an RX 9070 XT at 18.9 MH/s, each with its tune line, Tune button and switch" fetchpriority="high" decoding="async">
<img src="/img/miner-dashboard.webp" width="2880" height="1800" class="shot" alt="The Mine page of Igneum Miner on a three-card rig: the Stop mining button, 169 MH/s at 532 W, 84 blocks this run, and one row per card: an RTX 5090 at 122 MH/s and 222 W, an RTX 4070 at 28.7 MH/s and 76 W, an RX 9070 XT at 18.9 MH/s, each with its tune line, Tune button and switch" fetchpriority="high" decoding="async">
<figcaption>The shipped app, mining on the three-card Windows rig: an RTX 5090, an RTX 4070 and an RX 9070 XT, live devnet, 6 October 2026.</figcaption>
</figure>
</div>
@ -298,7 +294,7 @@ pre b{color:var(--molten-text);font-weight:500}
<div class="download-platform"><span class="osmark" data-os="hive" title="HiveOS"><svg viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linejoin="round" stroke-linecap="round"><path d="M12 2.6 20.2 7.3v9.4L12 21.4 3.8 16.7V7.3z"/><path d="M12 7.4 16 9.7v4.6L12 16.6 8 14.3V9.7z"/><path d="M12 7.4V2.6M16 9.7l4.2-2.4M16 14.3l4.2 2.4M12 16.6v4.8M8 14.3l-4.2 2.4M8 9.7 3.8 7.3"/></svg></span><div><h3>Ember for Linux and HiveOS</h3><p>a tarball for rigs and Hive flight sheets</p></div></div>
<p class="download-note">For the rig people. One tarball, the miner and the node inside, the same signed manifest as the desktop apps.</p>
<a data-dl="miner-hive" href="https://dl.igneum.network/public/igneum-miner-hive.tar.gz" class="btn primary"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3v12m-5-5 5 5 5-5M5 16v4h14v-4"/></svg>Download the tarball <span data-dl-meta="miner-hive" style="font-weight:400;opacity:.85">v0.3.22 · 28.8 MB</span></a>
<p class="fair" id="versions">Current versions: Windows <span data-rm="versions.miner-windows.version">0.3.20</span>, macOS <span data-rm="versions.miner-mac.version">0.3.20</span>, HiveOS <span data-rm="versions.miner-hive.version">0.3.22</span>, the wallet <span data-rm="versions.wallet-mac.version">0.1.5</span>; the node on Devnet 3 <span data-rm="source.node.version_string">igneumd/2.1.0-f8da7515</span>, <span data-rm="read_at_short">read 8 October 2026, 15:50 UK</span>. The machine-readable list, with every file’s SHA-256, is <a href="/release.json">/release.json</a>.</p>
<p class="fair" id="versions">Current build: Windows <span data-rm="versions.miner-windows.version">0.3.20</span>, macOS <span data-rm="versions.miner-mac.version">0.3.20</span>, HiveOS <span data-rm="versions.miner-hive.version">0.3.22</span>, the wallet <span data-rm="versions.wallet-mac.version">0.1.5</span>, <span data-rm="read_at_short">read 8 October 2026, 15:50 UK</span>. The machine-readable list, with every file’s SHA-256, is <a href="/release.json">/release.json</a>.</p>
<div class="hive-sheet" id="hive"><b>HiveOS Flight Sheet.</b> Miner: <b>Custom</b>. Installation URL: <code data-dl-url="miner-hive">https://dl.igneum.network/dl/public/igneum-hive-0.3.22.tar.gz</code>. Miner name <code>igneum</code>, wallet and worker <code>0x&lt;your 40-hex payout address&gt;.%WORKER_NAME%</code>. Hive itself is untested on our side: tell us what breaks.</div>
<p class="sha">sha256 <span data-dl-sha="miner-hive">8ad6dcef9edc57dcd33e8d5a97cbef5cdda0e384a6e56d3f62f8903029c4c764</span></p>
</div>
@ -312,9 +308,9 @@ pre b{color:var(--molten-text);font-weight:500}
<p class="yourcard" data-yourcard style="margin-top:16px">Your card: pending</p>
</div>
</div>
<div style="margin-top:25px"><div class="notice"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="9"/><path d="M12 11v6m0-10v1"/></svg><div><strong>Devnet, not an earnings opportunity.</strong><p class="notice" data-devnet-notice style="margin:0"><b>Devnet.</b> Coins have no value and the chain may be reset.</p><p class="notice" data-testnet-notice style="margin:6px 0 0">Public testnet: not yet open; the devnet build is here for people who want to look. The public testnet is armed: three seed nodes and the public RPC are up, and it opens on the go word.</p><p class="notice" style="margin:6px 0 0">The protocol carries no fee. The one payment to the project is the Ember software’s optional 1% dev fee, like other GPU miners, off with one flag: <a href="#fee">the fee, in full view</a>.</p></div></div>
<div style="margin-top:25px"><div class="notice"><svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="9"/><path d="M12 11v6m0-10v1"/></svg><div><strong>Devnet, not an earnings opportunity.</strong><p class="notice" data-devnet-notice style="margin:0"><b>Devnet.</b> Coins have no value and the chain may be reset.</p><p class="notice" style="margin:6px 0 0">The protocol carries no fee. The one payment to the project is the Ember software’s optional 1% dev fee, like other GPU miners, off with one flag: <a href="#fee">the fee, in full view</a>.</p></div></div>
</div>
<p class="source-note">Testnet coin for testing: <a href="/faucet">the faucet</a> sends 10 IGN per address per day. Any 4 GB card at launch. The dataset starts at 2 GB and grows on a schedule fixed at the testnet genesis (2 GB, doubling at years 4, 12 and 28), so a 4 GB card mines about four years and an 8 GB card about twelve, approximate.</p>
<p class="source-note">Devnet coin for testing: <a href="/faucet">the faucet</a> sends 10 IGN per address per day. Any 4 GB card at launch. The dataset starts at 2 GB and grows on a schedule fixed at genesis (2 GB, doubling at years 4, 12 and 28), so a 4 GB card mines about four years and an 8 GB card about twelve, approximate.</p>
</div>
</section>
@ -393,7 +389,7 @@ pre b{color:var(--molten-text);font-weight:500}
<tr><td>Mining to a pool</td><td>nothing to turn off: the pool issues the templates, so the 1-in-100 mechanism does not exist, and the pool's own fee is the only one</td></tr>
</tbody>
</table></div>
<p class="note">Measured on a test network, 4 Oct 2026: 9 fee blocks in the 785 blocks of two fee-paying miners (1.146%); the control miner at <span class="mono">--dev-fee 0</span> paid none; the miners’ counters and both nodes agree. <a href="/bench">The log</a>.</p>
<p class="note">Measured on a private test network, 4 Oct 2026: 9 fee blocks in the 785 blocks of two fee-paying miners (1.146%); the control miner at <span class="mono">--dev-fee 0</span> paid none; the miners’ counters and both nodes agree. Details are in the measurement record in the repository (docs/bench-log.md).</p>
</div>
<div class="card">
<div class="eyebrow">Settings, as the app shows it</div>
@ -416,18 +412,18 @@ pre b{color:var(--molten-text);font-weight:500}
<div class="shots3">
<figure class="frame">
<div class="bar"><i></i><i></i><i></i><b>Overview</b></div>
<img src="/img/app-overview-dark.webp" width="2880" height="1800" class="shot" alt="The Overview page of 0.3.22 on a mixed rig: 156 MH/s from 3 of 4 cards, 489 W at 0.32 MH/W, £3.09 a day of electricity, 6,784 blocks this run and 8,054 lifetime, the Stop mining button, the ladder strip, the chain drawn live with this rig's blocks ringed and the key under it, the node synced with 4 peers, the activity log" loading="lazy" decoding="async">
<figcaption>0.3.22, rendered from the app&rsquo;s recorded states, 7 October 2026: a mixed rig of an RTX 5090, an RX 9070 XT, an Arc B580 and an integrated UHD 770. The 5090 and the 9070 XT carry measured rates; the Arc&rsquo;s 15.2 MH/s is the plan&rsquo;s expectation until the measurement on the team's three-card Windows rig lands.</figcaption>
<img src="/img/app-overview-dark.webp" width="2880" height="1800" class="shot" alt="The Overview page of the current build on a mixed rig: 156 MH/s from 3 of 4 cards, 489 W at 0.32 MH/W, £3.09 a day of electricity, 6,784 blocks this run and 8,054 lifetime, the Stop mining button, the ladder strip, the chain drawn live with this rig's blocks ringed and the key under it, the node synced with 4 peers, the activity log" loading="lazy" decoding="async">
<figcaption>The current build, rendered from the app&rsquo;s recorded states, 7 October 2026: a mixed rig of an RTX 5090, an RX 9070 XT, an Arc B580 and an integrated UHD 770. The 5090 and the 9070 XT carry measured rates; the Arc&rsquo;s 15.2 MH/s is the plan&rsquo;s expectation until the measurement on the team's three-card Windows rig lands.</figcaption>
</figure>
<figure class="frame">
<div class="bar"><i></i><i></i><i></i><b>Cards</b></div>
<img src="/img/app-cards-dark.webp" width="2880" height="1800" class="shot" alt="The Cards page of 0.3.22: Ember Tune with the Efficiency, Balanced and Maximum goals; one row per card with its vendor's mark, its series line, its rate, IGN a day, watts, hashes per watt, cost a day and temperature: an RTX 5090 at 122 MH/s and 291 W, an RX 9070 XT at 18.9 MH/s and 198 W, an Arc B580 at 15.2 MH/s, an integrated UHD 770 off" loading="lazy" decoding="async">
<figcaption>The Cards page of 0.3.22, the same rig: each row with its vendor&rsquo;s mark.</figcaption>
<img src="/img/app-cards-dark.webp" width="2880" height="1800" class="shot" alt="The Cards page of the current build: Ember Tune with the Efficiency, Balanced and Maximum goals; one row per card with its vendor's mark, its series line, its rate, IGN a day, watts, hashes per watt, cost a day and temperature: an RTX 5090 at 122 MH/s and 291 W, an RX 9070 XT at 18.9 MH/s and 198 W, an Arc B580 at 15.2 MH/s, an integrated UHD 770 off" loading="lazy" decoding="async">
<figcaption>The Cards page of the current build, the same rig: each row with its vendor&rsquo;s mark.</figcaption>
</figure>
<figure class="frame">
<div class="bar"><i></i><i></i><i></i><b>Overview · Mac</b></div>
<img src="/img/app-overview-mac-dark.webp" width="2880" height="1800" class="shot" alt="The Overview page of 0.3.22 on an Apple M5 Max: 17.0 MH/s, 6,784 blocks this run, the ladder strip with signing under way, the chain drawn live with this Mac's blocks ringed, the node synced with 4 peers" loading="lazy" decoding="async">
<figcaption>0.3.22, rendered from the recorded state of the team&rsquo;s Apple M5 Max, 7 October 2026.</figcaption>
<img src="/img/app-overview-mac-dark.webp" width="2880" height="1800" class="shot" alt="The Overview page of the current build on an Apple M5 Max: 17.0 MH/s, 6,784 blocks this run, the ladder strip with signing under way, the chain drawn live with this Mac's blocks ringed, the node synced with 4 peers" loading="lazy" decoding="async">
<figcaption>The current build, rendered from the recorded state of the team&rsquo;s Apple M5 Max, 7 October 2026.</figcaption>
</figure>
</div>
</div>
@ -441,10 +437,10 @@ pre b{color:var(--molten-text);font-weight:500}
<div class="faq">
<details><summary>Does this website use my GPU to mine?</summary><p>No. The pictures on the home page are drawn, not mined. Mining happens only in the app you install, and only when you press Start.</p></details>
<details><summary>Does my card mine and prove?</summary><p>Every card mines. Proving the full shard needs a 24 GB NVIDIA card; a 32 GB card does both at once. Apple silicon proves on the CPU, slowly. The Prove page of the app says in one sentence what your card can do.</p></details>
<details><summary>Is the devnet paying real money?</summary><p>No. Devnet coins have no value and the chain may reset. The app’s pounds row reads 0.00 on devnet and says why. The public testnet opens when the go checklist closes; mainnet comes after the testnet passes its gate.</p></details>
<details><summary>Is the devnet paying real money?</summary><p>No. Devnet coins have no value and the chain may reset. The app’s pounds row reads 0.00 on devnet and says why. The Igneum 2.0 devnet is the network today. Mainnet has not started.</p></details>
<details id="fee-faq"><summary>Is there a fee?</summary><p>Not in the protocol: no dev fund, no fee to any team. The app takes an optional 1% software fee, the norm for GPU miners, and one flag turns it off. <a href="#fee">The fee, in full view.</a></p></details>
<details><summary>Can I run it on a rig or in a pool?</summary><p>The Linux and HiveOS tarball is above, with the flight sheet. Pools are part of the public testnet; until then every machine mines solo on its own keys, and a card runs several.</p></details>
<details><summary>Where do the numbers on this page come from?</summary><p>Every rate has a row in <a href="/miners">the bench table</a> and an entry in <a href="/bench">the engineering log</a> with the command and the hardware. Nothing here is estimated earnings.</p></details>
<details><summary>Can I run it on a rig or in a pool?</summary><p>The Linux and HiveOS tarball is above, with the flight sheet. Today every machine mines solo on its own keys, and a card runs several.</p></details>
<details><summary>Where do the numbers on this page come from?</summary><p>Every rate has a row in <a href="/miners">the bench table</a> and an entry in the measurement record in the repository (docs/bench-log.md) with the command and the hardware. Nothing here is estimated earnings.</p></details>
</div>
</div>
</section>
@ -454,9 +450,9 @@ pre b{color:var(--molten-text);font-weight:500}
<div class="container">
<div>
<h2>Every number here has a row.</h2>
<p>The engineering log holds the commands and the hardware behind each one. The bench table compares cards, not miners, because there is no other Igneum miner yet.</p>
<p>The measurement record in the repository (docs/bench-log.md) holds the commands and the hardware behind each one. The bench table compares cards, not miners, because there is no other Igneum miner yet.</p>
</div>
<div class="cta"><a href="/bench" class="btn dark">Engineering log</a><a href="/miners" class="btn dark">Bench table</a></div>
<div class="cta"><a href="/miners" class="btn dark">Bench table</a></div>
</div>
</div>
@ -465,6 +461,7 @@ pre b{color:var(--molten-text);font-weight:500}
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -490,7 +487,6 @@ pre b{color:var(--molten-text);font-weight:500}
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -502,7 +498,6 @@ pre b{color:var(--molten-text);font-weight:500}
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -528,7 +523,7 @@ pre b{color:var(--molten-text);font-weight:500}
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

File diff suppressed because one or more lines are too long

View file

@ -22,52 +22,51 @@ 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' },
explorer: { kicker: 'Devnet explorer', title: 'The devnet, block by block.', sub: 'The DAG, every transaction, every proof, the finality lock.', route: 'igneum.network/explorer' },
swap: { kicker: 'Devnet swap', title: 'Swap test tokens on the devnet.', 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' },
faucet: { kicker: 'Devnet 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' },
oracle: { kicker: 'State oracle', title: 'Devnet 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
// The routes: path -> share title, share description, card. A generated page (miners, claims, provenance) 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' },
'/': { title: 'Igneum, the GPU-mined layer 1', desc: 'A GPU-secured network for Ethereum-compatible applications and verifiable computation.', 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' },
'/explorer': { title: 'Igneum devnet explorer', desc: 'Every block, transaction, account and proof on the devnet, 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' },
'/address': { title: 'Igneum address', desc: 'One devnet address: balance, nonce, code, its transactions and the blocks it mined.', card: 'explorer' },
'/tx': { title: 'Igneum transaction', desc: 'One devnet transaction: status, value, fees, the block that executed it, its proof state and finality.', card: 'explorer' },
'/proving': { title: 'Proving on the Igneum devnet', 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 the devnet', desc: 'Swap wrapped IGN and two test tokens with proven execution. 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' },
'/faucet': { title: 'Igneum devnet faucet', desc: 'Devnet 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' },
'/light': { title: 'Igneum light wallet', desc: 'A devnet 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 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 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' },
'/miners': { title: 'Igneum GPU bench table', desc: 'Measured hash rates per card, MH per watt where measured, and the record behind each number.', card: 'home' },
'/scenes': { title: 'Igneum scenes', desc: 'Three animated views of the live feed.', card: 'live' },
'/404': { title: 'Igneum', desc: 'Nothing is mined here.', card: 'home' },
};

View file

@ -4,30 +4,30 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Igneum state oracle on Sepolia</title>
<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.">
<meta name="description" content="A Sepolia contract that stores devnet finality certificates and proven state roots so other contracts read a devnet balance. The devnet, 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 holds Devnet 3 finality certificates and proven state roots, so contracts read a balance.">
<meta property="og:description" content="A Sepolia contract holds devnet 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/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="Devnet 3 balances, read from Sepolia. igneum.network/oracle">
<meta property="og:image:alt" content="Devnet 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 property="og:image:alt" content="Devnet 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 holds Devnet 3 finality certificates and proven state roots, so contracts read a balance.">
<meta name="twitter:description" content="A Sepolia contract holds devnet 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">
<meta name="twitter:image:alt" content="Devnet 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">
@ -97,7 +97,7 @@
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" data-active aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -127,12 +127,10 @@
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle" aria-current="page"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle" aria-current="page"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -150,7 +148,7 @@
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -170,12 +168,10 @@
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle" aria-current="page"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle" aria-current="page"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -189,7 +185,7 @@
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -248,26 +244,26 @@
<main id="main" class="wrap">
<div class="head">
<div class="breadcrumb"><a href="/">Igneum</a><span>/</span><span>State oracle on Sepolia</span></div>
<div class="eyebrow"><span class="line"></span>Reference app 3 · Devnet 3, no value</div>
<h1>Devnet 3 balances, read from Sepolia<span class="accent">.</span></h1>
<div class="eyebrow"><span class="line"></span>Reference app 3 · the devnet, no value</div>
<h1>Devnet balances, read from Sepolia<span class="accent">.</span></h1>
</div>
<p class="note">A contract on Ethereum Sepolia stores Igneum Devnet 3 finality certificates that anyone submits, checked by a shared certificate verifier, and state roots bound to those checkpoints through the header chain, the coinbase and the segment record. Other contracts then read a proven Devnet 3 balance or storage slot with an ordinary Merkle Patricia proof. No relayer is trusted: a wrong certificate or a wrong proof reverts.</p>
<p class="note">A contract on Ethereum Sepolia stores Igneum 2.0 devnet finality certificates that anyone submits, checked by a shared certificate verifier, and state roots bound to those checkpoints through the header chain, the coinbase and the segment record. Other contracts then read a proven devnet balance or storage slot with an ordinary Merkle Patricia proof. No relayer is trusted: a wrong certificate or a wrong proof reverts.</p>
<div class="why">
<p><b>Why this only works on a proven chain.</b> Another chain can only use Igneum state if a contract can check it without running an Igneum node: a weighted certificate over a checkpoint and a state root proven under it are small enough to verify in a few hundred thousand gas. A chain whose state is only "what most nodes say" has nothing a contract can check.</p>
<p>Source: <code>tools/reference-apps/oracle/contracts/</code> (IgneumStateOracle.sol and its libraries), <code>tools/reference-apps/oracle/demo.mjs</code> (the demo that reads a Devnet 3 balance from Sepolia), <code>tools/reference-apps/oracle/test.mjs</code> (the negative cases through eth_call). The shared certificate verifier is the DEX lane's <code>contracts/bridge/src/IgneumCertificateVerifier.sol</code>.</p>
<p>Source: <code>tools/reference-apps/oracle/contracts/</code> (IgneumStateOracle.sol and its libraries), <code>tools/reference-apps/oracle/demo.mjs</code> (the demo that reads a devnet balance from Sepolia), <code>tools/reference-apps/oracle/test.mjs</code> (the negative cases through eth_call). The shared certificate verifier is the DEX lane's <code>contracts/bridge/src/IgneumCertificateVerifier.sol</code>.</p>
</div>
<section class="card" aria-labelledby="deployed">
<h2 id="deployed">On Sepolia</h2>
<div class="kv" data-oracle-kv>
<div class="k">Oracle</div><div class="mono" data-oracle-address>0x3ad71d4660d8a8d2f92248b9c286392dd76a3ab6 <small>IgneumStateOracle, deployed 8 October 2026 on the shared verifier (tx 0x16312cf8…4e2a, block 11870855); its trust() names the two unchecked items below; accepts statements with Devnet 3's chain id before and after the class v5 floor (4463, 4464). The earlier oracle 0xefe9879d…a1b2 (stand-in verifier at first) stays as deployed.</small></div>
<div class="k">Oracle</div><div class="mono" data-oracle-address>0x3ad71d4660d8a8d2f92248b9c286392dd76a3ab6 <small>IgneumStateOracle, deployed 8 October 2026 on the shared verifier (tx 0x16312cf8…4e2a, block 11870855); its trust() names the two unchecked items below; accepts statements with chain id 4463 or 4464. The earlier oracle 0xefe9879d…a1b2 (stand-in verifier at first) stays as deployed.</small></div>
<div class="k">Verifier</div><div class="mono" data-verifier-address>0xAf74f3F512081291D663Bb1d6b6d37E99e37D744 <small>the shared IgneumCertificateVerifier (the DEX lane's, a real BLS12-381 check on chain through the EIP-2537 precompiles, voter table installed at checkpoint 2127), set by setVerifier on 8 October 2026 (tx 0xd679bb65…db8e); the stand-in 0xa197ef31…a6f6 served until then</small></div>
<div class="k">Chain</div><div>Sepolia, chain id 11155111; Devnet 3 (igneum-devnet-3), no value</div>
<div class="k">Proven roots</div><div class="mono">Certificate 2232 (0xf056c26e…, 29 voters, signed weight 4,988 of 7,164) recorded on the shared verifier with a real BLS check, tx 0x1794b785…1e8a, 792,677 gas. Devnet 3 chain block 28439, post_root 0x6e6d2fc8… stored on this oracle with a 6-header path, tx 0xcdb24dbc…ee5fc, 1,624,984 gas; provenBalance read 721.451608 IGN for 0xcaed79d8…c087 on Sepolia, equal to the Devnet 3 node's eth_getProof.</div>
<div class="k">Chain</div><div>Sepolia, chain id 11155111; the Igneum 2.0 devnet (igneum-devnet-4), no value</div>
<div class="k">Proven roots</div><div class="mono">Certificate 2232 (0xf056c26e…, 29 voters, signed weight 4,988 of 7,164) recorded on the shared verifier with a real BLS check, tx 0x1794b785…1e8a, 792,677 gas. Devnet chain block 28439, post_root 0x6e6d2fc8… stored on this oracle with a 6-header path, tx 0xcdb24dbc…ee5fc, 1,624,984 gas; provenBalance read 721.451608 IGN for 0xcaed79d8…c087 on Sepolia, equal to the devnet node's eth_getProof.</div>
</div>
</div>
<p class="note">How to read a balance from another contract: <code>IIgneumStateOracle(oracle).provenBalance(number, account, accountProof)</code>, where <code>number</code> is a Devnet 3 chain block whose state root the oracle holds and <code>accountProof</code> is the <code>eth_getProof</code> account proof at that block. A storage slot: <code>provenStorage(number, account, slot, accountProof, storageProof)</code>. Both revert on any mismatch.</p>
<p class="note">How to read a balance from another contract: <code>IIgneumStateOracle(oracle).provenBalance(number, account, accountProof)</code>, where <code>number</code> is a devnet chain block whose state root the oracle holds and <code>accountProof</code> is the <code>eth_getProof</code> account proof at that block. A storage slot: <code>provenStorage(number, account, slot, accountProof, storageProof)</code>. Both revert on any mismatch.</p>
</section>
<h2 id="checked">What the contract checks</h2>
@ -292,14 +288,15 @@
<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>
<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>). The devnet, no value.</p>
</section>
<!-- terms:end -->
<p class="asof">Devnet 3, no value. Sepolia, no value. A demonstration of the verification path, not a product.</p>
<p class="asof">The devnet, no value. Sepolia, no value. A demonstration of the verification path, not a product.</p>
</main>
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -325,7 +322,6 @@
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -337,7 +333,6 @@
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -363,7 +358,7 @@
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->
@ -371,7 +366,6 @@
(function(){
// one request per button; the wallet shows the chain to the user and decides. No key, no seed, no signature here.
var CHAINS = {
testnet: { chainId: '0x116e', chainName: 'Igneum Testnet', nativeCurrency: { name: 'Igneum', symbol: 'IGN', decimals: 18 }, rpcUrls: ['https://rpc.testnet.igneum.network'], blockExplorerUrls: [] },
devnet: { chainId: '0x116f', chainName: 'Igneum Devnet (local node)', nativeCurrency: { name: 'Igneum', symbol: 'IGN', decimals: 18 }, rpcUrls: ['http://127.0.0.1:26790'], blockExplorerUrls: [] }
};
function status(name, text) { var el = document.querySelector('[data-status="' + name + '"]'); if (el) el.textContent = text; }

View file

@ -1,5 +1,6 @@
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -25,7 +26,6 @@
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -37,7 +37,6 @@
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -63,6 +62,6 @@
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>

View file

@ -5,7 +5,7 @@
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -35,12 +35,10 @@
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -58,7 +56,7 @@
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -78,12 +76,10 @@
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -97,7 +93,7 @@
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">

View file

@ -6,5 +6,5 @@
<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>
<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>). The devnet, no value.</p>
</section>

File diff suppressed because one or more lines are too long

View file

@ -3,31 +3,31 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Igneum Devnet 3 proving</title>
<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.">
<title>Igneum 2.0 devnet proving</title>
<meta name="description" content="Proving on the devnet: 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="Proving on Igneum Devnet 3">
<meta property="og:title" content="Proving on the Igneum devnet">
<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/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:alt" content="The devnet, 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 property="og:image:alt" content="The devnet, 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:title" content="Proving on the Igneum devnet">
<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">
<meta name="twitter:image:alt" content="The devnet, 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">
@ -116,7 +116,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" data-active aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -146,12 +146,10 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer" aria-current="page"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -169,7 +167,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -189,12 +187,10 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer" aria-current="page"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -208,7 +204,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -267,8 +263,8 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<main id="main" class="wrap">
<div class="head">
<div class="breadcrumb"><a href="/">Igneum</a><span>/</span><a href="/explorer">Explorer</a><span>/</span><span>Proving</span></div>
<div class="eyebrow"><a href="/explorer">Devnet 3 explorer</a> · proving</div>
<h1>Proving on Devnet 3<span class="accent">.</span></h1>
<div class="eyebrow"><a href="/explorer">The devnet explorer</a> · proving</div>
<h1>Proving on the devnet<span class="accent">.</span></h1>
<p>Every chain block's execution is split into shards. Miners prove them, the node verifies the proofs, and a later coinbase pays the prover. This page reads the observer's record of that cycle: the plan per block, who proved what, and how long a block waits to be paid.</p>
<div class="msg" id="msg" aria-live="polite"></div>
</div>
@ -290,7 +286,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<tbody id="blocks"><tr><td colspan="11" class="empty">Loading.</td></tr></tbody>
</table>
</div>
<p class="note">States count the block's shards as planned (the node published the plan), proving (a record is in the pool), verified (the node's verifier accepted the proof) and paid (a later coinbase carried the record). Lag is the DAA score of the paying block minus the block's own; Devnet 3 targets one DAA step per second.</p>
<p class="note">States count the block's shards as planned (the node published the plan), proving (a record is in the pool), verified (the node's verifier accepted the proof) and paid (a later coinbase carried the record). Lag is the DAA score of the paying block minus the block's own; the devnet targets one DAA step per second.</p>
</div>
<div class="two two-wrap">
<div class="card" aria-label="Provers">
@ -309,6 +305,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -334,7 +331,6 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -346,7 +342,6 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -372,7 +367,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -89,7 +89,7 @@
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -119,12 +119,10 @@
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -142,7 +140,7 @@
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -162,12 +160,10 @@
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -181,7 +177,7 @@
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -270,6 +266,7 @@
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -295,7 +292,6 @@
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -307,7 +303,6 @@
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -333,7 +328,7 @@
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -4,14 +4,14 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<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.">
<meta name="description" content="A devnet payment receipt proven against the finality certificate, downloadable as JSON and re-verified offline by anyone with a one-file verifier. The devnet, 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 inclusion receipt proven against the finality certificate and re-verified offline with one file.">
<meta property="og:description" content="A devnet 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/receipt.png?v=4">
<meta property="og:image:type" content="image/png">
@ -25,7 +25,7 @@
<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 inclusion receipt proven against the finality certificate and re-verified offline with one file.">
<meta name="twitter:description" content="A devnet 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 -->
@ -95,7 +95,7 @@
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" data-active aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -125,12 +125,10 @@
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt" aria-current="page"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -148,7 +146,7 @@
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -168,12 +166,10 @@
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt" aria-current="page"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -187,7 +183,7 @@
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -246,10 +242,10 @@
<main id="main" class="wrap">
<div class="head">
<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>
<div class="eyebrow"><span class="line"></span>Reference app 2 · the devnet, no value</div>
<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>
<p class="note">Paste a devnet 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="why">
<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>
@ -261,7 +257,7 @@
<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>
<div class="vstatus" data-status role="status" aria-live="polite">Devnet 3, no value. A transaction is final once a certified checkpoint has it in its past, about 30 to 90 s after it executes.</div>
<div class="vstatus" data-status role="status" aria-live="polite">The devnet, no value. A transaction is final once a certified checkpoint has it in its past, about 30 to 90 s after it executes.</div>
</form>
<div data-result></div>
</section>
@ -276,12 +272,13 @@
<li>The certificate over that checkpoint verifies: the aggregate BLS signature of the signers, the voter order, two thirds of active weight and two thirds of total weight.</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.</p>
<p class="asof">Devnet 3, no value. The chain may reset. A demonstration of the verification path, not a product.</p>
<p class="asof">The devnet, 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>
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -307,7 +304,6 @@
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -319,7 +315,6 @@
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -345,7 +340,7 @@
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->
@ -353,7 +348,6 @@
(function(){
// one request per button; the wallet shows the chain to the user and decides. No key, no seed, no signature here.
var CHAINS = {
testnet: { chainId: '0x116e', chainName: 'Igneum Testnet', nativeCurrency: { name: 'Igneum', symbol: 'IGN', decimals: 18 }, rpcUrls: ['https://rpc.testnet.igneum.network'], blockExplorerUrls: [] },
devnet: { chainId: '0x116f', chainName: 'Igneum Devnet (local node)', nativeCurrency: { name: 'Igneum', symbol: 'IGN', decimals: 18 }, rpcUrls: ['http://127.0.0.1:26790'], blockExplorerUrls: [] }
};
function status(name, text) { var el = document.querySelector('[data-status="' + name + '"]'); if (el) el.textContent = text; }

View file

@ -1,7 +1,7 @@
{
"format": "igneum-release-manifest-v1",
"generated": "2026-10-08T15:55:00Z",
"read_at": "read 8 October 2026, 15:50 UK, from the Devnet 3 seed and the fleet census (the node lane), the download index and the ELF manifest",
"read_at": "regenerated at the Igneum 2.0 devnet's first block",
"labels": {
"measured": "read from a running node, a binary or a record",
"designed": "in the specification or the design document, not yet carried by code on the live chain",
@ -9,36 +9,19 @@
"claimed": "stated by a third party, not measured here"
},
"network": {
"id": "igneum-devnet-3",
"name": "Igneum Devnet 3",
"id": "igneum-devnet-4",
"name": "Igneum 2.0 devnet",
"kind": "developer network: resets without notice, its coins have no value",
"chain_id": 4464,
"chain_id_hex": "0x1170",
"chain_id_below_floor": 4463,
"chain_id_note": "4464 since the class v5 floor at DAA 68,400 (crossed 8 October 2026, 12:57 UK); 4463 from genesis to the floor; a transaction carries the id in force at its block",
"genesis": {
"first_block_utc": "2026-10-07T17:06:00Z",
"first_lock_utc": "2026-10-07T19:02:00Z",
"note": "every upgrade on from block zero: era VDF, finality v3, fees v1, proving v1, the latency ladder at rung 0"
},
"chain_id_note": "the Igneum 2.0 devnet; the manifest is regenerated at its first block",
"rpc": "https://rpc.devnet.igneum.network",
"explorer": "https://igneum.network/explorer",
"faucet": "https://faucet.igneum.network",
"vote_domain": "igneum-vote-v1/igneum-devnet-3",
"decimals": 8,
"block_target_seconds": 1,
"consensus_digest": "2066aa57505e5ecbd585d061364abb0032d5b5b29cc41c54f4b38cb81c2ba6eb",
"label": "measured",
"others": [
{
"id": "igneum-testnet-1",
"chain_id": 4462,
"chain_id_hex": "0x116e",
"rpc": "https://rpc.testnet.igneum.network",
"state": "armed: three seed nodes and the public RPC are up, nothing mines until the go word",
"genesis_hash": "87617621714af1bf33bd17f291f90a7e0bff760a669bba53083ea8c0f7cbd840",
"decimals": 18
},
{
"id": "igneum-mainnet",
"chain_id": 4461,
@ -97,7 +80,7 @@
"size": "1 GiB on the devnets (2^24 items at the genesis size)",
"keyed_by": "the execution state after the epoch's reference block (class v5)",
"cache": "256 MiB day cache (class v3 lineage)",
"growth": "no growth step is set on Devnet 3; the genesis-fixed schedule of spec 1.13.3 is a mainnet matter; class v6's step schedule (5.5 / 8.5 / 11.5 GiB) is a design on its branch, not live"
"growth": "no growth step is set on the devnet; the genesis-fixed schedule of spec 1.13.3 is a mainnet matter; class v6's step schedule (5.5 / 8.5 / 11.5 GiB) is a design on its branch, not live"
},
"ladder": {
"rung": 0,
@ -119,8 +102,8 @@
"aggregators": 8,
"ban_daa": 7200,
"certificate_fold_daa": 3,
"frozen_table": "the weight table is frozen at the last certified checkpoint on the selected chain (spec 03 Q5), active for every checkpoint from DAA 0 on Devnet 3",
"node_line": "Finality v2 (igneum-devnet-3): interval 30 depth 20 window 7200 DAA dust 5 presence 20 aggregators 8 ban 7200 fold 3; rule v3 from checkpoint DAA 0",
"frozen_table": "the weight table is frozen at the last certified checkpoint on the selected chain (spec 03 Q5), active for every checkpoint from DAA 0 on the devnet",
"node_line": "Finality v2 (the devnet): interval 30 depth 20 window 7200 DAA dust 5 presence 20 aggregators 8 ban 7200 fold 3; rule v3 from checkpoint DAA 0",
"label": "measured"
},
"proving": {
@ -183,7 +166,7 @@
"tail": "none",
"where": "consensus/core/src/emission.rs 85 to 123; igneum.rs 34, 76"
},
"label": "measured in the code on Devnet 3; external jobs designed"
"label": "measured in the code on the devnet; external jobs designed"
},
"versions": {
"miner-hive": {

View file

@ -81,7 +81,7 @@
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -111,12 +111,10 @@
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -134,7 +132,7 @@
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -154,12 +152,10 @@
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -173,7 +169,7 @@
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -271,6 +267,7 @@
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -296,7 +293,6 @@
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -308,7 +304,6 @@
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -334,7 +329,7 @@
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -576,3 +576,5 @@ main.wrap>.grid{margin-bottom:40px}
.calc-out .v{font:600 var(--t-h3)/1.2 var(--f-sans);color:var(--bone);overflow-wrap:anywhere}
.calc-out .d{font:400 14px/1.5 var(--f-sans);color:var(--ink-2);overflow-wrap:anywhere}
@media (min-width:861px){.calc-out{grid-template-columns:200px 1fr}.calc-out .k{grid-column:1;margin-top:0;align-self:baseline}.calc-out .v{grid-column:2}.calc-out .d{grid-column:2;margin-bottom:var(--s-2)}}
/* Igneum 2.0 (8 October 2026): the positioning line, the first line of every page's footer, in the footer's text style */
.site-footer .positioning{font-size:13px;line-height:1.6;color:var(--ash);margin:0 0 32px;max-width:82ch}

View file

@ -9,13 +9,11 @@
<url><loc>https://igneum.network/explorer</loc><lastmod>2026-10-08</lastmod><changefreq>daily</changefreq><priority>0.5</priority></url>
<url><loc>https://igneum.network/proving</loc><lastmod>2026-10-08</lastmod><changefreq>daily</changefreq><priority>0.4</priority></url>
<url><loc>https://igneum.network/ledger</loc><lastmod>2026-10-07</lastmod><changefreq>weekly</changefreq><priority>0.6</priority></url>
<url><loc>https://igneum.network/bench</loc><lastmod>2026-10-07</lastmod><changefreq>weekly</changefreq><priority>0.6</priority></url>
<url><loc>https://igneum.network/evidence</loc><lastmod>2026-10-07</lastmod><changefreq>weekly</changefreq><priority>0.6</priority></url>
<url><loc>https://igneum.network/light</loc><lastmod>2026-10-08</lastmod><changefreq>weekly</changefreq><priority>0.6</priority></url>
<url><loc>https://igneum.network/receipt</loc><lastmod>2026-10-08</lastmod><changefreq>weekly</changefreq><priority>0.6</priority></url>
<url><loc>https://igneum.network/oracle</loc><lastmod>2026-10-08</lastmod><changefreq>weekly</changefreq><priority>0.6</priority></url>
<url><loc>https://igneum.network/miners</loc><lastmod>2026-10-07</lastmod><changefreq>weekly</changefreq><priority>0.6</priority></url>
<url><loc>https://igneum.network/journey</loc><lastmod>2026-10-07</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url>
<url><loc>https://igneum.network/claims</loc><lastmod>2026-10-07</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
<url><loc>https://igneum.network/randomx</loc><lastmod>2026-10-07</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url>
<url><loc>https://igneum.network/provenance</loc><lastmod>2026-10-07</lastmod><changefreq>monthly</changefreq><priority>0.4</priority></url>

View file

@ -3,31 +3,31 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Igneum swap on Devnet 3. Test tokens, no value</title>
<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.">
<title>Igneum swap on the devnet. Test tokens, no value</title>
<meta name="description" content="Swap wrapped IGN and two faucet test tokens on the Igneum 2.0 devnet, with proven execution. 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 wrapped IGN and two test tokens on the Igneum zkEVM. Every swap is a proven block. No value.">
<meta property="og:title" content="Igneum swap on the devnet">
<meta property="og:description" content="Swap wrapped IGN and two test tokens with proven execution. 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/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="Swap test tokens on Devnet 3. igneum.network/swap">
<meta property="og:image:alt" content="Swap test tokens on the devnet. 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 property="og:image:alt" content="Swap test tokens on the devnet. 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 wrapped IGN and two test tokens on the Igneum zkEVM. Every swap is a proven block. No value.">
<meta name="twitter:title" content="Igneum swap on the devnet">
<meta name="twitter:description" content="Swap wrapped IGN and two test tokens with proven execution. 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">
<meta name="twitter:image:alt" content="Swap test tokens on the devnet. 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">
@ -100,7 +100,7 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:13px;overflo
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -130,12 +130,10 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:13px;overflo
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -153,7 +151,7 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:13px;overflo
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap" aria-current="page"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap" aria-current="page"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -173,12 +171,10 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:13px;overflo
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -192,7 +188,7 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:13px;overflo
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap" aria-current="page"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap" aria-current="page"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -251,17 +247,17 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:13px;overflo
<main id="main" class="wrap">
<div class="head">
<div class="breadcrumb"><a href="/">Igneum</a><span>/</span><span>Swap</span></div>
<div class="eyebrow"><span class="line"></span>Devnet 3 swap</div>
<h1>Swap test tokens <span class="accent">on Devnet 3.</span></h1>
<p>A constant-product exchange on the Igneum zkEVM: wrapped IGN and two faucet tokens in three pools, 0.3 percent to the pool. Every swap is a Devnet 3 block, and the block's proof status is read live below.</p>
<p class="notice">Devnet 3, test tokens, no value. The chain may reset and these pools go with it. Nothing here is an offer, a price or a market.</p>
<div class="eyebrow"><span class="line"></span>Devnet swap</div>
<h1>Swap test tokens <span class="accent">on the devnet.</span></h1>
<p>A constant-product exchange on Igneum, with proven execution: wrapped IGN and two faucet tokens in three pools, 0.3 percent to the pool. Every swap is a devnet block, and the block's proof status is read live below.</p>
<p class="notice">The devnet, test tokens, no value. The chain may reset and these pools go with it. Nothing here is an offer, a price or a market.</p>
</div>
<div class="grid">
<section class="card" aria-labelledby="swap-h">
<h2 id="swap-h">Swap</h2>
<div class="wallet-row">
<button class="btn" id="connect" type="button">Connect wallet</button>
<span class="status" id="wallet" role="status" aria-live="polite">No wallet connected. The Igneum Wallet open on this machine, or MetaMask, on the Devnet 3 chain id shown under Pools.</span>
<span class="status" id="wallet" role="status" aria-live="polite">No wallet connected. The Igneum Wallet open on this machine, or MetaMask, on the devnet chain id shown under Pools.</span>
</div>
<form id="swap-form" novalidate>
<label for="amount-in">You send</label>
@ -281,7 +277,7 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:13px;overflo
<div class="status" id="status" role="status" aria-live="polite"></div>
</form>
<h3>Your swaps this session</h3>
<p class="small">Each row is a Devnet 3 block. Proof status comes from the public feed (/api/live): planned, proving, verified or paid per shard, and whether a finality checkpoint has locked the block.</p>
<p class="small">Each row is a devnet block. Proof status comes from the public feed (/api/live): planned, proving, verified or paid per shard, and whether a finality checkpoint has locked the block.</p>
<table class="swaps" id="swaps" aria-label="Your swaps">
<thead><tr><th>Swap</th><th>Transaction</th><th>Block</th><th>Proof status</th></tr></thead>
<tbody id="swaps-body"><tr class="empty"><td colspan="4">No swaps yet this session.</td></tr></tbody>
@ -289,7 +285,7 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:13px;overflo
</section>
<aside class="card" aria-labelledby="pools-h">
<h2 id="pools-h">Pools</h2>
<p class="small">Reserves read live from the Devnet 3 RPC. Test tokens come from each token's own faucet: one <code>drip()</code> of 1,000 an hour per address.</p>
<p class="small">Reserves read live from the devnet RPC. Test tokens come from each token's own faucet: one <code>drip()</code> of 1,000 an hour per address.</p>
<table class="pools" id="pools" aria-label="Pools">
<thead><tr><th>Pool</th><th>Reserves</th></tr></thead>
<tbody id="pools-body"><tr><td colspan="2">Reading the chain…</td></tr></tbody>
@ -312,24 +308,25 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:13px;overflo
<div class="status" id="lp-status" role="status" aria-live="polite"></div>
</form>
<dl>
<dt>Chain</dt><dd>igneum-devnet-3, chain id <span id="chain-id">reading…</span></dd>
<dt>Chain</dt><dd>igneum-devnet-4, chain id <span id="chain-id">reading…</span></dd>
<dt>RPC</dt><dd><code>https://rpc.devnet.igneum.network</code></dd>
<dt>Router</dt><dd><code class="addr" data-addr="router"></code></dd>
<dt>Factory</dt><dd><code class="addr" data-addr="factory"></code></dd>
<dt>WIGN</dt><dd><code class="addr" data-addr="wign"></code></dd>
<dt>TTA</dt><dd><code class="addr" data-addr="tta"></code></dd>
<dt>TTB</dt><dd><code class="addr" data-addr="ttb"></code></dd>
<dt>Source</dt><dd>contracts/dex in the repository; addresses in docs/contracts/devnet-3.json</dd>
<dt>Source</dt><dd>contracts/dex in the repository; addresses in docs/contracts</dd>
<dt>Wallet set-up</dt><dd><a href="/metamask">MetaMask: chain id, RPC, one click</a> or <a href="/wallet">the Igneum Wallet</a></dd>
<dt>IGN for gas</dt><dd><a href="/faucet">The faucet</a> or <a href="/miner#get">mine a block</a></dd>
</dl>
<p class="notice small">Devnet 3, test tokens, no value.</p>
<p class="notice small">The devnet, test tokens, no value.</p>
</aside>
</div>
</main>
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -355,7 +352,6 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:13px;overflo
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -367,7 +363,6 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:13px;overflo
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -393,19 +388,19 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:13px;overflo
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->
<script src="/wallet-provider.js"></script>
<script>
(function(){
// Devnet 3, test tokens, no value. Addresses: docs/contracts/devnet-3.json. /wallet-provider.js (the wallet lane's page
// the devnet, test tokens, no value. Addresses: docs/contracts. /wallet-provider.js (the wallet lane's page
// bridge) gives the page an EIP-1193 provider for the Igneum Wallet running on this machine: window.ethereum when no
// extension injects one, window.igneum beside MetaMask, announced through EIP-6963. Reads go to the public RPC; sends go
// through the connected wallet (EIP-1193: MetaMask and any wallet that injects window.ethereum), which asks the node
// for the gas limit itself (Devnet 3 charges proving gas inside execution gas, so a local estimate runs out).
// the chain id is read from the RPC at load (4463 below the class v5 floor, 4464 from DAA 68,400 on 8 October 2026), never fixed here
// for the gas limit itself (the devnet charges proving gas inside execution gas, so a local estimate runs out).
// the chain id is read from the RPC at load, never fixed here
var RPC='https://rpc.devnet.igneum.network', CHAIN_ID=null, CHAIN_HEX=null;
var A={router:'0x9a6fA842C4e58A87AEF1F3aD15233d99283002B7',factory:'0x09FF42dbb20448ddB673fD34F973a7D93E7139A8',wign:'0x47447783D00e1760Eb815a34707b611D53f2A51e',tta:'0x9ad4F0435f9172A89C6765eE8631CAB2Db3B5052',ttb:'0x996e3042089E80029348d7836472DB34C21841c1'};
var TOKENS=[{key:'ign',sym:'IGN',name:'IGN (the coin, wrapped on the way in)',addr:A.wign,native:true},{key:'tta',sym:'TTA',name:'Test Token A',addr:A.tta},{key:'ttb',sym:'TTB',name:'Test Token B',addr:A.ttb}];
@ -433,19 +428,19 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:13px;overflo
function connect(){
var eth=window.ethereum;
if(!CHAIN_ID){say($('wallet'),'The chain id is not read yet (the public RPC did not answer). Try again in a moment.','bad');return;}
if(!eth){say($('wallet'),'No wallet found. Open the Igneum Wallet on this machine (0.1.6 or later; the page finds it by itself) or install MetaMask, then tap Connect again.','bad');return;}
if(!eth){say($('wallet'),'No wallet found. Open the Igneum Wallet on this machine (the page finds it by itself) or install MetaMask, then tap Connect again.','bad');return;}
eth.request({method:'eth_requestAccounts'}).then(function(acc){
account=acc[0];provider=eth;
return eth.request({method:'eth_chainId'});
}).then(function(cid){
if(parseInt(cid,16)!==CHAIN_ID){
return eth.request({method:'wallet_switchEthereumChain',params:[{chainId:CHAIN_HEX}]}).catch(function(e){
if(e&&(e.code===4902||/unrecognized|not added/i.test(String(e.message))))return eth.request({method:'wallet_addEthereumChain',params:[{chainId:CHAIN_HEX,chainName:'Igneum Devnet 3 (test tokens, no value)',nativeCurrency:{name:'IGN',symbol:'IGN',decimals:18},rpcUrls:[RPC],blockExplorerUrls:['https://igneum.network/explorer']}]});
if(e&&(e.code===4902||/unrecognized|not added/i.test(String(e.message))))return eth.request({method:'wallet_addEthereumChain',params:[{chainId:CHAIN_HEX,chainName:'Igneum 2.0 devnet (test tokens, no value)',nativeCurrency:{name:'IGN',symbol:'IGN',decimals:18},rpcUrls:[RPC],blockExplorerUrls:['https://igneum.network/explorer']}]});
throw e;
});
}
}).then(function(){
say($('wallet'),'',"ok",'Connected <code>'+short(account)+'</code> on chain id '+CHAIN_ID+'. Devnet 3, test tokens, no value.');
say($('wallet'),'',"ok",'Connected <code>'+short(account)+'</code> on chain id '+CHAIN_ID+'. The devnet, test tokens, no value.');
$('connect').textContent='Connected';$('go').disabled=false;$('lp-go').disabled=false;$('drip-tta').disabled=false;$('drip-ttb').disabled=false;
eth.on&&eth.on('accountsChanged',function(a){account=a[0]||null;if(!account){provider=null;say($('wallet'),'Wallet disconnected.','bad');}});
eth.on&&eth.on('chainChanged',function(){location.reload();});
@ -512,7 +507,7 @@ dt{color:var(--ash)}dd{margin:0;font-family:var(--f-mono);font-size:13px;overflo
if(!swaps.some(function(s){return s.number!==null;}))return;
fetch('/api/live?window=1800').then(function(r){return r.json();}).then(function(j){
var byNumber={};(j.blocks||[]).forEach(function(b){if(b.number!==null&&b.number!==undefined)byNumber[b.number]=b;});
swaps.forEach(function(s){if(s.number===null||s.ok===false)return;var b=byNumber[s.number];s.status=b?proofText(b):'not yet observed on Devnet 3 (the feed keeps the last 30 minutes)';});
swaps.forEach(function(s){if(s.number===null||s.ok===false)return;var b=byNumber[s.number];s.status=b?proofText(b):'not yet observed on the devnet (the feed keeps the last 30 minutes)';});
render();
}).catch(function(){});
}

View file

@ -3,8 +3,8 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Igneum Devnet 3 transaction</title>
<meta name="description" content="One Devnet 3 transaction: status, value, fees and their split, the block that executed it, its proof state and finality, its logs.">
<title>Igneum 2.0 devnet transaction</title>
<meta name="description" content="One devnet transaction: status, value, fees and their split, the block that executed it, its proof state and finality, its logs.">
<link rel="canonical" href="https://igneum.network/tx">
<meta name="robots" content="noindex">
<meta name="theme-color" content="#0C0C0E">
@ -12,23 +12,23 @@
<meta property="og:type" content="website">
<meta property="og:site_name" content="Igneum">
<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:description" content="One devnet 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/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:alt" content="The devnet, 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 property="og:image:alt" content="The devnet, 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:description" content="One devnet 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">
<meta name="twitter:image:alt" content="The devnet, 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">
@ -117,7 +117,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" data-active aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -147,12 +147,10 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer" aria-current="page"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -170,7 +168,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -190,12 +188,10 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer" aria-current="page"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -209,7 +205,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -268,7 +264,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<main id="main" class="wrap">
<div class="head">
<div class="breadcrumb"><a href="/">Igneum</a><span>/</span><a href="/explorer">Explorer</a><span>/</span><span>Transaction</span></div>
<div class="eyebrow"><a href="/explorer">Devnet 3 explorer</a> · transaction</div>
<div class="eyebrow"><a href="/explorer">The devnet explorer</a> · transaction</div>
<h1 class="hash" id="title">Transaction</h1>
<div id="chips"></div>
<div class="msg" id="msg" aria-live="polite"></div>
@ -285,6 +281,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -310,7 +307,6 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -322,7 +318,6 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -348,7 +343,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->
@ -365,7 +360,7 @@ async function load() {
$('title').textContent = id;
if (!j.ok) { $('msg').textContent = j.error || 'Not found.'; return; }
const t = j.tx, b = j.block, now = new Date(j.now).getTime(), g = t.igneum || {};
document.title = `Devnet 3 transaction ${shortHash(t.hash, 8, 6)}`;
document.title = `Devnet transaction ${shortHash(t.hash, 8, 6)}`;
$('title').textContent = t.hash;
const chips = [t.status === 'success' ? '<span class="chip ok">success</span>' : t.status === 'failed' ? '<span class="chip" style="border-color:var(--excluded);color:var(--excluded)">failed</span>' : '<span class="chip">no receipt</span>'];
chips.push(`<span class="chip">chain block ${int(t.number)}</span>`);
@ -374,7 +369,7 @@ async function load() {
$('chips').innerHTML = chips.join('');
const fee = t.gas_used !== null && t.effective_gas_price !== null ? (BigInt(t.gas_used) * BigInt(t.effective_gas_price)).toString() : null;
$('summary').innerHTML = dl([
['Network', 'Devnet 3' + (j.chain_id ? ', chain id ' + esc(j.chain_id) + ' as the node reports it' : '')],
['Network', 'The devnet' + (j.chain_id ? ', chain id ' + esc(j.chain_id) + ' as the node reports it' : '')],
['Hash', `<span class="hash">${esc(t.hash)}</span>`],
['Status', t.status || 'no receipt'],
['Block', `<a class="hash" href="/block/${esc(t.block_hash)}">${esc(shortHash(t.block_hash, 12, 8))}</a> <span class="kv">chain block ${int(t.number)}, index ${int(t.index)}</span>`],

View file

@ -22,6 +22,21 @@
"source": "/gpu-benchmarks",
"destination": "/miners",
"permanent": true
},
{
"source": "/bench",
"destination": "/evidence",
"permanent": false
},
{
"source": "/journey",
"destination": "/live",
"permanent": false
},
{
"source": "/journey.json",
"destination": "/live",
"permanent": false
}
],
"rewrites": [
@ -95,15 +110,6 @@
}
]
},
{
"source": "/journey.json",
"headers": [
{
"key": "Cache-Control",
"value": "public, max-age=300"
}
]
},
{
"source": "/api/live",
"headers": [

View file

@ -99,7 +99,7 @@
<svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg>
<span class="word">IGNEUM</span>
</a>
<span class="devnet" id="nav-devnet" title="igneum-devnet-3, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state">devnet</span></span>
<span class="devnet" id="nav-devnet" title="igneum-devnet-4, the Igneum 2.0 devnet, chain id 4464. Coins have no value. The chain may reset."><span class="dot off" id="foot-dot"></span><span id="foot-state" data-devnet-state="starting">Igneum 2.0 devnet starting</span></span>
<div class="nav-groups" id="nav-groups" role="list">
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-mine" data-group="mine" data-active aria-expanded="false" aria-controls="nav-panel-mine" aria-haspopup="true">Mine<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
<div class="nav-group" role="listitem"><button type="button" class="group-btn" id="nav-btn-network" data-group="network" aria-expanded="false" aria-controls="nav-panel-network" aria-haspopup="true">Network<svg class="icon" viewBox="0 0 24 24" aria-hidden="true"><path d="m7 10 5 5 5-5"/></svg></button></div>
@ -129,12 +129,10 @@
<div class="panel-list">
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
</div>
<div class="nav-panel" id="nav-panel-learn" data-group="learn" role="region" aria-labelledby="nav-btn-learn" hidden>
@ -152,7 +150,7 @@
<div class="panel-list">
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
</div>
@ -172,12 +170,10 @@
<div class="sheet-group"><div class="sheet-head">Network</div>
<a href="/live" data-nav="live"><b>Live devnet</b><span>The chain as it grows, one lane per miner.</span></a>
<a href="/explorer" data-nav="explorer"><b>Explorer</b><span>Look a block or an address up.</span></a>
<a href="/journey" data-nav="journey"><b>The journey</b><span>Six phases, four gates, the log behind them.</span></a>
<a href="/bench" data-nav="bench"><b>Engineering log</b><span>Every measurement, with the commands that made it.</span></a>
<a href="/evidence" data-nav="evidence"><b>Evidence</b><span>Every claim and how far it is tested.</span></a>
<a href="/light" data-nav="light"><b>Light wallet</b><span>A balance your browser proves, trusting no node.</span></a>
<a href="/receipt" data-nav="receipt"><b>Payment receipt</b><span>A receipt any third party re-verifies offline.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Devnet 3 balances read from another chain.</span></a>
<a href="/oracle" data-nav="oracle"><b>State oracle on Sepolia</b><span>Balances on the devnet, read from another chain.</span></a>
</div>
<div class="sheet-group"><div class="sheet-head">Learn</div>
<a href="/litepaper" data-nav="litepaper"><b>Litepaper</b><span>The design, as published.</span></a>
@ -191,7 +187,7 @@
<div class="sheet-group"><div class="sheet-head">Build</div>
<a href="/build" data-nav="build"><b>Build on Igneum</b><span>Chain ids, RPC, a contract in five minutes.</span></a>
<a href="/faucet" data-nav="faucet"><b>Devnet faucet</b><span>10 IGN of devnet coin, once a day.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on Devnet 3; every swap is a proven block.</span></a>
<a href="/swap" data-nav="swap"><b>Swap</b><span>Test tokens on the devnet; every swap is a proven block.</span></a>
<a href="/grants" data-nav="grants"><b>Grants</b><span>Tooling, apps, infrastructure, research.</span></a>
</div>
<div class="sheet-foot">
@ -263,10 +259,10 @@
</div>
<div class="tag-row" style="margin-top:var(--s-5)"><span class="pill">macOS first</span><span class="pill">Windows next</span><span class="pill">MetaMask export</span></div>
</div>
<div class="wallet-card reveal"><div class="eyebrow"><em>IGNEUM WALLET</em><span style="margin-left:auto">0.1.5</span></div><figure class="frame" style="margin:18px 0 0">
<div class="wallet-card reveal"><div class="eyebrow"><em>IGNEUM WALLET</em><span style="margin-left:auto">current build</span></div><figure class="frame" style="margin:18px 0 0">
<div class="bar"></div>
<img src="/img/wallet-home-dark.webp" width="2240" height="1560" class="shot" alt="The wallet window, Home: a balance of 31.6321 IGN with the devnet note that coins have no value, an example address with Copy, Send and Receive, the node line synced to the miner app's node and verified to a checkpoint, and the recent transfers with their state words" fetchpriority="high" decoding="async">
</figure><p class="shot-cap">Igneum Wallet 0.1.5, rendered from the wallet’s own mock state: example keys, 7 October 2026.</p></div>
</figure><p class="shot-cap">Igneum Wallet, the current build, rendered from the wallet’s own mock state: example keys, 7 October 2026.</p></div>
</div>
</div>
</section>
@ -285,7 +281,7 @@
<figure class="frame reveal" style="margin:25px 0 0">
<div class="bar"><i></i><i></i><i></i><b>History</b></div>
<img src="/img/wallet-history-dark.webp" width="2240" height="1560" class="shot" alt="The wallet's History page: every transfer with the node's word, pending, proven, executed, finalised under a checkpoint verified here, and one failed with the fee still paid" loading="lazy" decoding="async">
<figcaption>Every transfer with the node’s word: pending, proven, executed, finalised under a checkpoint this wallet verified. Igneum Wallet 0.1.5, rendered from its mock state with example keys, 7 October 2026.</figcaption>
<figcaption>Every transfer with the node’s word: pending, proven, executed, finalised under a checkpoint this wallet verified. The current build of Igneum Wallet, rendered from its mock state with example keys, 7 October 2026.</figcaption>
</figure>
<div class="reveal" style="margin-top:var(--s-5)">
<div class="eyebrow" style="margin-bottom:12px">What the wallet checks before it says final</div>
@ -385,7 +381,6 @@
<span class="btn" aria-disabled="true" style="opacity:.7;cursor:default"><svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor" aria-hidden="true"><path d="M3 5.5l7.5-1v7H3zM11.5 4.3L21 3v8.5h-9.5zM3 12.5h7.5v7L3 18.5zM11.5 12.5H21V21l-9.5-1.3z"/></svg>Windows <span style="font-weight:400;opacity:.85">next</span></span>
<a href="/metamask" class="btn"><svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round" aria-hidden="true"><path d="M4 4l5 3h6l5-3-1.5 7 1.5 5-3 4H7l-3-4 1.5-5z"/><path d="M9 13h2M13 13h2"/></svg>Add to MetaMask</a>
</div>
<p data-testnet-notice class="notice" style="margin-top:var(--s-4)">Public testnet: not yet open; the devnet build is here for people who want to look.</p>
<p data-devnet-notice class="notice"><b>Devnet.</b> Coins have no value and the chain may be reset.</p>
<p class="pt reveal" style="margin-top:var(--s-4)">The wallet reads this machine’s node when the <a href="/miner">miner</a> is installed. Without it, a public RPC for balances and sending, or the bundled node for everything. <a href="/litepaper#wallet">More in the litepaper</a>.</p>
</div>
@ -405,6 +400,7 @@
<!-- footer:start -->
<footer class="site-footer">
<div class="container">
<p class="positioning">A GPU-secured network for Ethereum-compatible applications and verifiable computation.</p>
<div class="footer-grid">
<div class="footer-brand">
<a href="/" class="logo" aria-label="Igneum home"><svg class="brand-mark" viewBox="0 0 1024 1024" aria-hidden="true"><rect width="1024" height="1024" rx="160" fill="#0C0C0E"></rect><g transform="translate(166.95 166.95) scale(6.901)"><polygon points="50,4 74,34 67,58 80,54 61,96 39,96 20,54 33,58 26,34" fill="#F2541B"></polygon><polygon points="50,42 59,58 50,82 41,58" fill="#0C0C0E"></polygon></g></svg><span class="word">IGNEUM</span><span class="stop">.</span></a>
@ -430,7 +426,6 @@
<div class="footer-column"><h4>Read</h4><div>
<a href="/litepaper">Litepaper</a>
<a href="/evidence">Evidence</a>
<a href="/bench">Engineering log</a>
<a href="/ledger">Ledger: every criticism</a>
<a href="/claims">What Igneum does not claim</a>
<a href="/randomx">Igneum vs RandomX</a>
@ -442,7 +437,6 @@
<a href="/build">Build on Igneum</a>
<a href="/swap">Swap</a>
<a href="/grants">Grants</a>
<a href="/journey">Journey</a>
<a href="/download">Downloads: devnet build</a>
<a href="https://discord.gg/igneum" target="_blank" rel="noopener">Community Discord</a>
<a href="mailto:hello@igneum.network">hello@igneum.network</a>
@ -468,7 +462,7 @@
document.addEventListener('igneum-theme',function(){var c=stored();bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===c?'true':'false');});});
bs.forEach(function(b){b.setAttribute('aria-pressed',b.getAttribute('data-theme-set')===stored()?'true':'false');});
// the network state word in the status bar: one read of the observer per page view
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
var fs=document.getElementById('foot-state'),fd=document.getElementById('foot-dot');if(fs&&fd&&fs.getAttribute('data-devnet-state')==='live'){fetch('/api/live?window=30',{cache:'no-store'}).then(function(r){return r.json();}).then(function(d){var on=d&&d.ok&&d.state&&!d.state.stale;fs.textContent=on?'devnet live':'devnet, observer stale';fd.className='dot '+(on?'live':'off');}).catch(function(){fs.textContent='devnet';});}
})();
</script>
<!-- footer:end -->

View file

@ -1,5 +1,5 @@
// Internal link check of the site: every href="..." and src="..." in site/*.html that is not an external URL,
// an anchor, a mailto or a data URI must resolve to a file under site/ (clean URLs: /bench -> bench.html).
// an anchor, a mailto or a data URI must resolve to a file under site/ (clean URLs: /miners -> miners.html).
// Fragment links (#id) inside a page must name an element id in that page. Template literals (${...}) in scripts are
// skipped; /api/<name> resolves to the function file site/api/<name>.mjs.
// node tools/ci/link-check.mjs exit 1 on the first broken link, listing every one
@ -26,6 +26,10 @@ function resolves(target) {
// a literal vercel.json rewrite (no :param) resolves to its destination (/release.json -> /release-manifest.json, 8 October 2026)
const rewrites = Object.fromEntries((JSON.parse(readFileSync(join(site, 'vercel.json'), 'utf8')).rewrites || []).filter(r => !r.source.includes(':')).map(r => [r.source, r.destination]));
const resolvesOrRewritten = (p) => resolves(p) || (rewrites[p.replace(/[?].*$/, '')] != null && resolves(rewrites[p.replace(/[?].*$/, '')]));
// a literal vercel.json redirect (Igneum 2.0 reset, 8 October 2026: /bench -> /evidence, /journey -> /live) resolves to its
// destination, and every link that leans on one is listed below the result so the page that carries it is fixed at source
const vercelRedirects = Object.fromEntries((JSON.parse(readFileSync(join(site, 'vercel.json'), 'utf8')).redirects || []).filter(r => !r.source.includes(':') && !r.has).map(r => [r.source, r.destination]));
const viaRedirect = [];
for (const page of pages) {
const html = readFileSync(join(site, page), 'utf8');
const ids = new Set([...html.matchAll(/\sid="([^"]+)"/g)].map(m => m[1]));
@ -37,7 +41,11 @@ for (const page of pages) {
checked++;
if (t.startsWith('#')) { if (t.length > 1 && !ids.has(t.slice(1))) broken.push(`${page}: fragment ${t}`); continue; }
const [path, frag] = t.split('#');
if (!resolvesOrRewritten(path)) { broken.push(`${page}: ${t}`); continue; }
if (!resolvesOrRewritten(path)) {
const r = vercelRedirects[path.replace(/[?].*$/, '')];
if (r != null && resolvesOrRewritten(r.split('#')[0])) { viaRedirect.push(`${page}: ${t} -> ${r}`); continue; }
broken.push(`${page}: ${t}`); continue;
}
if (frag) {
const rel = path.replace(/[?].*$/, '').replace(/^\//, '');
const file = [join(site, rel), join(site, `${rel}.html`), join(site, rel, 'index.html')].find(c => existsSync(c) && statSync(c).isFile());
@ -47,3 +55,4 @@ for (const page of pages) {
}
if (broken.length) { console.error(`link check: ${broken.length} broken internal link(s) of ${checked}:`); for (const b of broken) console.error(` ${b}`); process.exit(1); }
console.log(`link check: ${checked} internal links across ${pages.length} pages, 0 broken`);
if (viaRedirect.length) { console.log(`link check: ${viaRedirect.length} link(s) resolve only through a vercel.json redirect (fix them at source):`); for (const v of viaRedirect) console.log(` ${v}`); }

View file

@ -13,7 +13,7 @@ const fails = [];
const m = JSON.parse(readFileSync(join(site, 'release-manifest.json'), 'utf8'));
for (const k of ['format', 'generated', 'read_at', 'network', 'source', 'mining', 'finality', 'proving', 'fees', 'versions', 'sources']) if (!(k in m)) fails.push(`manifest: no "${k}" block`);
if (!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/.test(m.generated || '')) fails.push('manifest: "generated" is not an ISO UTC date');
if (m.network?.chain_id !== 4464 || m.network?.chain_id_hex !== '0x1170') fails.push('manifest: Devnet 3 chain id is 4464 (0x1170)');
if (m.network?.chain_id !== 4464 || m.network?.chain_id_hex !== '0x1170') fails.push('manifest: the Igneum 2.0 devnet chain id is 4464 (0x1170)');
if (!/two thirds of active weight and at least two thirds of total weight/.test(m.finality?.statement || '')) fails.push('manifest: the finality statement must say two thirds of active and two thirds of total weight');
if (m.proving?.verifier_in_consensus !== 'off') fails.push('manifest: the verifier is off in consensus (ledger P21) until that row moves');
const dl = JSON.parse(readFileSync(join(site, 'downloads.json'), 'utf8'));

View file

@ -14,7 +14,7 @@ import { fileURLToPath } from 'node:url';
const here = dirname(fileURLToPath(import.meta.url));
const GROUPS = {
mine: ['/miner', '/download', '/app', '/wallet', '/miners', '/dev-fee', '/metamask'],
network: ['/live', '/explorer', '/journey', '/bench', '/evidence', '/light', '/receipt', '/oracle'],
network: ['/live', '/explorer', '/evidence', '/light', '/receipt', '/oracle'],
learn: ['/litepaper', '/income', '/economics', '/ledger', '/claims', '/randomx', '/provenance'],
build: ['/build', '/faucet', '/swap', '/grants'], // the builder programme (8 October 2026): the developer entry page, the Devnet 3 faucet, the swap, the grants
};

View file

@ -1,28 +1,18 @@
#!/usr/bin/env node
// /income (LG-1, 7 October 2026): docs/analysis/income-tiers.md published as a site page. The document is the generator's
// output (tools/launch/income-tiers.mjs, checked on the gate); this script turns its tables and tier lines into
// site/income.html inside the site's shell markers, so the page and the document cannot disagree. Labels on every
// number, no price of IGN anywhere (the page says so). node tools/launch/income-page.mjs [--check]
// /income (LG-1, 7 October 2026; Igneum 2.0 reset 8 October 2026): the calculator page, written into site/income.html
// inside the site's shell markers. The testnet-era tier tables of docs/analysis/income-tiers.md stay in the repository and
// are not served. No price of IGN anywhere (the page says so). node tools/launch/income-page.mjs [--check]
import { readFileSync, writeFileSync } from 'node:fs';
import { fileURLToPath } from 'node:url';
import { dirname, join } from 'node:path';
const here = dirname(fileURLToPath(import.meta.url)), root = join(here, '../..');
const md = readFileSync(join(root, 'docs/analysis/income-tiers.md'), 'utf8');
const esc = (s) => s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
const inline = (s) => esc(s).replace(/\*\*(.+?)\*\*/g, '<b>$1</b>').replace(/`(.+?)`/g, '<code>$1</code>');
const section = (title) => { const i = md.indexOf('## ' + title); if (i < 0) throw new Error('section missing: ' + title); const j = md.indexOf('\n## ', i + 3); return md.slice(i, j < 0 ? md.length : j); };
const table = (text) => { const rows = text.split('\n').filter((l) => l.startsWith('|')); if (rows.length < 3) return ''; const cells = (l) => l.slice(1, -1).split('|').map((c) => c.trim()); const head = cells(rows[0]); const body = rows.slice(2).map(cells); return '<div class="tbl"><table><thead><tr>' + head.map((h, i) => `<th${i ? ' class="num"' : ''}>${inline(h)}</th>`).join('') + '</tr></thead><tbody>' + body.map((r) => '<tr>' + r.map((c, i) => `<td${i >= 2 ? ' class="num"' : ''}>${inline(c)}</td>`).join('') + '</tr>').join('') + '</tbody></table></div>'; };
const paras = (text) => text.split('\n').filter((l) => l.trim() && !l.startsWith('|') && !l.startsWith('#') && !l.startsWith('- ')).map((l) => `<p>${inline(l)}</p>`).join('\n');
const bullets = (text) => { const items = text.split('\n').filter((l) => l.startsWith('- ')); return items.length ? '<ul class="tiers">' + items.map((l) => `<li>${inline(l.slice(2))}</li>`).join('\n') + '</ul>' : ''; };
const sched = section('The schedule the figures use'), cards = section('The cards, measured'), ign = section('IGN a day per card, solo, after the ramp (day 90)'), elec = section('Electricity a day, and the electricity cost of one mined IGN'), means = section('What it means per tier, and what is being done'), owed = section('Owed');
const generated = /Generated by[^\n]*/.exec(md)?.[0] || '';
const html = `<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<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.">
<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 IGN has no value.">
<link rel="canonical" href="https://igneum.network/income">
<!-- head:start -->
<!-- head:end -->
@ -34,46 +24,16 @@ const html = `<!doctype html>
<section class="page-hero"><div class="container">
<div class="breadcrumb"><a href="/">Igneum</a><span>/</span><span>Income</span></div>
<h1>What your card would mine.</h1>
<p class="lead">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. Nobody sells IGN and the project quotes none: devnet and testnet IGN have no value, and the figure is arithmetic on the number you typed.</p>
<p class="lead">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. Nobody sells IGN and the project quotes none: devnet IGN has no value, and the figure is arithmetic on the number you typed.</p>
</div></section>
<section class="section"><div class="container">
<h2>The calculator</h2>
<p>Every card is a measured row of the <a href="/miners">bench table</a>: stock rows as bought, tuned rows at a measured lock or an Ember Tune point, never mixed. The network’s hash rate and the newest block’s DAA score come from the observer every 15 s; the block reward is the chain’s own emission rule at that score (<a href="/economics">the economics page</a> has the rule with its source), and the miner’s share is 80 percent of a block. One block a second.</p>
<div id="income-calc"><p>The calculator needs JavaScript. The tables below carry the same arithmetic at three network sizes.</p></div>
<div id="income-calc"><p>The calculator needs JavaScript.</p></div>
<!-- income-data:start -->
<!-- income-data:end -->
<p class="note">A solo card’s expected income is its share of the network’s hash rate times 86,400 blocks a day times the block reward times 0.8; a pool user gets the same expected amount minus the pool’s fee, with the variance taken out. The electricity line is watts times 24 hours at your price; the money line is IGN a day at the price you typed, electricity taken off. Nothing here is a forecast.</p>
</div></section>
<section class="section"><div class="container">
<h2>The schedule the tables below use</h2>
<p>The tables below are the public testnet’s arithmetic from measured cards; the calculator above reads the live chain, which runs the spec 2.5 schedule the <a href="/economics">economics page</a> states.</p>
${paras(sched)}
${table(sched)}
</div></section>
<section class="section"><div class="container">
<h2>The cards, measured</h2>
${paras(cards)}
${table(cards)}
</div></section>
<section class="section"><div class="container">
<h2>IGN a day per card, solo, after the ramp (day 90)</h2>
${paras(ign)}
${table(ign)}
</div></section>
<section class="section"><div class="container">
<h2>Electricity a day, and the electricity cost of one mined IGN</h2>
${paras(elec)}
${table(elec)}
</div></section>
<section class="section"><div class="container">
<h2>What it means per tier, and what is being done</h2>
${bullets(means)}
</div></section>
<section class="section compact"><div class="container">
<h2>Owed</h2>
${bullets(owed)}
<p class="note">${inline(generated)}</p>
</div></section>
</main>
<!-- footer:start -->
<!-- footer:end -->

View file

@ -20,7 +20,7 @@ SRV=$!
trap 'kill "$SRV" 2>/dev/null || true' EXIT
for i in $(seq 1 40); do curl -fsS "http://127.0.0.1:$PORT/" > /dev/null 2>&1 && break; sleep 0.25; done
curl -fsS "http://127.0.0.1:$PORT/" > /dev/null || { echo "the site did not answer on $PORT" >&2; cat "$OUT/serve.log" >&2; exit 3; }
ROUTES="${ROUTES:-/ /download /miner /app /wallet /live /explorer /journey /bench /evidence /litepaper /income /economics /ledger /claims /randomx /provenance /miners /dev-fee /faucet /metamask /404}"
ROUTES="${ROUTES:-/ /download /miner /app /wallet /live /explorer /evidence /litepaper /income /economics /ledger /claims /randomx /provenance /miners /dev-fee /faucet /metamask /404}"
WIDTHS="${WIDTHS:-390 1440}"; THEMES="${THEMES:-dark light}"
shot() { # <route> <width> <theme>
local route="$1" width="$2" theme="$3" name height