For teams holding assets on Gnosis Safe

A quantum-safe second signature for your Safe

Install one Safe Guard. Your owners, threshold and history stay exactly as they are — but every transfer also needs a post-quantum approval, verified on-chain.

No migration Open source (MIT / LGPL-3.0) NIST SP 800-208 signatures
The FermionGuard Safe App: a transaction queue where each pending transfer shows its quantum-authorization status
Built on Safe Guard XMSS · RFC 8391 NIST SP 800-208 Keys on Ledger OpenZeppelin primitives Open source · MIT / LGPL-3.0
See it work

A 250,000 dUSD transfer,
fully signed — and still blocked

An owner signs the transfer in the real Safe{Wallet}. It will not execute. The Quantum Administrator reads the payment on the device — token, amount, recipient, validity window, Safe and chain — and approves it with a one-time post-quantum signature. Only then does the money move.

A 250,000 dUSD transfer is fully signed in Safe{Wallet} and still fails; the Quantum Administrator approves it on a simulated Ledger with a one-time XMSS signature; the same transfer then executes

Recorded end to end against the local demo stack — a real Safe, the real Safe{Wallet} and the Guard enforcing on-chain. The device is the simulated Ledger, not hardware — see Status for where the Ledger app stands.
Open it full size · Run it yourself →

Why now

More signers don't make
a multisig quantum-safe

Every Safe owner signs with ECDSA. A large enough quantum computer breaks ECDSA — for all your signers at once. Assets you hold for ten years need a signature that survives that day.

Multisig is governance

It decides who may sign. It can't help when the signature scheme itself falls.

Hardware keys stop theft

They don't stop a forged signature over the same curve — the key never has to leave the device.

Off-chain policy is advice

A policy engine the chain doesn't consult can be bypassed. The last word has to be on-chain.

How it works

Two independent signatures.
One execution path.

FermionGuard is a Safe Guard — Safe's official pre-execution hook. Owners keep signing as they do today. The Guard lets the transaction run only if it also carries a matching post-quantum approval.

Signature 1 — unchanged

Your Safe owners

Same owners, same threshold, same hardware wallets. Protects against rogue operators, lost devices and internal failures.

Signature 2 — added

A post-quantum approval

A designated Quantum Administrator approves each transfer on a Ledger with an XMSS key. Protects against compromised signers, replayed approvals, allowance drains — and future quantum attacks.

Queue

An operator queues a transfer in Safe{Wallet}. Owners sign as usual.

Flag

The FermionGuard Safe App marks it 🟡 quantum authorization required.

Review

The Administrator reviews the payload, decoded from two independent sources.

Approve

The Ledger shows every enforced field. Hold to approve.

Execute

The row turns 🟢. Anyone executes; the Guard checks and consumes the approval.

Review screen showing the decoded token, amount, recipient, nonce and validity window before signing

The Administrator sees exactly what they're approving

Approvals match exact transactions, not intentions

An approval names the Safe, chain, token, recipient, amount and a validity window. If anyone edits the queued transaction afterwards, the approval stops matching and the Guard refuses it.

  • Time-limited: each approval is valid for a window you choose.
  • Single-use: consumed the moment the transaction executes.
  • Checked twice: the payload must match on two independent data sources before signing unlocks.
  • Visible refusals: denials are signed and logged just like approvals.
Ledger device screens showing the approval header, amount, full recipient address and the approve/reject decision

No blind signing — the device shows every field the Guard enforces

Works inside the tools your team already uses

FermionGuard ships as a Safe App inside Safe{Wallet} and a Ledger app for the Administrator. Risk flags highlight first-time recipients, unusual amounts and transactions the Guard would reject anyway — before anyone signs.

Payroll runs? A whole batch of up to 100 transfers needs one approval.

Setup

Add it to the Safe you already have

No new wallet, no new chain, no asset migration. Four steps, run by your existing owners through ordinary Safe transactions.

Open the Safe App

Add FermionGuard in Safe{Wallet}. It checks your Safe version and modules before anything changes.

Run the key ceremony

The Administrator's key is generated inside the Ledger. Owners confirm it and co-sign its registration.

