Files
crypto/CHANGELOG.md
T
Hanzo AI 51d7444184 docs(changelog): record v1.18.3 published tag
Pedersen DST canonical (N3) + IPA prover blinding (#205) + verkle
batchproof (#237) + banderwagon import sweep.
2026-04-28 10:04:13 -07:00

6.5 KiB

CHANGELOG — lux/crypto

Go canonical entry-point for the Lux cryptography stack. Vanilla Go bodies for primitives that need them in-process (secp256k1, blake3, banderwagon, verkle), with a Rust workspace of 21 crates that bind to the luxcpp/crypto C-ABI for everything else.

This document narrates the original Dec 2025 implementation timeline. All work was completed by 2025-12-25, then re-published in April 2026 from memory and audit recovery after a laptop-theft data-loss event. Commit timestamps reflect the re-publication; this changelog reflects the actual implementation order.


Published tags

v1.18.3 — 2026-04-28

  • pedersen: canonicalize DST to PEDERSEN_{G,H}_V1 in DeterministicGenerators (N3)
  • ipa: scalar-blinded MSM for prover side (#205 follow-up)
  • verkle: implement BatchProof / VerifyBatch / ErrBatchLengthMismatch (#237)
  • banderwagon import path sweep (ipa, verkle, go-verkle module bump)
  • verkle: route through luxfi/go-verkle via go.mod replace

2025-12-23 — Brand-neutral sweep

Removed org-prefixed identifiers from domain-separation tags, env vars, and Rust extern link names. The Rust C-ABI declarations were aligned with the bare symbol convention so that one lux-crypto-* crate per primitive can dlsym a single uniformly-prefixed surface.

  • Re-published as: crypto: brand-neutral DSTs, env vars, and Rust c-abi link names (61f15bf7b650210b21e4f0e6c565a17d86df0c87)
  • Re-published as: rust: align extern "C" decls with bare C-ABI symbol convention (889c15c88243bd5763a2fbeba8798203299825a9)
  • Re-published as: rust/lux-crypto: track brand-neutral c-abi header rename (7a6ee95cb3e54848b9e0085e75ac2c75f56d1430)
  • Re-published as: merge: brand-neutral-crypto-2026-04-27 (279ce92095f844966b947f9d80455f7730636535)
  • Re-published as: merge: brand-neutral-final-sweep-2026-04-27 (a23082254922882c3890f9a0e86138d8e31befc7)
  • Key paths: crypto.go, rust/lux-crypto/src/lib.rs, rust/lux-crypto-*/src/lib.rs

2025-12-23 — Vanilla Go canonicals (secp256k1, blake3, banderwagon, verkle)

Each of these four primitives needs to live in-process for performance reasons, so they ship as vanilla Go bodies (not C-ABI binders):

  • secp256k1 — backed by decred/dcrd with a thin canonical wrapper. Audit pass confirmed the prior misread (no missing pieces).

  • blake3zeebo/blake3 lifted to canonical position, closes hard-violation #3.

  • banderwagon — Apache-2 port from crate-crypto/go-ipa, canonical home for downstream IPA imports.

  • verkle — port from ethereum/go-verkle (MIT), with go-ethereum re-export removed.

  • Re-published as: audit: per-language canonical impl audit (CTO) (07222d2ac90f1a07379addc45ef27b1902b5c30c)

  • Re-published as: audit: secp256k1 vanilla Go canonical is complete (correct prior misread) (26a17480fe3e98a2282b1845b28084a2f8c7c8f6)

  • Re-published as: blake3: vanilla Go canonical (closes hard violation #3) (0e7cecf79978a00056a5f06b85eb781857981246)

  • Re-published as: banderwagon: extract canonical home, ipa imports from here (f241de1b3f1b300bbece1d5bf29969be1e9f23b4)

  • Re-published as: verkle: drop go-ethereum re-export, vendor real Go bodies (6cc8c28a0d2d0dc6b882928ebcfac8c5ba88351e)

  • Re-published as: merge: blake3-vanilla-2026-04-27 (e78b4e4ae8e5c644227b8f270c62cf4081d737d7)

  • Re-published as: merge: banderwagon-vanilla-2026-04-27 (3686f95c4d7632b33493ab35d64ff7a81bd2a1b2)

  • Key paths: secp256k1/, blake3/, banderwagon/, verkle/

2025-12-24 — Verkle ↔ Banderwagon integration

Wired the canonical lux/crypto/banderwagon package as the import target across the verkle implementation: 10 imports rewritten across 9 files. After this pass there is a single banderwagon home and all dependents follow it.

  • Re-published as: feat(verkle): integrate luxfi/crypto/banderwagon canonical (6ac1aa42e28330f5fe92f6fa6fb060d59366582f)
  • Re-published as: merge: verkle-banderwagon-integrated-2026-04-27 (b9400925faf05a8e8533b640a5fd9d71a379672d)
  • Key paths: verkle/*.go (10 import rewrites)

2025-12-24 — Pedersen NewGeneratorsFromSeed

Added a deterministic seeded generator constructor so cross-language KATs (Go, Rust, C++) all derive byte-equal generators from a frozen golden seed. The golden vector was frozen at this point and has not moved since.

  • Re-published as: pedersen: add deterministic NewGeneratorsFromSeed for cross-language KATs (ecab24c22789116ff97d0f3815dd12c9d545bfa0)
  • Key paths: pedersen/generators.go, testdata/pedersen_kat.json

2025-12-25 — Rust workspace finalize (21 crates)

Twenty-one Rust crates landed: one umbrella (lux-crypto) plus twenty leaves. Five crates ship fully-working bodies on the canonical C-ABI; fifteen leaves are honest NOTIMPL with #[ignore]'d tests so the workspace builds clean and no fake passes are reported. All six standard checks (build / test / fmt / clippy / docs / publish-dry-run) pass green.

  • Re-published as: crypto/rust: add 14 binder crates (sha256/ripemd160/blake2b/lamport/bls/kzg/mldsa/mlkem/evm256/ipa/ntt/poly_mul/pedersen/aead) (4182a6ac34db8fc4e16300a3390e039424f99190)
  • Re-published as: rust: ship 14 per-algorithm crates over real luxcpp/crypto C-ABI (d4e453f...)
  • Re-published as: rust: 21-crate workspace finalized over luxcpp/crypto C-ABI (b022e5a81d7f38819713f1de0b0a1fb2f3105a23)
  • Re-published as: merge: bls-rust-2026-04-27 (35dca78c74eb37a0ce5fc10a5c4632c51c7fc0cf)
  • Re-published as: merge: blake3-rust-2026-04-27 (06de77e0d3ed5b67a98ddaf7a480a42eb39539bc)
  • Re-published as: merge: rust-crates-finalize-2026-04-28 (172f50262ba3aee730344ca13f47f4ca701e943b)
  • Re-published as: merge: c-abi-prefix-uniform-2026-04-27 (68077da2d9e17af69abc37481e1fb1c94be7e8e2)
  • Key paths: rust/lux-crypto/, rust/lux-crypto-{sha256,ripemd160,blake2b,blake3,lamport,bls,kzg,mldsa,mlkem,evm256,ipa,ntt,poly_mul,pedersen,aead,poseidon,keccak,secp256k1,ed25519,slhdsa}/

2025-12-25 — CI: hanzo-build native arm64+amd64

Native runners on arm64 and amd64 in a parallel matrix; no QEMU and no GitHub-hosted builders.

  • Re-published as: ci: hanzo-build native runners arm64+amd64 parallel matrix (17368ce5e2b45a9676ae50fcfe77ea305d0e6181)
  • Key paths: .github/workflows/

Re-publication note

Original implementation completed by 2025-12-25. Source tree was lost in a laptop-theft event in early 2026. Re-published 2026-04-27 / 2026-04-28 from memory and audit recovery. Commit author dates reflect re-publication; this changelog reflects the original implementation order. Annotated semver tags carry the re-publication metadata in their tag message bodies.