From dda5dedf44c3c79601d020bb41469a501d53a030 Mon Sep 17 00:00:00 2001 From: igneum-labs <337424239+igneum-labs@users.noreply.github.com> Date: Thu, 8 Oct 2026 15:40:33 +0000 Subject: [PATCH] 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 --- docs/build/README.md | 8 +- docs/build/build.md | 32 +- docs/build/faucet.md | 9 +- docs/build/first-contract.md | 16 +- docs/build/grants.md | 8 +- docs/build/rpc.md | 10 +- docs/provenance.md | 10 +- site/404.html | 22 +- site/address.html | 39 +- site/app.html | 72 +- site/bench.html | 1092 --------------------------- site/block.html | 33 +- site/build.html | 34 +- site/build.mjs | 160 +--- site/claims.html | 19 +- site/dev-fee.html | 23 +- site/download.html | 20 +- site/economics.html | 56 +- site/evidence.html | 19 +- site/explorer.html | 53 +- site/faucet.html | 46 +- site/grants.html | 29 +- site/income-calc.js | 6 +- site/income.html | 67 +- site/index.html | 31 +- site/journey.html | 376 --------- site/journey.json | 254 ------- site/ledger.html | 19 +- site/light.html | 40 +- site/litepaper.html | 21 +- site/live.html | 19 +- site/metamask.html | 69 +- site/miner-bench.json | 240 ++---- site/miner.html | 51 +- site/miners.html | 52 +- site/og/pages.mjs | 33 +- site/oracle.html | 52 +- site/partials/footer.html | 5 +- site/partials/nav.html | 14 +- site/partials/terms.html | 2 +- site/provenance.html | 23 +- site/proving.html | 39 +- site/randomx.html | 19 +- site/receipt.html | 34 +- site/release-manifest.json | 33 +- site/scenes.html | 19 +- site/site.css | 2 + site/sitemap.xml | 2 - site/swap.html | 71 +- site/tx.html | 39 +- site/vercel.json | 24 +- site/wallet.html | 26 +- tools/ci/link-check.mjs | 13 +- tools/ci/release-manifest-check.mjs | 2 +- tools/ci/site-nav-check.mjs | 2 +- tools/launch/income-page.mjs | 52 +- tools/site/capture.sh | 2 +- 57 files changed, 667 insertions(+), 2896 deletions(-) delete mode 100644 site/bench.html delete mode 100644 site/journey.html delete mode 100644 site/journey.json diff --git a/docs/build/README.md b/docs/build/README.md index 4789d31fa..5133a9999 100644 --- a/docs/build/README.md +++ b/docs/build/README.md @@ -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. diff --git a/docs/build/build.md b/docs/build/build.md index 64f153607..0e312f2e4 100644 --- a/docs/build/build.md +++ b/docs/build/build.md @@ -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. diff --git a/docs/build/faucet.md b/docs/build/faucet.md index d98163047..c346b9ccc 100644 --- a/docs/build/faucet.md +++ b/docs/build/faucet.md @@ -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. diff --git a/docs/build/first-contract.md b/docs/build/first-contract.md index afa2c39f7..3acad5e96 100644 --- a/docs/build/first-contract.md +++ b/docs/build/first-contract.md @@ -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 ``` diff --git a/docs/build/grants.md b/docs/build/grants.md index a9d8c5865..c4136d156 100644 --- a/docs/build/grants.md +++ b/docs/build/grants.md @@ -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. diff --git a/docs/build/rpc.md b/docs/build/rpc.md index f6dc6d079..d04e2337b 100644 --- a/docs/build/rpc.md +++ b/docs/build/rpc.md @@ -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//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. diff --git a/docs/provenance.md b/docs/provenance.md index 2b8fda547..77906d097 100644 --- a/docs/provenance.md +++ b/docs/provenance.md @@ -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 | diff --git a/site/404.html b/site/404.html index 90993fbd8..de511b685 100644 --- a/site/404.html +++ b/site/404.html @@ -4,7 +4,7 @@ Page not found. Igneum - + @@ -77,7 +77,7 @@ main{flex:1} IGNEUM - devnet + Igneum 2.0 devnet starting @@ -150,12 +148,10 @@ main{flex:1}
Learn
LitepaperThe design, as published. @@ -169,7 +165,7 @@ main{flex:1}
@@ -234,7 +230,6 @@ main{flex:1}
  • The minerOne click, and your card mines
  • LitepaperHow the chain works, in 19 sections
  • Live devnetBlocks, miners and finality as they happen
  • -
  • Engineering logEvery measurement, with the commands
  • EvidenceEvery claim and how far it is tested
  • @@ -242,6 +237,7 @@ main{flex:1}