Lux Docs
Standard

Precompiles

39 EVM precompiles for post-quantum cryptography, DeFi, ZK proofs, and attestation

Lux EVM includes 39 custom precompiles accessible as native Solidity calls. Interfaces are in contracts/precompile/interfaces/ and addresses in contracts/precompile/addresses/PrecompileRegistry.sol.

Core Precompiles

AddressNameInterfacePurpose
0x0200...0001DeployerAllowList--Deployer permissions
0x0200...0002TxAllowList--Transaction permissions
0x0200...0003FeeManager--Dynamic fee management
0x0200...0004NativeMinter--Native token minting
0x0200...0005WarpIWarp.solCross-chain messaging with BLS
0x0200...0006RewardManager--Validator rewards

Cryptography Precompiles

AddressNameInterfacePurpose
0x0200...0007ML-DSAIMLDSA.solFIPS 204 post-quantum signatures
0x0200...0008SLH-DSAISLHDSA.solHash-based PQ signatures (SPHINCS+)
0x0200...0009PQCryptoIPQCrypto.solMulti-PQ operations
0x0200...000AQuasarIQuasar.solQuantum consensus operations
0x0200...000BRingtailIRingtailThreshold.solPost-quantum threshold signatures
0x0200...000CFROSTIFROST.solSchnorr threshold (BIP-340 Taproot)
0x0200...000DCGGMP21ICGGMP21.solECDSA threshold (MPC custody)

Usage: Post-Quantum Signatures

import "@luxfi/contracts/precompile/interfaces/IMLDSA.sol";

// Verify a post-quantum ML-DSA signature
bool valid = IMLDSA.verify(publicKey, message, signature);

Usage: Threshold Signatures

import "@luxfi/contracts/precompile/interfaces/IFROST.sol";

// Verify 2-of-3 FROST threshold signature
FROSTLib.verifyOrRevert(2, 3, aggregatedPubKey, messageHash, signature);

DeFi Precompiles

AddressNameInterfacePurpose
0x0200...0010DEXILXBook.solQuantumSwap on-chain CLOB
0x0200...0011OracleIOracle.solMulti-source price aggregation
0x0200...0012Lending--Lending operations
0x0200...0013Staking--Staking operations
0x0200...0014Yield--Yield operations
0x0200...0015Perps--Perpetuals operations

Attestation Precompile

AddressNamePurpose
0x0200...0300AttestationGPU/TEE hardware attestation for AI mining

Hashing Precompiles

AddressNameInterfaceGasPurpose
0x0501Poseidon2IHash.sol~20KZK-friendly hash
0x0502Poseidon2SpongeIHash.sol~25KVariable-length Poseidon2
0x0503PedersenIHash.sol~30KBN254 curve commitment
0x0504Blake3IHash.sol~5KHigh-performance hash
import "@luxfi/contracts/precompile/interfaces/IHash.sol";

// Poseidon2 hash (ZK-friendly, post-quantum safe)
bytes32 hash = IHash(0x0501).hash(abi.encode(left, right));

ZK Proof Precompiles

AddressNameInterfacePurpose
0x0900ZKVerifyIZK.solGeneric ZK verification
0x0901Groth16IZK.solGroth16 proof verification
0x0902PLONKIZK.solPLONK proof verification
0x0903fflonkIZK.solfflonk proof verification
0x0904Halo2IZK.solHalo2 proof verification
0x0910KZGIZK.solKZG polynomial commitments
0x0912IPAIZK.solInner Product Arguments
0x0920PrivacyPoolIZK.solConfidential pool operations
0x0921NullifierIZK.solNullifier verification
0x0922CommitmentIZK.solCommitment verification
0x0923RangeProofIZK.solBulletproof range proofs
0x0930RollupVerifyIZK.solZK rollup batch verification
0x0931StateRootIZK.solState root verification
0x0932BatchProofIZK.solBatch proof aggregation

Dead/Burn Precompiles

AddressNameInterfacePurpose
0x0000...0000DeadZeroIDead.solZero address intercept
0x0000...dEaDDeadShortIDead.solCommon dead address
0xdEaD...0000DeadFullIDead.solFull dead prefix

Tokens sent to dead addresses are split: 50% burned (deflationary) and 50% sent to the DAO treasury as Protocol-Owned Liquidity.

Gas Costs

PrecompileGas (3-of-5)Signature Size
FROST75,00064 bytes
CGGMP21125,00065 bytes
Ringtail200,000~4 KB
ML-DSA100,0003,309 bytes
BLS (Warp)120,00096 bytes

On this page