docs: add fix summary for blockchain and matrix issues
This commit is contained in:
139
AITBC_FIXES_20260313.md
Normal file
139
AITBC_FIXES_20260313.md
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
# AITBC System Fixes - 2026-03-13
|
||||||
|
|
||||||
|
## Issues Resolved
|
||||||
|
|
||||||
|
### 1. Matrix Agent Not Responding
|
||||||
|
**Problem:** Agent read messages but didn't answer due to duplicate plugin loading.
|
||||||
|
|
||||||
|
**Root Cause:** Two copies of the Matrix plugin existed:
|
||||||
|
- System: `/usr/lib/node_modules/openclaw/extensions/matrix`
|
||||||
|
- Local: `/root/.openclaw/extensions/matrix`
|
||||||
|
|
||||||
|
**Fix:**
|
||||||
|
- Removed both copies
|
||||||
|
- Reinstalled via `openclaw plugins install @openclaw/matrix` (v2026.3.12) to local extensions
|
||||||
|
- Removed conflicting system copy
|
||||||
|
- Added `groupAllowFrom: ["*"]` to allow all senders in allowed rooms
|
||||||
|
- Added room settings: `autoReply: true`, `requireMention: false`
|
||||||
|
|
||||||
|
**Status:** ✅ Matrix channel working, no duplicate warnings.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. Blockchain Node - Missing `chain_id` Column
|
||||||
|
**Problem:** `Failed to propose block` error: `no such column: chain_id`.
|
||||||
|
|
||||||
|
**Root Cause:** The `mempool` table (in `data/mempool.db`) lacked the `chain_id` column, required by the database-backed mempool implementation. The `block` table already had it.
|
||||||
|
|
||||||
|
**Fix:**
|
||||||
|
```sql
|
||||||
|
ALTER TABLE mempool ADD COLUMN chain_id VARCHAR NOT NULL DEFAULT 'ait-devnet';
|
||||||
|
CREATE INDEX idx_mempool_chain_id ON mempool(chain_id);
|
||||||
|
```
|
||||||
|
|
||||||
|
**Status:** ✅ PoA proposer now runs without errors.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. Missing RPC Endpoint `/rpc/mempool`
|
||||||
|
**Problem:** `GET /rpc/mempool` returned 404 Not Found.
|
||||||
|
|
||||||
|
**Root Cause:** The endpoint was not implemented in the RPC router.
|
||||||
|
|
||||||
|
**Fix:** Added to `/opt/aitbc/apps/blockchain-node/src/aitbc_chain/rpc/router.py`:
|
||||||
|
|
||||||
|
```python
|
||||||
|
@router.get("/mempool", summary="Get mempool transactions")
|
||||||
|
async def get_mempool_endpoint(chain_id: str = "ait-devnet", limit: int = 100) -> Dict[str, Any]:
|
||||||
|
"""Get pending transactions in the mempool for a chain"""
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
**Status:** ✅ Endpoint now returns mempool data (empty if no transactions).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tools Installed
|
||||||
|
|
||||||
|
### System (apt)
|
||||||
|
- sqlite3, strace, ltrace, gdb, psmisc, lsof, net-tools, iproute2
|
||||||
|
- python3-venv, python3-pip, python3-dev, build-essential
|
||||||
|
- curl, wget, git, jq, htop, nmap
|
||||||
|
|
||||||
|
### Python (pip)
|
||||||
|
- ipdb, ptpython, ipython, debugpy
|
||||||
|
- memory_profiler, line_profiler
|
||||||
|
- py-spy, snakeviz
|
||||||
|
- rich, traceback-with-variables
|
||||||
|
- pytest, pytest-cov, pytest-xdist, hypothesis
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Git Repository
|
||||||
|
|
||||||
|
Workspace initialized at `/root/.openclaw/workspace`:
|
||||||
|
- Tracked config files: `openclaw.json`, identity files, SOUL.md, etc.
|
||||||
|
- `.gitignore` excludes sensitive data (credentials, sessions, logs)
|
||||||
|
- Remote: `git@gitea.bubuit.net:oib/aitbc.git` (SSH deploy key added)
|
||||||
|
|
||||||
|
**Note:** Application code (`/opt/aitbc/apps/...`) is separate and not in this repo.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Current Running Services
|
||||||
|
|
||||||
|
- OpenClaw Gateway (matrix + webchat)
|
||||||
|
- Blockchain Node (PoA proposer active)
|
||||||
|
- Uvicorn RPC server on port 8006
|
||||||
|
- Uvicorn app on port 8025
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Verification
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Matrix agent
|
||||||
|
openclaw channels status --probe
|
||||||
|
|
||||||
|
# Blockchain RPC
|
||||||
|
curl http://localhost:8006/rpc/head
|
||||||
|
curl "http://localhost:8006/rpc/mempool?chain_id=ait-devnet"
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
tail -f /var/log/aitbc_node.log
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Recommendations
|
||||||
|
|
||||||
|
### Security (Matrix Agent)
|
||||||
|
Currently `groupAllowFrom: ["*"]` with `requireMention: false` means **anyone** in allowed rooms can trigger arbitrary code execution (coding profile). Consider:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"channels": {
|
||||||
|
"matrix": {
|
||||||
|
"groupPolicy": "allowlist",
|
||||||
|
"groups": {
|
||||||
|
"!TuWuNlZVCNESaZmHiA:matrix.bubuit.net": {
|
||||||
|
"allow": true,
|
||||||
|
"autoReply": true,
|
||||||
|
"requireMention": true,
|
||||||
|
"users": ["@your_user_id:matrix.bubuit.net"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Database Migrations
|
||||||
|
Future schema changes should use Alembic migrations. The `mempool` table needs an Alembic migration to add `chain_id` for consistency.
|
||||||
|
|
||||||
|
### Monitoring
|
||||||
|
- Set up log rotation for `/var/log/aitbc_node.log`
|
||||||
|
- Monitor `/rpc/metrics` for Prometheus metrics
|
||||||
|
- Watch for repeated `Failed to propose block` errors
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**All critical issues resolved as of 2026-03-13 19:00 UTC.**
|
||||||
Reference in New Issue
Block a user