{ "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 hasher, TruncatedPermutation compressor, FieldMerkleTreeMmcs (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 (overwrite-mode, padding-free)", "compressor": "TruncatedPermutation (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 }