Verificatore locale sequenziale Bitcoin ad alte prestazioni, progettato per scansionare chiavi private numeriche in modo estremamente veloce e sicuro utilizzando la blockchain locale indicizzata tramite Fulcrum.
Questo progetto è un'evoluzione ottimizzata del prototipo iniziale, focalizzato sulla velocità di scansione massimizzando l'uso dell'SSD locale e minimizzando l'overhead di rete ed I/O su disco.
Invece di aprire e chiudere una socket per ogni singola query, lo script apre una singola connessione TCP persistente con Fulcrum su 127.0.0.1:50001 all'avvio. La connessione viene tenuta attiva e riutilizzata continuamente, eliminando l'overhead dell'handshake TCP per ogni chiave. In caso di interruzioni di rete, lo script gestisce automaticamente la riconnessione.
Le richieste a Fulcrum vengono raggruppate ed inviate in blocchi da 100 chiavi alla volta (300 indirizzi totali). Fulcrum (grazie al database RocksDB posizionato su SSD) elabora le richieste parallelamente ed in modo asincrono, restituendo una singola risposta aggregata sulla socket. Questo riduce la latenza di rete locale a frazioni di millisecondo.
Per evitare rallentamenti dovuti alla latenza del disco e conflitti di blocco con la sincronizzazione in tempo reale di Dropbox, il file checkpoint.json viene salvato in modo differito:
- Ogni 2.000 chiavi scansionate.
- Oppure ogni 5 secondi di esecuzione.
- Eccezioni immediate: Il checkpoint viene salvato all'istante se viene premuto
Ctrl+C(SIGINT) o se viene rilevato un saldo attivo maggiore di zero.
Durante la scansione ad alta velocità viene verificato solo il saldo attivo (blockchain.scripthash.get_balance) dei tre indirizzi. La query sullo storico delle transazioni (blockchain.scripthash.get_history) viene eseguita una tantum solo sulla chiave specifica che rileva un saldo positivo, riducendo della metà il carico di query sul database di Fulcrum.
advanced_checker.py: Script di scansione ottimizzato in Python.checkpoint.json: File in cui viene registrato il progresso di scansione locale (escluso da Git via.gitignore).risultati.json: File contenente le chiavi WIF che possiedono un saldo attivo (escluso da Git via.gitignore).app.log: Registro operativo che mostra le statistiche di scansione e i warning di connessione (escluso da Git via.gitignore)..gitignore: Configurazione Git per escludere file locali operativi o sensibili.
- Python 3.10 o versioni successive.
- Un nodo Bitcoin Core in esecuzione locale (non potato, con
txindex=1). - Fulcrum in esecuzione ed allineato su
127.0.0.1:50001.
Il file bitcoin.conf (situato nella directory dei dati di Bitcoin Core, es. D:\Block) deve essere configurato con i seguenti parametri abilitati:
server=1
rpcallowip=127.0.0.1
rpcport=8332
txindex=1
prune=0
dbcache=12288L'indicizzatore locale deve interfacciarsi con Bitcoin Core via RPC ed esporre il server sulla porta 50001. Esempio di configurazione:
datadir = E:/FulcrumDB
bitcoind = 127.0.0.1:8332
rpccookie = D:/Block/.cookie
tcp = 127.0.0.1:50001
admin = 127.0.0.1:8000
stats = 127.0.0.1:8080
peering = false
announce = false
db_mem = 12288Esegui nel terminale:
pip install cryptography base58Prima di avviare lo scanner reale, esegui il test di derivazione crittografica per verificare che gli indirizzi (Legacy, Nested SegWit, Native SegWit) e il WIF vengano ricavati correttamente partendo dalla chiave 1:
python advanced_checker.py --test-derivationPer avviare la scansione:
python advanced_checker.pyA schermo e in app.log verranno visualizzate periodicamente le statistiche in tempo reale (velocità di scansione in chiavi/secondo e posizione corrente).
Se lo script trova una chiave con saldo maggiore di 0 satoshi:
- Registra tutti i dettagli, inclusa la chiave privata WIF spendibile, in
risultati.json. - Aggiorna istantaneamente il checkpoint su disco registrando la chiave trovata.
- Mostra un box di avviso di grandi dimensioni sulla console.
- Si arresta automaticamente ed attende il tuo intervento. Per riprendere la scansione da dove si era fermata, basta lanciare di nuovo il comando.