Metadata-Version: 2.4
Name: qweb3
Version: 1.1.3
Summary: Quantova Post-Quantum Web3 Client SDK (Python)
Author: Quantova
License: Apache-2.0
Project-URL: Homepage, https://quantova.org
Keywords: quantova,web3,post-quantum,blockchain,qvm,dilithium,falcon,sphincs-plus,sdk
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.25
Requires-Dist: mnemonic>=0.20
Dynamic: license-file

# Qweb3.py

**Quantova Post-Quantum Web3 Client — Python SDK.** Connect to a
[Quantova](https://quantova.org) node, manage post-quantum accounts, sign and
broadcast transactions, and interact with QVM smart contracts from Python. The Python
counterpart of [qweb3.js](https://github.com/Quantova/Qweb3.js) and
[qweb3.rs](https://github.com/Quantova/qweb3.rs).

## 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 — so they resist quantum attacks. Addresses are
**Bech32m `Q1...`**; the chain speaks **`q_*` JSON-RPC**.

## Cross-SDK compatibility (byte-for-byte)
Accounts derive identically to qweb3.js and qweb3.rs, so **the same mnemonic yields the
same `Q1...` address** in all three SDKs:

- mnemonic -> 32-byte seed = substrate mini-secret
  `PBKDF2-HMAC-SHA512(BIP-39 entropy, "mnemonic", 2048)[:32]` — *verified* equal to
  qweb3.js (`"test test ... junk"` -> `4ca479f5...3b4709c`).
- address = `SHA3-256(public_key)[:20]` with byte 0 = `0x40`, Bech32m-encoded `Q1...`.
- keypairs use the **same post-quantum cores** as the node and qweb3.js: Falcon-512
  (`ChaCha20Rng(seed)`), Dilithium2/ML-DSA-44 (`keygen_from_seed`), SPHINCS+ SHAKE-128s
  (`blake2_256`-derived components).

## Install
```bash
pip install qweb3
```

## Post-quantum backend
The pure-Python package ships the full client (accounts, addresses, ABI, QNS, RPC,
fees, contracts) and the mnemonic/address derivation above. **Key generation and
signing require a post-quantum backend** exposing the falcon-wasm-style interface
(`<scheme>_pair_from_seed` / `_sign` / `_verify`). Register it once at startup:

```python
import qweb3.crypto_backend as cb
cb.set_backend(my_pq_backend)   # adapter over the Quantova PQ cores
```

Any backend that produces the **same Falcon-512 / ML-DSA-44 / SLH-DSA-SHAKE-128s keys
from a seed** as qweb3.js keeps addresses and signatures cross-compatible. (The
recommended adapter wraps the same `fn-dsa` / `fips204` / `fips205` cores used by
qweb3.rs, so derivation stays byte-identical.)

## Quick start
```python
from qweb3 import QWeb3
q = QWeb3("https://rpc.quantova.org")
acct = q.wallet.import_mnemonic("test test ... junk")   # -> same Q1... as qweb3.js/rs
print(q.rpc.get_balance(acct.address))
```

## Resources
- 🌐 https://quantova.org · 🔎 https://qvmscan.io · 💻 https://github.com/Quantova/Qweb3.py

## License
BUSL-1.1 - (c) 2026 Quantova Inc. See LICENSE.
