Oracle for the 2.0 devnet on Sepolia (0xbb345004…, statements with chain id 4465, on the shared verifier); /oracle says the shared verifier's installed table is Devnet 3's until devnet-4's lands

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
igneum-labs 2026-10-08 16:54:21 +00:00
parent 7e283234b3
commit 2ae01dd408
3 changed files with 42 additions and 25 deletions

View file

@ -260,7 +260,7 @@
<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 chain id 4463 or 4464 (the earlier devnet it was deployed against; a redeploy against the 2.0 devnet, chain id 4465, is owed).</small></div>
<div class="k">Oracle</div><div class="mono" data-oracle-address>0xbb3450049926da3572e6b67cb94df312fe349e34 <small>IgneumStateOracle for the 2.0 devnet (igneum-devnet-4, statements with chain id 4465), deployed 8 October 2026 on the shared verifier (tx 0x5eb08f3a…a5a9, block 11871485). The Devnet 3 oracles stay as deployed with their records: 0x3ad71d46…3ab6 (chain ids 4463 and 4464, on the shared verifier) and 0xefe9879d…a1b2 (the stand-in verifier at first).</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; 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>
@ -277,7 +277,7 @@
<li>Every read: a keccak-keyed Merkle Patricia proof against the stored root, verified on chain.</li>
</ol>
<div class="trust"><h3>Trust anchors and unchecked signatures, named (also returned by the contract's <code>trust()</code>)</h3><ul>
<li><b>Deployer-installed trust anchor, disclosed, not removed:</b> the shared verifier's voter table. It stays because no header field commits to the table yet; the day one does, the table is read from the chain and this anchor goes.</li>
<li><b>Deployer-installed trust anchor, disclosed, not removed:</b> the shared verifier's voter table. It stays because no header field commits to the table yet; the day one does, the table is read from the chain and this anchor goes. The table installed today is Devnet 3's (checkpoint 2127, chain id igneum-devnet-3): a 2.0 devnet certificate is not recordable through it until its deployer installs devnet-4's table; the roots and certificate recorded below are Devnet 3's.</li>
<li>The voter table and weights the shared verifier checks certificates against were installed by the verifier's deployer (read from a node at checkpoint 2127), not read from the chain. A certificate is verified against that installed table; a later table that drifts past the rule's margin needs a new install by that deployer.</li>
<li>The aggregator's BLS signature over the segment record is not checked on chain, and the SP1 proof behind its statement is not verified on chain. A stored root rests on the aggregator's statement as the nodes check and pay it.</li>
<li>A balance read from a stored root is executed and finalised state under those assumptions, not a payment outcome.</li>

View file

@ -29,13 +29,15 @@ async function deploy(name, args) {
const oracleOnly = process.argv.includes('--oracle-only');
// --verifier 0x..: construct the oracle on that verifier (the shared IgneumCertificateVerifier) instead of the stub
const vi = process.argv.indexOf('--verifier'); const verifierArg = vi > 0 ? process.argv[vi + 1] : null;
// --chain-ids A,B: the statement chain ids the oracle accepts (Devnet 3: 4463,4464; the 2.0 devnet igneum-devnet-4: 4465,4465)
const ci = process.argv.indexOf('--chain-ids'); const chainIds = ci > 0 ? process.argv[ci + 1].split(',').map(Number) : [EVM_CHAIN_ID, EVM_CHAIN_ID_AFTER_FLOOR];
const previous = existsSync(out) ? deployment() : null;
const stub = oracleOnly && previous ? previous.stub : await deploy('StubCertificateVerifier', []);
const oracle = await deploy('IgneumStateOracle', [verifierArg || stub.address, EVM_CHAIN_ID, EVM_CHAIN_ID_AFTER_FLOOR]);
const oracle = await deploy('IgneumStateOracle', [verifierArg || stub.address, chainIds[0], chainIds[1] ?? chainIds[0]]);
const after = await pub.getBalance({ address: account.address });
const d = {
network: 'sepolia', chainId: 11155111, rpc: 'https://ethereum-sepolia-rpc.publicnode.com', deployer: account.address,
evmChainId: EVM_CHAIN_ID, evmChainIdAfterFloor: EVM_CHAIN_ID_AFTER_FLOOR, verifier: verifierArg || 'stub', verifierAddress: verifierArg || stub.address, stub, oracle, deployedAt: new Date().toISOString(), spentWei: (bal - after).toString(),
evmChainId: chainIds[0], evmChainIdAfterFloor: chainIds[1] ?? chainIds[0], verifier: verifierArg || 'stub', verifierAddress: verifierArg || stub.address, stub, oracle, deployedAt: new Date().toISOString(), spentWei: (bal - after).toString(),
previous: previous ? [...(previous.previous || []), { stub: previous.stub, oracle: previous.oracle, deployedAt: previous.deployedAt, writes: previous.writes || [] }] : [],
};
writeFileSync(out, JSON.stringify(d, null, 1) + '\n');

View file

@ -3,8 +3,8 @@
"chainId": 11155111,
"rpc": "https://ethereum-sepolia-rpc.publicnode.com",
"deployer": "0xe1D08384ef4c4c1511c8f05F94C914C4DeDc2787",
"evmChainId": 4463,
"evmChainIdAfterFloor": 4464,
"evmChainId": 4465,
"evmChainIdAfterFloor": 4465,
"verifier": "0xAf74f3F512081291D663Bb1d6b6d37E99e37D744",
"verifierAddress": "0xAf74f3F512081291D663Bb1d6b6d37E99e37D744",
"stub": {
@ -14,13 +14,13 @@
"gasUsed": 8434842
},
"oracle": {
"address": "0x3ad71d4660d8a8d2f92248b9c286392dd76a3ab6",
"tx": "0x16312cf8177eb79c28858d79509ea56376cefb94e09fb1872bfea018df734e2a",
"block": 11870855,
"address": "0xbb3450049926da3572e6b67cb94df312fe349e34",
"tx": "0x5eb08f3aadfbcec8e6eeccf5349278e1c5eeba27c08d6150aa2fdbd0395ca5a9",
"block": 11871485,
"gasUsed": 20561543
},
"deployedAt": "2026-10-08T14:47:15.139Z",
"spentWei": "20561810300059",
"deployedAt": "2026-10-08T16:53:26.556Z",
"spentWei": "20561871984688",
"previous": [
{
"stub": {
@ -165,21 +165,36 @@
"headers": 6
}
]
}
],
"writes": [
},
{
"at": "2026-10-08T14:47:39.502Z",
"what": "submitStateRoot",
"vector": "devnet-3",
"number": "28439",
"postRoot": "0x6e6d2fc8993db13220d84f39ca9cbc08a8c6975ce2932a4289a1d6ef4cef60c8",
"certIndex": "2232",
"tx": "0xcdb24dbceb5b1c5f4605842809228428c59bd73291a0114e555df74c57dee5fc",
"block": 11870857,
"gasUsed": 1624984,
"calldataBytes": 24391,
"headers": 6
"stub": {
"address": "0xa197ef31d5d5613125779179668e2482ac69a6f6",
"tx": "0xa01091b62dfb4a89b25afb57a3d384677a9ad62370748504d2b3f288c0d3ad38",
"block": 11869583,
"gasUsed": 8434842
},
"oracle": {
"address": "0x3ad71d4660d8a8d2f92248b9c286392dd76a3ab6",
"tx": "0x16312cf8177eb79c28858d79509ea56376cefb94e09fb1872bfea018df734e2a",
"block": 11870855,
"gasUsed": 20561543
},
"deployedAt": "2026-10-08T14:47:15.139Z",
"writes": [
{
"at": "2026-10-08T14:47:39.502Z",
"what": "submitStateRoot",
"vector": "devnet-3",
"number": "28439",
"postRoot": "0x6e6d2fc8993db13220d84f39ca9cbc08a8c6975ce2932a4289a1d6ef4cef60c8",
"certIndex": "2232",
"tx": "0xcdb24dbceb5b1c5f4605842809228428c59bd73291a0114e555df74c57dee5fc",
"block": 11870857,
"gasUsed": 1624984,
"calldataBytes": 24391,
"headers": 6
}
]
}
]
}