LP-174 mirrors HIP-0087 into Lux. The PQ Permit replaces EIP-2612 for
ERC-20-style off-chain approval flows on Lux under LUX_STRICT_PQ. A
permit is an ML-DSA-65 (FIPS 204) signature over a TupleHash256
(SP 800-185) transcript bound by the cust string PERMIT-V1 and
committing to `(profile_id, chain_id, verifying_contract,
owner_account_id, spender_account_id, value, nonce, deadline)`.
Contracts verify via the precompile pair from LP-179.
ProfileID: 0x01 (ProfileLuxStrictPQ)
ProfileName: LUX_STRICT_PQ
HashSuiteID: SHA3_NIST (0x01)
IdentitySchemeID: ML_DSA_65 (0x42)
ProofPolicyID: STARK_FRI_SHA3_PQ (0x10)
MinSoundnessBits: 128
MinHashOutputBits: 384
RequireTransparent: true
ForbidPairings: true
ForbidKZG: true
ForbidTrustedSetup: true
ForbidClassicalSNARKs: true
ForbidDevProofs: true
ForbidFallbacks: true
luxfi/consensus/protocol/auth/permit.go is the canonicalreference. EVM-side precompile is wired in
luxfi/coreth/core/vm/contracts_pq.go.
the permissive transition; on LUX_STRICT_PQ activation only the
PQ Permit method is enabled.
surface.
luxfi/consensus/protocol/auth/testdata/permit_v1.json.A Lux ERC-20 deployment on LUX_STRICT_PQ MUST refuse classical
EIP-2612 permits. The PQ Permit precompile path (LP-179) is the only
auth route.
luxfi/consensus/protocol/auth/permit.go.