Elabify — Post-Quantum Identity + EVM Ledger

ML-DSA · ML-KEM · zk-STARKs · RPO-256 · MetaMask · IdentityRegistry.sol · RevocationRegistry.sol

ML-DSA-65 (FIPS 204) ML-KEM-768 (FIPS 203) RPO-256 hash FRI-STARK proofs MetaMask EVM Any EVM chain

0 · EVM Chain — MetaMask Connection

Not connected disconnected
Connected account
Network
Chain ID
Balance
IdentityRegistryNot deployed
RevocationRegistryNot deployed
ProofAnchorNot deployed
Last tx

1 · HSM Key Generation & DID Registration

Issuer keypair (ML-DSA-65)

AlgorithmML-DSA-65 / FIPS 204
Public key1,952 bytes
Signature3,293 bytes
HSM handle
Generate to begin

On-chain DID registration

Contract fnregisterIssuer(did, pubkey)
Gas estimate~85,000 gas
Tx statusNot submitted
Tx hash

2 · Credential Issuance + Merkle Root Anchor

Claim set (click to toggle selective disclosure)

Anchor Merkle root on-chain

Contract fnupdateRoot(bytes32 newRoot)
Gas estimate~50,000 gas
Claim tree root (RPO-256)
Anchor statusNot anchored
Issue a credential first
FunctionupdateRoot(bytes32)
Tx hash
Gas used
Block
Status

3 · zk-STARK Selective Disclosure Proof

Proof generation (off-chain)

STARK prover runs off-HSM. Only ML-DSA sig verification & pubkey retrieval use HSM. No trusted setup.

Select claims above first

Anchor proof hash on-chain (optional audit)

Contract fnanchorProof(bytes32 proofHash)
Gas estimate~40,000 gas
Trace commitment
Tx hash
Gas used
Status

4 · On-Chain Verification (eth_call — free, no gas)

Check issuer registration

CallisRegistered(did)
Gas0 (read-only)

Verify STARK proof (light)

Callverify(did, credId, root)
Gas0 (read-only)

Revocation check

CallisRevoked(credentialId)
Gas0 (read-only)

5 · Revocation — On-Chain Write (MetaMask)

Revoke credential

Contract fnrevoke(bytes32 credentialId)
Gas estimate~30,000 gas
EffectAll future isRevoked() calls return true
Revocation statusACTIVE
Tx hash
Gas used
Status

Transaction history

Connect MetaMask to see transactions...