Introducing an Ethereum Integration Proposal for ML-DSA Signatures
We are introducing an Ethereum Integration Proposal for ML-DSA signatures, aligning with the [FIPS 204 standard] and ensuring compatibility with NIST Known Answer Test (KAT) vectors.
ML-DSA (Module Lattice–based Digital Signature Algorithm) is one of the NIST-selected post-quantum signature schemes, designed to offer strong security guarantees against both classical and quantum attacks.
Our proposal brings ML-DSA verification capabilities natively into Ethereum smart contracts, enabling future-proof authentication and secure decentralized applications.
The MLDSA_VERIFY Contract
To make this practical on-chain, we developed the MLDSA_VERIFY smart contract, which:
- Implements ML-DSA verification according to FIPS 204,
- Is fully compliant with NIST KAT test vectors,
- Uses the same hash functions and parameters as the reference standard.
This ensures that on-chain verification behaves identically to the standardized cryptographic primitives — a crucial property for interoperability, auditing, and security.
The MLDSA_VERIFY_ETH contract
While the standard version uses SHAKE256 as the underlying hash function, this can be inefficient in the EVM environment.
To address this, we introduce an alternative variant, MLDSA_VERIFY_ETH, which:
- Replaces SHAKE256 with Keccak256 in counter mode,
- Reduces the computational overhead significantly,
- Keeps the algorithm semantically equivalent, but optimized for the EVM.
This change allows ML-DSA verification to run more efficiently on-chain while maintaining cryptographic soundness.
Comparison with other signature schemes
The choice of post-quantum signature scheme for Ethereum is not finalized and multiple candidates are being evaluated by the community…
Falcon, as implemented in [DRAFT EIP], produces smaller signatures — around 666 bytes for an equivalent security level — which is attractive for on-chain storage and gas costs.
However, it also has higher signing complexity, which can make generating signatures slower and more resource-intensive, especially in constrained environments.
By contrast, ML-DSA offers simpler signing and verification procedures, with a slightly larger signature size. This EIP provides an alternative approach that balances efficiency, on-chain performance, and post-quantum security, and is meant to be compared directly with EIP-9999 to inform the community’s final decision.
The following table compares the public key and signature size for ML-DSA and FN-DSA:
Scheme | Public key | Signature |
---|---|---|
ML-DSA | 1312B | 2420B |
FN-DSA | 897B | 666B |
EIP-7932 Compatibility
Our proposal is fully compatible with EIP-7932 (Algorithmic Transaction Types), defining:
ALG_TYPE
=0xFA
for NIST-compliant Falcon-512,ALG_TYPE
=0xFB
for EVM-friendly Falcon-512,MAX_SIZE
= 699 bytes for the signature_info container,GAS_PENALTY
≈ 3000 gas (subject to benchmarking).
This ensures seamless integration with the emerging transaction type framework for alternative signature schemes.
Next Steps and Community Feedback
We invite the Ethereum community to:
- Review the technical specification and implementation
- Provide feedback on the tradeoffs between ML-DSA and other post-quantum schemes
- Test the contracts in various use cases
- Contribute to gas optimization efforts
Current repo allow to use python signer and verify onchain signatures. In the next days a hardware implementation (non genuine Ledger application) will be provided to experiment wallet integration. All those are public good delivered to the community.
Additional Resources
- FIPS 204: Module-Lattice-Based Digital Signature Standard
- Ethereum Post-Quantum Cryptography Discussion
- EIP-DRAFT: Falcon Signature Verification
- [EIP-DRAFT: Dilithium Signature Verification](Add EIP: Precompile for ML-DSA signature verification by simonmasson · Pull Request #10557 · ethereum/EIPs · GitHub for Dilithium)
- ZKNOX solidity implementation