QNET BLOCKCHAIN@AIQnetLab
QNet Blockchain - Development Report
BREAKTHROUGH! Network Finally Operational!
A critical breakthrough was achieved today! After weeks of debugging, the QNet network has finally started working. 2900+ microblocks produced, 32+ macroblocks finalized, all 5 Genesis nodes synchronized. Issues blocking network launch have been completely resolved.
What DIDN'T Work → What Works NOW:
- Network Synchronization: Nodes stuck at block 30-31 → 2900+ blocks produced
- Dilithium Signatures: "Invalid base64 signature" errors → 100% successful verification
- Producer Rotation: Chaos at block 30 → Smooth rotation every 30 blocks
- Macroblocks: Not created → 32+ macroblocks finalized
- Reward System: Genesis/Full/Super nodes didn't receive rewards → All node types can receive (awaiting testing)
Critical Fixes:
1. Dilithium Signature Parsing
Problem: Format `dilithium_sig_genesis_node_003_` parsed incorrectly
Solution: Using `rfind('_')` to find last underscore
Result: Correct handling of node_id with multiple underscores
2. Signature Algorithm Unification
Problem: Creation and verification algorithms used different data
Solution: Both methods now use `wallet_address:data + QNET_CONSENSUS_SIG`
Result: Signatures now verify successfully
3. Reward System and Self-Connection Protection
Problem: Full/Super/Genesis nodes didn't record pings, Docker bridge IP polluted peer list
Solution:
- Ping recording for ALL node types in `handle_network_ping`
- Filter Docker networks (172.17.x.x, 172.18.x.x) and private IPs (10.x.x.x, 192.168.x.x)
- Track external_ip to prevent self-connection
Result: Clean peer list, all node types can receive rewards (awaiting testing)
4. IP Privacy and Consensus
Problem:
- Real IPs shown in peer exchange logs
- Only 2-3 of 5 nodes participated in reveal phase
Solution:
- All IPs replaced with pseudonyms (genesis_node_XXX, node_XXXXXXXX)
- Added `consensus_lookahead = 30` blocks for early consensus
Result: Privacy protected, all 5 nodes participate in reveals (awaiting deployment)
Log Error Explanations:
"Insufficient reveals for Byzantine safety: 2/3"
Cause: Sync check blocked nodes from early consensus participation (consensus starts 30 blocks before macroblock)
Fix: Added lookahead, now all 5 nodes can participate
Next Launch Verification: Should see "reveals_received: 5/5" instead of "2/3"
"[API] Height request: local=2012, network=2011, syncing=false"
NOT an error! Producer node ahead of network by 1 block, which is normal. Network catches up in ~500ms.
What We'll Verify in Next Launches:
1. IP Privacy (commit 4):
- Expected: `[P2P] Received peer data from genesis_node_005`
- Was: `[P2P] Received peer data from 164.68.108.218:8001`
2. Consensus Reveals (commit 4):
- Expected: `reveals_received: 5/5`
- Was: `reveals_received: 2/3`
3. Reward System (commit 3):
- Verify ping recording for Genesis/Full/Super nodes
- Verify successful reward claims via API
Current Status:
Network: Finally operational!
Microblocks: 2900+ (1 block/second)
Macroblocks: 32+ (every 90 blocks)
Synchronization: 100% (all 5 Genesis nodes)
Dilithium Signatures: 100% successful verification
API Endpoints: All 56 functional
Awaiting Deployment for Final Verification:
- IP privacy in logs
- Improved consensus (5/5 reveals)
- Reward system for Genesis/Full/Super nodes
4 commits, 10 files changed, +325/-161 lines
github.com/AIQnetLab/QNet…