Skip to content

Quantova/Qweb3.py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Qweb3.py

Quantova Post-Quantum Web3 Client — Python SDK. Connect to a Quantova node, manage post-quantum accounts, sign and broadcast transactions, and interact with QVM smart contracts from Python. The Python counterpart of qweb3.js and 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

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:

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

from qweb3 import Qweb3
q = Qweb3("https://rpc.quantova.org")
acct = q.accounts.import_mnemonic("test test … junk")   # → same Q1… as qweb3.js/rs
print(q.get_balance(acct.address))

Resources

License

Apache-2.0 © Quantova

About

Post-quantum Web3 client SDK for the Quantova Layer-1 blockchain — Python, synchronous in the style of web3.py and pip-installable. Falcon/Dilithium/SPHINCS+ signing, the q_* JSON-RPC namespace, QVM contracts (Solidity ABI), QNS .q names, fee/gas oracle, batch requests, real-time event hooks, REST client, and a qweb3-cli. Python 3.8+.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages