mirror of
https://github.com/curly60e/pyblock.git
synced 2026-08-19 13:18:13 +02:00
78 lines
3.6 KiB
Markdown
78 lines
3.6 KiB
Markdown
|
|
# Add OracleVision integration: BIP-110 spam detection and block template analysis
|
|||
|
|
|
|||
|
|
## Motivation
|
|||
|
|
|
|||
|
|
Sovereign Bitcoin node operators — especially those running **Bitcoin Knots** with **BIP-110** (`reduced_data`) policy — need local visibility into L1 spam and consensus-rule violations. Third-party block explorers and dashboards require trust. PyBLOCK already talks to `bitcoin-cli`; this PR adds **Don't Trust, Verify** tooling so operators can audit blocks and mempool composition from their own node.
|
|||
|
|
|
|||
|
|
## What was added
|
|||
|
|
|
|||
|
|
### New module: `pybitblock/oraclevision/`
|
|||
|
|
|
|||
|
|
A self-contained, zero-extra-dependency analysis engine ported from [OracleVision](https://github.com/MarcanoFilms/oraculovision):
|
|||
|
|
|
|||
|
|
| File | Purpose |
|
|||
|
|
|------|---------|
|
|||
|
|
| `script_parser.py` | BIP-110 size limits, witness/script parsing, inscription & token heuristics |
|
|||
|
|
| `bip110.py` | Per-transaction and per-block BIP-110 rule checks |
|
|||
|
|
| `spam_score.py` | 0–100 spam score and CLEAN/SUSPICIOUS/VIOLATION classification |
|
|||
|
|
| `mempool_compose.py` | `getblocktemplate` transaction categorization (economic / consolidation / coinjoin / spam) |
|
|||
|
|
| `bitcoin_cli.py` | Thin `bitcoin-cli` wrapper using PyBLOCK's existing config |
|
|||
|
|
| `config.py` | Settings loader (`config/oraclevision.conf`) |
|
|||
|
|
| `ui.py` | Terminal menus matching PyBLOCK's Rich/cyberpunk aesthetic |
|
|||
|
|
|
|||
|
|
### Menu integration
|
|||
|
|
|
|||
|
|
- **Bitcoin → OV. OracleVision** in the MONITORING section
|
|||
|
|
- Submenu:
|
|||
|
|
- **A.** BIP-110 Block Scanner (recent blocks table)
|
|||
|
|
- **B.** Mempool Glass (`getblocktemplate` categorization)
|
|||
|
|
- **C.** Block Detail View (height or hash)
|
|||
|
|
- **D.** Launch Full OracleVision TUI (if installed)
|
|||
|
|
|
|||
|
|
### Configuration
|
|||
|
|
|
|||
|
|
- `pybitblock/config/oraclevision.conf.example` — scan count, spam threshold, datadir, TUI command
|
|||
|
|
- Environment overrides for Docker/Umbrel deployments
|
|||
|
|
|
|||
|
|
### Documentation
|
|||
|
|
|
|||
|
|
- README section explaining built-in vs. full OracleVision, configuration, and how to extend detection logic
|
|||
|
|
|
|||
|
|
## Relationship to OracleVision
|
|||
|
|
|
|||
|
|
This PR does **not** port the full Textual dashboard into PyBLOCK. Instead:
|
|||
|
|
|
|||
|
|
1. **Built-in tools** give immediate value inside PyBLOCK's existing menu-driven workflow
|
|||
|
|
2. **Launch option** promotes the standalone [OracleVision](https://github.com/MarcanoFilms/oraculovision) project for operators who want DATUM mining panels, Ocean account stats, live charts, and the full rich TUI
|
|||
|
|
|
|||
|
|
The detection logic is shared in spirit with OracleVision and designed to be maintained in one place (`pybitblock/oraclevision/`) so the community can improve heuristics via PRs without touching UI code.
|
|||
|
|
|
|||
|
|
## Design principles
|
|||
|
|
|
|||
|
|
- **Low dependencies** — uses only `bitcoin-cli` (same as PyBLOCK) and existing Rich UI
|
|||
|
|
- **Modular** — detection rules separated from terminal presentation
|
|||
|
|
- **Community-extensible** — documented module boundaries for new BIP-110 checks and spam heuristics
|
|||
|
|
- **Knots + BIP-110 aligned** — version bit 4 signaling, reduced_data rule checks, local verification framing
|
|||
|
|
|
|||
|
|
## Testing notes
|
|||
|
|
|
|||
|
|
1. Requires a synced Knots/Core node with RPC enabled
|
|||
|
|
2. `getblocktemplate` needs mining RPC capability (standard on most node setups)
|
|||
|
|
3. Block scanner needs `getblock` verbosity 2 (decoded transactions)
|
|||
|
|
4. Full TUI launch requires separate OracleVision installation
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Quick import check
|
|||
|
|
cd pybitblock && python3 -c "from oraclevision.bip110 import analyze_block; print('ok')"
|
|||
|
|
|
|||
|
|
# Manual test path
|
|||
|
|
python3 PyBlock.py
|
|||
|
|
# → B. Bitcoin → OV. OracleVision → A/B/C
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Files changed
|
|||
|
|
|
|||
|
|
- `pybitblock/oraclevision/` (new package, 7 files)
|
|||
|
|
- `pybitblock/config/oraclevision.conf.example` (new)
|
|||
|
|
- `pybitblock/PyBlock.py` (menu entry + handler)
|
|||
|
|
- `README.md` (OracleVision section)
|