Algorand-native post-quantum cryptography developer toolkit — Falcon-1024 accounts, M-of-N multisig, and AVM smart contract templates
Project description
algo-pqc-kit
The first complete Algorand-native post-quantum cryptography developer toolkit.
What Is This?
Algorand's AVM v12 (deployed November 2025) introduced the falcon_verify opcode — enabling on-chain Falcon-1024 post-quantum signature verification. But there was no developer toolkit to make it usable.
algo-pqc-kit fills that gap:
| Layer | What It Does |
|---|---|
| Puya Smart Contracts | FalconVault (M-of-N PQC vault), FalconLsig (PQC account), PQCDao (PQC governance) |
| Python SDK | FalconAccount, FalconMultisig — generate keys, derive addresses, sign, co-sign |
| AlgoKit Plugin | algokit generate pqc-vault — scaffold a full PQC vault in one command |
Quick Start
pip install algo-pqc-kit
from algo_pqc_kit import FalconAccount, FalconMultisig
# Generate a Falcon-1024 PQC account (Algorand address derived via lsig)
account = FalconAccount.generate()
print(f"PQC Address: {account.address}")
print(f"Public key: {account.public_key.hex()[:32]}...")
# Create a 2-of-3 quantum-resistant multisig committee
members = [FalconAccount.generate() for _ in range(3)]
committee = FalconMultisig.create(
threshold=2,
members=[m.public_key for m in members]
)
print(f"Committee ID: {committee.address}")
# Build and sign a vault release message
message = committee.build_release_message(
nonce=0,
recipient="RECIPIENT_ALGORAND_ADDRESS",
amount=1_000_000, # microALGO
)
session = committee.start_session(message)
session.add_signature(index=0, sig=members[0].sign(message))
session.add_signature(index=2, sig=members[2].sign(message))
payload = session.finalize()
print(f"Ready for on-chain submission: {payload.is_complete()}")
Smart Contracts
Three ARC-4 contracts, all using the AVM falcon_verify opcode:
FalconVault — M-of-N Post-Quantum Treasury
cd contracts/
puyapy falcon_vault.py # compiles to TEAL + ABI
algokit deploy # deploys to Testnet
A treasury that releases ALGO, ASAs, or executes arbitrary Application Calls when M-of-N Falcon-1024 signatures are verified on-chain. Features dynamic membership (add/remove signers via proposals) and uses replay-protected nonces.
FalconLsig — PQC Logic Signature Account
The foundational primitive: a Logic Signature that embeds a Falcon-1024 public key and gates all spending via falcon_verify. This is how Algorand PQC accounts work.
PQCDao — Post-Quantum DAO Governance
A complete DAO where every spending proposal requires M-of-N committee members to sign with their Falcon-1024 keys. Features Voting Periods, Execution Delays (Timelocks), and explicit Yes/No voting choices. No Ed25519 anywhere in the governance flow.
Testnet Deployments
Contracts verified on Algorand Testnet — check the deployments page for live app IDs and transaction links.
AlgoKit Plugin (Coming in v0.2)
algokit generate pqc-vault
Scaffolds a complete PQC vault project: keypairs, contracts, deployment scripts — zero configuration required.
How It Works
The AVM falcon_verify Opcode
falcon_verify(data: []byte, sig: [1232]byte, pubkey: [1793]byte) → bool
- Cost: 1700 opcodes per verification
- AVM version: 12+ (Algorand mainnet since Nov 2025)
- Algorithm: Falcon-1024 / FN-DSA (NIST FIPS 206, deterministic variant)
This opcode is the foundation of all algo-pqc-kit contracts.
Address Derivation
Algorand PQC accounts are Logic Signatures. The address is:
lsig_program = TEAL_v12 [ arg 0; txn TxID; pushbytes <pubkey>; falcon_verify ]
address = base32( sha512_256("Program" || lsig_program) + checksum )
Every Falcon-1024 public key has a unique, deterministic Algorand address.
Security
- Quantum-resistant: Falcon-1024 (NIST FN-DSA) — secure against Shor's algorithm
- Replay protection: All vault/DAO messages include a nonce
- No admin key: Contracts are immutable after deployment
- Misuse-resistant SDK: Signatures verified at collection time in co-signing sessions
- No C FFI: Pure Python SDK (wraps Algorand's deterministic Falcon implementation)
Relationship to falcon-multisig
The cryptographic engine is extracted from falcon-multisig — a production Rust library battle-tested in QuantaChain across 80,000+ Falcon-512 consensus blocks. algo-pqc-kit is the Algorand integration layer on top of that proven foundation.
License
MIT OR Apache-2.0
Links
| Resource | URL |
|---|---|
| PyPI | https://pypi.org/project/algo-pqc-kit |
| crates.io (engine) | https://crates.io/crates/falcon-multisig |
| NIST FIPS 206 | https://csrc.nist.gov/pubs/fips/206/final |
| Algorand PQC Brief | https://algorand.co/blog/technical-brief-quantum-resistant-transactions-on-algorand-with-falcon-signatures |
| AVM v12 opcodes | https://developer.algorand.org/docs/get-details/dapps/avm/teal/opcodes/v12/ |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file algo_pqc_kit-0.3.0.tar.gz.
File metadata
- Download URL: algo_pqc_kit-0.3.0.tar.gz
- Upload date:
- Size: 20.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf281f6ead348f809afb512fb296d8195b70ecce4042dbdce2c7f650a8d0a8ba
|
|
| MD5 |
2dc6c6566d1a369b382b8bdf1c1d7c83
|
|
| BLAKE2b-256 |
5cffda840fa5d72dc1a70a56d7b013814dfd03267e8f260eddf16a00b9233a89
|
File details
Details for the file algo_pqc_kit-0.3.0-py3-none-any.whl.
File metadata
- Download URL: algo_pqc_kit-0.3.0-py3-none-any.whl
- Upload date:
- Size: 17.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d2f87be4dd32dd23f87cb7214e26b7bd586b77a0e5d4f033cc0a48adfe6bca2
|
|
| MD5 |
73242fb8353ec1d99bee0311526f589e
|
|
| BLAKE2b-256 |
d5144c39b8080a32b4500094fd36a78f3bd4ea9f3643760b84a54018b2d979a7
|