🧊 Community Implementation: This is a TypeScript port of the ZcashFoundation/frost library. It implements RFC 9591: Two-Round Threshold Schnorr Signatures with FROST.
⚠️ Disclaimer: This is an independent project created for personal learning. It has not been audited and is not ready for production use. For production applications, please use the audited Rust implementation by the Zcash Foundation.
FROST (Flexible Round-Optimized Schnorr Threshold) is a threshold signature scheme that allows a group of participants to collaboratively generate Schnorr signatures without any single party holding the complete private key. Key features include:
- Threshold Security: t-of-n signing where any t participants can sign, but fewer than t learn nothing
- Two-Round Protocol: Efficient signing with only two communication rounds
- Distributed Key Generation: Built-in DKG protocol for decentralized key setup
- Multiple Curves: Support for Ed25519, Ed448, P-256, secp256k1, Ristretto255, and Taproot
- RFC 9591: Two-Round Threshold Schnorr Signatures with FROST - The official IETF specification
- The ZF FROST Book - Comprehensive documentation from the Zcash Foundation
- FROST Paper - Original academic paper by Chelsea Komlo and Ian Goldberg
- threshold.network - Real-world threshold cryptography applications
- FROST Demo - Interactive tutorial
| Package | Description |
|---|---|
| @frosts/core | Core types, traits, and generic FROST protocol implementation. Provides the foundation for all ciphersuite packages. 🦀 Rust | 📖 Docs |
| @frosts/ed25519 | FROST with Ed25519-SHA512. The most widely used curve for signatures, compatible with SSH keys and many blockchain protocols. 🦀 Rust | 📖 Docs |
| @frosts/ed448 | FROST with Ed448-SHAKE256. Higher security margin (224-bit) for applications requiring stronger guarantees. 🦀 Rust | 📖 Docs |
| @frosts/p256 | FROST with P-256-SHA256. NIST standard curve, widely supported in hardware security modules and enterprise systems. 🦀 Rust | 📖 Docs |
| @frosts/ristretto255 | FROST with Ristretto255-SHA512. Prime-order group built on Curve25519, eliminates cofactor issues. 🦀 Rust | 📖 Docs |
| @frosts/secp256k1 | FROST with secp256k1-SHA256. Bitcoin and Ethereum compatible curve for blockchain applications. 🦀 Rust | 📖 Docs |
| @frosts/secp256k1-tr | FROST with secp256k1 + Taproot (BIP-340). Bitcoin Taproot compatible with x-only public keys. 🦀 Rust | 📖 Docs |
| @frosts/rerandomized | Re-randomized FROST variant with unlinkable signatures. Signatures cannot be correlated across signing sessions. 🦀 Rust | 📖 Docs |
This TypeScript implementation is a port of the excellent work by the Zcash Foundation FROST team. The original FROST paper was authored by Chelsea Komlo and Ian Goldberg.
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
See SECURITY-REVIEW.md for how to contribute a security audit.
Found a vulnerability? We'd really appreciate you letting us know privately at security@snowpine.io - please avoid opening public issues for security concerns.
| Contact | Fingerprint |
|---|---|
| security@snowpine.io | C018 7736 F305 EF8C 425C 25DB F859 D6F9 A6DE B25A |
This project is licensed under the MIT License – see the LICENSE file for details.