Aere Network public source. Everything here can be checked against the live chain (chain id 2800, https://rpc.aere.network). Scope note, stated up front rather than buried: consensus on chain 2800 is classical secp256k1 ECDSA QBFT. The post-quantum work in this repository is at the signature, precompile, account and transport layers. Nothing here makes the consensus post-quantum, and no document in it should be read as claiming so.
57 lines
4.6 KiB
JSON
57 lines
4.6 KiB
JSON
{
|
|
"component": "Mixed Matrix Commitment Scheme (MMCS) over BabyBear (port spec component (c))",
|
|
"precompile": "0x0000000000000000000000000000000000000ae8",
|
|
"scope": "port spec section 4; the FieldMerkleTreeMmcs (Merkle-tree vector commitment) that FRI (d) and the trace commitment are built on. Exact SP1 inner config: PaddingFreeSponge<Perm,16,8,8> hasher, TruncatedPermutation<Perm,2,8,16> compressor, FieldMerkleTreeMmcs<Packing,Packing,MyHash,MyCompress,8> (digest = 8 BabyBear elems).",
|
|
"validates": "SELF-CONSISTENCY + CONFORMANCE: every valid leaf opens to an authentication path that recomputes the committed root; tampered openings / proof siblings / roots fail; Python/Node/Java produce byte-identical roots/openings/proofs; AND the root/openings/proof reproduce real known-answer vectors extracted from the pinned p3-merkle-tree / p3-symmetric / p3-commit 0.4.3-succinct crates (the 'two wrong copies agree' trap is closed).",
|
|
"does_not_validate": "the FULL STARK verifier. Only component (c) (the MMCS) is confirmed. The duplex-sponge challenger (f), FRI folding/consistency (d), and the SP1 recursion-AIR (e) are un-ported; conformance against a real exported SP1 commitment root is a further [MEASURE] step (needs an exported proof).",
|
|
"top_level_verifier": "unchanged, still fail-closed (returns EMPTY for every input). Mmcs.available is now true (the commitment scheme is confirmed), but the challenger/FRI/AIR are still un-ported (Challenger.spongePorted=false, StarkConstraints=UNAVAILABLE), so the top level still returns EMPTY and ACCEPT is unreachable.",
|
|
"construction": {
|
|
"hasher": "PaddingFreeSponge<Perm, WIDTH=16, RATE=8, OUT=8> (overwrite-mode, padding-free)",
|
|
"compressor": "TruncatedPermutation<Perm, N=2, CHUNK=8, WIDTH=16> (permute(l||r)[0:8])",
|
|
"digest_elems": 8,
|
|
"leaf_hash": "hash concatenated rows of all matrices at the current (padded) height",
|
|
"mixed_height": "tallest-first; pad each layer to a power of two with the zero digest; inject shorter matrices' hashed rows via compress([node, rows_digest]) at the layer whose padded length equals their next_power_of_two height"
|
|
},
|
|
"cross_language": [
|
|
"java",
|
|
"node",
|
|
"python"
|
|
],
|
|
"conformance": {
|
|
"status": "CONFIRMED (real known-answer test PASSED)",
|
|
"method": "the exact pinned crates were executed via cargo (lockfile checksums matched) to commit to known matrix batches and emit roots + open_batch openings/proofs; this reference reproduces every value exactly and its verify_batch accepts them",
|
|
"cases": [
|
|
"single_8x2",
|
|
"single_6x2",
|
|
"single_8x1",
|
|
"mixed_8x2_4x3",
|
|
"mixed_8x1_4x2_2x2",
|
|
"mixed_5x2_3x1"
|
|
]
|
|
},
|
|
"pinned_conformance_target": {
|
|
"revision": "Succinct Plonky3 fork, crates.io version 0.4.3-succinct",
|
|
"p3_merkle_tree_checksum": "d5703d9229d52a8c09970e4d722c3a8b4d37e688c306c3a1c03b872efcd204e6",
|
|
"p3_symmetric_checksum": "9047ce85c086a9b3f118e10078f10636f7bfeed5da871a04da0b61400af8793a",
|
|
"p3_commit_checksum": "50acacc7219fce6c01db938f82c1b21b5e7133990b7fff861f91534aeb569419",
|
|
"p3_matrix_checksum": "75c3f150ceb90e09539413bf481e618d05ee19210b4e467d2902eb82d2e15281",
|
|
"found_in": "aerenew/zk-circuits/*/Cargo.lock and aerenew/rollup-evm-validity/*/Cargo.lock"
|
|
},
|
|
"confirmed": [
|
|
"CONFIRMED SP1 inner config: PaddingFreeSponge<_,16,8,8> / TruncatedPermutation<_,2,8,16> / FieldMerkleTreeMmcs<...,8> (verbatim from p3-merkle-tree mmcs.rs tests)",
|
|
"CONFIRMED tree build: tallest-first, power-of-two padding with zero digest, mixed-height injection (compress_and_inject) matches p3-merkle-tree merkle_tree.rs",
|
|
"CONFIRMED verify_batch: group-by-padded-height, index-parity ordering, inject at matching layer, matches p3-merkle-tree mmcs.rs",
|
|
"CONFORMANCE KAT PASSED: 6 MMCS cases (single power-of-two, single non-power-of-two, column vector, and 3 mixed-height batches incl. a default-zero-digest sibling) reproduced exactly"
|
|
],
|
|
"flags": [
|
|
"[MEASURE] conformance against a real exported SP1 v6.1.0 commitment root (the trace / FRI matrices from an actual proof) is a further step; it needs an exported proof + the challenger"
|
|
],
|
|
"notes": [
|
|
"self-consistency: every valid leaf opens to a path that recomputes the root; tampered openings / proof siblings / roots all fail (all 6 cases)",
|
|
"CONFORMANCE: 37/37 known-answer checks (perm sanity + 6 primitive KATs + 6 MMCS cases: root/openings/proof/verify_accept/tamper_reject) reproduced exactly from p3-merkle-tree / p3-symmetric / p3-commit 0.4.3-succinct",
|
|
"cross-language implementations compared: java, node, python"
|
|
],
|
|
"passed": 300,
|
|
"failed": 0,
|
|
"total": 300
|
|
} |