Releases: quantachain/quanta
Quantachain Testnet Alpha V.0.7.5
QuantaChain Testnet — Alpha v0.7.5
Post-quantum secure blockchain using Falcon-512 signatures and SHA3-256 Proof of Work.
v0.7.5 — Consensus-critical: state root fix + stale mining fix + 90k checkpoint.
All nodes MUST upgrade. Nodes stuck at block 91,096 ("Invalid state root") and all
nodes experiencing stale mined blocks or nonce errors after reorg are fixed.
No testnet reset. No data wipe required.
This is a pre-release testnet build. Do not use real funds. APIs and chain parameters may change between alpha releases.
Genesis Block
| Parameter | Value |
|---|---|
| Network | Testnet (QUA7) |
| Timestamp | 1775001600 (2026-04-01 00:00:00 UTC) |
| Testnet Genesis Hash | 00000012d3a2cbb7eb9579330ccdaa4f83ca9e6e016bfe6d2c8a38539cf3733b |
| Mainnet Genesis Hash | 1cdbccdff3db462378f4acbe4553b49040ffcdebf74b5c77e685ba05ccfa8cb0 |
| Difficulty | 8,304,130 (Testnet) / 16,777,216 (Mainnet) |
| Block Time | 30 seconds |
Testnet Faucet Wallets (Genesis Premine)
Each address below received 1,000,000 QUA at genesis. Faucet account 0 is the active sender used by the faucet API.
| Index | Address | Role |
|---|---|---|
| 0 | 0x1683be267318d2ddd8cee8df4a4548dcffb1e088 |
Faucet Sender (active) |
| 1 | 0xd528c18ce7a8844e4a4dcd841975b20ae599b020 |
Faucet Reserve |
| 2 | 0xfd6e36bfa2b2798d08592802206c943d5513adfb |
Faucet Reserve |
| 3 | 0xed15573ad312d41aaef74cff56a8ef28122ec2db |
Faucet Reserve |
| 4 | 0xaffd6d4f74c5651110efcf1b9736f7a5cf2ccdbb |
Faucet Reserve |
| 5 | 0xbf5ee055f399323fdd0cefe3d4aa923678d46107 |
Faucet Reserve |
| 6 | 0x1dc9637b183093d723ea8d1fb18083b06490facb |
Faucet Reserve |
| 7 | 0xa2270f30ca1aad922510375508bf68cd95509f29 |
Faucet Reserve |
| 8 | 0xe15a689775685ae324559ea9a492fc650354ca0b |
Faucet Reserve |
| 9 | 0x005dcff212d27b55e7a74bf745e1349ab44ca25d |
Faucet Reserve |
Treasury
| Parameter | Value |
|---|---|
| Treasury Address | ms69216b1d10425689704d5ae3b2a4aa17049f59b1 |
| Multisig Scheme | 3-of-5 Falcon-512 |
| Block Reward to Treasury | 5% per block |
| Fee to Treasury | 20% of transaction fees |
Tokenomics
| Parameter | Value |
|---|---|
| Year 1 Block Reward | 100 QUA |
| Annual Reward Reduction | 15% per year |
| Minimum Reward Floor | 5 QUA (reached ~year 20) |
| Mining Reward Lock | 50% locked for 6 months |
| Fee Burn | 70% of all transaction fees |
| Fee to Treasury | 20% of all transaction fees |
| Fee to Miner | 10% of all transaction fees |
| Max Block Transactions | 1,200 |
| Max Block Size | 2 MB |
| Min Transaction Fee | 0.0001 QUA |
Quick Start with Docker
Option 1: Docker Desktop (Graphical Interface)
- Open Docker Desktop and find
xd637/quanta-node:v0.7.1-alpha(or:latest) in your Images. - Click Run.
- Under Optional settings, configure:
- Container name:
quanta-node - Ports: Map
3000,7782,8333,9090to themselves. - Volumes:
- Add host path
quanta-datato container path/home/quanta/quanta_data - Add host path
quanta-logsto container path/home/quanta/logs
- Add host path
- Container name:
- Click Run.
Option 2: Docker CLI
docker pull xd637/quanta-node:v0.7.5-alpha
docker run -d \
--name quanta-node \
-p 3000:3000 -p 8333:8333 -p 7782:7782 -p 9090:9090 \
-v quanta-data:/home/quanta/quanta_data \
-v quanta-logs:/home/quanta/logs \
xd637/quanta-node:v0.7.4-alphaOption 3: Docker Compose (Recommended)
Upgrading from v0.7.0 — no data wipe needed:
docker compose -f docker-compose.single.yml pull
docker compose -f docker-compose.single.yml up -dServer Setup (Ubuntu / VPS)
1. Update system and install Docker:
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker ubuntu && newgrp docker2. Open necessary ports:
sudo ufw allow 8333/tcp
sudo ufw allow 7782/tcp
sudo ufw allow 3000/tcp
sudo ufw allow ssh
sudo ufw --force enable3. Upgrade to v0.7.5 (no data wipe required):
docker pull xd637/quanta-node:latest
docker stop quanta-node && docker rm quanta-node
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v ~/quanta_data:/home/quanta/quanta_data \
xd637/quanta-node:latest4. Check logs:
docker logs quanta-node --tail 30 -f🔄 Clean Start Guide (Wipe Data & Resync from Genesis)
When should I do a clean start?
- Node stuck at same block height for > 30 minutes
- Logs show repeated
"Invalid block"or"Reorg failed"errors- Running a version older than v0.7.0 (wire format changed)
- Support advises it
⚠️ Will I lose my mining rewards?
Your wallet file is separate from the node database. Mining rewards live on-chain —
your balance is safe as long as your address exists on the canonical chain.
Wipe only the data directory, never your wallet file.
Docker — named volume (most common)
# 1. Stop and remove the container
docker stop quanta-node
docker rm quanta-node
# 2. Delete the chain data volume
docker volume rm quanta-data
# 3. Pull latest image and start fresh
docker pull xd637/quanta-node:latest
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v quanta-data:/home/quanta/quanta_data \
-v quanta-logs:/home/quanta/logs \
xd637/quanta-node:latest
# 4. Watch sync progress
docker logs quanta-node --tail 50 -fDocker — host path mount (~/quanta_data)
docker stop quanta-node && docker rm quanta-node
rm -rf ~/quanta_data && mkdir -p ~/quanta_data
docker pull xd637/quanta-node:latest
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v ~/quanta_data:/home/quanta/quanta_data \
xd637/quanta-node:latest
docker logs quanta-node --tail 50 -fBare Metal (no Docker)
pkill -f "quanta start" # stop the node
rm -rf ./quanta_data # wipe chain data (adjust path if changed in quanta.toml)
./target/release/quanta start -c quanta.tomlWindows — Docker Desktop
- Docker Desktop → Volumes → delete
quanta-data - Open a terminal:
docker stop quanta-node && docker rm quanta-node
docker pull xd637/quanta-node:latest
docker run -d --name quanta-node ^
-p 3000:3000 -p 8333:8333 -p 7782:7782 -p 9090:9090 ^
-v quanta-data:/home/quanta/quanta_data ^
xd637/quanta-node:latestHow long does resync take?
Times depend on VPS CPU core count (Rayon uses all cores for Falcon-512 verification)
and network speed to the bootstrap node.
| Chain Height | Good VPS (4+ cores) | Weak VPS / slow link |
|---|---|---|
| 0 → 50,000 | ~3–6 min | ~10–15 min |
| 0 → 91,000+ | ~5–15 min | ~15–25 min |
The main bottleneck is Falcon-512 signature verification — each block's signatures are
verified in parallel via Rayon, and the LRU cache skips re-verification of seen sigs.
State replay is fast due to 1,000-block snapshots (only the delta is replayed, not from genesis).
# Watch sync in real time
docker logs quanta-node -f | grep -i "accepted\|height\|sync"Or check live at scan.quantachain.org
Manual Build from Source
git clone https://github.com/quantachain/quanta
cd quanta
git checkout v0.7.5-alpha
cargo build --release
./target/release/quanta start -c quanta.tomlWallet Management
# Native
./target/release/quanta new-wallet --file wallet.qua
# Docker
docker exec -it quanta-node quanta new_wallet --file wallet.qua
# HD Wallet (recommended — 24-word recovery phrase)
docker exec -it quanta-node quanta new_hd_wallet --file hd_wallet.jsonMining
# Native
./target/release/quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782
# Docker (background)
docker exec -d quanta-node quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782
# Stop
docker exec -it quanta-node quanta stop_mining --rpc-port 7782Node Status
docker exec -it quanta-node quanta status --rpc-port 7782
docker exec -it quanta-node quanta print_height --rpc-port 7782
docker exec -it quanta-node quanta mining_status --rpc-port 7782Ports
| Port | Service |
|---|---|
3000 |
REST API |
8333 |
P2P Network |
7782 |
RPC |
9090 |
Prometheus Metrics |
What Changed in Alpha v0.7.5
No testnet reset. No wire format change. All nodes must upgrade.
Nodes stuck at block 91,096 with repeated "Invalid state root" errors will be fixed
by this release. The 90,000 checkpoint means syncing nodes can pass this height cleanly.
Fix — State root mismatch at block 91,096 (root cause)
create_block_template (miner) and validate_block_consensus (receiver) both computed
the state root hash from a cloned account state without first calling
unlock_mature_coinbase(index). At block 91,096 — exactly 100 blocks (COINBASE_MATURITY)
after the bootstrap node's heavy mining burst around block 90,996 — locked coinbase
entries matured. The two sides hashed structurally different account states:
WARN Invalid state root at block 91096:
computed=c372afa7b... block=5de69d916...
Fix: both paths now call unlock_mature_coinbase(block.index) before applying
transactions and computing the state root hash. This is the same step that
add_block_to_main_chain already performed when committing — now all three code paths
are consistent.
Fix — Invalid nonce after every reorg ("expected 5, got 1")
The pending_nonces DashMap tracked the highest mempool nonce per sender. After a...
Quantachain Testnet Alpha V.0.7.4
QuantaChain Testnet — Alpha v0.7.4
Post-quantum secure blockchain using Falcon-512 signatures and SHA3-256 Proof of Work.
v0.7.4 — Sync stability patch. No testnet reset required.
All nodes SHOULD upgrade. v0.7.2 nodes may get stuck during reorg at high block heights
due to a timeout-inducing O(n) Sled scan and incorrect LWMA bounds check during replay.
Existingquanta_data/directories are fully compatible — drop-in upgrade.
This is a pre-release testnet build. Do not use real funds. APIs and chain parameters may change between alpha releases.
Genesis Block
| Parameter | Value |
|---|---|
| Network | Testnet (QUA7) |
| Timestamp | 1775001600 (2026-04-01 00:00:00 UTC) |
| Testnet Genesis Hash | 00000012d3a2cbb7eb9579330ccdaa4f83ca9e6e016bfe6d2c8a38539cf3733b |
| Mainnet Genesis Hash | 1cdbccdff3db462378f4acbe4553b49040ffcdebf74b5c77e685ba05ccfa8cb0 |
| Difficulty | 8,304,130 (Testnet) / 16,777,216 (Mainnet) |
| Block Time | 30 seconds |
Testnet Faucet Wallets (Genesis Premine)
Each address below received 1,000,000 QUA at genesis. Faucet account 0 is the active sender used by the faucet API.
| Index | Address | Role |
|---|---|---|
| 0 | 0x1683be267318d2ddd8cee8df4a4548dcffb1e088 |
Faucet Sender (active) |
| 1 | 0xd528c18ce7a8844e4a4dcd841975b20ae599b020 |
Faucet Reserve |
| 2 | 0xfd6e36bfa2b2798d08592802206c943d5513adfb |
Faucet Reserve |
| 3 | 0xed15573ad312d41aaef74cff56a8ef28122ec2db |
Faucet Reserve |
| 4 | 0xaffd6d4f74c5651110efcf1b9736f7a5cf2ccdbb |
Faucet Reserve |
| 5 | 0xbf5ee055f399323fdd0cefe3d4aa923678d46107 |
Faucet Reserve |
| 6 | 0x1dc9637b183093d723ea8d1fb18083b06490facb |
Faucet Reserve |
| 7 | 0xa2270f30ca1aad922510375508bf68cd95509f29 |
Faucet Reserve |
| 8 | 0xe15a689775685ae324559ea9a492fc650354ca0b |
Faucet Reserve |
| 9 | 0x005dcff212d27b55e7a74bf745e1349ab44ca25d |
Faucet Reserve |
Treasury
| Parameter | Value |
|---|---|
| Treasury Address | ms69216b1d10425689704d5ae3b2a4aa17049f59b1 |
| Multisig Scheme | 3-of-5 Falcon-512 |
| Block Reward to Treasury | 5% per block |
| Fee to Treasury | 20% of transaction fees |
Tokenomics
| Parameter | Value |
|---|---|
| Year 1 Block Reward | 100 QUA |
| Annual Reward Reduction | 15% per year |
| Minimum Reward Floor | 5 QUA (reached ~year 20) |
| Mining Reward Lock | 50% locked for 6 months |
| Fee Burn | 70% of all transaction fees |
| Fee to Treasury | 20% of all transaction fees |
| Fee to Miner | 10% of all transaction fees |
| Max Block Transactions | 1,200 |
| Max Block Size | 2 MB |
| Min Transaction Fee | 0.0001 QUA |
Quick Start with Docker
Option 1: Docker Desktop (Graphical Interface)
- Open Docker Desktop and find
xd637/quanta-node:v0.7.1-alpha(or:latest) in your Images. - Click Run.
- Under Optional settings, configure:
- Container name:
quanta-node - Ports: Map
3000,7782,8333,9090to themselves. - Volumes:
- Add host path
quanta-datato container path/home/quanta/quanta_data - Add host path
quanta-logsto container path/home/quanta/logs
- Add host path
- Container name:
- Click Run.
Option 2: Docker CLI
docker pull xd637/quanta-node:v0.7.4-alpha
docker run -d \
--name quanta-node \
-p 3000:3000 -p 8333:8333 -p 7782:7782 -p 9090:9090 \
-v quanta-data:/home/quanta/quanta_data \
-v quanta-logs:/home/quanta/logs \
xd637/quanta-node:v0.7.4-alphaOption 3: Docker Compose (Recommended)
Upgrading from v0.7.0 — no data wipe needed:
docker compose -f docker-compose.single.yml pull
docker compose -f docker-compose.single.yml up -dServer Setup (Ubuntu / VPS)
1. Update system and install Docker:
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker ubuntu && newgrp docker2. Open necessary ports:
sudo ufw allow 8333/tcp
sudo ufw allow 7782/tcp
sudo ufw allow 3000/tcp
sudo ufw allow ssh
sudo ufw --force enable3. Upgrade to v0.7.4 (no data wipe required):
docker pull xd637/quanta-node:latest
docker stop quanta-node && docker rm quanta-node
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v ~/quanta_data:/home/quanta/quanta_data \
xd637/quanta-node:latest4. Check logs:
docker logs quanta-node --tail 30 -f🔄 Clean Start Guide (Wipe Data & Resync from Genesis)
When should I do a clean start?
- Node stuck at same block height for > 30 minutes
- Logs show repeated
"Invalid block"or"Reorg failed"errors- Running a version older than v0.7.0 (wire format changed)
- Support advises it
⚠️ Will I lose my mining rewards?
Your wallet file is separate from the node database. Mining rewards live on-chain —
your balance is safe as long as your address exists on the canonical chain.
Wipe only the data directory, never your wallet file.
Docker — named volume (most common)
# 1. Stop and remove the container
docker stop quanta-node
docker rm quanta-node
# 2. Delete the chain data volume
docker volume rm quanta-data
# 3. Pull latest image and start fresh
docker pull xd637/quanta-node:latest
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v quanta-data:/home/quanta/quanta_data \
-v quanta-logs:/home/quanta/logs \
xd637/quanta-node:latest
# 4. Watch sync progress
docker logs quanta-node --tail 50 -fDocker — host path mount (~/quanta_data)
docker stop quanta-node && docker rm quanta-node
rm -rf ~/quanta_data && mkdir -p ~/quanta_data
docker pull xd637/quanta-node:latest
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v ~/quanta_data:/home/quanta/quanta_data \
xd637/quanta-node:latest
docker logs quanta-node --tail 50 -fBare Metal (no Docker)
pkill -f "quanta start" # stop the node
rm -rf ./quanta_data # wipe chain data (adjust path if changed in quanta.toml)
./target/release/quanta start -c quanta.tomlWindows — Docker Desktop
- Docker Desktop → Volumes → delete
quanta-data - Open a terminal:
docker stop quanta-node && docker rm quanta-node
docker pull xd637/quanta-node:latest
docker run -d --name quanta-node ^
-p 3000:3000 -p 8333:8333 -p 7782:7782 -p 9090:9090 ^
-v quanta-data:/home/quanta/quanta_data ^
xd637/quanta-node:latestHow long does resync take?
| Chain Height | Approx. Time |
|---|---|
| 0 → 50,000 | ~15–25 min |
| 0 → 85,000+ | ~25–40 min |
# Watch sync in real time
docker logs quanta-node -f | grep -i "accepted\|height\|sync"Or check live at scan.quantachain.org
Manual Build from Source
git clone https://github.com/quantachain/quanta
cd quanta
git checkout v0.7.4-alpha
cargo build --release
./target/release/quanta start -c quanta.tomlWallet Management
# Native
./target/release/quanta new-wallet --file wallet.qua
# Docker
docker exec -it quanta-node quanta new_wallet --file wallet.qua
# HD Wallet (recommended — 24-word recovery phrase)
docker exec -it quanta-node quanta new_hd_wallet --file hd_wallet.jsonMining
# Native
./target/release/quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782
# Docker (background)
docker exec -d quanta-node quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782
# Stop
docker exec -it quanta-node quanta stop_mining --rpc-port 7782Node Status
docker exec -it quanta-node quanta status --rpc-port 7782
docker exec -it quanta-node quanta print_height --rpc-port 7782
docker exec -it quanta-node quanta mining_status --rpc-port 7782Ports
| Port | Service |
|---|---|
3000 |
REST API |
8333 |
P2P Network |
7782 |
RPC |
9090 |
Prometheus Metrics |
What Changed in Alpha v0.7.4
No testnet reset. No wire format change. Sync stability patch — all nodes should upgrade.
Fix — O(n) Sled scan on every reorg (deep_reorg)
When performing even a tiny 2–5 block reorg, deep_reorg was recalculating base_work
by reading every block from 0 to rollback_to out of Sled. At height 85k this was
85,000 sequential reads while holding the blockchain write lock, taking 30–60 seconds.
During this time the syncing peer would time out, drop the connection, and the sync loop
logged "Reorg failed: Invalid block" then retried — hitting the same scan again.
Fix: replaced with cumulative_work_at(rollback_to) which is O(1) — it reads the
in-memory cumulative_work value that is updated incrementally after every block.
Fix — Wrong LWMA bounds check during reorg replay
validate_block_consensus_reorg() called calculate_next_difficulty() to obtain an
LWMA estimate, then rejected any peer block whose difficulty was outside ±50% of that
estimate. During a deep reorg the chain is partially rebuilt — the LWMA window is
incomplete (wrong timestamps, missing blocks) — so the estimate was meaningless and
valid peer blocks were rejected as "outside LWMA bounds".
Fix: removed the LWMA bounds check from the reorg validation path. The has_valid_hash()
PoW check already proves real work was done. MIN_DIFFICULTY still guards against trivial
blocks.
Fix — Snapshot fallback replayed wrong block range (rebuild_account_state_up_to)
When a 1000-block snapshot was missing (new nodes have none), the code fell back to
genesis-only state (10 faucet accounts) then set replay_start = snapshot_height + 1,
skipping all blocks ...
Quantachain Testnet Alpha V.0.7.3
QuantaChain Testnet — Alpha v0.7.3
Post-quantum secure blockchain using Falcon-512 signatures and SHA3-256 Proof of Work.
v0.7.3 — Sync stability patch. No testnet reset required.
All nodes SHOULD upgrade. v0.7.2 nodes may get stuck during reorg at high block heights
due to a timeout-inducing O(n) Sled scan and incorrect LWMA bounds check during replay.
Existingquanta_data/directories are fully compatible — drop-in upgrade.
This is a pre-release testnet build. Do not use real funds. APIs and chain parameters may change between alpha releases.
Genesis Block
| Parameter | Value |
|---|---|
| Network | Testnet (QUA7) |
| Timestamp | 1775001600 (2026-04-01 00:00:00 UTC) |
| Testnet Genesis Hash | 00000012d3a2cbb7eb9579330ccdaa4f83ca9e6e016bfe6d2c8a38539cf3733b |
| Mainnet Genesis Hash | 1cdbccdff3db462378f4acbe4553b49040ffcdebf74b5c77e685ba05ccfa8cb0 |
| Difficulty | 8,304,130 (Testnet) / 16,777,216 (Mainnet) |
| Block Time | 30 seconds |
Testnet Faucet Wallets (Genesis Premine)
Each address below received 1,000,000 QUA at genesis. Faucet account 0 is the active sender used by the faucet API.
| Index | Address | Role |
|---|---|---|
| 0 | 0x1683be267318d2ddd8cee8df4a4548dcffb1e088 |
Faucet Sender (active) |
| 1 | 0xd528c18ce7a8844e4a4dcd841975b20ae599b020 |
Faucet Reserve |
| 2 | 0xfd6e36bfa2b2798d08592802206c943d5513adfb |
Faucet Reserve |
| 3 | 0xed15573ad312d41aaef74cff56a8ef28122ec2db |
Faucet Reserve |
| 4 | 0xaffd6d4f74c5651110efcf1b9736f7a5cf2ccdbb |
Faucet Reserve |
| 5 | 0xbf5ee055f399323fdd0cefe3d4aa923678d46107 |
Faucet Reserve |
| 6 | 0x1dc9637b183093d723ea8d1fb18083b06490facb |
Faucet Reserve |
| 7 | 0xa2270f30ca1aad922510375508bf68cd95509f29 |
Faucet Reserve |
| 8 | 0xe15a689775685ae324559ea9a492fc650354ca0b |
Faucet Reserve |
| 9 | 0x005dcff212d27b55e7a74bf745e1349ab44ca25d |
Faucet Reserve |
Treasury
| Parameter | Value |
|---|---|
| Treasury Address | ms69216b1d10425689704d5ae3b2a4aa17049f59b1 |
| Multisig Scheme | 3-of-5 Falcon-512 |
| Block Reward to Treasury | 5% per block |
| Fee to Treasury | 20% of transaction fees |
Tokenomics
| Parameter | Value |
|---|---|
| Year 1 Block Reward | 100 QUA |
| Annual Reward Reduction | 15% per year |
| Minimum Reward Floor | 5 QUA (reached ~year 20) |
| Mining Reward Lock | 50% locked for 6 months |
| Fee Burn | 70% of all transaction fees |
| Fee to Treasury | 20% of all transaction fees |
| Fee to Miner | 10% of all transaction fees |
| Max Block Transactions | 1,200 |
| Max Block Size | 2 MB |
| Min Transaction Fee | 0.0001 QUA |
Quick Start with Docker
Option 1: Docker Desktop (Graphical Interface)
- Open Docker Desktop and find
xd637/quanta-node:v0.7.1-alpha(or:latest) in your Images. - Click Run.
- Under Optional settings, configure:
- Container name:
quanta-node - Ports: Map
3000,7782,8333,9090to themselves. - Volumes:
- Add host path
quanta-datato container path/home/quanta/quanta_data - Add host path
quanta-logsto container path/home/quanta/logs
- Add host path
- Container name:
- Click Run.
Option 2: Docker CLI
docker pull xd637/quanta-node:v0.7.3-alpha
docker run -d \
--name quanta-node \
-p 3000:3000 -p 8333:8333 -p 7782:7782 -p 9090:9090 \
-v quanta-data:/home/quanta/quanta_data \
-v quanta-logs:/home/quanta/logs \
xd637/quanta-node:v0.7.3-alphaOption 3: Docker Compose (Recommended)
Upgrading from v0.7.0 — no data wipe needed:
docker compose -f docker-compose.single.yml pull
docker compose -f docker-compose.single.yml up -dServer Setup (Ubuntu / VPS)
1. Update system and install Docker:
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker ubuntu && newgrp docker2. Open necessary ports:
sudo ufw allow 8333/tcp
sudo ufw allow 7782/tcp
sudo ufw allow 3000/tcp
sudo ufw allow ssh
sudo ufw --force enable3. Upgrade to v0.7.3 (no data wipe required):
docker pull xd637/quanta-node:latest
docker stop quanta-node && docker rm quanta-node
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v ~/quanta_data:/home/quanta/quanta_data \
xd637/quanta-node:latest4. Check logs:
docker logs quanta-node --tail 30 -fManual Build from Source
git clone https://github.com/quantachain/quanta
cd quanta
git checkout v0.7.3-alpha
cargo build --release
./target/release/quanta start -c quanta.tomlWallet Management
# Native
./target/release/quanta new-wallet --file wallet.qua
# Docker
docker exec -it quanta-node quanta new_wallet --file wallet.qua
# HD Wallet (recommended — 24-word recovery phrase)
docker exec -it quanta-node quanta new_hd_wallet --file hd_wallet.jsonMining
# Native
./target/release/quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782
# Docker (background)
docker exec -d quanta-node quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782
# Stop
docker exec -it quanta-node quanta stop_mining --rpc-port 7782Node Status
docker exec -it quanta-node quanta status --rpc-port 7782
docker exec -it quanta-node quanta print_height --rpc-port 7782
docker exec -it quanta-node quanta mining_status --rpc-port 7782Ports
| Port | Service |
|---|---|
3000 |
REST API |
8333 |
P2P Network |
7782 |
RPC |
9090 |
Prometheus Metrics |
What Changed in Alpha v0.7.3
No testnet reset. No wire format change. Sync stability patch — all nodes should upgrade.
Fix — O(n) Sled scan on every reorg (deep_reorg)
When performing even a tiny 2–5 block reorg, deep_reorg was recalculating base_work
by reading every block from 0 to rollback_to out of Sled. At height 85k this was
85,000 sequential reads while holding the blockchain write lock, taking 30–60 seconds.
During this time the syncing peer would time out, drop the connection, and the sync loop
logged "Reorg failed: Invalid block" then retried — hitting the same scan again.
Fix: replaced with cumulative_work_at(rollback_to) which is O(1) — it reads the
in-memory cumulative_work value that is updated incrementally after every block.
Fix — Wrong LWMA bounds check during reorg replay
validate_block_consensus_reorg() called calculate_next_difficulty() to obtain an
LWMA estimate, then rejected any peer block whose difficulty was outside ±50% of that
estimate. During a deep reorg the chain is partially rebuilt — the LWMA window is
incomplete (wrong timestamps, missing blocks) — so the estimate was meaningless and
valid peer blocks were rejected as "outside LWMA bounds".
Fix: removed the LWMA bounds check from the reorg validation path. The has_valid_hash()
PoW check already proves real work was done. MIN_DIFFICULTY still guards against trivial
blocks.
Fix — Snapshot fallback replayed wrong block range (rebuild_account_state_up_to)
When a 1000-block snapshot was missing (new nodes have none), the code fell back to
genesis-only state (10 faucet accounts) then set replay_start = snapshot_height + 1,
skipping all blocks 1…snapshot_height. The rebuilt state had genesis balances only, so
every subsequent reorg block failed with "Insufficient balance / wrong nonce → Invalid block".
Fix: when no snapshot is loaded, replay_start is always set to 1.
Added — Checkpoint at block 85,000
Verified live from scan.quantachain.org on 2026-05-06. This anchors the
STATE_ROOT_SORT_FIX_HEIGHT boundary and prevents deep reorgs into pre-sort-fix territory.
| Height | Hash |
|---|---|
| 85,000 | 0000007305d4ceeaf72a4f3c58001295a335d588e16a05f037d21dfb21ac06ca |
What Changed in Alpha v0.7.2
No testnet reset. No wire format change. Consensus-critical patch — all nodes must upgrade.
Fix — State root determinism (calculate_state_root)
The locked_balances field on each account is a Vec<LockedBalance>. When a block
contains a TimeLockTransfer credit to the miner's own address alongside a coinbase
credit, two LockedBalance entries are pushed to that address's vec — but in different
orders depending on which code path runs:
- Mining path (
create_block_template): coinbase tx processed first → coinbase lock
pushed first, TimeLock lock pushed second. - Validation path (
validate_block_consensus): user txs applied first → TimeLock
lock pushed first, coinbase lock pushed second.
Both vecs contain the same two entries, but SHA3-256 is order-sensitive — the resulting
state root hashes differed between the mining node and every syncing peer, causing:
[ERROR] Invalid state root at block N: expected <mining_hash>, got <validation_hash>
This manifested sporadically (only when a miner received a TimeLockTransfer to their
own wallet in the same block they mined) and was the root cause of the "nodes fail at
varying heights" sync bug reported across the testnet.
Fix: calculate_state_root now sorts locked_balances by (unlock_height, amount)
before iterating. The sort is stable, deterministic on all platforms, and
order-independent — both code paths now produce an identical SHA3-256 digest.
Guard — STATE_ROOT_SORT_FIX_HEIGHT = 85_000
Blocks below height 85,000 skip state root validation — they are already secured by
hardcoded checkpoints and were committed under the old (buggy) ordering rule. Applying
the new sort rule retroactively would fail for any historical block that happened to
have the mismatch, turning a sync fix into a sync break.
From height 85,0...
Quantachain Testnet Alpha V.0.7.2
QuantaChain Testnet — Alpha v0.7.2
Post-quantum secure blockchain using Falcon-512 signatures and SHA3-256 Proof of Work.
v0.7.2 — CONSENSUS-CRITICAL patch. No testnet reset required.
All nodes MUST upgrade. v0.7.1 nodes will diverge from upgraded nodes on any block
containing a TimeLock credit to the miner's address at height > 85,000.
Existingquanta_data/directories are fully compatible — drop-in upgrade.
This is a pre-release testnet build. Do not use real funds. APIs and chain parameters may change between alpha releases.
Genesis Block
| Parameter | Value |
|---|---|
| Network | Testnet (QUA7) |
| Timestamp | 1775001600 (2026-04-01 00:00:00 UTC) |
| Testnet Genesis Hash | 00000012d3a2cbb7eb9579330ccdaa4f83ca9e6e016bfe6d2c8a38539cf3733b |
| Mainnet Genesis Hash | 1cdbccdff3db462378f4acbe4553b49040ffcdebf74b5c77e685ba05ccfa8cb0 |
| Difficulty | 8,304,130 (Testnet) / 16,777,216 (Mainnet) |
| Block Time | 30 seconds |
Testnet Faucet Wallets (Genesis Premine)
Each address below received 1,000,000 QUA at genesis. Faucet account 0 is the active sender used by the faucet API.
| Index | Address | Role |
|---|---|---|
| 0 | 0x1683be267318d2ddd8cee8df4a4548dcffb1e088 |
Faucet Sender (active) |
| 1 | 0xd528c18ce7a8844e4a4dcd841975b20ae599b020 |
Faucet Reserve |
| 2 | 0xfd6e36bfa2b2798d08592802206c943d5513adfb |
Faucet Reserve |
| 3 | 0xed15573ad312d41aaef74cff56a8ef28122ec2db |
Faucet Reserve |
| 4 | 0xaffd6d4f74c5651110efcf1b9736f7a5cf2ccdbb |
Faucet Reserve |
| 5 | 0xbf5ee055f399323fdd0cefe3d4aa923678d46107 |
Faucet Reserve |
| 6 | 0x1dc9637b183093d723ea8d1fb18083b06490facb |
Faucet Reserve |
| 7 | 0xa2270f30ca1aad922510375508bf68cd95509f29 |
Faucet Reserve |
| 8 | 0xe15a689775685ae324559ea9a492fc650354ca0b |
Faucet Reserve |
| 9 | 0x005dcff212d27b55e7a74bf745e1349ab44ca25d |
Faucet Reserve |
Treasury
| Parameter | Value |
|---|---|
| Treasury Address | ms69216b1d10425689704d5ae3b2a4aa17049f59b1 |
| Multisig Scheme | 3-of-5 Falcon-512 |
| Block Reward to Treasury | 5% per block |
| Fee to Treasury | 20% of transaction fees |
Tokenomics
| Parameter | Value |
|---|---|
| Year 1 Block Reward | 100 QUA |
| Annual Reward Reduction | 15% per year |
| Minimum Reward Floor | 5 QUA (reached ~year 20) |
| Mining Reward Lock | 50% locked for 6 months |
| Fee Burn | 70% of all transaction fees |
| Fee to Treasury | 20% of all transaction fees |
| Fee to Miner | 10% of all transaction fees |
| Max Block Transactions | 1,200 |
| Max Block Size | 2 MB |
| Min Transaction Fee | 0.0001 QUA |
Quick Start with Docker
Option 1: Docker Desktop (Graphical Interface)
- Open Docker Desktop and find
xd637/quanta-node:v0.7.1-alpha(or:latest) in your Images. - Click Run.
- Under Optional settings, configure:
- Container name:
quanta-node - Ports: Map
3000,7782,8333,9090to themselves. - Volumes:
- Add host path
quanta-datato container path/home/quanta/quanta_data - Add host path
quanta-logsto container path/home/quanta/logs
- Add host path
- Container name:
- Click Run.
Option 2: Docker CLI
docker pull xd637/quanta-node:v0.7.2-alpha
docker run -d \
--name quanta-node \
-p 3000:3000 -p 8333:8333 -p 7782:7782 -p 9090:9090 \
-v quanta-data:/home/quanta/quanta_data \
-v quanta-logs:/home/quanta/logs \
xd637/quanta-node:v0.7.2-alphaOption 3: Docker Compose (Recommended)
Upgrading from v0.7.0 — no data wipe needed:
docker compose -f docker-compose.single.yml pull
docker compose -f docker-compose.single.yml up -dServer Setup (Ubuntu / VPS)
1. Update system and install Docker:
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker ubuntu && newgrp docker2. Open necessary ports:
sudo ufw allow 8333/tcp
sudo ufw allow 7782/tcp
sudo ufw allow 3000/tcp
sudo ufw allow ssh
sudo ufw --force enable3. Upgrade to v0.7.2 (no data wipe required):
docker pull xd637/quanta-node:latest
docker stop quanta-node && docker rm quanta-node
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v ~/quanta_data:/home/quanta/quanta_data \
xd637/quanta-node:latest4. Check logs:
docker logs quanta-node --tail 30 -fManual Build from Source
git clone https://github.com/quantachain/quanta
cd quanta
git checkout v0.7.2-alpha
cargo build --release
./target/release/quanta start -c quanta.tomlWallet Management
# Native
./target/release/quanta new-wallet --file wallet.qua
# Docker
docker exec -it quanta-node quanta new_wallet --file wallet.qua
# HD Wallet (recommended — 24-word recovery phrase)
docker exec -it quanta-node quanta new_hd_wallet --file hd_wallet.jsonMining
# Native
./target/release/quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782
# Docker (background)
docker exec -d quanta-node quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782
# Stop
docker exec -it quanta-node quanta stop_mining --rpc-port 7782Node Status
docker exec -it quanta-node quanta status --rpc-port 7782
docker exec -it quanta-node quanta print_height --rpc-port 7782
docker exec -it quanta-node quanta mining_status --rpc-port 7782Ports
| Port | Service |
|---|---|
3000 |
REST API |
8333 |
P2P Network |
7782 |
RPC |
9090 |
Prometheus Metrics |
What Changed in Alpha v0.7.2
No testnet reset. No wire format change. Consensus-critical patch — all nodes must upgrade.
Fix — State root determinism (calculate_state_root)
The locked_balances field on each account is a Vec<LockedBalance>. When a block
contains a TimeLockTransfer credit to the miner's own address alongside a coinbase
credit, two LockedBalance entries are pushed to that address's vec — but in different
orders depending on which code path runs:
- Mining path (
create_block_template): coinbase tx processed first → coinbase lock
pushed first, TimeLock lock pushed second. - Validation path (
validate_block_consensus): user txs applied first → TimeLock
lock pushed first, coinbase lock pushed second.
Both vecs contain the same two entries, but SHA3-256 is order-sensitive — the resulting
state root hashes differed between the mining node and every syncing peer, causing:
[ERROR] Invalid state root at block N: expected <mining_hash>, got <validation_hash>
This manifested sporadically (only when a miner received a TimeLockTransfer to their
own wallet in the same block they mined) and was the root cause of the "nodes fail at
varying heights" sync bug reported across the testnet.
Fix: calculate_state_root now sorts locked_balances by (unlock_height, amount)
before iterating. The sort is stable, deterministic on all platforms, and
order-independent — both code paths now produce an identical SHA3-256 digest.
Guard — STATE_ROOT_SORT_FIX_HEIGHT = 85_000
Blocks below height 85,000 skip state root validation — they are already secured by
hardcoded checkpoints and were committed under the old (buggy) ordering rule. Applying
the new sort rule retroactively would fail for any historical block that happened to
have the mismatch, turning a sync fix into a sync break.
From height 85,000 onward, the new deterministic state root is enforced on all nodes.
New Checkpoints (through block 80,000)
Three testnet checkpoints verified live from scan.quantachain.org on 2026-05-05:
| Height | Hash |
|---|---|
| 60,000 | 0000010ce22920660ba1e42423ea46e76dc7582963d6f9f220e3930031bd9bc9 |
| 70,000 | 000001fcb0637b06601b4f111b22070e856c8cabf2eaa545c41b938b4478d186 |
| 80,000 | 0000002d80e66bce37596616a9c9c3c1988da6e65811ad132926162c7e000a0e |
These protect the chain from deep reorgs below 80k even on nodes that have not yet
reached that height.
What Changed in Alpha v0.7.1
No testnet reset. No wire format change. Drop-in upgrade.
Fix — deep_reorg used wrong validator on peer blocks
add_block_to_main_chain_reorg() was calling validate_block_consensus() — the strict
validator that requires the incoming block's difficulty to exactly match the local LWMA.
During a deep reorg, peer blocks were mined against their LWMA which can differ slightly
from ours (the two chains diverged at a prior block with a different timestamp).
Fix: reorg path now calls validate_block_consensus_reorg(), the 50%-bounds permissive
validator that was already written for this purpose but wasn't being used.
Fix — deep_reorg corrupted cumulative_work counter
After rolling back the chain, the in-memory cumulative_work was still at the old tip's
value. Each new block applied by add_block_to_main_chain_reorg added to this stale
total, producing a cumulative_work value roughly double the correct amount. This caused
the node to always believe it had more work than all peers and skip future syncs.
Fix: deep_reorg now recomputes the correct base work from storage before replaying
new blocks, and resets both the in-memory counter and the sled key to this value.
Fix — single-block tip swap (reorg_to_block) never updated cumulative_work
The 1-deep reorg path correctly swapped the block and rebuilt account state, but never
adjusted the cumulative_work counter. The counter was left at the old tip's value.
Fix: subtracts the old tip's difficulty and adds the incoming tip's difficulty after commit.
Fix — add_block_to_main_chain_reorg had dangling orphan code (compile error)
A previous e...
Quantachain Testnet Alpha V.0.7.1
QuantaChain Testnet — Alpha v0.7.1
Post-quantum secure blockchain using Falcon-512 signatures and SHA3-256 Proof of Work.
v0.7.1 — No testnet reset required.
Drop-in upgrade from v0.7.0. All node operators can upgrade by pulling the new image and restarting.
Existingquanta_data/directories are fully compatible.
This is a pre-release testnet build. Do not use real funds. APIs and chain parameters may change between alpha releases.
Genesis Block
| Parameter | Value |
|---|---|
| Network | Testnet (QUA7) |
| Timestamp | 1775001600 (2026-04-01 00:00:00 UTC) |
| Testnet Genesis Hash | 00000012d3a2cbb7eb9579330ccdaa4f83ca9e6e016bfe6d2c8a38539cf3733b |
| Mainnet Genesis Hash | 1cdbccdff3db462378f4acbe4553b49040ffcdebf74b5c77e685ba05ccfa8cb0 |
| Difficulty | 8,304,130 (Testnet) / 16,777,216 (Mainnet) |
| Block Time | 30 seconds |
Testnet Faucet Wallets (Genesis Premine)
Each address below received 1,000,000 QUA at genesis. Faucet account 0 is the active sender used by the faucet API.
| Index | Address | Role |
|---|---|---|
| 0 | 0x1683be267318d2ddd8cee8df4a4548dcffb1e088 |
Faucet Sender (active) |
| 1 | 0xd528c18ce7a8844e4a4dcd841975b20ae599b020 |
Faucet Reserve |
| 2 | 0xfd6e36bfa2b2798d08592802206c943d5513adfb |
Faucet Reserve |
| 3 | 0xed15573ad312d41aaef74cff56a8ef28122ec2db |
Faucet Reserve |
| 4 | 0xaffd6d4f74c5651110efcf1b9736f7a5cf2ccdbb |
Faucet Reserve |
| 5 | 0xbf5ee055f399323fdd0cefe3d4aa923678d46107 |
Faucet Reserve |
| 6 | 0x1dc9637b183093d723ea8d1fb18083b06490facb |
Faucet Reserve |
| 7 | 0xa2270f30ca1aad922510375508bf68cd95509f29 |
Faucet Reserve |
| 8 | 0xe15a689775685ae324559ea9a492fc650354ca0b |
Faucet Reserve |
| 9 | 0x005dcff212d27b55e7a74bf745e1349ab44ca25d |
Faucet Reserve |
Treasury
| Parameter | Value |
|---|---|
| Treasury Address | ms69216b1d10425689704d5ae3b2a4aa17049f59b1 |
| Multisig Scheme | 3-of-5 Falcon-512 |
| Block Reward to Treasury | 5% per block |
| Fee to Treasury | 20% of transaction fees |
Tokenomics
| Parameter | Value |
|---|---|
| Year 1 Block Reward | 100 QUA |
| Annual Reward Reduction | 15% per year |
| Minimum Reward Floor | 5 QUA (reached ~year 20) |
| Mining Reward Lock | 50% locked for 6 months |
| Fee Burn | 70% of all transaction fees |
| Fee to Treasury | 20% of all transaction fees |
| Fee to Miner | 10% of all transaction fees |
| Max Block Transactions | 1,200 |
| Max Block Size | 2 MB |
| Min Transaction Fee | 0.0001 QUA |
Quick Start with Docker
Option 1: Docker Desktop (Graphical Interface)
- Open Docker Desktop and find
xd637/quanta-node:v0.7.1-alpha(or:latest) in your Images. - Click Run.
- Under Optional settings, configure:
- Container name:
quanta-node - Ports: Map
3000,7782,8333,9090to themselves. - Volumes:
- Add host path
quanta-datato container path/home/quanta/quanta_data - Add host path
quanta-logsto container path/home/quanta/logs
- Add host path
- Container name:
- Click Run.
Option 2: Docker CLI
docker pull xd637/quanta-node:v0.7.1-alpha
docker run -d \
--name quanta-node \
-p 3000:3000 -p 8333:8333 -p 7782:7782 -p 9090:9090 \
-v quanta-data:/home/quanta/quanta_data \
-v quanta-logs:/home/quanta/logs \
xd637/quanta-node:v0.7.1-alphaOption 3: Docker Compose (Recommended)
Upgrading from v0.7.0 — no data wipe needed:
docker compose -f docker-compose.single.yml pull
docker compose -f docker-compose.single.yml up -dServer Setup (Ubuntu / VPS)
1. Update system and install Docker:
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker ubuntu && newgrp docker2. Open necessary ports:
sudo ufw allow 8333/tcp
sudo ufw allow 7782/tcp
sudo ufw allow 3000/tcp
sudo ufw allow ssh
sudo ufw --force enable3. Upgrade to v0.7.1 (no data wipe required):
docker pull xd637/quanta-node:latest
docker stop quanta-node && docker rm quanta-node
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v ~/quanta_data:/home/quanta/quanta_data \
xd637/quanta-node:latest4. Check logs:
docker logs quanta-node --tail 30 -fManual Build from Source
git clone https://github.com/quantachain/quanta
cd quanta
git checkout v0.7.1-alpha
cargo build --release
./target/release/quanta start -c quanta.tomlWallet Management
# Native
./target/release/quanta new-wallet --file wallet.qua
# Docker
docker exec -it quanta-node quanta new_wallet --file wallet.qua
# HD Wallet (recommended — 24-word recovery phrase)
docker exec -it quanta-node quanta new_hd_wallet --file hd_wallet.jsonMining
# Native
./target/release/quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782
# Docker (background)
docker exec -d quanta-node quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782
# Stop
docker exec -it quanta-node quanta stop_mining --rpc-port 7782Node Status
docker exec -it quanta-node quanta status --rpc-port 7782
docker exec -it quanta-node quanta print_height --rpc-port 7782
docker exec -it quanta-node quanta mining_status --rpc-port 7782Ports
| Port | Service |
|---|---|
3000 |
REST API |
8333 |
P2P Network |
7782 |
RPC |
9090 |
Prometheus Metrics |
What Changed in Alpha v0.7.1
No testnet reset. No wire format change. Drop-in upgrade.
Fix — deep_reorg used wrong validator on peer blocks
add_block_to_main_chain_reorg() was calling validate_block_consensus() — the strict
validator that requires the incoming block's difficulty to exactly match the local LWMA.
During a deep reorg, peer blocks were mined against their LWMA which can differ slightly
from ours (the two chains diverged at a prior block with a different timestamp).
Fix: reorg path now calls validate_block_consensus_reorg(), the 50%-bounds permissive
validator that was already written for this purpose but wasn't being used.
Fix — deep_reorg corrupted cumulative_work counter
After rolling back the chain, the in-memory cumulative_work was still at the old tip's
value. Each new block applied by add_block_to_main_chain_reorg added to this stale
total, producing a cumulative_work value roughly double the correct amount. This caused
the node to always believe it had more work than all peers and skip future syncs.
Fix: deep_reorg now recomputes the correct base work from storage before replaying
new blocks, and resets both the in-memory counter and the sled key to this value.
Fix — single-block tip swap (reorg_to_block) never updated cumulative_work
The 1-deep reorg path correctly swapped the block and rebuilt account state, but never
adjusted the cumulative_work counter. The counter was left at the old tip's value.
Fix: subtracts the old tip's difficulty and adds the incoming tip's difficulty after commit.
Fix — add_block_to_main_chain_reorg had dangling orphan code (compile error)
A previous edit left a if !tx.is_coinbase() { ... } block without its enclosing
for tx in &block.transactions loop. This was a compile-time error in practice.
Fix: restored the complete nonce-clearing loop matching add_block_to_main_chain.
Fix — linear sync treated as reorg (request_start <= bc_height → < bc_height)
When the sync engine requested the next batch of blocks starting exactly at the current
chain height, request_start == bc_height evaluated true for the reorg branch and
triggered a deep_reorg call. This caused O(n²) behaviour during normal linear sync —
every downloaded block triggered a full chain rollback and account-state rebuild.
Fix: condition changed to strictly-less-than so only blocks below the current tip
are treated as a reorg.
Improvement — Storage: no per-block fsync
save_block and save_account_state no longer call db.flush() after every write.
Sled's write-ahead log guarantees crash safety without a per-block fsync. A single
flush_storage() call is issued at the end of each sync batch and after mining a block.
At 18,000 blocks × ~5 ms/fsync this removes ~90 seconds of wasted IO during IBD.
Improvement — O(1) cumulative work lookup
cumulative_work is now stored as a sled key and kept in an in-memory Arc<Mutex<u128>>.
cumulative_work_at(tip) returns the stored value in O(1) for the current tip.
Previously every call scanned all blocks from genesis (O(height) disk reads while
holding the blockchain read lock — the primary cause of seed-node connection timeouts).
Improvement — Account state snapshots every 1000 blocks
add_block_to_main_chain now saves a full account state snapshot at every 1000-block
boundary. rebuild_account_state_up_to() loads the nearest snapshot and replays only
the delta — previously it always replayed from genesis, O(height) on every reorg.
What Changed in Alpha v0.7.0
UPGRADE NOTICE — v0.7.0 required a testnet reset.
The cumulative_work handshake field changed the binary wire format.
v0.6.0 and v0.7.0 nodes are not mutually compatible.
Major Architecture — Headers-First Sync (Bitcoin IBD style)
Two new wire messages — GetHeaders and Headers — allow a syncing node to download
light headers (index, hash, previous_hash, difficulty, cumulative_work) before requesting
full blocks. The sync engine validates headers first, finds the fork point, then requests
only the missing full blocks in ordered batches.
Cumulative work-based peer selection
The handshake now exchanges cumulative_work alongside `heigh...
Quantachain Testnet Alpha V.0.7.0
QuantaChain Testnet — Alpha v0.7.0
Post-quantum secure blockchain using Falcon-512 signatures and SHA3-256 Proof of Work.
UPGRADE NOTICE — v0.7.0 (TESTNET RESET REQUIRED)
This release includes a major sync architecture change (BID) and security hardening.
The new cumulative-work peer selection and headers-first sync protocol are incompatible
with the previous v0.6.0 chain state.
All node operators MUST delete theirquanta_data/directories before starting v0.7.0.
This is a pre-release testnet build. Do not use real funds. APIs and chain parameters may change between alpha releases.
Genesis Block
| Parameter | Value |
|---|---|
| Network | Testnet (QUA7) |
| Timestamp | 1775001600 (2026-04-01 00:00:00 UTC) |
| Testnet Genesis Hash | 00000012d3a2cbb7eb9579330ccdaa4f83ca9e6e016bfe6d2c8a38539cf3733b |
| Mainnet Genesis Hash | 1cdbccdff3db462378f4acbe4553b49040ffcdebf74b5c77e685ba05ccfa8cb0 |
| Difficulty | 8,304,130 (Testnet) / 16,777,216 (Mainnet) |
| Block Time | 30 seconds |
Testnet Faucet Wallets (Genesis Premine)
Each address below received 1,000,000 QUA at genesis. Faucet account 0 is the active sender used by the faucet API.
| Index | Address | Role |
|---|---|---|
| 0 | 0x1683be267318d2ddd8cee8df4a4548dcffb1e088 |
Faucet Sender (active) |
| 1 | 0xd528c18ce7a8844e4a4dcd841975b20ae599b020 |
Faucet Reserve |
| 2 | 0xfd6e36bfa2b2798d08592802206c943d5513adfb |
Faucet Reserve |
| 3 | 0xed15573ad312d41aaef74cff56a8ef28122ec2db |
Faucet Reserve |
| 4 | 0xaffd6d4f74c5651110efcf1b9736f7a5cf2ccdbb |
Faucet Reserve |
| 5 | 0xbf5ee055f399323fdd0cefe3d4aa923678d46107 |
Faucet Reserve |
| 6 | 0x1dc9637b183093d723ea8d1fb18083b06490facb |
Faucet Reserve |
| 7 | 0xa2270f30ca1aad922510375508bf68cd95509f29 |
Faucet Reserve |
| 8 | 0xe15a689775685ae324559ea9a492fc650354ca0b |
Faucet Reserve |
| 9 | 0x005dcff212d27b55e7a74bf745e1349ab44ca25d |
Faucet Reserve |
Treasury
| Parameter | Value |
|---|---|
| Treasury Address | ms69216b1d10425689704d5ae3b2a4aa17049f59b1 |
| Multisig Scheme | 3-of-5 Falcon-512 |
| Block Reward to Treasury | 5% per block |
| Fee to Treasury | 20% of transaction fees |
Tokenomics
| Parameter | Value |
|---|---|
| Year 1 Block Reward | 100 QUA |
| Annual Reward Reduction | 15% per year |
| Minimum Reward Floor | 5 QUA (reached ~year 20) |
| Mining Reward Lock | 50% locked for 6 months |
| Fee Burn | 70% of all transaction fees |
| Fee to Treasury | 20% of all transaction fees |
| Fee to Miner | 10% of all transaction fees |
| Max Block Transactions | 1,200 |
| Max Block Size | 2 MB |
| Min Transaction Fee | 0.0001 QUA |
Quick Start with Docker
Option 1: Docker Desktop (Graphical Interface)
- Open Docker Desktop and find
xd637/quanta-node:v0.7.0-alpha(or:latest) in your Images. - Click Run.
- Under Optional settings, configure:
- Container name:
quanta-node - Ports: Map
3000,7782,8333,9090to themselves. - Volumes:
- Add host path
quanta-datato container path/home/quanta/quanta_data - Add host path
quanta-logsto container path/home/quanta/logs
- Add host path
- Container name:
- Click Run.
Option 2: Docker CLI
docker pull xd637/quanta-node:v0.7.0-alpha
docker run -d \
--name quanta-node \
-p 3000:3000 -p 8333:8333 -p 7782:7782 -p 9090:9090 \
-v quanta-data:/home/quanta/quanta_data \
-v quanta-logs:/home/quanta/logs \
xd637/quanta-node:v0.7.0-alphaOption 3: Docker Compose (Recommended)
REQUIRED: Delete old chain data first (testnet reset)
docker compose down -v
sudo rm -rf ~/quanta_data/*Then start:
docker compose -f docker-compose.single.yml up -dServer Setup (Ubuntu / VPS)
1. Update system and install Docker:
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker ubuntu && newgrp docker2. Open necessary ports:
sudo ufw allow 8333/tcp
sudo ufw allow 7782/tcp
sudo ufw allow 3000/tcp
sudo ufw allow ssh
sudo ufw --force enable3. Clean start (REQUIRED for v0.7.0 upgrade):
docker stop quanta-node && docker rm quanta-node
# Delete old blockchain data
sudo rm -rf ~/quanta_data/*
docker pull xd637/quanta-node:latest
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v ~/quanta_data:/home/quanta/quanta_data \
xd637/quanta-node:latest4. Check logs:
docker logs quanta-node --tail 30 -fManual Build from Source
git clone https://github.com/quantachain/quanta
cd quanta
git checkout v0.7.0-alpha
cargo build --release
./target/release/quanta start -c quanta.tomlWallet Management
# Native
./target/release/quanta new-wallet --file wallet.qua
# Docker
docker exec -it quanta-node quanta new_wallet --file wallet.qua
# HD Wallet (recommended — 24-word recovery phrase)
docker exec -it quanta-node quanta new_hd_wallet --file hd_wallet.jsonMining
# Native
./target/release/quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782
# Docker (background)
docker exec -d quanta-node quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782
# Stop
docker exec -it quanta-node quanta stop_mining --rpc-port 7782Node Status
docker exec -it quanta-node quanta status --rpc-port 7782
docker exec -it quanta-node quanta print_height --rpc-port 7782
docker exec -it quanta-node quanta mining_status --rpc-port 7782Ports
| Port | Service |
|---|---|
3000 |
REST API |
8333 |
P2P Network |
7782 |
RPC |
9090 |
Prometheus Metrics |
What Changed in Alpha v0.7.0
Major Architecture — BID (Bitcoin-style Block and Header Download)
The sync engine has been rebuilt around the same two-phase headers-first architecture
that Bitcoin Core uses for Initial Block Download. This was the primary cause of
all previous sync stalls, fork loops, and orphan accumulation on the testnet.
The old problem:
Every incoming block triggered a full validation cycle immediately regardless of
ordering. On a fresh sync or after a reorg, blocks arrived out of sequence, were
stored as orphans, and the chain never advanced. The stall counter fired, triggering
another deep reorg, which could fail and leave the node stuck.
What changed:
1. GetHeaders / Headers messages (new P2P protocol messages)
Two new wire messages — GetHeaders and Headers — allow a node to download just
the block headers (index, hash, previous_hash, difficulty, cumulative_work) before
requesting any full blocks. A header batch is 500 entries max and is a fraction of
the size of full blocks (which are up to 2 MB each in PQC due to Falcon-512
signatures).
2. Cumulative work-based peer selection
The handshake now exchanges cumulative_work (sum of all block difficulties on the
chain) alongside height. When selecting which peer to sync from, the node picks
the peer with the highest cumulative work — not the highest block height. This
matches Bitcoin's fork selection rule and prevents a malicious peer from getting a
node to follow a low-difficulty long chain.
3. Headers buffer in the sync engine
A dedicated header_buffer collects incoming headers from GetHeaders responses.
The sync loop uses these buffered headers to build a download plan — which height
ranges are missing — then issues targeted GetBlocks requests for only those
ranges. This eliminates the scatter-gather pattern that caused blocks to arrive
out of order and be rejected as orphans.
4. Atomic deep reorg with rollback
Before this release, a deep reorg that failed partway through (e.g., because the
incoming chain contained a bad block at block 50 of 100) would leave the node at
an inconsistent intermediate height. The node now:
- Saves a snapshot of the current chain's blocks before rolling back
- Applies the new chain blocks one by one
- If any block fails, rolls back the chain pointer and restores the original chain
from the snapshot before returning an error
The node is never left at a partial reorg state.
5. Height messages carry cumulative work
P2PMessage::Height now carries cumulative_work alongside height. Nodes
update both fields on peers during sync, enabling accurate best-peer selection
throughout a long sync rather than only at handshake time.
This release requires a testnet reset because the cumulative_work field in
the handshake and Height messages changes the binary wire format. Existing
v0.6.0 nodes will fail the handshake with v0.7.0 nodes.
Security Fix — Cross-Chain Replay Protection
Added network_id: u32 to the Transaction struct. The field is included in
get_signing_bytes() and hash(), meaning every Falcon-512 signature is
cryptographically bound to a specific network.
| Network | network_id |
|---|---|
| Testnet (QUA7) | 0 |
| Mainnet | 1 |
A transaction signed on Testnet produces an invalid signature on Mainnet and
vice versa. The field uses #[serde(default)] so existing on-chain transactions
deserialize to network_id = 0 without a genesis change.
Security Fix — State Root Empty-String Bypass Closed
The previous state root check accepted any block with state_root = "" as valid,
even when the computed state root did not match. A miner could fabricate account
balances by omitting the state_root field entirely.
Fix: if a block provides a non-empty state_root, it must match the computed value.
Blocks that genuinely omit state_root (pre-feature legacy blocks) continue to pass.
Security Fix — Reorg Path Was N...
Quantachain Testnet Alpha V.0.6.0
QuantaChain Testnet — Alpha v0.6.0
Post-quantum secure blockchain using Falcon-512 signatures and SHA3-256 Proof of Work.
⚠️ UPGRADE NOTICE — v0.6.0 (TESTNET V3 RESET)
This release fixes critical transaction nonce mismatches and deep reorg synchronization issues.
Because the consensus rules for mempool assembly were rewritten, this release requires a hard chain reset.
Prior node operators MUST delete theirquanta_data/directories to successfully sync the new V3 Genesis block.
This is a pre-release testnet build. Do not use real funds. APIs and chain parameters may change between alpha releases.
Genesis Block
| Parameter | Value |
|---|---|
| Network | Testnet |
| Timestamp | 1775001600 (2026-04-01 00:00:00 UTC) |
| Testnet Genesis Hash | 00000012d3a2cbb7eb9579330ccdaa4f83ca9e6e016bfe6d2c8a38539cf3733b |
| Mainnet Genesis Hash | 1cdbccdff3db462378f4acbe4553b49040ffcdebf74b5c77e685ba05ccfa8cb0 |
| Difficulty | 8,304,130 (Testnet) / 16,777,216 (Mainnet) |
| Block Time | 30 seconds |
Testnet Faucet Wallets (Genesis Premine)
Each address below received 1,000,000 QUA at genesis. Faucet account 0 is the active sender used by the faucet API.
| Index | Address | Role |
|---|---|---|
| 0 | 0x1683be267318d2ddd8cee8df4a4548dcffb1e088 |
Faucet Sender (active) |
| 1 | 0xd528c18ce7a8844e4a4dcd841975b20ae599b020 |
Faucet Reserve |
| 2 | 0xfd6e36bfa2b2798d08592802206c943d5513adfb |
Faucet Reserve |
| 3 | 0xed15573ad312d41aaef74cff56a8ef28122ec2db |
Faucet Reserve |
| 4 | 0xaffd6d4f74c5651110efcf1b9736f7a5cf2ccdbb |
Faucet Reserve |
| 5 | 0xbf5ee055f399323fdd0cefe3d4aa923678d46107 |
Faucet Reserve |
| 6 | 0x1dc9637b183093d723ea8d1fb18083b06490facb |
Faucet Reserve |
| 7 | 0xa2270f30ca1aad922510375508bf68cd95509f29 |
Faucet Reserve |
| 8 | 0xe15a689775685ae324559ea9a492fc650354ca0b |
Faucet Reserve |
| 9 | 0x005dcff212d27b55e7a74bf745e1349ab44ca25d |
Faucet Reserve |
Treasury
| Parameter | Value |
|---|---|
| Treasury Address | ms69216b1d10425689704d5ae3b2a4aa17049f59b1 |
| Multisig Scheme | 3-of-5 Falcon-512 |
| Block Reward to Treasury | 5% per block |
| Fee to Treasury | 20% of transaction fees |
Tokenomics
| Parameter | Value |
|---|---|
| Year 1 Block Reward | 100 QUA |
| Annual Reward Reduction | 15% per year |
| Minimum Reward Floor | 5 QUA (reached ~year 20) |
| Mining Reward Lock | 50% locked for 6 months |
| Fee Burn | 70% of all transaction fees |
| Fee to Treasury | 20% of all transaction fees |
| Fee to Miner | 10% of all transaction fees |
| Max Block Transactions | 1,200 |
| Max Block Size | 2 MB |
| Min Transaction Fee | 0.0001 QUA |
Quick Start with Docker
Option 1: Docker Desktop (Graphical Interface)
- Open Docker Desktop and find
xd637/quanta-node:v0.6.0-alpha(or:latest) in your Images. - Click Run.
- Under Optional settings, configure:
- Container name:
quanta-node - Ports: Map
3000,7782,8333,9090to themselves. - Volumes:
- Add host path
quanta-datato container path/home/quanta/quanta_data - Add host path
quanta-logsto container path/home/quanta/logs
- Add host path
- Container name:
- Click Run.
Option 2: Docker CLI
# Pull the image
docker pull xd637/quanta-node:v0.6.0-alpha
# Run directly (Ensure data persistence!)
docker run -d \
--name quanta-node \
-p 3000:3000 -p 8333:8333 -p 7782:7782 -p 9090:9090 \
-v quanta-data:/home/quanta/quanta_data \
-v quanta-logs:/home/quanta/logs \
xd637/quanta-node:v0.6.0-alphaOption 3: Docker Compose (Recommended)
If updating from an older version, delete your old named volume first:
docker compose down -vThen start the node:
docker compose -f docker-compose.single.yml up -dServer Setup (Ubuntu / VPS)
The following instructions guide you through setting up a persistent, always-on Quanta node on a fresh Ubuntu server.
1. Update system and install Docker:
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker ubuntu && newgrp docker2. Open necessary ports (using UFW):
sudo ufw allow 8333/tcp
sudo ufw allow 7782/tcp
sudo ufw allow 3000/tcp
sudo ufw allow ssh # Prevents getting locked out
sudo ufw --force enable3. Set up directory and start the node (using Host Networking for API Security):
mkdir -p ~/quanta_data
sudo chmod 777 ~/quanta_data
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v ~/quanta_data:/home/quanta/quanta_data \
xd637/quanta-node:latest(Need public Web Wallet access? See TESTNET_RPC_SETUP.md for NGINX & SSL setup)
4. Check logs:
docker logs quanta-node --tail 30 -f5. Update / Clean Restart (REQUIRED FOR v0.3.0):
Due to the Testnet V2 reset, you MUST delete your old blockchain data before restarting:
docker stop quanta-node && docker rm quanta-node
# ⚠️ CRITICAL: Delete old blockchain data
sudo rm -rf ~/quanta_data/*
docker pull xd637/quanta-node:latest
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v ~/quanta_data:/home/quanta/quanta_data \
xd637/quanta-node:latestManual Build from Source
git clone https://github.com/quantachain/quanta
cd quanta
git checkout v0.6.0-alpha
cargo build --release
# Run node
./target/release/quanta start -c quanta.tomlWallet Management
Create a new wallet natively:
./target/release/quanta new-wallet --file wallet.quaCreate a raw encrypted wallet using Docker:
docker exec -it quanta-node quanta new_wallet --file wallet.quaCreate a new HD Wallet (Recommended! Gives JSON + 24-word recovery phrase):
docker exec -it quanta-node quanta new_hd_wallet --file hd_wallet.jsonMining (Proof of Work)
Start CPU miner natively:
./target/release/quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782Start CPU miner using Docker (Background):
docker exec -d quanta-node quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782Check Mining Logs in Docker:
docker logs quanta-node --tail 30 -fStop Mining using Docker:
docker exec -it quanta-node quanta stop_mining --rpc-port 7782Node Status & Blockchain Info
Print Current Blockchain Height:
docker exec -it quanta-node quanta print_height --rpc-port 7782View Full Node Status (Peers, Height, Mempool):
docker exec -it quanta-node quanta status --rpc-port 7782View Dynamic Mining Status (Difficulty, Blocks Mined, Rewards):
docker exec -it quanta-node quanta mining_status --rpc-port 7782Ports
| Port | Service |
|---|---|
3000 |
REST API |
8333 |
P2P Network |
7782 |
RPC |
9090 |
Prometheus Metrics |
What Changed in Alpha v0.6.0
🐛 Critical Bug Fix — Block Template Nonce Sequence (Network Stall Fix)
Root Cause: The mempool block assembler sorted transactions strictly by descending fee. If a user sent two transactions, the miner could include them out of nonce-order. The sequentially-validating consensus engine would immediately reject the miner's block with InvalidNonce, causing network-wide stalls.
Fix: Block templates now use a simulated State buffer. Transactions are assembled with absolute sequential nonce guarantees, permanently preventing self-orphaning blocks.
🐛 Critical Bug Fix — Permanent Nonce Desync on Reorg
Root Cause: The
eorg_to_block handler correctly rolled back and reapplied balances for 1-block reorgs, but failed to call increment_nonce() for transactions in the new block. A user whose transaction landed in a reorg block became permanently frozen with an on-chain nonce of 0.
Fix: Added the missing increment_nonce() call into the reorg block application loop.
🐛 Critical Fix — Faucet Balance = 0 After Sync
Root cause: The genesis premine transactions (10 × 1,000,000 QUA) were created in-memory in Blockchain::new() and credited to the account state — but they were never stored inside the genesis block struct itself. When a deep_reorg triggered rebuild_account_state_up_to(), it iterated over genesis.transactions (always empty on disk) and applied no premine. All faucet wallets showed 0 QUA after any reorg.
Fix: rebuild_account_state_up_to() now directly credits the hardcoded faucet list with maturity=0 before replaying blocks 1–N, exactly mirroring what Blockchain::new() does.
Self-heal on startup: Blockchain::new() now detects the corrupted state (Faucet 0 balance = 0 on a non-empty chain) and automatically replays all blocks to restore correct balances. No data wipe needed to upgrade from v0.5.0.
🐛 Critical Fix — Sync Stuck at Block 1 (MIN_DIFFICULTY Too High)
Root cause: MIN_DIFFICULTY was set to 8,343,908 but the live testnet's earliest blocks (heights 1–45) were mined at the genesis difficulty of 6,972,889. Every incoming block at those heights was rejected with difficulty 6972889 < minimum 8343908, making a fresh sync impossible — the node could never advance past genesis.
Fix: MIN_DIFFICULTY lowered to 6_972_889 (the actual testnet genesis difficulty).
🐛 Fix — Reorg LWMA Bounds Rejected Early Chain Blocks
The permissive reorg validator computed LWMA bounds against the current chain tip. For a node at genesis (height 0), this produced an estimate of ~MIN_DIFFICULTY, and the 50% lo bound rejected all early blocks. The bounds check is now **skipped for blocks below `LWMA_WINDO...
Quantachain Testnet V.0.5.0
QuantaChain Testnet — Alpha v0.5.0
Post-quantum secure blockchain using Falcon-512 signatures and SHA3-256 Proof of Work.
⚠️ UPGRADE NOTICE — v0.5.0
This release fixes critical sync and balance bugs. No chain reset required.
Just pull the new image and restart — the node self-heals corrupted account state automatically on startup.
Nodes on v0.4.0 that are stuck in a fork loop will recover automatically after upgrading.
This is a pre-release testnet build. Do not use real funds. APIs and chain parameters may change between alpha releases.
Genesis Block
| Parameter | Value |
|---|---|
| Network | Testnet |
| Timestamp | 1774483200 (2026-03-26 00:00:00 UTC) |
| Testnet Genesis Hash | 0000000379f963c94f47e9d949a288c9f68caa9d2399a3efa9ed844bf6bf52e2 |
| Mainnet Genesis Hash | 1cdbccdff3db462378f4acbe4553b49040ffcdebf74b5c77e685ba05ccfa8cb0 |
| Difficulty | 6,972,889 (Testnet) / 16,777,216 (Mainnet) |
| Block Time | 30 seconds |
Testnet Faucet Wallets (Genesis Premine)
Each address below received 1,000,000 QUA at genesis. Faucet account 0 is the active sender used by the faucet API.
| Index | Address | Role |
|---|---|---|
| 0 | 0x1683be267318d2ddd8cee8df4a4548dcffb1e088 |
Faucet Sender (active) |
| 1 | 0xd528c18ce7a8844e4a4dcd841975b20ae599b020 |
Faucet Reserve |
| 2 | 0xfd6e36bfa2b2798d08592802206c943d5513adfb |
Faucet Reserve |
| 3 | 0xed15573ad312d41aaef74cff56a8ef28122ec2db |
Faucet Reserve |
| 4 | 0xaffd6d4f74c5651110efcf1b9736f7a5cf2ccdbb |
Faucet Reserve |
| 5 | 0xbf5ee055f399323fdd0cefe3d4aa923678d46107 |
Faucet Reserve |
| 6 | 0x1dc9637b183093d723ea8d1fb18083b06490facb |
Faucet Reserve |
| 7 | 0xa2270f30ca1aad922510375508bf68cd95509f29 |
Faucet Reserve |
| 8 | 0xe15a689775685ae324559ea9a492fc650354ca0b |
Faucet Reserve |
| 9 | 0x005dcff212d27b55e7a74bf745e1349ab44ca25d |
Faucet Reserve |
Treasury
| Parameter | Value |
|---|---|
| Treasury Address | ms69216b1d10425689704d5ae3b2a4aa17049f59b1 |
| Multisig Scheme | 3-of-5 Falcon-512 |
| Block Reward to Treasury | 5% per block |
| Fee to Treasury | 20% of transaction fees |
Tokenomics
| Parameter | Value |
|---|---|
| Year 1 Block Reward | 100 QUA |
| Annual Reward Reduction | 15% per year |
| Minimum Reward Floor | 5 QUA (reached ~year 20) |
| Mining Reward Lock | 50% locked for 6 months |
| Fee Burn | 70% of all transaction fees |
| Fee to Treasury | 20% of all transaction fees |
| Fee to Miner | 10% of all transaction fees |
| Max Block Transactions | 1,200 |
| Max Block Size | 2 MB |
| Min Transaction Fee | 0.0001 QUA |
Quick Start with Docker
Option 1: Docker Desktop (Graphical Interface)
- Open Docker Desktop and find
xd637/quanta-node:v0.5.0-alpha(or:latest) in your Images. - Click Run.
- Under Optional settings, configure:
- Container name:
quanta-node - Ports: Map
3000,7782,8333,9090to themselves. - Volumes:
- Add host path
quanta-datato container path/home/quanta/quanta_data - Add host path
quanta-logsto container path/home/quanta/logs
- Add host path
- Container name:
- Click Run.
Option 2: Docker CLI
# Pull the image
docker pull xd637/quanta-node:v0.5.0-alpha
# Run directly (Ensure data persistence!)
docker run -d \
--name quanta-node \
-p 3000:3000 -p 8333:8333 -p 7782:7782 -p 9090:9090 \
-v quanta-data:/home/quanta/quanta_data \
-v quanta-logs:/home/quanta/logs \
xd637/quanta-node:v0.5.0-alphaOption 3: Docker Compose (Recommended)
If updating from an older version, delete your old named volume first:
docker compose down -vThen start the node:
docker compose -f docker-compose.single.yml up -dServer Setup (Ubuntu / VPS)
The following instructions guide you through setting up a persistent, always-on Quanta node on a fresh Ubuntu server.
1. Update system and install Docker:
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker ubuntu && newgrp docker2. Open necessary ports (using UFW):
sudo ufw allow 8333/tcp
sudo ufw allow 7782/tcp
sudo ufw allow 3000/tcp
sudo ufw allow ssh # Prevents getting locked out
sudo ufw --force enable3. Set up directory and start the node (using Host Networking for API Security):
mkdir -p ~/quanta_data
sudo chmod 777 ~/quanta_data
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v ~/quanta_data:/home/quanta/quanta_data \
xd637/quanta-node:latest(Need public Web Wallet access? See TESTNET_RPC_SETUP.md for NGINX & SSL setup)
4. Check logs:
docker logs quanta-node --tail 30 -f5. Update / Clean Restart (REQUIRED FOR v0.3.0):
Due to the Testnet V2 reset, you MUST delete your old blockchain data before restarting:
docker stop quanta-node && docker rm quanta-node
# ⚠️ CRITICAL: Delete old blockchain data
sudo rm -rf ~/quanta_data/*
docker pull xd637/quanta-node:latest
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v ~/quanta_data:/home/quanta/quanta_data \
xd637/quanta-node:latestManual Build from Source
git clone https://github.com/quantachain/quanta
cd quanta
git checkout v0.5.0-alpha
cargo build --release
# Run node
./target/release/quanta start -c quanta.tomlWallet Management
Create a new wallet natively:
./target/release/quanta new-wallet --file wallet.quaCreate a raw encrypted wallet using Docker:
docker exec -it quanta-node quanta new_wallet --file wallet.quaCreate a new HD Wallet (Recommended! Gives JSON + 24-word recovery phrase):
docker exec -it quanta-node quanta new_hd_wallet --file hd_wallet.jsonMining (Proof of Work)
Start CPU miner natively:
./target/release/quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782Start CPU miner using Docker (Background):
docker exec -d quanta-node quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782Check Mining Logs in Docker:
docker logs quanta-node --tail 30 -fStop Mining using Docker:
docker exec -it quanta-node quanta stop_mining --rpc-port 7782Node Status & Blockchain Info
Print Current Blockchain Height:
docker exec -it quanta-node quanta print_height --rpc-port 7782View Full Node Status (Peers, Height, Mempool):
docker exec -it quanta-node quanta status --rpc-port 7782View Dynamic Mining Status (Difficulty, Blocks Mined, Rewards):
docker exec -it quanta-node quanta mining_status --rpc-port 7782Ports
| Port | Service |
|---|---|
3000 |
REST API |
8333 |
P2P Network |
7782 |
RPC |
9090 |
Prometheus Metrics |
What Changed in Alpha v0.5.0
🐛 Critical Fix — Faucet Balance = 0 After Sync
Root cause: The genesis premine transactions (10 × 1,000,000 QUA) were created in-memory in Blockchain::new() and credited to the account state — but they were never stored inside the genesis block struct itself. When a deep_reorg triggered rebuild_account_state_up_to(), it iterated over genesis.transactions (always empty on disk) and applied no premine. All faucet wallets showed 0 QUA after any reorg.
Fix: rebuild_account_state_up_to() now directly credits the hardcoded faucet list with maturity=0 before replaying blocks 1–N, exactly mirroring what Blockchain::new() does.
Self-heal on startup: Blockchain::new() now detects the corrupted state (Faucet 0 balance = 0 on a non-empty chain) and automatically replays all blocks to restore correct balances. No data wipe needed to upgrade from v0.4.0.
🐛 Critical Fix — Sync Stuck at Block 1 (MIN_DIFFICULTY Too High)
Root cause: MIN_DIFFICULTY was set to 8,343,908 but the live testnet's earliest blocks (heights 1–45) were mined at the genesis difficulty of 6,972,889. Every incoming block at those heights was rejected with difficulty 6972889 < minimum 8343908, making a fresh sync impossible — the node could never advance past genesis.
Fix: MIN_DIFFICULTY lowered to 6_972_889 (the actual testnet genesis difficulty).
🐛 Fix — Reorg LWMA Bounds Rejected Early Chain Blocks
The permissive reorg validator computed LWMA bounds against the current chain tip. For a node at genesis (height 0), this produced an estimate of ~MIN_DIFFICULTY, and the 50% lo bound rejected all early blocks. The bounds check is now skipped for blocks below LWMA_WINDOW (45) — LWMA is not meaningful without a full window.
🐛 Fix — State Root Rejected All Historical Blocks
The state_root commitment field was added to the codebase after the live testnet had already mined hundreds of blocks. Nodes enforcing the check on those older blocks rejected them as invalid. State root is now only enforced on recent blocks (within 1,000 of the current tip).
🔧 Faster Fork Recovery
Reduced MAX_FORK_STALLS from 2 to 1 — the node now initiates a deep reorg after a single batch of stuck blocks instead of waiting for two consecutive stalls.
What Changed in Alpha v0.4.0
🔧 LWMA Difficulty Algorithm (Consensus Change — Hard Fork)
Replaced the Bitcoin-style 2016-block interval difficulty adjustment with LWMA (Linearly Weighted Moving Average), a per-block algorithm used by Grin, Zcash, and Monero forks.
Why: The 2016-block window was dangerous on a small testnet:
- A high-hashrate miner joining temporarily could mine all 2016 blocks fast, spike difficulty 4×, then leave — causing the net...
Quantachain Testnet V.0.4.0
QuantaChain Testnet — Alpha v0.4.0 (Testnet V2)
Post-quantum secure blockchain using Falcon-512 signatures and SHA3-256 Proof of Work.
⚠️ CRITICAL: TESTNET RESET⚠️
This release changes the difficulty adjustment algorithm — a consensus-breaking change (hard fork). All nodes MUST delete theirquanta_data/folder and restart. Running old and new nodes together will cause a chain split.
This is a pre-release testnet build. Do not use real funds. APIs and chain parameters may change between alpha releases.
Genesis Block
| Parameter | Value |
|---|---|
| Network | Testnet |
| Timestamp | 1774483200 (2026-03-26 00:00:00 UTC) |
| Testnet Genesis Hash | 0000000379f963c94f47e9d949a288c9f68caa9d2399a3efa9ed844bf6bf52e2 |
| Mainnet Genesis Hash | 1cdbccdff3db462378f4acbe4553b49040ffcdebf74b5c77e685ba05ccfa8cb0 |
| Difficulty | 6,972,889 (Testnet) / 16,777,216 (Mainnet) |
| Block Time | 30 seconds |
Testnet Faucet Wallets (Genesis Premine)
Each address below received 1,000,000 QUA at genesis. Faucet account 0 is the active sender used by the faucet API.
| Index | Address | Role |
|---|---|---|
| 0 | 0x1683be267318d2ddd8cee8df4a4548dcffb1e088 |
Faucet Sender (active) |
| 1 | 0xd528c18ce7a8844e4a4dcd841975b20ae599b020 |
Faucet Reserve |
| 2 | 0xfd6e36bfa2b2798d08592802206c943d5513adfb |
Faucet Reserve |
| 3 | 0xed15573ad312d41aaef74cff56a8ef28122ec2db |
Faucet Reserve |
| 4 | 0xaffd6d4f74c5651110efcf1b9736f7a5cf2ccdbb |
Faucet Reserve |
| 5 | 0xbf5ee055f399323fdd0cefe3d4aa923678d46107 |
Faucet Reserve |
| 6 | 0x1dc9637b183093d723ea8d1fb18083b06490facb |
Faucet Reserve |
| 7 | 0xa2270f30ca1aad922510375508bf68cd95509f29 |
Faucet Reserve |
| 8 | 0xe15a689775685ae324559ea9a492fc650354ca0b |
Faucet Reserve |
| 9 | 0x005dcff212d27b55e7a74bf745e1349ab44ca25d |
Faucet Reserve |
Treasury
| Parameter | Value |
|---|---|
| Treasury Address | ms69216b1d10425689704d5ae3b2a4aa17049f59b1 |
| Multisig Scheme | 3-of-5 Falcon-512 |
| Block Reward to Treasury | 5% per block |
| Fee to Treasury | 20% of transaction fees |
Tokenomics
| Parameter | Value |
|---|---|
| Year 1 Block Reward | 100 QUA |
| Annual Reward Reduction | 15% per year |
| Minimum Reward Floor | 5 QUA (reached ~year 20) |
| Mining Reward Lock | 50% locked for 6 months |
| Fee Burn | 70% of all transaction fees |
| Fee to Treasury | 20% of all transaction fees |
| Fee to Miner | 10% of all transaction fees |
| Max Block Transactions | 1,200 |
| Max Block Size | 2 MB |
| Min Transaction Fee | 0.0001 QUA |
Quick Start with Docker
Option 1: Docker Desktop (Graphical Interface)
- Open Docker Desktop and find
xd637/quanta-node:v0.4.0-alpha(or:latest) in your Images. - Click Run.
- Under Optional settings, configure:
- Container name:
quanta-node - Ports: Map
3000,7782,8333,9090to themselves. - Volumes:
- Add host path
quanta-datato container path/home/quanta/quanta_data - Add host path
quanta-logsto container path/home/quanta/logs
- Add host path
- Container name:
- Click Run.
Option 2: Docker CLI
# Pull the image
docker pull xd637/quanta-node:v0.4.0-alpha
# Run directly (Ensure data persistence!)
docker run -d \
--name quanta-node \
-p 3000:3000 -p 8333:8333 -p 7782:7782 -p 9090:9090 \
-v quanta-data:/home/quanta/quanta_data \
-v quanta-logs:/home/quanta/logs \
xd637/quanta-node:v0.4.0-alphaOption 3: Docker Compose (Recommended)
If updating from an older version, delete your old named volume first:
docker compose down -vThen start the node:
docker compose -f docker-compose.single.yml up -dServer Setup (Ubuntu / VPS)
The following instructions guide you through setting up a persistent, always-on Quanta node on a fresh Ubuntu server.
1. Update system and install Docker:
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker ubuntu && newgrp docker2. Open necessary ports (using UFW):
sudo ufw allow 8333/tcp
sudo ufw allow 7782/tcp
sudo ufw allow 3000/tcp
sudo ufw allow ssh # Prevents getting locked out
sudo ufw --force enable3. Set up directory and start the node (using Host Networking for API Security):
mkdir -p ~/quanta_data
sudo chmod 777 ~/quanta_data
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v ~/quanta_data:/home/quanta/quanta_data \
xd637/quanta-node:latest(Need public Web Wallet access? See TESTNET_RPC_SETUP.md for NGINX & SSL setup)
4. Check logs:
docker logs quanta-node --tail 30 -f5. Update / Clean Restart (REQUIRED FOR v0.3.0):
Due to the Testnet V2 reset, you MUST delete your old blockchain data before restarting:
docker stop quanta-node && docker rm quanta-node
# ⚠️ CRITICAL: Delete old blockchain data
sudo rm -rf ~/quanta_data/*
docker pull xd637/quanta-node:latest
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v ~/quanta_data:/home/quanta/quanta_data \
xd637/quanta-node:latestManual Build from Source
git clone https://github.com/quantachain/quanta
cd quanta
git checkout v0.4.0-alpha
cargo build --release
# Run node
./target/release/quanta start -c quanta.tomlWallet Management
Create a new wallet natively:
./target/release/quanta new-wallet --file wallet.quaCreate a raw encrypted wallet using Docker:
docker exec -it quanta-node quanta new_wallet --file wallet.quaCreate a new HD Wallet (Recommended! Gives JSON + 24-word recovery phrase):
docker exec -it quanta-node quanta new_hd_wallet --file hd_wallet.jsonMining (Proof of Work)
Start CPU miner natively:
./target/release/quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782Start CPU miner using Docker (Background):
docker exec -d quanta-node quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782Check Mining Logs in Docker:
docker logs quanta-node --tail 30 -fStop Mining using Docker:
docker exec -it quanta-node quanta stop_mining --rpc-port 7782Node Status & Blockchain Info
Print Current Blockchain Height:
docker exec -it quanta-node quanta print_height --rpc-port 7782View Full Node Status (Peers, Height, Mempool):
docker exec -it quanta-node quanta status --rpc-port 7782View Dynamic Mining Status (Difficulty, Blocks Mined, Rewards):
docker exec -it quanta-node quanta mining_status --rpc-port 7782Ports
| Port | Service |
|---|---|
3000 |
REST API |
8333 |
P2P Network |
7782 |
RPC |
9090 |
Prometheus Metrics |
What Changed in Alpha v0.4.0
🔧 LWMA Difficulty Algorithm (Consensus Change — Hard Fork)
Replaced the Bitcoin-style 2016-block interval difficulty adjustment with LWMA (Linearly Weighted Moving Average), a per-block algorithm used by Grin, Zcash, and Monero forks.
Why: The 2016-block window was dangerous on a small testnet:
- A high-hashrate miner joining temporarily could mine all 2016 blocks fast, spike difficulty 4×, then leave — causing the network to stall for hours waiting for the next adjustment window.
- With 30-second block times, 2016 blocks = ~16.8 hours of stuck difficulty. LWMA reduces this to ~22.5 minutes.
How LWMA works:
- Adjusts difficulty on every block using the last 45 blocks (~22.5 min window)
- Each solve-time is weighted linearly — newest block gets weight 45, oldest gets weight 1
- Individual solve times are clamped to
[1s … 180s]to prevent timestamp manipulation - Per-block bounds: difficulty can move at most −25% / +100% per block
- All integer math — no
f64, no platform-dependent rounding (consensus safe)
| Parameter | Old (v0.3.0) | New (v0.4.0) |
|---|---|---|
| Algorithm | Bitcoin-style interval | LWMA (Zawy 2017) |
| Adjustment frequency | Every 2016 blocks | Every block |
| Window | 2016 blocks (~16.8 hrs) | 45 blocks (~22.5 min) |
| Recovery time after hashrate change | Up to 16.8 hours | ~22.5 minutes |
| Per-step cap | 4× up / 0.25× down | 2× up / 0.75× down |
🔧 Deep Chain Reorg (Fork Recovery)
Added deep_reorg() — a multi-block reorganisation engine that allows the node to escape a private fork and switch to the network's canonical chain.
Why: Nodes that mined a block the network rejected could get permanently stuck: every sync batch returned blocks storing as orphans but never connecting, so height never advanced. The stall counter never fired because add_network_block() returns Ok(()) even for orphaned blocks.
How it works:
- Sync engine detects 2 consecutive batches where blocks arrived but chain height didn't move → fork detected
- Walks back up to 200 blocks comparing local hashes vs incoming
previous_hashto find the common ancestor - Rolls back the chain-height pointer to the fork point
- Rebuilds account state from genesis up to the fork point
- Replays the canonical chain blocks sequentially from there
- Safety: never rolls back past a checkpoint, never touches genesis, validates PoW on all incoming blocks before committing
What Changed in Alpha v0.3.0 (Testnet V2)
- Testnet V2 Genesis Reset: Restarted the testnet with a realistic genesis difficulty (
6,972,889) to properly enforce ~30s block times. - Difficulty Adjustment Fix: Removed the broken ±15% bounding cap on difficulty adjustments. The algorithm is now mathematically equivalent to Bitcoin's formula with a 4...
Quantachain Testnet Alpha
QuantaChain Testnet — Alpha v0.3.0 (Testnet V2)
Post-quantum secure blockchain using Falcon-512 signatures and SHA3-256 Proof of Work.
⚠️ CRITICAL: TESTNET RESET⚠️
This release includes a new genesis block. If you are running an older alpha node, you MUST delete yourquanta_data/folder before starting this update. The old chain is incompatible.
This is a pre-release testnet build. Do not use real funds. APIs and chain parameters may change between alpha releases.
Genesis Block
| Parameter | Value |
|---|---|
| Network | Testnet |
| Timestamp | 1774828800 (2026-04-01 00:00:00 UTC) |
| Testnet Genesis Hash | 0000001a2cbe8311e347945a5d0c35563b3b17b7423f6cc471b9c623ef10b77f |
| Mainnet Genesis Hash | 1cdbccdff3db462378f4acbe4553b49040ffcdebf74b5c77e685ba05ccfa8cb0 |
| Difficulty | 8,343,908 (Testnet) / 16,777,216 (Mainnet) |
| Block Time | 30 seconds |
Testnet Faucet Wallets (Genesis Premine)
Each address below received 1,000,000 QUA at genesis. Faucet account 0 is the active sender used by the faucet API.
| Index | Address | Role |
|---|---|---|
| 0 | 0x1683be267318d2ddd8cee8df4a4548dcffb1e088 |
Faucet Sender (active) |
| 1 | 0xd528c18ce7a8844e4a4dcd841975b20ae599b020 |
Faucet Reserve |
| 2 | 0xfd6e36bfa2b2798d08592802206c943d5513adfb |
Faucet Reserve |
| 3 | 0xed15573ad312d41aaef74cff56a8ef28122ec2db |
Faucet Reserve |
| 4 | 0xaffd6d4f74c5651110efcf1b9736f7a5cf2ccdbb |
Faucet Reserve |
| 5 | 0xbf5ee055f399323fdd0cefe3d4aa923678d46107 |
Faucet Reserve |
| 6 | 0x1dc9637b183093d723ea8d1fb18083b06490facb |
Faucet Reserve |
| 7 | 0xa2270f30ca1aad922510375508bf68cd95509f29 |
Faucet Reserve |
| 8 | 0xe15a689775685ae324559ea9a492fc650354ca0b |
Faucet Reserve |
| 9 | 0x005dcff212d27b55e7a74bf745e1349ab44ca25d |
Faucet Reserve |
Treasury
| Parameter | Value |
|---|---|
| Treasury Address | ms69216b1d10425689704d5ae3b2a4aa17049f59b1 |
| Multisig Scheme | 3-of-5 Falcon-512 |
| Block Reward to Treasury | 5% per block |
| Fee to Treasury | 20% of transaction fees |
Tokenomics
| Parameter | Value |
|---|---|
| Year 1 Block Reward | 100 QUA |
| Annual Reward Reduction | 15% per year |
| Minimum Reward Floor | 5 QUA (reached ~year 20) |
| Mining Reward Lock | 50% locked for 6 months |
| Fee Burn | 70% of all transaction fees |
| Fee to Treasury | 20% of all transaction fees |
| Fee to Miner | 10% of all transaction fees |
| Max Block Transactions | 1,200 |
| Max Block Size | 2 MB |
| Min Transaction Fee | 0.0001 QUA |
Quick Start with Docker
Option 1: Docker Desktop (Graphical Interface)
- Open Docker Desktop and find
xd637/quanta-node:v0.3.0-alpha(or:latest) in your Images. - Click Run.
- Under Optional settings, configure:
- Container name:
quanta-node - Ports: Map
3000,7782,8333,9090to themselves. - Volumes:
- Add host path
quanta-datato container path/home/quanta/quanta_data - Add host path
quanta-logsto container path/home/quanta/logs
- Add host path
- Container name:
- Click Run.
Option 2: Docker CLI
# Pull the image
docker pull xd637/quanta-node:v0.3.0-alpha
# Run directly (Ensure data persistence!)
docker run -d \
--name quanta-node \
-p 3000:3000 -p 8333:8333 -p 7782:7782 -p 9090:9090 \
-v quanta-data:/home/quanta/quanta_data \
-v quanta-logs:/home/quanta/logs \
xd637/quanta-node:v0.3.0-alphaOption 3: Docker Compose (Recommended)
If updating from an older version, delete your old named volume first:
docker compose down -vThen start the node:
docker compose -f docker-compose.single.yml up -dServer Setup (Ubuntu / VPS)
The following instructions guide you through setting up a persistent, always-on Quanta node on a fresh Ubuntu server.
1. Update system and install Docker:
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker ubuntu && newgrp docker2. Open necessary ports:
sudo iptables -I INPUT -p tcp --dport 8333 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 7782 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 3000 -j ACCEPT
sudo apt install -y iptables-persistent
sudo netfilter-persistent save3. Set up directory and start the node (using Host Networking for API Security):
mkdir -p ~/quanta_data
sudo chmod 777 ~/quanta_data
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v ~/quanta_data:/home/quanta/quanta_data \
xd637/quanta-node:latest(Need public Web Wallet access? See TESTNET_RPC_SETUP.md for NGINX & SSL setup)
4. Check logs:
docker logs quanta-node --tail 30 -f5. Update / Clean Restart (REQUIRED FOR v0.3.0):
Due to the Testnet V2 reset, you MUST delete your old blockchain data before restarting:
docker stop quanta-node && docker rm quanta-node
# ⚠️ CRITICAL: Delete old blockchain data
sudo rm -rf ~/quanta_data/*
docker pull xd637/quanta-node:latest
docker run -d \
--name quanta-node \
--restart always \
--network host \
-v ~/quanta_data:/home/quanta/quanta_data \
xd637/quanta-node:latestManual Build from Source
git clone https://github.com/quantachain/quanta
cd quanta
git checkout v0.3.0-alpha
cargo build --release
# Run node
./target/release/quanta start -c quanta.tomlWallet Management
Create a new wallet natively:
./target/release/quanta new-wallet --file wallet.quaCreate a raw encrypted wallet using Docker:
docker exec -it quanta-node quanta new_wallet --file wallet.quaCreate a new HD Wallet (Recommended! Gives JSON + 24-word recovery phrase):
docker exec -it quanta-node quanta new_hd_wallet --file hd_wallet.jsonMining (Proof of Work)
Start CPU miner natively:
./target/release/quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782Start CPU miner using Docker (Background):
docker exec -d quanta-node quanta start_mining YOUR_WALLET_ADDRESS --rpc-port 7782Check Mining Logs in Docker:
docker logs quanta-node --tail 30 -fStop Mining using Docker:
docker exec -it quanta-node quanta stop_mining --rpc-port 7782Node Status & Blockchain Info
Print Current Blockchain Height:
docker exec -it quanta-node quanta print_height --rpc-port 7782View Full Node Status (Peers, Height, Mempool):
docker exec -it quanta-node quanta status --rpc-port 7782View Dynamic Mining Status (Difficulty, Blocks Mined, Rewards):
docker exec -it quanta-node quanta mining_status --rpc-port 7782Ports
| Port | Service |
|---|---|
3000 |
REST API |
8333 |
P2P Network |
7782 |
RPC |
9090 |
Prometheus Metrics |
What Changed in Alpha v0.3.0 (Testnet V2)
-
Testnet V2 Genesis Reset: Restarted the testnet with a realistic genesis difficulty (
8,343,908) to properly enforce ~30s block times. - Difficulty Adjustment Fix: Removed the broken ±15% bounding cap on difficulty adjustments. The algorithm is now mathematically equivalent to Bitcoin's formula with a 4x clamp, resolving the issue where difficulty failed to adjust correctly.
- Weighted Peer Reputation: Replaced the flat 3-strike system with a Bitcoin-style DoSMan weighted scoring system (0-100). Serious consensus violations (e.g., invalid blocks) result in immediate bans (Score: +50), while minor issues like invalid txs (Score: +10) or message floods (Score: +20) accumulate gradually.
-
Wallet & Mining CLI Improvements:
-
quanta new_walletnow clearly prints your generated address to the terminal. -
quanta mining_statusno longer silently truncates your public address, and clearly states if mining is idle instead of looking stuck. - Mining will no longer start unnecessarily if your node is out of sync.
-
-
Block Explorer API: Added full support for paginated address history (
/api/address/:address/txs), address lookup (/api/address/:address),$O(1)$ transaction lookup by hash (/api/tx/:hash), and latest block feeds (/api/blocks/latest). - Network Routing Fixes: Nodes no longer request duplicate blocks during broadcasts, fixing the persistent sync stall bug ("stuck at 272").
What Changed in Alpha v0.2.0
- Mnemonic-based faucet wallet system (10 reserve wallets, BIP-39 derived)
- Genesis timestamp updated to 2026-03-21
- Security audit 2 applied: nonce atomicity, coinbase validation, MTP timestamp rule, per-sender mempool cap, state root enforcement
- Block size increased to 2 MB to accommodate Falcon-512 transaction sizes
- License changed from MIT to Apache 2.0
Security Notice
This release has undergone internal audit only. It has NOT been formally verified by a third-party security firm. Do not use for real financial transactions.
Falcon-512 and Kyber-1024 implementations are based on NIST PQC Round 3 finalists.
License
Apache 2.0 — see LICENSE
"Quanta" and "QuantaChain" are trademarks. Forks may not use these names without permission.