Enable the Guard

Owners sign one setGuard transaction, like any other Safe transaction.

Send a test transfer

A dust-sized transfer runs the full flow. When it lands, your dashboard shows Protected ✓.

⏱ About 30 minutes with your owners reachable
Who it's for

Built for assets that have to be safe for a decade

🏦 Custodians & banks

Add an independent, standards-based cryptographic control to client-asset custody.

  • NIST-approved signature scheme
  • Exportable audit log for compliance
  • Printable key-ceremony records

🏢 Corporate treasuries

Keep your approval workflow, and make a compromised signer insufficient to move funds.

  • Owners keep signing as today
  • One approval per payroll batch
  • Risk flags on unusual transfers

🏛️ Foundations & DAOs

Put a public, time-locked check on the moves that matter most: governance changes.

  • 48-hour public timelock on admin actions
  • Owners can cancel it with no quantum approval
  • Open source, verifiable on-chain
Security

Hard to get around.
Impossible to brick.

The Guard is the last on-chain veto — and it's designed so a lost key or a bug can never freeze your funds.

Always a way out

Lost the Ledger? Owners alone can remove the Guard after a 14-day public countdown. A dead device never locks the Safe.

Loud governance changes

Removing the Guard or changing owners needs an approval and a 48-hour public countdown every owner is notified about.

Fail-closed

A non-upgradeable Guard with a fast deny-all pause for incidents. No admin backdoor.

No side doors

Safe modules skip guards, so enrollment requires no enabled modules — or a paired module guard on Safe 1.5+.

No allowance drains

approve, permit and transferFrom are rejected outright, and batches are checked leg by leg on-chain.

Keys that can't be swapped

Owners co-sign the key's full public root on their own devices, so a compromised website can't substitute a different key.

Administrative action screen with a 48-hour countdown and a revoke button

Governance changes are slow and loud; cancelling is quick

Even a stolen quantum key can't quietly take over

An attacker with the Administrator's Ledger still can't move funds without your owners' signatures, and can't remove the Guard without a public 48-hour countdown that your owners can cancel.

Read the threat model →

For your engineers

Post-quantum signatures,
verified in the EVM

XMSS is pure hashing, so the chain checks it directly — no oracle, no trusted server. The verifier is a clean-room implementation of RFC 8391, and we say exactly how far its proof reaches: every RFC primitive, and the checks that reject malformed input, are machine-checked for all inputs against a line-by-line transcription of the RFC. Composing them into the root comparison that finally accepts or refuses a well-formed signature is argued by hand, checked symbolically at tree height 2, and pinned by RFC vectors at h = 4, 10 and 20.

745,003
gas per verification, measured at h = 20
~1M
approvals per key (220 leaves)
11
Halmos lemmas checking the verifier against RFC 8391, ten of them for all inputs
MIT
XMSS verifier, written from the RFC, no borrowed code

Leaf reuse is impossible by construction

XMSS is stateful: reusing a one-time leaf would let an attacker forge. The Ledger commits its counter before releasing a signature, and the contract keeps a used-leaf bitmap that reverts on any reuse.

Browse the contracts → · Guard spec → · Formal proof →

contracts/src/QuantumKeyRegistry.sol (simplified)
function _verifyAndConsumeXmss(
    bytes32 keyId,
    bytes32 digest,
    bytes calldata xmssSignature
) internal {
    XMSS.Signature memory sig = abi.decode(xmssSignature, (XMSS.Signature));
    BitMaps.BitMap storage used = _usedLeaves[xmssRoot(keyId)];  // per KEY, not per registration
    if (used.get(sig.leafIdx)) revert LeafAlreadyUsed(keyId, sig.leafIdx);

    if (!XMSS.verify(digest, sig, publicKey(keyId), treeHeight(keyId)))
        revert InvalidXmssSignature();  // whole tx rolls back

    used.set(sig.leafIdx);                // burn the one-time leaf
    emit LeafConsumed(keyId, sig.leafIdx, digest);
}
Where we are

Built in the open

The design and the post-quantum verifier are public today. Early-access teams help shape the rest.

