ac68b6aa88
Porta la stessa strategia algoritmica della versione CPU (batch EC in coordinate Jacobiane con Z1=1 + un'unica inversione di campo per batch via trucco di Montgomery) su GPU NVIDIA, dove però GMP non è disponibile: l'aritmetica a 256 bit mod il primo di secp256k1 è scritta a mano (limb a 64 bit + __int128, riduzione veloce sfruttando 2^256 ≡ 2^32+977 mod p), e ogni thread CUDA agisce come una lane di ricerca indipendente con la propria chiave privata iniziale casuale — esattamente come un thread CPU, ma migliaia in parallelo invece di una manciata. La moltiplicazione scalare su device è un semplice double-and-add (nessun wNAF/tabelle precalcolate come in libsecp256k1 lato host), il principale margine di ottimizzazione futura. Il matching usa un Bloom filter + ricerca binaria su un array di target ordinato, entrambi caricati una volta sola in memoria device. Aggiunge i target `make gpu` / `make gpu-info` al Makefile (NVCC_ARCH configurabile, default sm_61/Pascal) e documenta in README che su WSL2 il driver NVIDIA arriva dall'host Windows: dentro WSL serve installare solo il CUDA Toolkit, mai un driver. Verificato: aritmetica di campo, moltiplicazione scalare e batch add confrontati bit-per-bit con secp256k1_ec_pubkey_create (nessuna discrepanza su ~30 valori di test); run end-to-end con privkey nota trova la chiave corretta; nessun falso positivo su chiavi pubbliche valide casuali. Su una Quadro P4000 (Pascal): ~15M keys/sec, contro ~3.5-4M keys/sec della CPU con 11 thread nello stesso ambiente.
73 lines
1.0 KiB
Plaintext
73 lines
1.0 KiB
Plaintext
# ===================================
|
|
# Python Scanner & Database
|
|
# ===================================
|
|
|
|
# Virtual Environment
|
|
.venv/
|
|
venv/
|
|
env/
|
|
ENV/
|
|
|
|
# Python
|
|
__pycache__/
|
|
*.py[cod]
|
|
*.pyc
|
|
*.pyo
|
|
*.pyd
|
|
*$py.class
|
|
.Python
|
|
*.egg-info/
|
|
dist/
|
|
build/
|
|
|
|
*.html
|
|
|
|
# ===================================
|
|
# C++ Bruteforce
|
|
# ===================================
|
|
|
|
# Eseguibili compilati
|
|
bruteforce/p2pk_bruteforce
|
|
bruteforce/p2pk_bruteforce_debug
|
|
bruteforce/p2pk_bruteforce_gpu
|
|
|
|
# File oggetto e compilazione
|
|
*.o
|
|
*.a
|
|
*.so
|
|
*.gcda
|
|
*.gcno
|
|
*.gch
|
|
|
|
# File generati dal bruteforce
|
|
bruteforce/found_keys.txt
|
|
bruteforce/progress.csv
|
|
bruteforce/target_keys.txt
|
|
|
|
# libsecp256k1 compilata localmente
|
|
bruteforce/secp256k1_build/
|
|
bruteforce/secp256k1/
|
|
|
|
# ===================================
|
|
# IDE & Editor
|
|
# ===================================
|
|
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
*.swo
|
|
*~
|
|
|
|
# ===================================
|
|
# OS
|
|
# ===================================
|
|
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# ===================================
|
|
# Logs & Temp
|
|
# ===================================
|
|
|
|
*.log
|
|
*.tmp |