Official Rust client for Quantova, the post-quantum Layer-1 — built by Quantova alongside qweb3.js and qweb3.py. Connect, derive Q addresses, use the QVM and QNS, and sign with post-quantum keys. Quantova's own implementation, not a fork or copy.
Qweb4.rs
Quantova Post-Quantum Web4 Client — Rust SDK. Connect to a Quantova node, manage post-quantum accounts, sign and broadcast transactions, and interact with QVM smart contracts from Rust. The Rust counterpart of Qweb4.js and Qweb4.py.
Quantum security
Quantova is a post-quantum Layer-1. Accounts use NIST post-quantum signatures (Falcon-512, SPHINCS+ SHAKE-128s, CRYSTALS-Dilithium2/ML-DSA-44) with SHA3-256 — no ECDSA/secp256k1 — resistant to quantum attacks. Addresses are Bech32mQ1…; the chain speaks q_* JSON-RPC.
Cross-SDK compatibility (byte-for-byte)
Keys are derived deterministically from the mnemonic using the **exact same cores as Qweb4.js and the Quantova node** — pure Rust, no nativeliboqs:
| Scheme | Crate | Seeding | |---|---|---| | Falcon-512 | fn-dsa | ChaCha20Rng::fromseed(seed) | | Dilithium2 | fips204 | mldsa44::keygenfrom_seed(seed) | | SPHINCS+ | fips205 | blake2256(SCALE(seed,label))[..16] components |
The mnemonic → 32-byte seed step is the substrate mini-secret (PBKDF2-HMAC-SHA512(BIP-39 entropy, "mnemonic", 2048)[..32]). The result: **the same phrase yields the same Q1… address and valid signatures in Qweb4.js, Qweb4.py and Qweb4.rs.** Verified against Qweb4.js reference vectors in the test suite, e.g. "test test … junk" → Falcon Q1GREP2A5A6DX9UFFPWW72PCZ4X429LMQMV6ZW35.
Add to your project
[dependencies]
qweb4 = "1.1"
Quick start
use qweb4::wallet::{Wallet, Scheme};
// Generate a new account (returns the wallet + its 24-word mnemonic). let (wallet, mnemonic) = Wallet::create(Scheme::Falcon)?; println!("address: {}", wallet.address()); // Q1… println!("mnemonic: {mnemonic}");
// Or restore from a mnemonic — same address as Qweb4.js / Qweb4.py. let wallet = Wallet::import_mnemonic(&mnemonic, Scheme::Falcon)?;
// Sign and verify (post-quantum). let sig = wallet.sign(b"hello quantova")?; assert!(wallet.verify(b"hello quantova", &sig));
Ok::<(), qweb4::error::Error>(())
Post-quantum keygen and signing are always available (pure Rust, no system libraries). Wallet, Scheme, address derivation, ABI, QNS, fees and RPC need no extra features.
Resources
- 🌐 https://quantova.org · 🔎 https://qvmscan.io · 💻 https://github.com/Quantova/Qweb4.rs