- Replace manual session creation with session_scope() in export_chain
- Convert query results to lists to avoid lazy loading issues after session close
- Remove await from session.execute calls in import_chain (use synchronous queries)
- Change force_sync back to async and restore await on import_chain call
- Remove 69 lines of duplicate import_block implementation at end of file
- Replace async session_scope with synchronous SQLAlchemy session in export_chain
- Remove await from session.execute calls in export_chain (use synchronous queries)
- Remove await from session.commit in import_chain
- Change force_sync from async to sync function
- Remove await from import_chain call in force_sync
- Add proper session cleanup with try/finally block in export_chain
- Add /export-chain endpoint to export full blockchain state (blocks, accounts, transactions) as JSON
- Add /import-chain endpoint to import chain state with backup and data clearing
- Add /force-sync endpoint to trigger reorg by fetching and importing peer's chain state
- Fix duplicate import_block implementation (remove redundant async with _import_lock block)
- Fix wallet adapter to use chain_id=ait-testnet instead of ait
- Wrap _compute_state_root in try/except to handle failures during genesis block creation
- Return None and log warning when state root computation fails (e.g., when accounts don't exist yet)
- Add error handling in init_db to ignore "already exists" errors when creating tables
- Improve robustness of database initialization for concurrent or repeated startup scenarios
- Add _compute_state_root helper function to compute Merkle Patricia Trie state root from account state
- Replace direct balance/nonce updates with state_transition.apply_transaction in block proposal
- Compute and set state_root for both regular blocks and genesis block
- Add state root verification in sync.py after importing blocks
- Add application-layer database validation with DatabaseOperationValidator class
- Bump version from 1.0 to 2.0 in OPENCLAW_AITBC_MASTERY_PLAN.md
- Add comprehensive workflow integration section with links to multi-node setup, operations, marketplace, and production workflows
- Document multi-chain runtime support (ait-testnet, ait-devnet) with shared database and chain-aware RPC
- Document hub/follower topology with island management and P2P network architecture
- Add new
- Change default P2P port from 7070 to 8001 in config and .env.example
- Add redis_url configuration option for hub persistence (default: redis://localhost:6379)
- Implement DNS-based hub registration/unregistration via HTTPS API endpoints
- Add Redis persistence for hub registrations with 1-hour TTL
- Add island join request/response protocol with member list and blockchain credentials
- Add GPU marketplace tracking (offers, bids, providers) in hub manager
- Add
- Add island configuration fields (island_id, island_name, is_hub, island_chain_id, hub_discovery_url, bridge_islands)
- Add NAT traversal configuration (STUN/TURN servers and credentials)
- Add DEFAULT_ISLAND_ID using UUID for new installations
- Extend PeerNode with public_address, public_port, island_id, island_chain_id, and is_hub fields
- Update DiscoveryMessage to include island metadata and public endpoint
- Add initial sleep before first proposal to prevent immediate block creation
- Return bool from _propose_block to indicate if block was actually proposed
- Wait for next slot only after successful proposal, use regular interval after skipped proposals
- Add 1s sleep after proposal errors to prevent tight error loops
- Add parent_hash, proposer, and state_root fields to /rpc/blocks-range response
- Fix transaction field mapping
- Add propose_only_if_mempool_not_empty config option (default: True) to skip block proposals when mempool is empty
- Add detailed logging for transaction processing in block proposals (sender/recipient validation, balance checks, duplicate detection)
- Check for existing transactions in database before adding to prevent duplicates
- Improve genesis block creation: check by height and hash, use "genesis" as proposer to avoid hash conflicts
- Add proper error handling and rollback for
- Mark Phase 2 as completed with all 11/11 atomic skills created
- Update skill counts: AITBC skills (6/6), OpenClaw skills (5/5)
- Move aitbc-node-coordinator and aitbc-analytics-analyzer from remaining to completed
- Update Phase 3 status from PLANNED to IN PROGRESS
- Add Gitea-based node synchronization documentation (replaces SCP)
- Clarify two-node architecture with same port (8006) on different I
- Added mempool initialization in main() using settings configuration
- Added support for database backend with mempool.db path resolution
- Added debug logging for mempool sync loop iteration with transaction count
- Reduced mempool sync interval from 2 seconds to 1 second for faster propagation
- Fixed indentation in mempool sync loop transaction iteration
- Added mempool sync loop to broadcast new transactions every 2 seconds
- Implemented transaction deduplication using seen_txs set with tx_hash tracking
- Added support for both InMemoryMempool and DatabaseMempool transaction retrieval
- Added new_transaction message handler for receiving P2P transactions
- Implemented gossip forwarding to propagate transactions across mesh network
- Added automatic mempool.add() for received
- Updated blockchain-node from v0.2.2 to v0.2.3
- Updated coordinator-api from 0.1.0 to v0.2.3
- Updated pool-hub from 0.1.0 to v0.2.3
- Updated wallet from 0.1.0 to v0.2.3
- Updated root project from 0.1.0 to v0.2.3
All services now match RELEASE_v0.2.3
Blockchain RPC Router Restoration:
✅ GET /head ENDPOINT: Restored from dummy to real implementation
- router.py: Query actual Block table for chain head instead of returning dummy data
- Added default chain_id from settings when not provided
- Added metrics tracking (total, success, not_found, duration)
- Returns real block data: height, hash, timestamp, tx_count
- Raises 404 when no blocks exist instead of returning zeros
🔧 Transaction Field Mapping:
• Change sender field from "sender" to "from" in transaction parsing
• Change recipient field from nested "payload.to" to direct "to"
• Change value field from nested "payload.amount" to direct "amount"
• Align transaction structure with RPC endpoint format
📁 Genesis File Path Resolution:
• Use standardized /var/lib/aitbc/data/{chain_id}/genesis.json path
• Remove
📋 Workflow Enhancement:
• Add cross-node consensus testing with debugging reports (step 6)
• Add smart contract testing and service integration (step 7)
• Add enhanced contract and service testing with API structure validation (step 8)
• Add service health monitoring with quick, continuous, and alert modes (step 9)
• Add contract deployment and service integration testing (step 10)
• Add contract security and vulnerability testing with reports (step 11)
• Add
🔧 Address Listing Enhancement:
• Add optional chain_id parameter to /addresses endpoint
• Use get_chain_id() helper for chain_id resolution with settings default
• Support multi-chain address queries with proper chain filtering
• Maintain backward compatibility with existing API consumers
🔧 Transaction Processing Fix:
• Change tx_data.get("payload", {}).get("value", 0) to use "amount" field
• Align with transaction payload structure used throughout the codebase
• Add inline comment explaining the field name correction
• Ensure proper value extraction during block proposal
🔧 Mempool Enhancement:
• Add get_pending_transactions() to InMemoryMempool class
• Add get_pending_transactions() to DatabaseMempool class
• Sort transactions by fee (highest first) and received time
• Support optional chain_id parameter with settings default
• Limit results with configurable limit parameter (default 100)
• Return transaction content only for RPC endpoint consumption
🔗 Mining Integration:
• Connect mining RPC endpoints to PoA proposer for real block production
• Initialize PoA proposer in app lifespan for mining integration
• Add mining status, start, stop, and stats endpoints with blockchain data
• Track actual block production rate and mining statistics
• Support 1-8 mining threads with proper validation
🔧 PoA Consensus Integration:
• Set global PoA proposer reference for mining operations
• Start
📋 Marketplace Endpoints:
• GET /marketplace/listings - List all active marketplace items
• POST /marketplace/create - Create new marketplace listing
• Demo listings for GPU and compute resources
• In-memory storage with active status filtering
🤖 AI Services Endpoints:
• POST /ai/submit - Submit AI jobs with payment
• GET /ai/stats - AI service statistics and revenue tracking
• Support for text, image, and training job types
- Remove duplicate /opt/aitbc/cli/requirements.txt file
- All CLI dependencies already covered in central requirements.txt
- Central requirements has newer versions of all CLI dependencies
- Update workflow documentation to reflect central venv usage
- Update environment configuration to use /etc/aitbc/.env
- Remove duplicate dependency management
This consolidates all Python dependencies in the central requirements.txt
and eliminates the need for separate CLI requirements management.
- Update pyproject.toml version from 0.1.0 to v0.2.2
- Update FastAPI app version in blockchain node
- Update mock coordinator API version
- Update RPC version in blockchain info endpoint
## 🚀 Central Virtual Environment Implementation
- Created central venv at /opt/aitbc/venv for all services
- Updated 34+ systemd services to use central python interpreter
- Fixed PYTHONPATH configurations for proper module imports
- Created aitbc-env wrapper script for environment management
## 📦 Requirements Management Overhaul
- Consolidated 8 separate requirements.txt files into central requirements.txt
- Added web3>=6.11.0 for blockchain functionality
- Created automated requirements migrator tool (scripts/requirements_migrator.py)
- Established modular requirements structure (requirements-modules/)
- Generated comprehensive migration reports and documentation
## 🔧 Service Configuration Fixes
- Fixed Adaptive Learning service domain imports (AgentStatus)
- Resolved logging conflicts in zk_proofs and adaptive_learning_health
- Created missing data modules (consumer_gpu_profiles.py)
- Updated CLI to version 0.2.2 with proper import handling
- Fixed infinite loop in CLI alias configuration
## 📡 Port Mapping and Service Updates
- Updated blockchain node port from 8545 to 8005
- Added Adaptive Learning service on port 8010
- Consolidated P2P/sync into blockchain-node service
- All 5 core services now operational and responding
## 📚 Documentation Enhancements
- Updated SYSTEMD_SERVICES.md for Debian root usage (no sudo)
- Added comprehensive VIRTUAL_ENVIRONMENT.md guide
- Created REQUIREMENTS_MERGE_SUMMARY.md with migration details
- Updated RUNTIME_DIRECTORIES.md for standard Linux paths
- Fixed service port mappings and dependencies
## 🛠️ CLI Improvements
- Fixed import errors and version display (0.2.2)
- Resolved infinite loop in bashrc alias
- Added proper error handling for missing command modules
- Created aitbc-cli wrapper for clean execution
## ✅ Operational Status
- 5/5 AITBC services running successfully
- All health checks passing
- Central virtual environment fully functional
- Requirements management streamlined
- Documentation accurate and up-to-date
## 🎯 Technical Achievements
- Eliminated 7 redundant requirements.txt files
- Reduced service startup failures from 34+ to 0
- Established modular dependency management
- Created reusable migration tooling
- Standardized Debian root deployment practices
This represents a complete infrastructure modernization with improved reliability,
maintainability, and operational efficiency.