{
  "schema": "aere-verifiable-claims/1",
  "title": "Aere Network machine-verifiable claim layer",
  "canonicalUrl": "https://aere.network/verifiable-claims.json",
  "generatedAt": "2026-08-05",
  "chainId": 2800,
  "chainIdHex": "0xaf0",
  "measuredAtBlock": 12469045,
  "readThisFirst": [
    "Every claim in the `claims` array below was executed against the live public endpoints on the date in its `lastMeasured` field, before this file was written. Nothing here is asserted from documentation or memory.",
    "Each claim carries `proves` and `doesNotProve`. The second field is the load-bearing one. A claim whose limits are not stated is marketing, not evidence.",
    "`notClaimed` lists what Aere does NOT assert, with the measurement or public fact that forces the restraint. Read it before believing anything above it.",
    "This file is designed to be run, not read. Copy any `verify.body` into any JSON-RPC client and compare against `verify.expect`. No wallet, no key, no gas, no account, no permission from us."
  ],
  "transport": {
    "endpoints": [
      "https://rpc.aere.network",
      "https://rpc2.aere.network"
    ],
    "note": "Both endpoints answered every check in this file identically. They are two public read endpoints operated by the Aere Foundation; they are NOT independent parties and must not be read as a second opinion.",
    "knownObstacle": "The CDN in front of both the RPC and the website returns HTTP 403 to the default Python `urllib` User-Agent (measured 2026-08-05: `Python-urllib/3.14` -> 403, while curl, python-requests, Go, node-fetch, GPTBot, ClaudeBot and PerplexityBot all -> 200). If you script these checks with urllib, set any User-Agent header or the checks will fail for a reason that has nothing to do with the chain.",
    "unknownPathsSoft404": "Unknown paths on aere.network return HTTP 200 with the HTML homepage, not a 404. Check `content-type: application/json` before parsing, or you will parse a web page."
  },
  "claims": [
    {
      "id": "chain-identity",
      "claim": "A public blockchain answers at rpc.aere.network with chain ID 2800 and reports itself as a Hyperledger Besu node.",
      "verify": {
        "method": "POST",
        "url": "https://rpc.aere.network",
        "headers": {
          "content-type": "application/json"
        },
        "body": {
          "jsonrpc": "2.0",
          "method": "eth_chainId",
          "params": [],
          "id": 1
        },
        "expect": {
          "result": "0xaf0"
        },
        "alsoRun": [
          {
            "body": {
              "jsonrpc": "2.0",
              "method": "net_version",
              "params": [],
              "id": 1
            },
            "expect": {
              "result": "2800"
            }
          },
          {
            "body": {
              "jsonrpc": "2.0",
              "method": "web3_clientVersion",
              "params": [],
              "id": 1
            },
            "expectContains": "besu/"
          },
          {
            "body": {
              "jsonrpc": "2.0",
              "method": "eth_syncing",
              "params": [],
              "id": 1
            },
            "expect": {
              "result": false
            }
          }
        ]
      },
      "proves": "An EVM JSON-RPC endpoint exists, is reachable, self-reports chain ID 2800, and is not syncing.",
      "doesNotProve": "Nothing about decentralization, security, or who controls the node. A single machine can answer all of this.",
      "lastMeasured": "2026-08-05"
    },
    {
      "id": "block-interval",
      "claim": "The mean interval between blocks over the most recent 100,000 blocks is 0.524 seconds.",
      "verify": {
        "method": "POST",
        "url": "https://rpc.aere.network",
        "procedure": "Fetch the latest block header and the header 100,000 blocks earlier, then divide the timestamp difference by 100,000.",
        "body": {
          "jsonrpc": "2.0",
          "method": "eth_getBlockByNumber",
          "params": [
            "latest",
            false
          ],
          "id": 1
        },
        "then": {
          "jsonrpc": "2.0",
          "method": "eth_getBlockByNumber",
          "params": [
            "<latest minus 100000, hex>",
            false
          ],
          "id": 1
        },
        "expect": "(t_latest - t_older) / 100000 is between 0.50 and 0.55",
        "measured": {
          "window_1000_blocks": "523 s total, 0.523 s per block",
          "window_100000_blocks": "52361 s total, 0.524 s per block",
          "window_1000000_blocks": "642738 s total, 0.643 s per block",
          "window_100000_blocks_remeasured_2026-08-05": "52360 s total, 0.5236 s per block, at head 12,469,045"
        },
        "theseBlocksAreEmpty": "Measured 2026-08-05 at head 12,469,045: 120 headers sampled evenly across the most recent 3,000 blocks contained 0 transactions in total, and every sampled header reported gasUsed 0x0. Producing empty blocks on a half-second timer is cheap. Read this number as a heartbeat, not as performance."
      },
      "proves": "Block headers are produced at roughly half-second intervals, sustained over a 100,000-block window.",
      "doesNotProve": "Nothing about throughput and nothing about behaviour under load. The sampled blocks are EMPTY: 0 transactions across 120 sampled headers. This measures a timer, not a system doing work. It is also not a finality guarantee under adversarial conditions. The 1,000,000-block window averages 0.643 s because it reaches back across a period of degraded operation.",
      "lastMeasured": "2026-08-05"
    },
    {
      "id": "qbft-validator-set-from-header",
      "claim": "The QBFT validator set is 7 addresses, and each block header carries 5 committed seals of 65 bytes, which is the 5-of-7 quorum. The set and the seal count are readable from any block header without trusting any Aere-published document.",
      "verify": {
        "method": "POST",
        "url": "https://rpc.aere.network",
        "body": {
          "jsonrpc": "2.0",
          "method": "eth_getBlockByNumber",
          "params": [
            "latest",
            false
          ],
          "id": 1
        },
        "procedure": "RLP-decode the `extraData` field of the returned header. It is a 5-item QBFT list: [vanityData(32 bytes), validators(list of 20-byte addresses), vote, round, committedSeals(list of 65-byte signatures)]. Count item 1 and item 4.",
        "expect": {
          "validators_count": 7,
          "committedSeals_count": 5,
          "each_seal_bytes": 65
        },
        "measuredValidatorSet": [
          "0x4bf6f91d84b37454544279cba152581ed6820044",
          "0x5f50fc4e1b129bbd5e6e9f80c57680b0b4a86eb0",
          "0x97473985d04723299559f49b856effb47d7abfad",
          "0xb5e768cb3117ea25175f51aa956b48691025c2a8",
          "0xc3314fd768bb68b986e80c0a14175f6f72630d7a",
          "0xe13aa491abbc1252dd714e7ca0e55717a2143eaf",
          "0xf73bbbd26a82dbc769066550d8d4585eab2fc00d"
        ],
        "sampledEvidence": "100 headers sampled across the most recent 400 blocks: 100 of 100 carried exactly 5 committed seals, all 100 carried the identical 7-address validator set, and all 7 addresses appeared as block proposer (14 or 15 blocks each), which is the QBFT round-robin.",
        "note": "The JSON-RPC method `qbft_getValidatorsByChainHead` is NOT exposed on the public endpoints (it returns -32601 Method not found). The header decode above is the method that works for an outsider, and it is strictly better: it reads consensus data out of the signed block rather than asking a node to describe itself."
      },
      "proves": "Exactly 7 validators are encoded in the header, 5 distinct 65-byte committed seals accompany each block, and block production rotates across all 7. The quorum is therefore observable, not asserted.",
      "doesNotProve": "Does NOT prove the 7 keys are held by 7 independent parties. They are all operated by the Aere Foundation, so the effective Nakamoto coefficient is 1, not 7. It also does not prove f=2; f=2 is arithmetic implied by n=7, not a separate measurement. It does not verify the seal signatures themselves; to do that, recover the signers with ecrecover over the QBFT commit payload and check they are members of the set above.",
      "lastMeasured": "2026-08-05"
    },
    {
      "id": "pqc-precompiles-declared",
      "claim": "The node declares five Aere post-quantum precompiles at addresses 0x0AE1 through 0x0AE5, and does not declare 0x0AE6 or 0x0AE7.",
      "verify": {
        "method": "POST",
        "url": "https://rpc.aere.network",
        "body": {
          "jsonrpc": "2.0",
          "method": "eth_config",
          "params": [],
          "id": 1
        },
        "expect": {
          "result.current.chainId": "0xaf0",
          "result.current.activationTime": 1783820272,
          "result.current.forkId": "0xce69e400",
          "result.current.precompiles.AereFalcon512": "0x0000000000000000000000000000000000000ae1",
          "result.current.precompiles.AereFalcon1024": "0x0000000000000000000000000000000000000ae2",
          "result.current.precompiles.AereMLDSA44": "0x0000000000000000000000000000000000000ae3",
          "result.current.precompiles.AereSLHDSA128s": "0x0000000000000000000000000000000000000ae4",
          "result.current.precompiles.AereSHAKE256": "0x0000000000000000000000000000000000000ae5",
          "absent": [
            "AereMLKEM (0x0AE6)",
            "AereHashToPoint (0x0AE7)"
          ]
        }
      },
      "proves": "The running client declares these precompiles as part of the active fork configuration.",
      "doesNotProve": "A declaration is a node describing itself. It does not prove the code executes. That is proved separately by `pqc-precompiles-execute` below, which does not trust this answer.",
      "lastMeasured": "2026-08-05"
    },
    {
      "id": "shake256-nist-kat",
      "claim": "The precompile at 0x0AE5 returns the exact NIST SHAKE256 digest of the empty message, 32 bytes of output.",
      "verify": {
        "method": "POST",
        "url": "https://rpc.aere.network",
        "body": {
          "jsonrpc": "2.0",
          "method": "eth_call",
          "params": [
            {
              "to": "0x0000000000000000000000000000000000000AE5",
              "data": "0x0000000000000000000000000000000000000000000000000000000000000020"
            },
            "latest"
          ],
          "id": 1
        },
        "expect": {
          "result": "0x46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762f"
        },
        "independentControl": "Compute the same value locally with any SHAKE256 implementation and compare. In Python: `hashlib.shake_256(b'').hexdigest(32)`. This was run locally on 2026-08-05 and matched byte for byte. The point of the control is that the expected answer is fixed by NIST, not by us, so we cannot have chosen it to fit.",
        "bothEndpoints": "rpc.aere.network and rpc2.aere.network both returned this value."
      },
      "proves": "0x0AE5 computes SHAKE256 correctly against a NIST-fixed known-answer test that Aere did not choose and cannot influence.",
      "doesNotProve": "SHAKE256 is a hash function, not a signature scheme, and it is not post-quantum cryptography by itself. It is the extendable-output function the lattice and hash-based schemes are built on. This proves one primitive is correct; it says nothing about the signature verifiers.",
      "lastMeasured": "2026-08-05"
    },
    {
      "id": "pqc-precompiles-execute",
      "claim": "The post-quantum precompiles consume gas, which is positive proof that code executes at those addresses rather than the addresses merely being empty.",
      "verify": {
        "method": "POST",
        "url": "https://rpc.aere.network",
        "procedure": "Install a small gas-measuring probe at an unused address with an eth_call state override and read the gas consumed by one STATICCALL to the target. No deployment, no wallet, no gas paid. The program is: GAS; STATICCALL(gas=0x0f4240, target, args 0..32, ret 0..32); POP; GAS; SWAP1; SUB; PUSH1 0; MSTORE; RETURN 32.",
        "body": {
          "jsonrpc": "2.0",
          "id": 1,
          "method": "eth_call",
          "params": [
            {
              "to": "0x000000000000000000000000000000000000b0b0",
              "data": "0x3333333333333333333333333333333333333333333333333333333333333333",
              "gas": "0x1c9c380"
            },
            "latest",
            {
              "0x000000000000000000000000000000000000b0b0": {
                "code": "0x366000600037600061a0005260006000600060006000730000000000000000000000000000000000000ae1612710f1505a6120006180003660006000730000000000000000000000000000000000000ae16305f5e100f1505a900360005260206000f3"
              }
            }
          ]
        },
        "calibrateFirst": "Point the same probe at the IDENTITY precompile 0x04, whose cost the EVM specification fixes at 15 + 3*ceil(len/32) = 18 gas for this 32-byte input. It must read exactly 18 above the codeless control. Measured: 0x8e (142) versus control 0x7c (124). The probe is therefore calibrated against a cost Aere does not control.",
        "negativeControl": "Retarget the same probe at 0x..dead, an address with no code: 2625 raw, 0 above control. Retarget it at 0x04, whose cost the specification fixes: 18 above its own overhead. The probe therefore reads zero where it should and lands exactly where a third party has already written down the answer.",
        "measured": {
          "probeOverhead_warmPrecompile_0x01_to_0x09": 125,
          "probeOverhead_coldAddress": 2625,
          "control_codeless_0xdead": {
            "rawGas": 2625,
            "aboveControl": 0
          },
          "0x0AE1_Falcon512": {
            "rawGas": 42625,
            "aboveControl": 40000
          },
          "0x0AE2_Falcon1024": {
            "rawGas": 77625,
            "aboveControl": 75000
          },
          "0x0AE3_MLDSA44": {
            "rawGas": 57625,
            "aboveControl": 55000
          },
          "0x0AE4_SLHDSA128s": {
            "rawGas": 352625,
            "aboveControl": 350000
          },
          "0x0AE5_SHAKE256": {
            "rawGas": 2685,
            "aboveControl": 60,
            "note": "cost scales with requested output length, so this is the price for this specific 32-byte probe input, not a fixed per-call price"
          },
          "0x0AE6": {
            "rawGas": 2625,
            "aboveControl": 0
          },
          "0x0AE7": {
            "rawGas": 2625,
            "aboveControl": 0
          },
          "readThis": "Raw figures include the probe's own overhead, which differs between a warm precompile address (0x01 to 0x09, access cost 100) and any cold address (access cost 2600). Compare a target only against a control of the same warmth. That is why the codeless control for 0x0AE6 is 0x..dead and not 0x04."
        },
        "bothEndpoints": "Every figure above was identical on rpc.aere.network and rpc2.aere.network.",
        "probeCode": "0x5a6020600060206000 73<TARGET-20-BYTES> 620f4240 fa 50 5a 9003 600052 60206000f3 -- remove the spaces and substitute the 20-byte target address. There is exactly ONE address literal in this program, so there is nothing to substitute twice and nothing to get half right.",
        "calibration": {
          "why": "A differential probe is worthless until you show what it can resolve. Two precompile costs are fixed by the EVM specification and not by Aere, so they are the calibrants.",
          "identity_0x04": {
            "rawGas": 143,
            "minusProbeOverhead_125": 18,
            "specRequires": 18,
            "agrees": true
          },
          "sha256_0x02": {
            "rawGas": 197,
            "minusProbeOverhead_125": 72,
            "specRequires": 72,
            "agrees": true
          },
          "conclusion": "The probe resolves a single unit of gas. Two independent spec-fixed values land exactly, so a difference of 1 gas would be visible."
        },
        "absenceArgument": {
          "weakForm": "0x0AE6 and 0x0AE7 consume 0 gas above a codeless control.",
          "whyThatIsNotProof": "Zero above control is CONSISTENT with absence, but a hypothetical precompile that charged nothing would read identically. Revision 1 of this file called the zero result proof of absence. That was an overstatement and it is withdrawn here. A cost measurement cannot prove a negative.",
          "strongForm": "eth_config is the node enumerating its own active precompile set. Measured 2026-08-05 it returns 23 entries: the 9 Ethereum precompiles, 7 BLS12-381 operations, KZG point evaluation, P256VERIFY at 0x100, and exactly five Aere entries, AereFalcon512 0x0AE1, AereFalcon1024 0x0AE2, AereMLDSA44 0x0AE3, AereSLHDSA128s 0x0AE4 and AereSHAKE256 0x0AE5. There is no entry at 0x0AE6 or at 0x0AE7.",
          "residualHonesty": "eth_config is still the node describing itself. Absence is asserted from a self-report that agrees with a cost measurement, which is the strongest statement available over a read-only interface. It is weaker than the positive claims in this file and it is labelled weaker on purpose."
        }
      },
      "proves": "Code executes at 0x0AE1 through 0x0AE5 on the live chain, at gas costs that are constants in the client source and can be read there. The probe is calibrated against two costs Aere does not control.",
      "doesNotProve": "Gas consumption proves execution, not correctness: it does not show the verifiers accept valid signatures and reject invalid ones. It also does NOT prove 0x0AE6 and 0x0AE7 are absent, only that they cost nothing. See absenceArgument.",
      "lastMeasured": "2026-08-05"
    },
    {
      "id": "pqc-historical-receipts",
      "claim": "Nine transactions that exercise Aere's post-quantum and zero-knowledge contracts are recorded on chain 2800 with receipt status success.",
      "verify": {
        "method": "POST",
        "url": "https://rpc.aere.network",
        "body": {
          "jsonrpc": "2.0",
          "method": "eth_getTransactionReceipt",
          "params": [
            "0x3a1838deb9f1b4b26f7af5ef1b4609a8aea77a3ebe654e38151caeadfff4fd5c"
          ],
          "id": 1
        },
        "expect": {
          "result.status": "0x1",
          "result.blockNumber": "0x854e65",
          "result.gasUsed": "0xa01ee7"
        },
        "allNine": [
          {
            "tx": "0x3a1838deb9f1b4b26f7af5ef1b4609a8aea77a3ebe654e38151caeadfff4fd5c",
            "block": 8735205,
            "gasUsed": 10492455,
            "status": "0x1",
            "what": "Falcon-512 verify-and-record"
          },
          {
            "tx": "0xcd1350372f0a61e26e8a3228da599be9211839f378eef0ea49f2025a20920660",
            "block": 9200532,
            "gasUsed": 1386367,
            "status": "0x1",
            "what": "PQC precompile attestation"
          },
          {
            "tx": "0x-see-claim-evidence.json",
            "note": "the remaining seven are enumerated in https://aere.network/claim-evidence.json and all nine were re-run on 2026-08-05; 9 of 9 returned status 0x1"
          }
        ],
        "whyReceiptsAndNotState": "Historical account state is pruned after 512 blocks on these endpoints, so a historical eth_call will NOT work and eth_getBalance at an old block returns null. Receipts are retained for full history. Any verification recipe that asks you to eth_call an old block is broken by design; this one is not."
      },
      "proves": "These transactions were included and executed successfully at the stated blocks. The precompile attestation at block 9,200,532 could not have succeeded on a chain without the precompile, because a staticcall to an absent precompile returns empty data and that contract reverts unless it receives a valid 32-byte result.",
      "doesNotProve": "A successful receipt proves execution did not revert. It does not prove the cryptographic content was meaningful, and it does not prove the input signatures were genuine NIST vectors rather than values chosen by the sender.",
      "lastMeasured": "2026-08-05"
    },
    {
      "id": "evm-opcode-parity",
      "claim": "The Cancun opcode set executes on chain 2800: PUSH0 (EIP-3855), TSTORE/TLOAD (EIP-1153), MCOPY (EIP-5656), BLOBHASH (EIP-4844) and BLOBBASEFEE (EIP-7516) all run rather than failing as invalid opcodes.",
      "verify": {
        "method": "POST",
        "url": "https://rpc.aere.network",
        "procedure": "Run handwritten bytecode through an eth_call state override at any unused address. No deployment, no gas, no wallet. This is stronger than calling an Aere-deployed 'canary' contract, because you supply the bytecode yourself and we cannot have special-cased it.",
        "probes": [
          {
            "eip": "EIP-3855 PUSH0",
            "code": "0x602a5f52602 05ff3",
            "codeClean": "0x602a5f5260205ff3",
            "expect": "0x...2a"
          },
          {
            "eip": "EIP-1153 TSTORE/TLOAD",
            "codeClean": "0x604260015d60015c60005260206000f3",
            "expect": "0x...42"
          },
          {
            "eip": "EIP-5656 MCOPY",
            "codeClean": "0x6042602052602060206000 5e60206000f3",
            "expect": "0x...42"
          },
          {
            "eip": "EIP-7516 BLOBBASEFEE",
            "codeClean": "0x4a60005260206000f3",
            "expect": "executes, returns 0x0 in an eth_call context"
          },
          {
            "eip": "EIP-4844 BLOBHASH",
            "codeClean": "0x60004960005260206000f3",
            "expect": "executes, returns 0x0 in an eth_call context"
          },
          {
            "eip": "EIP-1344 CHAINID",
            "codeClean": "0x4660005260206000f3",
            "expect": "0x...af0 = 2800"
          }
        ],
        "bodyTemplate": {
          "jsonrpc": "2.0",
          "id": 1,
          "method": "eth_call",
          "params": [
            {
              "to": "0x00000000000000000000000000000000000000c0",
              "data": "0x"
            },
            "latest",
            {
              "0x00000000000000000000000000000000000000c0": {
                "code": "<codeClean from the probe above>"
              }
            }
          ]
        },
        "negativeControl": "This is the control that makes the zero-returning probes meaningful. Substitute an undefined opcode (0x0c, 0x21 or 0xa5) into the same template. Measured 2026-08-05, all three returned an explicit error: `Transaction processing could not be completed due to an exception (Invalid opcode: 0x0c)`. Because undefined opcodes produce a loud, distinguishable failure, a probe that returns 0x0 WITHOUT that error has genuinely executed. Without this control, 'BLOBBASEFEE returned zero' would prove nothing at all.",
        "measured": {
          "PUSH0": "0x2a on both endpoints",
          "TSTORE_TLOAD": "0x42 on both endpoints",
          "MCOPY": "0x42 on both endpoints",
          "CHAINID": "2800 on both endpoints",
          "BLOBBASEFEE/BLOBHASH/BASEFEE": "executed, returned 0x0, no Invalid-opcode error",
          "undefined_0x0c/0x21/0xa5": "Invalid opcode error, as required"
        }
      },
      "proves": "The execution layer implements the Cancun opcode set, demonstrated with bytecode the verifier writes rather than bytecode Aere deployed.",
      "doesNotProve": "Opcode availability is EVM parity, not performance and not security. BLOBBASEFEE and BLOBHASH returning zero in an eth_call is expected and says nothing about blob support in real transactions.",
      "lastMeasured": "2026-08-05"
    },
    {
      "id": "rip7951-p256",
      "claim": "The secp256r1 (P-256) signature verification precompile at 0x100 accepts a valid signature and rejects a tampered one.",
      "verify": {
        "method": "POST",
        "url": "https://rpc.aere.network",
        "procedure": "Generate your own P-256 key and signature so the vector is yours, not ours. Build the 160-byte input as sha256(msg) || r || s || pubkeyX || pubkeyY, with s normalised to the low half of the curve order as RIP-7951 requires. Call 0x100 with it. Then flip one byte and call again.",
        "body": {
          "jsonrpc": "2.0",
          "method": "eth_call",
          "params": [
            {
              "to": "0x0000000000000000000000000000000000000100",
              "data": "0x<160 bytes>"
            },
            "latest"
          ],
          "id": 1
        },
        "expect": {
          "validSignature": "0x0000000000000000000000000000000000000000000000000000000000000001",
          "tamperedSignature": "0x (empty)"
        },
        "measuredWithFreshlyGeneratedVector": {
          "input": "0xe95d0000243065443013dbfeec25d3213daacc841e3d9ede764b9bb907884ef016b1b934f9cae0a05a657592b2ad87764dbb72f8db08347c1cd4fd275a9eb8e42c6356dc5d31c1fa2607f30d7e6b83bcc98fab0a681a8160aead6e1273c3fbe51ccbe91c075fc7f4f033bfa248db8fccd3565de94bbfb12f3c59ff46c271bf83ce4014c68811f9a21a1fdb2c0e6113e06db7ca93b7404e78dc7ccd5ca89a4ca9",
          "valid": "0x...01",
          "tampered": "0x"
        },
        "note": "The signature above was generated locally on 2026-08-05 with a key Aere generated for this test. Do not trust it; generate your own. The check is only meaningful if the vector is yours."
      },
      "proves": "0x100 performs real P-256 verification with a working accept path and a working reject path. Both controls fire.",
      "doesNotProve": "Classical elliptic-curve cryptography, not post-quantum. P-256 is broken by a cryptographically relevant quantum computer exactly as secp256k1 is. It is listed here as EVM parity evidence, not as quantum resistance.",
      "lastMeasured": "2026-08-05"
    },
    {
      "id": "contracts-have-code",
      "claim": "The contract addresses Aere publishes contain deployed bytecode of the stated size and hash on chain 2800.",
      "verify": {
        "method": "POST",
        "url": "https://rpc.aere.network",
        "body": {
          "jsonrpc": "2.0",
          "method": "eth_getCode",
          "params": [
            "0x4E8e9682329e646784fB3bd01430aA4bA54D8fFC",
            "latest"
          ],
          "id": 1
        },
        "procedure": "Fetch the code and take keccak256 of the returned bytes. Compare to `keccakCode` below.",
        "measured": [
          {
            "name": "AereFeeBurnVault",
            "address": "0x696afDF4f814e6Fd6aa45CE14C498ed9375fB2c6",
            "codeBytes": 1313,
            "keccakCode": "0x35c9591e2d8f3510cdad371eac09abd1820b91dfff7befafe445ebf94761b365"
          },
          {
            "name": "AereSink",
            "address": "0x69581B86A48161b067Ff4E01544780625B231676",
            "codeBytes": 4164,
            "keccakCode": "0xb32c7048a6ef5886b5e99fe1595cf98da50c7a9e0cd0391f65d04adc2b0510e9"
          },
          {
            "name": "AereCoinbaseSplitter",
            "address": "0xb4b0eCe9011613A5b84248a9B42a0f309E6F01Ec",
            "codeBytes": 2614,
            "keccakCode": "0x0a80f438a740c3777b6e3ebbd8b47939cb4bf6be97e1a0aff874c2f174ac81d8"
          },
          {
            "name": "AereFalcon512Verifier",
            "address": "0x4E8e9682329e646784fB3bd01430aA4bA54D8fFC",
            "codeBytes": 7333,
            "keccakCode": "0x3f4fdf22a292302aafe4f851d48147d126a4508b4da46ac9b35598a330a93065"
          },
          {
            "name": "AereFalcon1024Verifier",
            "address": "0xF0aFA59BaB2058e4B6e6B424b7f76750F1F66e36",
            "codeBytes": 7334,
            "keccakCode": "0xc873040484c647b81d71e85247dd12d7953fa175d911287c67d70f0d825589bc"
          },
          {
            "name": "AereMLDSA44Verifier",
            "address": "0xf1F7A6Acd82D5DAf9AF3166a2F736EE52C5F85AE",
            "codeBytes": 8654,
            "keccakCode": "0x045fe3cd81181fe11b365a603d97db83cab7e1e887d5dd95f855ddbba80f8aec"
          },
          {
            "name": "AereCancunCanary",
            "address": "0x8DbFC002bB23124cBeCd7B4916c179D2AFd65498",
            "codeBytes": 1541,
            "keccakCode": "0x08ec3644e2b8ead1e81d027127a17ee94edafeb1be5d9173914fcea82ab550f4"
          },
          {
            "name": "AereKZGVerifier",
            "address": "0x6596307BD8f54d9A91FE364EBC3e594F200AC862",
            "codeBytes": 1988,
            "keccakCode": "0x976bf39c13368fd4717227dd9f2e6a6a26f8654519d92ea438492b371b9a02b9"
          },
          {
            "name": "AerePQCAttestation",
            "address": "0x465d9e3b476bf98aa1393079e240db5d2a9bea6a",
            "codeBytes": 4402,
            "keccakCode": "0x2cf54017f8a56b0fdf1c659c3a5bf18504fccdbd7c2761c6c955b38e268774b7"
          }
        ]
      },
      "proves": "Bytecode of exactly this size and hash is deployed at these addresses right now.",
      "doesNotProve": "Does NOT prove the bytecode matches the published Solidity source. Source-to-bytecode verification is a separate exercise; Aere publishes its attempt at https://aere.network/verified-contracts.json, and you should treat that as a claim to check, not as a result. It also does not prove the contracts do anything useful.",
      "lastMeasured": "2026-08-05"
    },
    {
      "id": "no-upgrade-proxy",
      "claim": "None of the nine contracts above is an EIP-1967 upgradeable proxy: the implementation, admin and beacon storage slots are all zero.",
      "verify": {
        "method": "POST",
        "url": "https://rpc.aere.network",
        "body": {
          "jsonrpc": "2.0",
          "method": "eth_getStorageAt",
          "params": [
            "0x696afDF4f814e6Fd6aa45CE14C498ed9375fB2c6",
            "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc",
            "latest"
          ],
          "id": 1
        },
        "slots": {
          "implementation": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc",
          "admin": "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103",
          "beacon": "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"
        },
        "expect": {
          "result": "0x0000000000000000000000000000000000000000000000000000000000000000"
        },
        "measured": "All three slots read zero on all nine contracts listed under `contracts-have-code`, on 2026-08-05.",
        "secondCheck": "Scan the deployed bytecode for the PUSH4 selectors of upgradeTo(address) (0x3659cfe6), upgradeToAndCall(address,bytes), implementation(), admin(), getAdmin() and changeAdmin(address). None were present in any of the nine."
      },
      "proves": "These specific contracts are not behind the standard upgradeable-proxy pattern and expose no standard upgrade entry point.",
      "doesNotProve": "Absence of the EIP-1967 pattern is not proof of immutability in general. A non-standard upgrade mechanism, a custom storage slot, or a DELEGATECALL to a mutable target would not be caught by this check. Read the bytecode if immutability matters to you.",
      "lastMeasured": "2026-08-05"
    },
    {
      "id": "burn-vault-has-no-owner",
      "claim": "AereFeeBurnVault exposes no ownership or administration entry point. Its only value-moving function, sweepToZero(), is callable by any address and is not gated on a privileged caller.",
      "verify": {
        "method": "POST",
        "url": "https://rpc.aere.network",
        "procedure": "Walk the deployed bytecode as instructions (skipping PUSH immediates so you do not read data as opcodes) and collect every PUSH4 constant. These are the function selectors the dispatcher compares against. Then check which known-dangerous selectors appear.",
        "body": {
          "jsonrpc": "2.0",
          "method": "eth_getCode",
          "params": [
            "0x696afDF4f814e6Fd6aa45CE14C498ed9375fB2c6",
            "latest"
          ],
          "id": 1
        },
        "measured": {
          "selectorsFound": 9,
          "dangerousSelectorsPresent": [
            "sweepToZero() = 0x579663e2"
          ],
          "dangerousSelectorsAbsent": [
            "owner() 0x8da5cb5b",
            "transferOwnership(address) 0xf2fde38b",
            "renounceOwnership() 0x715018a6",
            "admin() 0xf851a440",
            "upgradeTo(address) 0x3659cfe6",
            "withdraw()",
            "withdraw(uint256)",
            "withdraw(address,uint256)",
            "emergencyWithdraw()",
            "rescue(address,uint256)",
            "pause()",
            "unpause()",
            "grantRole(bytes32,address)",
            "initialize()"
          ]
        },
        "confirmCalls": [
          {
            "body": {
              "jsonrpc": "2.0",
              "method": "eth_call",
              "params": [
                {
                  "to": "0x696afDF4f814e6Fd6aa45CE14C498ed9375fB2c6",
                  "data": "0x8da5cb5b"
                },
                "latest"
              ],
              "id": 1
            },
            "expect": "Execution reverted (owner() does not exist)"
          },
          {
            "body": {
              "jsonrpc": "2.0",
              "method": "eth_call",
              "params": [
                {
                  "to": "0x696afDF4f814e6Fd6aa45CE14C498ed9375fB2c6",
                  "data": "0x579663e2",
                  "from": "0x000000000000000000000000000000000000dEaD"
                },
                "latest"
              ],
              "id": 1
            },
            "expect": "0x, does not revert even when called from an arbitrary address, i.e. permissionless"
          }
        ],
        "methodNote": "An empty revert means that NAME is absent from the dispatcher. It never means a capability is absent in general. That is why this claim rests on a positive selector scan of the bytecode and not on reverts alone."
      },
      "proves": "The vault's dispatcher contains no owner, admin, pause, upgrade or withdraw selector, and its one outbound-value function is not caller-gated.",
      "doesNotProve": "This is a selector-level check. It does not decompile the contract, does not prove where sweepToZero() actually sends value, and does not rule out logic reachable through the fallback function. To assert that the destination is irrecoverable you must read the bytecode yourself.",
      "lastMeasured": "2026-08-05"
    },
    {
      "id": "burn-rate-parameter",
      "claim": "AereCoinbaseSplitter stores a burn rate of 3750 basis points (37.5%) and is owned by a single externally-owned account.",
      "verify": {
        "method": "POST",
        "url": "https://rpc.aere.network",
        "calls": [
          {
            "body": {
              "jsonrpc": "2.0",
              "method": "eth_call",
              "params": [
                {
                  "to": "0xb4b0eCe9011613A5b84248a9B42a0f309E6F01Ec",
                  "data": "0x<selector of burnBps()>"
                },
                "latest"
              ],
              "id": 1
            },
            "expect": "0x...0ea6 = 3750"
          },
          {
            "body": {
              "jsonrpc": "2.0",
              "method": "eth_call",
              "params": [
                {
                  "to": "0xb4b0eCe9011613A5b84248a9B42a0f309E6F01Ec",
                  "data": "0x8da5cb5b"
                },
                "latest"
              ],
              "id": 1
            },
            "expect": "0x...0243a4f47d44b40b65d33f20329de20d00c6f3c3"
          }
        ],
        "measured": {
          "burnBps": 3750,
          "owner": "0x0243a4f47d44b40b65d33f20329de20d00c6f3c3",
          "ownerHasCode": false,
          "mutatingSelectorsPresent": [
            "owner()",
            "transferOwnership(address)",
            "renounceOwnership()",
            "setBurnBps(uint256)"
          ]
        }
      },
      "proves": "The rate is on-chain and readable, and equals 37.5%.",
      "doesNotProve": "This rate is NOT immutable. setBurnBps(uint256) exists in the bytecode and the owner is 0x0243a4f4…f3c3, which has no code, i.e. a plain single-key account and not a multisig or timelock. One key can change the burn rate. Any Aere copy describing the splitter as having 'no admin' is wrong, and this entry exists to contradict it. See also `burn-not-currently-flowing` in notClaimed.",
      "lastMeasured": "2026-08-05"
    },
    {
      "id": "account-facts-via-proof",
      "claim": "Account state can be verified against the state root with a Merkle proof rather than taken on a node's word.",
      "verify": {
        "method": "POST",
        "url": "https://rpc.aere.network",
        "body": {
          "jsonrpc": "2.0",
          "method": "eth_getProof",
          "params": [
            "0x696afDF4f814e6Fd6aa45CE14C498ed9375fB2c6",
            [],
            "latest"
          ],
          "id": 1
        },
        "expect": "an accountProof array whose nodes hash up to the stateRoot in the block header",
        "measured": {
          "balanceWei": 137352594046167719,
          "nonce": "0x1",
          "codeHash": "0x35c9591e2d8f3510cdad371eac09abd1820b91dfff7befafe445ebf94761b365",
          "accountProofNodes": 4
        },
        "whyThisMethod": "Beyond the 512-block state window these endpoints return a FALSE 0x0 from eth_getTransactionCount rather than an error. A nonce read at depth is therefore unsafe. eth_getProof is the sound method because the answer is checkable against the state root in the signed header. Aere's own reproduction tooling once believed that false zero; this entry exists so nobody repeats it."
      },
      "proves": "The endpoint serves Merkle proofs, so an outsider can validate account facts against the block header instead of trusting the RPC response.",
      "doesNotProve": "A proof is only as good as the state root you check it against, and that root comes from a header signed by the same 7 Foundation-operated validators. This removes trust in the RPC node, not trust in the validator set.",
      "lastMeasured": "2026-08-05"
    },
    {
      "id": "basefee-floor",
      "claim": "The base fee is 1 Gwei and has a floor at that value, set by a documented fork activated at block 10,141,734.",
      "verify": {
        "method": "POST",
        "url": "https://rpc.aere.network",
        "body": {
          "jsonrpc": "2.0",
          "method": "eth_gasPrice",
          "params": [],
          "id": 1
        },
        "expect": {
          "result": "0x3b9aca00"
        },
        "alsoRun": [
          {
            "body": {
              "jsonrpc": "2.0",
              "method": "eth_getBlockByNumber",
              "params": [
                "latest",
                false
              ],
              "id": 1
            },
            "expect": "baseFeePerGas == 0x3b9aca00"
          }
        ],
        "measured": {
          "gasPrice": 1000000000,
          "headerBaseFeePerGas": 1000000000
        }
      },
      "proves": "The current base fee is exactly 1 Gwei, in both the header and the gas-price estimate.",
      "doesNotProve": "One reading at one block does not prove a floor exists in the consensus rules. To establish the floor you would sample baseFeePerGas across many blocks and show it never goes below 1 Gwei, or read the client configuration. Aere's own claim rests on a per-node system property, which an outsider cannot inspect.",
      "lastMeasured": "2026-08-05"
    },
    {
      "id": "second-read-endpoint",
      "claim": "A second public read endpoint, rpc2.aere.network, answers the same queries with the same values.",
      "verify": {
        "method": "POST",
        "url": "https://rpc2.aere.network",
        "body": {
          "jsonrpc": "2.0",
          "method": "eth_chainId",
          "params": [],
          "id": 1
        },
        "expect": {
          "result": "0xaf0"
        },
        "measured": {
          "latency": "80-142 ms across both endpoints, measured after all checks in this file had been run",
          "peerCount": 11,
          "syncing": false
        }
      },
      "proves": "Two endpoints are up and agree. Every gas figure, every KAT and every opcode probe in this file was run against both and matched.",
      "doesNotProve": "These are BOTH operated by the Aere Foundation. Agreement between them is not independent confirmation, it is one operator agreeing with itself. There is currently no third-party public RPC for chain 2800, so no outsider-operated cross-check exists. Treat every measurement in this file as coming from a single operator's infrastructure.",
      "lastMeasured": "2026-08-05"
    }
  ],
  "notClaimed": [
    {
      "id": "no-post-quantum-consensus",
      "weDoNotClaim": "That Aere Network has post-quantum consensus.",
      "theTruth": "Consensus on chain 2800 is classical ECDSA over secp256k1, under Hyperledger Besu QBFT. The committed seals in every block header are 65-byte secp256k1 signatures, which you can see for yourself in the `qbft-validator-set-from-header` check above. Post-quantum cryptography on Aere lives in execution-layer precompiles and application-layer verifiers, and nowhere else.",
      "whyItMatters": "A quantum adversary that can break secp256k1 can forge Aere block seals. The post-quantum precompiles do not change that."
    },
    {
      "id": "no-first",
      "weDoNotClaim": "That Aere is the first chain to verify post-quantum signatures on-chain.",
      "theTruth": "Algorand has verified Falcon signatures on its public mainnet since November 2025. Any Aere copy that says 'first' is wrong.",
      "knownDefect": "Re-measured 2026-08-05 from the public internet with a cache-busting parameter: the homepage meta description no longer contains the string 'the first public EVM Layer 1'. Revision 1 of this file recorded that defect as live. It had been fixed in the meantime, and this entry was corrected by measuring again rather than by trusting the earlier note. If you find the word 'first' anywhere on this domain applied to post-quantum verification, it is wrong, and this sentence is the authority against it."
    },
    {
      "id": "no-mainnet-traffic",
      "weDoNotClaim": "That chain 2800 is in use.",
      "theTruth": "Measured 2026-08-05 at head 12,469,045: 120 headers sampled evenly across the most recent 3,000 blocks carried 0 transactions in total, every one reporting gasUsed 0x0. At the same moment txpool_status reported 200 pending (0xc8) and 0 queued, a backlog that has read 200 since 2026-08-02 and is therefore not draining into blocks. The network produces empty blocks on a half-second timer while a static pending set sits in front of it. Both facts are ours to explain and neither is explained here, because we have not yet measured why the backlog does not clear.",
      "whyThisIsHere": "Every performance-adjacent number on this domain is measured on an idle chain. A reader who does not know that will over-read all of them. The block interval claim above is still a true measurement; it is a measurement of an unloaded system, and it now says so.",
      "reproduce": "Fetch any recent block with eth_getBlockByNumber and read gasUsed and the length of the transactions array, then call txpool_status. Repeat against rpc2.aere.network and expect the same answer.",
      "status": "OPEN, with an unmeasured cause. This entry is not closed by deleting it."
    },
    {
      "id": "tps-273000",
      "weDoNotClaim": "That Aere sustains 273,000 transactions per second.",
      "theTruth": "273,000 TPS has never been measured on mainnet and no benchmark harness in the Aere repository reproduces it. There is no verification method for this number, which is why it appears in this section and not above it.",
      "whatIsMeasured": "Block interval, 0.5236 s over 100,000 blocks, on blocks that are empty. That is a real measurement of a timer. Throughput is not measured at all.",
      "theStatedDerivationDoesNotWork": "Aere copy has described the figure as arithmetic from the block gas limit and the block time. Check that arithmetic against the live chain and it collapses. Measured 2026-08-05, eth_getBlockByNumber at latest returns gasLimit 0x1fffffffffffff, which is 9,007,199,254,740,991, that is 2^53-1, the largest integer a JavaScript double represents exactly. Divided by a 21,000-gas transfer over a 0.524 s block, that yields roughly 8 x 10^11 transactions per second, not 273,000. A gas limit that is a language artifact is not an engineering parameter, so no throughput figure can honestly be derived from it. The stated derivation does not produce the stated number, and neither figure should be quoted.",
      "reproduce": "POST eth_getBlockByNumber with params [\"latest\", false] to https://rpc.aere.network and read the gasLimit field. Then divide it yourself and see what number comes out."
    },
    {
      "id": "roadmap-not-live",
      "weDoNotClaim": "That Adaptive QBFT, parallel execution, or a native CLOB precompile are live components of Aere today.",
      "theTruth": "These are roadmap items. No deployed address implements them and no call demonstrates them. Any architecture diagram that shows them as current components is a false statement in visual form."
    },
    {
      "id": "supply-2800000000",
      "weDoNotClaim": "…that the 2.8 billion AERE supply is verifiable by an outsider.",
      "theTruth": "AERE is the chain's native coin, not an ERC-20. There is no totalSupply() to call, and no JSON-RPC method returns total issuance. We believe the figure is correct from the genesis file, but we have no method a stranger can run, so we do not present it as verified. The same applies to 'zero insider unlocks'.",
      "whatWouldFixIt": "A full-history archive node and a sum over genesis allocations plus issuance. Aere has not published one an outsider can query."
    },
    {
      "id": "decentralization",
      "weDoNotClaim": "That Aere is decentralized.",
      "theTruth": "All 7 validators are operated by the Aere Foundation. The effective Nakamoto coefficient is 1. The 5-of-7 quorum you can read out of the header protects against node failure, not against the operator. Validator-set membership is verifiable; independence of the operators is not, because there is none."
    },
    {
      "id": "burn-not-currently-flowing",
      "weDoNotClaim": "That the burn engine is currently burning.",
      "theTruth": "Measured 2026-08-05: the AereFeeBurnVault balance at 0x696afDF4f814e6Fd6aa45CE14C498ed9375fB2c6 is 0x1e7f974e119aaa7 wei and is identical at latest, at latest-200 and at latest-450. It is also identical to the value recorded on 2026-08-02. AereCoinbaseSplitter and AereSink both hold a zero balance. The `miner` field of every sampled header is a proposing validator address, not the splitter. The splitter stores burnBps = 3750, which is real and readable, but on an empty chain there are no fees to split, so nothing is being burned right now.",
      "whatIsTrue": "The contracts are deployed, the rate is on-chain and readable, the vault holds a non-zero historical balance, and the vault itself really does have no owner and no withdrawal path. What is not true is the present-tense claim that 37.5% of validator rewards is being burned right now.",
      "reproduce": "eth_getBalance on 0x696afDF4f814e6Fd6aa45CE14C498ed9375fB2c6 at `latest` and at `latest - 500`, and compare. Then read the `miner` field of any recent block.",
      "andItIsNotSealedEndToEnd": "Aere copy elsewhere calls the burn path sealed and admin-less. That is true of the VAULT and false of the SPLITTER. The vault at 0x696afDF4 exposes no owner(), no transferOwnership, no withdrawal and no upgrade selector, and that part stands. The splitter at 0xb4b0eCe9011613A5b84248a9B42a0f309E6F01Ec exposes owner(), transferOwnership(address), renounceOwnership() and setBurnBps(uint256), and owner() returns 0x0243a4f47d44b40b65d33f20329de20d00c6f3c3, an address with no code, which means a single externally owned key. The 50% ceiling is enforced in code; the rate underneath it is one signature away from changing. Do not read the word immutable across the whole path."
    },
    {
      "id": "nist-kat-validation",
      "weDoNotClaim": "That an outsider can reproduce our NIST KAT/ACVP validation of the Falcon, ML-DSA and SLH-DSA verifiers.",
      "theTruth": "Aere states these verifiers were validated against official NIST vectors. That validation is not reproducible from the public RPC. What an outsider CAN verify today is that the precompiles execute and consume gas, and that SHAKE256 matches a NIST known-answer test. Everything beyond that is currently our word, and is marked as such."
    },
    {
      "id": "explorer-is-not-an-api",
      "weDoNotClaim": "That explorer.aere.network is a machine-readable data source.",
      "theTruth": "It is a client-side rendered UI served from the same static site as the marketing pages. Measured 2026-08-05: its root path returns the marketing homepage, and /api/v2/stats returns HTML, not JSON. Transaction pages render from the RPC in the browser. If you are a machine, use the JSON-RPC endpoint and ignore the explorer entirely."
    },
    {
      "id": "audit-status",
      "weDoNotClaim": "That Aere has passed an external third-party security audit.",
      "theTruth": "Aere publishes internal review pages, including static-analysis output. Those are self-reported. No independent audit firm's report is published in machine-readable form, and until one is, no audit claim should be read as external assurance."
    },
    {
      "id": "block-hash-does-not-cover-falcon-cert",
      "weDoNotClaim": "That Aere's post-quantum anchoring work is complete.",
      "theTruth": "The block hash does not currently cover the Falcon certificate. The hash is computed from a re-encoding of decoded extraData, so anything the decoder discards is discarded before hashing. Work to bind the certificate through a 32-byte digest inside vanityData is proven on a test network but is NOT active on mainnet. You can confirm the current state yourself: decode extraData from any block and observe that vanityData (item 0) currently carries the client version string and zero padding, not a certificate digest."
    }
  ],
  "howToRefuteThisFile": {
    "principle": "Every claim above is written so that it can be shown false. If any expected value does not reproduce, the claim is wrong and we want to know.",
    "fastestRefutations": [
      "Run the gas probe against 0x0AE1 and get 124 instead of 40124. That would mean the precompiles are not executing and the central post-quantum claim is empty.",
      "Decode extraData and count a validator list that is not 7, or a seal count below 5. That would break the quorum claim.",
      "Compute SHAKE256 of the empty message locally and get something other than 0x46b9dd2b…762f from 0x0AE5.",
      "Find any of the absent selectors listed under `burn-vault-has-no-owner` actually present in the deployed bytecode.",
      "Read a non-zero EIP-1967 implementation slot on any of the nine contracts."
    ],
    "contact": "https://aere.network/.well-known/security.txt"
  },
  "revision": 2,
  "revisionNote": "Revision 2 was written after a deliberately hostile read of revision 1. Four statements did not survive and were changed: the block-interval claim now states that the sampled blocks are empty, the throughput section now shows that the stated derivation does not produce the stated number, the precompile-absence argument was demoted from proof to consistency and replaced with a positive one, and a stale note about the homepage was corrected by measuring again instead of by remembering. What an attacker breaks is worth more than what a friendly reader praises.",
  "discoverability": {
    "canonical": "https://aere.network/verifiable-claims.json",
    "runner": "https://aere.network/verifiable-claims-check.py",
    "referencedFrom": [
      "https://aere.network/robots.txt",
      "https://aere.network/llms.txt",
      "https://aere.network/architecture.html"
    ],
    "howToTellThisFileIsReal": "Unknown paths on this host used to answer HTTP 200 with the HTML application shell, which made a real artifact indistinguishable from a typo. As of 2026-08-05 any path ending in .json or .txt that does not exist answers 404. Test it: GET https://aere.network/no-such-file.json must be 404, and this file must be 200 with content-type application/json. If the first returns 200 you are reading a stale edge cache; add a cache-busting query parameter and retry."
  }
}