----------------------
CPU Usage: X%
Memory Usage: X%
----------------------
Local: PyBLOCK
Node: XxXxXxX
Block: XxXxXxX
Version: X.x.X
A. PyBLOCK
B. Bitcoin
L. Lightning
P. Platforms
S. Settings
X. Donate
Q. Exit
Select option:
# PyBLOCK
βπͺπΉππβπ ππ₯π€ π πΉππ₯ππ ππ π»ππ€πππ ππ£π π¨ππ₯π βπͺπ‘πππ£π‘π¦ππ πππ€π₯πππ₯ππ.
- This will fully work on a Node that has Bitcoin Core and LND installed.
- We fully tested and worked perfect on [MyNodeBTC](https://twitter.com/_PyBlock_/status/1402516068959199233)
- We fully tested and worked perfect on [RaspiBlitz](https://twitter.com/_PyBlock_/status/1405788110458441728)
- We fully tested and worked perfect on [BitcoinMachines](https://twitter.com/_PyBlock_/status/1365757861217861632)
- We fully tested and worked perfect on [Umbrel](https://twitter.com/_PyBlock_/status/1405574038320201733)
# First Start
- You will need to find the path of the files tls.cert and admin.macaroon to do the REST connection to have access to LND.
- [Poetry](https://python-poetry.org/) is needed to ensure every user has the same python dependencies installed.
### From LOCAL Node
Open the Terminal.
-- Easy mode:
* a@A:~> sudo apt install hexyl
* a@A:~> sudo apt install jq
* a@A:~> pip3 install pybitblock
* a@A:~> pyblock
-- Manual mode:
* a@A:~> sudo apt install hexyl
* a@A:~> sudo apt install jq
* a@A:~> git clone https://github.com/curly60e/pyblock.git
* a@A:~> cd pyblock
* a@A:~> pip3 install -r requirements.txt
* a@A:~> cd pybitblock
* a@A:~> python3 PyBlock.py
-- Poetry mode:
* a@A:~> sudo apt install hexyl
* a@A:~> sudo apt install jq
* a@A:~> pip3 install poetry
* a@A:~> git clone https://github.com/curly60e/pyblock.git
* a@A:~> cd pyblock
* a@A:~> poetry install
* a@A:~> cd pybitblock
* a@A:~> poetry run python3 PyBlock.py
-- Upgrade:
* a@A:~> pip3 install pybitblock -U
* a@A:~> pyblock
* Or
* a@A:~> cd pyblock
* a@A:~> git pull origin master
* a@A:~> cd pybitblock
* a@A:~> python3 PyBlock.py
- This is how we continue.
- It will ask you for the IP:PORT (REST PORT) in this case use: localhost instead of the IP.
- Then it will ask you for the path to the tls.cert.
- Then it will ask you for the path to the admin.macaroon.
- Then it will ask you for the path to bitcoin-cli or if you have already installed just put: bitcoin-cli.
- And you are in.
### From REMOTE Computer
* You will need to have tls.cert and admin.macaroon already downloaded from your LND node.
* [Poetry](https://python-poetry.org/) is needed to ensure every user has the same python dependencies installed.
Open the Terminal.
-- Easy mode:
* a@A:~> sudo apt install hexyl
* a@A:~> sudo apt install jq
* a@A:~> pip3 install pybitblock
* a@A:~> pyblock
-- Manual mode:
* a@A:~> sudo apt install hexyl
* a@A:~> sudo apt install jq
* a@A:~> git clone https://github.com/curly60e/pyblock.git
* a@A:~> cd pyblock
* a@A:~> pip3 install -r requirements.txt
* a@A:~> cd pybitblock
* a@A:~> python3 PyBlock.py
-- Poetry mode:
* a@A:~> sudo apt install hexyl
* a@A:~> sudo apt install jq
* a@A:~> pip3 install poetry
* a@A:~> git clone https://github.com/curly60e/pyblock.git
* a@A:~> cd pyblock
* a@A:~> poetry install
* a@A:~> cd pybitblock
* a@A:~> poetry run python3 PyBlock.py
- This is how we continue.
- It will ask you for the IP:PORT (REST PORT).
- Then it will ask you for the path to the tls.cert.
- Then it will ask you for the path to the admin.macaroon.
- Then it will ask you for the path to bitcoin-cli or if you have already installed just put: bitcoin-cli.
- And you are in.
## Dependencies
- Install Curl on Debian based type:
- sudo apt install curl
## How to execute
- python3 PyBlock.py
## OracleVision Integration (BIP-110 & Mempool Analysis)
PyBLOCK includes a lightweight integration with [OracleVision](https://github.com/MarcanoFilms/oraculovision) for sovereign node operators running **Bitcoin Knots** with **BIP-110** policy enabled. Philosophy: **Don't Trust, Verify** β all analysis runs locally against your node via `bitcoin-cli`.
### Built-in features (Bitcoin β OV. OracleVision)
| Option | What it does |
|--------|----------------|
| **BIP-110 Block Scanner** | Scans recent blocks for consensus violations, spam score (0β100), and status (CLEAN / SUSPICIOUS / VIOLATION) |
| **Mempool Glass** | Categorizes your node's current `getblocktemplate` into economic, consolidation, coinjoin, and spam buckets |
| **Block Detail View** | Deep-dive into a single block: miner tag, witness %, violation flags, problematic transactions β with drill-down to Transaction Inspector |
| **Transaction & Address Inspector** | Inspect any txid (flow, fees, BIP-110 flags, spam signals) or address (UTXO balance, mempool exposure) β verified locally |
| **Launch Full OracleVision** | Opens the standalone Textual TUI if installed (DATUM mining, Ocean panels, live charts, multi-screen navigation) |
### Configuration
Copy the example config and adjust for your node:
```bash
cp pybitblock/config/oraclevision.conf.example pybitblock/config/oraclevision.conf
```
| Setting | Default | Description |
|---------|---------|-------------|
| `block_scan_count` | 10 | How many recent blocks to scan |
| `spam_score_threshold` | 45 | Score above this marks a block as VIOLATION |
| `bitcoin_datadir` | `""` | Optional `-datadir` for bitcoin-cli |
| `oraculovision_command` | `oraculovision` | Command to launch the full TUI |
| `max_vin_lookups` | 4 | Parent transaction RPC lookups to resolve input prevouts in Transaction Inspector |
| `scantxoutset_timeout` | 90 | Seconds allowed for UTXO scan in Address Inspector |
| `mempool_scan_limit` | 30 | Max mempool txs scanned for address mempool exposure |
| `detectors_enabled` | `["builtin"]` | Active BIP-110/spam detector plugins |
Environment overrides: `ORACULOVISION_BLOCK_SCAN_COUNT`, `ORACULOVISION_SPAM_THRESHOLD`, `ORACULOVISION_COMMAND`, `BITCOIN_DATADIR`.
### Full OracleVision TUI (recommended for power users)
The built-in tools cover the essentials. For the complete dashboard β DATUM solo mining panel, Ocean account stats, live mempool charts, and navigable BIP-110 tables β install the standalone project:
```bash
git clone https://github.com/MarcanoFilms/oraculovision.git
cd oraculovision
python -m venv .venv
source .venv/bin/activate
pip install -e .
oraculovision
```
From PyBLOCK, use **Bitcoin β OV. OracleVision β E. Launch Full OracleVision TUI**.
### Extending detection logic
The analysis engine lives in `pybitblock/oraclevision/` and is intentionally modular:
- `script_parser.py` β BIP-110 size limits and witness/script parsing
- `detectors/` β pluggable per-transaction rule checks (register new detectors via config)
- `bip110.py` β per-block aggregation and spam scoring
- `spam_score.py` β heuristic scoring (community-tunable weights)
- `mempool_compose.py` β block template categorization
- `tx_flow.py` / `tx_service.py` β transaction flow parsing and deep inspection
- `address_service.py` β UTXO balance and mempool exposure for addresses
Pull requests that improve heuristics or add new violation rules are welcome. Add detectors in `oraclevision/detectors/` and keep UI code in `oraclevision/ui.py` separate from detection logic.
## Running PyBLOCK using Docker
First check out or [unzip](https://github.com/curly60e/pyblock/archive/refs/heads/master.zip) the code to a directory, cd to that directory, and from there type the following commands:
(Make sure Docker desktop is running in the background "sudo service docker start".)
- docker build -t pyblock .
Run it using
- docker run -p 6969:6969 -it pyblock
Then open http://localhost:6969 with a browser, you will get the PyBLOCK Docker App.
Credentials: "Running:PyBLOCK" ("User:Pass")
### Created by
[@Curly60e.](https://twitter.com/curly60e) β‘οΈ holycherry05@phoenixwallet.me
npub1a78zk8cnczxjudg888f9t3va29vxhevvhdkdqvwe7zk70qx488zsc8573s
### Pentester and contribution by
[@SN.](https://twitter.com/__B__T__C__) β‘οΈ sn@getalby.com
npub1h0mlskkqsyct98tldn744wa5j783h8du779c7zdjay29uyzwev4qxx9sjn
### Contributor
[@Danvergara.](https://twitter.com/__danvergara__)
### Tools by
[@SamouraiDev,](https://twitter.com/SamouraiDev)
[@Korynewton,](https://twitter.com/kn3wt)
[@Tippin_Me,](https://twitter.com/tippin_me)
[@TallyCoinApp,](https://twitter.com/tallycoinapp)
[@DJBooth007,](https://twitter.com/djbooth007)
[@MemPool,](https://twitter.com/mempool)
[@CoinGecko,](https://twitter.com/coingecko)
[@Igor_Chubin,](https://twitter.com/igor_chubin)
[@Shesek,](https://twitter.com/shesek)
[@LNBits,](https://twitter.com/lnbits)
[@LNPAYco,](https://twitter.com/LNPAYco)
[@OpenNodeCo,](https://twitter.com/OpenNodeCo)
[@BlockStream,](https://twitter.com/Blockstream)
[@Gwidion,](https://twitter.com/gwidion)
[@AlphaaZeta,](https://twitter.com/alphaazeta)
[@Hampus_S,](https://twitter.com/hampus_s)
[@Mutatrum,](https://twitter.com/mutatrum)
[@RoboHash,](https://twitter.com/Robohash)
[@C_Otto83,](https://twitter.com/c_otto83)
[@BashCo_,](https://twitter.com/BashCo_)
[@JamesOb,](https://twitter.com/jamesob)
[@BenTheCarman,](https://twitter.com/benthecarman)
[@Whale_Alert,](https://twitter.com/whale_alert)
[@BitcoinExplorer,](https://twitter.com/BitcoinExplorer)
[@JanoSide,](https://twitter.com/janoside)
[@LNstats,](https://twitter.com/LNstats)
[@Slush_Pool,](https://twitter.com/slush_pool)
[@Braiins_Systems,](https://twitter.com/braiins_systems)
[@CKPoolDev,](https://twitter.com/ckpooldev)
[@KanoBTC,](https://twitter.com/kanobtc)
[@JohnCantrell97,](https://twitter.com/JohnCantrell97)
[@JoostJgr,](https://twitter.com/joostjgr)
[@PRguitarman,](https://twitter.com/PRguitarman)
[@NyanCat,](https://twitter.com/nyannyancat)
[@Mononautical,](https://twitter.com/mononautical)
[@Janna3257,](https://twitter.com/Janna3257)
[@Cercatrova_21,](https://twitter.com/cercatrova_21)
[@ChaumDotCom,](https://twitter.com/chaumdotcom)
[@0xB10C,](https://twitter.com/0xB10C)
[@BitRawr,](https://twitter.com/bitrawr)
[@Vishalxl,](https://twitter.com/vishalxl)
[@Odudex,](https://twitter.com/odudex)
[@UTXOracle,](https://twitter.com/UTXOracle)
[@Acinq,](https://twitter.com/acinq_co)
[@PhoenixWallet,](https://twitter.com/PhoenixWallet)
[@ForemanMining,](https://twitter.com/foremanmining)
[@Ocean_Mining,](https://twitter.com/Ocean_Mining)
[@LuxorTechnology,](https://twitter.com/LuxorTechnology)
[@Skot9000,](https://twitter.com/Skot9000)
[@PyPi,](https://pypi.org/project/pybitblock/)
...
## PyBLΓCK SOLO MINING POOL
Are you a Bitcoin Miner?
stratum+tcp://pool110.pyblock.xyz:4445
Note that if you do not find a Block, you get no reward at all with Solo Mining.
0.4 % goes to PyBLΓCK to operate the Pool.
## [Click here for more info](https://t.me/pyblockpool)
## [PyBLOCK POOL WEBSITE](https://pyblock.xyz:8443)
## PyBLOCK BOLT12
## SUPPORT PyBLΓCK.
Address:
β1Lovez8UtyFvr35wxDJeC23GryPR3q4cMoβ
Message:
βThe 1Love address itβs managed by PyBLΓCK Crew.β
Signature:
βG36i/w72LGkUFSrA+/IuaCeRvXUjWIhgMw3FkNucXA3GQRn5RZPFVQ3nJscq1nRjtyK4JoMVG/pM1wQfqS+2+TQ=β
Other options:
Bolt12: β‘οΈ holycherry05@phoenixwallet.me β‘οΈ
Bitcoin Address: bc1prwjajvvax2rkm2wzelpfzzc2ncywht69pswnurhzdfj9qujhyxzsqpd3eg
Samourai Wallet Paynym: PM8TJhNTTq3YVocXuPtLjKx7pKkdUxqwTerWJ2j2a7dNitgyMmBPN6gK61yE17N2vgvQvKYokXktt6D6GZFTmocvDJhaUJfHt7ehEMmthjsT3NQHseFM
Monero: 42jtb4dAfm6BQ8h6x56qGyAMMHVXGRwRMTSb2LwsBg1jVqD4TxfpD1pTK56tkrTMGhEKipZdDHfJrB1g8iQfvSyC7gZ9M8M
PyBLΓCK [Nostr Pulic Channel](https://anigma.io/?channel=ddadf6518d23d5e82a112b7965807ea2adfb22ec353a124fbf5f342e8403fdcb)