✅ 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
145 lines
3.1 KiB
Markdown
145 lines
3.1 KiB
Markdown
# 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:
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
cd apps/blockchain-node
|
|
pip install -e .
|
|
```
|
|
|
|
## Running
|
|
|
|
### Development
|
|
```bash
|
|
uvicorn aitbc_chain.app:app --host 127.0.0.1 --port 8080 --reload
|
|
```
|
|
|
|
### Production
|
|
```bash
|
|
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
|
|
```ini
|
|
[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
|
|
```bash
|
|
curl http://localhost:8080/health
|
|
```
|
|
|
|
### Key Metrics
|
|
- `poa_proposer_running` — 1 if proposer is active
|
|
- `chain_head_height` — Current block height
|
|
- `mempool_size` — Pending transactions
|
|
- `circuit_breaker_state` — 0=closed, 1=open
|
|
- `rpc_requests_total` — Total RPC requests
|
|
- `rpc_rate_limited_total` — Rate-limited requests
|
|
|
|
### Alerting Rules (Prometheus)
|
|
```yaml
|
|
- 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_running` metric, review logs for DB errors
|
|
- **Rate limiting**: Increase `max_requests` in middleware or add IP allowlist
|
|
- **DB locked**: Switch to `MEMPOOL_BACKEND=database` for separate mempool DB
|
|
- **Sync failures**: Check `TRUSTED_PROPOSERS` config, verify peer connectivity
|