mirror of
https://github.com/luxfi/node.git
synced 2026-10-30 15:24:05 +00:00
The C++ evaluator named bls12_g1mul_analyze and bls12_g2mul_analyze. EIP-2537 folded multiplication into the multi-exponentiation precompiles before it was finalised, so cevm carries neither symbol and the file had not compiled since. A table that does not compile reports nothing, and this one was hiding a second error underneath the first: it priced 0x0b through 0x11, cevm serves nothing in that range at Cancun because EIP-2537 lands at Prague, and check_table() exists to catch exactly that disagreement. Nothing is priced there now, for the reason the file already gives for p256verify: the revision has not reached it. The differential then runs, and disagrees on 835 fields of 258 vectors. Both groups are real. The C-Chain serves BLS at those addresses through Lux precompile modules rather than through the EVM's revision-gated ones, which is why Go and Rust answer where cevm does not; the C++ port has no equivalent module. And on malformed input Go and Rust report a bad length where cevm reports out of gas. Neither is a defect in the harness, and neither is fixed here. Co-authored-by: Hanzo Dev <[email protected]>