FALCON-512 is a lattice-based digital signature scheme selected by NIST for post-quantum standardization as FN-DSA (Draft FIPS 206). Tidecoin has used FALCON-512 as its only signature scheme since genesis block (December 27, 2020), making it, to our knowledge, one of the earliest production deployments of this NIST-selected algorithm. Every transaction on the Tidecoin blockchain since genesis uses FALCON-512.
FALCON combines two constructions: NTRU lattices and the GPV hash-then-sign framework [Gentry, Peikert, Vaikuntanathan, STOC 2008].
R_q = Z_q[x] / (x^512 + 1), q = 12,289h = g · f^(-1) mod qB = [[g, −f], [G, −F]]nonce ← rand(40 bytes)c = H(nonce ‖ message)sig = ffSampling(B, c)sig_compressed ≈ 666 bytesc = H(nonce ‖ message)s1 = c − s2 · h mod q‖(s1, s2)‖² ≤ bound~28,000 verifications/secFALCON-512 has the smallest combined public key + signature size among the NIST-track lattice signature options discussed in the whitepaper — critical for blockchain where every byte is stored forever and replicated across all nodes.
| Property | FALCON-512 | ML-DSA-44 |
|---|---|---|
| Signature size | 666 B | 2,420 B |
| Public key | 897 B | 1,312 B |
| PK + Sig | 1,563 B | 3,732 B |
| Stateless | ||
| NIST standard | Draft FIPS 206 | FIPS 204 |
| Verification speed | ~28,000/s | Fast |
FALCON's signing requires high-precision floating-point arithmetic for discrete Gaussian sampling. Native hardware FPU operations are vulnerable to electromagnetic emanation, power analysis, and timing side-channels — demonstrated by:
Full key recovery through electromagnetic measurements.
ePrint 2021/772100% key recovery from a single power trace on ARM Cortex-M4 devices.
arXiv 2504.00320Tidecoin uses the PQClean "clean" constant-time implementation by Thomas Pornin with integer emulation (FALCON_FPEMU):
emulated using uint64_t integer operations — the C double type is never used
for constant-time shifts with secret shift counts
table lookups read all elements
across 32-bit, 64-bit, little-endian, and big-endian platforms
The formal correctness of Falcon's emulated floating-point has been verified [Becker & Howe, ePrint 2024/321].
FIPS 206 standardizes FALCON as FN-DSA (FFT over NTRU-Lattice-Based Digital Signature Algorithm). Key changes:
BUFF security via public key hashing — zero size cost, stronger unforgeability [ePrint 2024/710]
Context string support — domain separation between applications
Nonce regeneration on restart — eliminates subtle information leakage from nonce reuse
Fixed-point NTRUSolve — removes floating-point from keygen (signing still uses emulated FP)
Public key encoding remains unchanged between FALCON and FN-DSA. Tidecoin's transition plan: existing keys work in both modes; post-activation signatures align with FN-DSA's direction.
Keys are identical in both modes. Only signature creation and verification bounds differ. Existing wallets require no key migration — the same keys produce tighter signatures after AuxPoW activation.
| Property | Legacy | Strict |
|---|---|---|
| When | Pre-AuxPoW (current mainnet) | Post-AuxPoW (upcoming) |
| Norm bound | Relaxed: 43,533,782 | Standard PQClean: 34,034,726 |
| Max signature size | 690 bytes | 752 bytes (padded 666) |
| Verification | Backward-compatible with early signatures | Tighter security margins |
The legacy norm bound is a relaxed threshold adopted for backward compatibility during Tidecoin's early operation — it is not the pre-2019-fix value (the 2019 sampler bug was a fundamentally different issue affecting the lookup table and rejection formula, not the norm bound). The strict bound aligns with the standard PQClean reference implementation.
No. In August 2019, Markku-Juhani O. Saarinen discovered two severe bugs in the Falcon Gaussian sampler (incorrect lookup table values and wrong rejection sampling probability). A 2025 retrospective [ACM CCS 2025] demonstrated that ~50 million buggy signatures could enable full key recovery.
Thomas Pornin published the fix on September 18, 2019. Tidecoin's genesis block was mined on December 27, 2020 — over 15 months after the fix. Tidecoin has always used the post-fix PQClean implementation. No Tidecoin signature was ever produced by the vulnerable code.