XMSS verifier (Solidity)
RFC 8391 verifier with on-chain leaf consumption (a used-leaf bitmap in the key registry), Foundry tests and gas benchmarks
Implemented
Specification & threat model
Guard, key registry, pre-approval engine, service, hardware policy
Published
Safe App & Ledger screens
Queue, approval, batch, key ceremony, denial, emergency and device flows
Designed
XMSS verifier, machine-checked
Primitives and input-validation checks proven equal to RFC 8391 by symbolic execution; the root comparison that decides a well-formed signature argued by hand and pinned by vectors, not machine-checked for general h — PROOF.md states what is proven and assumed. Published as xmss-solidity
Proven in part
Guard, key registry & pre-approval contracts
Built on audited Safe and OpenZeppelin libraries; Foundry suites include a real-Safe integration test. The key registry's state machine and eighteen properties of the Guard and the pre-approval engine are proven against executable specifications with Halmos — the batch decoder is not among them
Implemented
Ledger app & Safe App
A first Rust device app builds, generates its key on-device and signs in Ledger's emulator, but it is a subset of the specified app and must not hold real funds; Safe{Wallet} integration is live as a read-only readiness preview
In development
External security audit
Required before any mainnet deployment
Planned
Who's building it

Designed by someone who has
worked both sides of the threat

Stan (Konstantin) Kladko — from the physics that creates the quantum threat to the cryptography that has to survive it.

⚛️ Quantum physicist

Ph.D., Max Planck Institute. Worked with Nobel laureate Robert B. Laughlin on quantum systems at Stanford. Director's Fellow at Los Alamos National Laboratory.

🔐 Crypto-module examiner

Directed a NIST-accredited cryptographic-module testing lab (CMVP), delivering FIPS 140-2 and side-channel security certifications.

⛓️ Blockchain at scale

Co-founder and CTO of SKALE, taking BLS threshold cryptography from paper to an Ethereum-aligned mainnet.

FAQ

Questions teams ask first

Do we have to move our assets or change our Safe?

No. You install a Guard on the Safe you already have. Owners, threshold, history and addresses stay exactly the same.

What happens if the Administrator's Ledger is lost?

Your owners can remove the Guard on their own, with no quantum key, after a 14-day public countdown. If the request isn't legitimate, your owners can cancel it at any point during that time with an ordinary Safe transaction. A lost device can never permanently lock your Safe.

Does this slow down our transfers?

Each transfer needs one extra approval from the Administrator on a Ledger. Batches — like a payroll run of up to 100 transfers — need just one approval for the whole batch.

What does it cost in gas?

Verifying the post-quantum signature costs about 745,000 gas, paid once when an approval is created (745,003 gas measured at h = 20). The check when the transaction executes is a lookup.

Which Safes are supported?

Safe v1.3.0 and later. The Safe must have no enabled modules, because modules skip guards — or be on Safe 1.5+ with FermionGuard's module guard installed too. It must also have no fallback handler: ERC-20 tokens and ETH work normally, but signed-message features (Permit, CowSwap orders, sign-in) and receiving NFTs via safeTransferFrom aren't supported yet.

Why XMSS and not ML-DSA or Falcon?

XMSS is a NIST-approved (SP 800-208) hash-based signature, so the EVM can verify it for about 1M gas. Lattice schemes like ML-DSA and Falcon would cost tens of millions of gas to verify on-chain today.

Can we use it in production today?

Not yet. The post-quantum verifier is machine-checked against RFC 8391 as far as described above, and the Guard contracts are implemented and tested, but nothing is audited yet; the Ledger app and Safe App are in development, and an external audit is required before any mainnet deployment. Request early access to be among the first teams onboarded.

Early access

Protect your Safe
before you need to

We're onboarding a first group of teams holding assets on Safe. Tell us about your setup and we'll be in touch as pilots open.

Opens a short, public GitHub form — please don't include anything confidential.

1 · Tell us about your Safe

Chain, Safe version, number of owners, rough transfer volume.

2 · We follow up

We'll reach out as early-access pilots open.

3 · Onboard together

Run the key ceremony and enable the Guard with your owners.