✅ v0.2 Release Preparation: - Update version to 0.2.0 in pyproject.toml - Create release build script for CLI binaries - Generate comprehensive release notes ✅ OpenClaw DAO Governance: - Implement complete on-chain voting system - Create DAO smart contract with Governor framework - Add comprehensive CLI commands for DAO operations - Support for multiple proposal types and voting mechanisms ✅ GPU Acceleration CI: - Complete GPU benchmark CI workflow - Comprehensive performance testing suite - Automated benchmark reports and comparison - GPU optimization monitoring and alerts ✅ Agent SDK Documentation: - Complete SDK documentation with examples - Computing agent and oracle agent examples - Comprehensive API reference and guides - Security best practices and deployment guides ✅ Production Security Audit: - Comprehensive security audit framework - Detailed security assessment (72.5/100 score) - Critical issues identification and remediation - Security roadmap and improvement plan ✅ Mobile Wallet & One-Click Miner: - Complete mobile wallet architecture design - One-click miner implementation plan - Cross-platform integration strategy - Security and user experience considerations ✅ Documentation Updates: - Add roadmap badge to README - Update project status and achievements - Comprehensive feature documentation - Production readiness indicators 🚀 Ready for v0.2.0 release with agent-first architecture
3.1 KiB
3.1 KiB
Blockchain Node Deployment Guide
Prerequisites
- Python 3.13.5+
- SQLite 3.35+
- 512 MB RAM minimum (1 GB recommended)
- 10 GB disk space
Configuration
All settings via environment variables or .env file:
# Core
CHAIN_ID=ait-devnet
DB_PATH=./data/chain.db
PROPOSER_ID=ait-devnet-proposer
BLOCK_TIME_SECONDS=2
# RPC
RPC_BIND_HOST=0.0.0.0
RPC_BIND_PORT=8080
# Block Production
MAX_BLOCK_SIZE_BYTES=1000000
MAX_TXS_PER_BLOCK=500
MIN_FEE=0
# Mempool
MEMPOOL_BACKEND=database # "memory" or "database"
MEMPOOL_MAX_SIZE=10000
# Circuit Breaker
CIRCUIT_BREAKER_THRESHOLD=5
CIRCUIT_BREAKER_TIMEOUT=30
# Sync
TRUSTED_PROPOSERS=proposer-a,proposer-b
MAX_REORG_DEPTH=10
SYNC_VALIDATE_SIGNATURES=true
# Gossip
GOSSIP_BACKEND=memory # "memory" or "broadcast"
GOSSIP_BROADCAST_URL= # Required for broadcast backend
Installation
cd apps/blockchain-node
pip install -e .
Running
Development
uvicorn aitbc_chain.app:app --host 127.0.0.1 --port 8080 --reload
Production
uvicorn aitbc_chain.app:app \
--host 0.0.0.0 \
--port 8080 \
--workers 1 \
--timeout-keep-alive 30 \
--access-log \
--log-level info
Note: Use --workers 1 because the PoA proposer must run as a single instance.
Systemd Service
[Unit]
Description=AITBC Blockchain Node
After=network.target
[Service]
Type=simple
User=aitbc
WorkingDirectory=/opt/aitbc/apps/blockchain-node
EnvironmentFile=/opt/aitbc/.env
ExecStart=/opt/aitbc/venv/bin/uvicorn aitbc_chain.app:app --host 0.0.0.0 --port 8080 --workers 1
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /health |
Health check |
| GET | /metrics |
Prometheus metrics |
| GET | /rpc/head |
Chain head |
| GET | /rpc/blocks/{height} |
Block by height |
| GET | /rpc/blocks |
Latest blocks |
| GET | /rpc/tx/{hash} |
Transaction by hash |
| POST | /rpc/sendTx |
Submit transaction |
| POST | /rpc/importBlock |
Import block from peer |
| GET | /rpc/syncStatus |
Sync status |
| POST | /rpc/admin/mintFaucet |
Mint devnet funds |
Monitoring
Health Check
curl http://localhost:8080/health
Key Metrics
poa_proposer_running— 1 if proposer is activechain_head_height— Current block heightmempool_size— Pending transactionscircuit_breaker_state— 0=closed, 1=openrpc_requests_total— Total RPC requestsrpc_rate_limited_total— Rate-limited requests
Alerting Rules (Prometheus)
- alert: ProposerDown
expr: poa_proposer_running == 0
for: 1m
- alert: CircuitBreakerOpen
expr: circuit_breaker_state == 1
for: 30s
- alert: HighErrorRate
expr: rate(rpc_server_errors_total[5m]) > 0.1
for: 2m
Troubleshooting
- Proposer not producing blocks: Check
poa_proposer_runningmetric, review logs for DB errors - Rate limiting: Increase
max_requestsin middleware or add IP allowlist - DB locked: Switch to
MEMPOOL_BACKEND=databasefor separate mempool DB - Sync failures: Check
TRUSTED_PROPOSERSconfig, verify peer connectivity