Smart Mathematical Analysis & Reverse-Engineering — measured verdict
low-resource · zero GPU
Dataset: BTC-Solved-Unsolved.txt — all 160 Bitcoin Challenge
puzzles. Method: steps 1–4 below (gap/ratio profiling, bit-level &
masking distribution, predictive model fit, actionable strategy) plus the five advanced
non-linear/structural checks in their own section further down (bit-position bias matrix,
spectral periodicity, cross-key algebraic relations, nibble/byte entropy, Benford's Law),
executed in your browser at load time from btc-puzzles.json, and
reproduced independently by math_check.py (pure standard library).
No figure on this page is typed in by hand.
Dataset & integrity
parse → verify—
Every solved row is re-derived end-to-end: private key → compressed public key → HASH160 →
P2PKH address, and must equal the address published with the puzzle
(—). A single mistyped hex digit would break that link, so
the statistical work below runs on provably intact keys. Puzzle ranges are
[2^(n-1), 2^n − 1] where n = bit length of the key.
Step 1 — Mathematical gap & ratio profiling
offsets · linear · recurrenceall solved keys sorted by puzzle number and private-key value
| pair | gap = k[i+1] − k[i] | ratio k[i+1] / k[i] |
|---|
normalised position inside each range p = (k − 2^(n−1)) / 2^(n−1)
—
Step 2 — Bit-level & masking distribution
density · padding · masks—
Step 3 — Predictive formula derivation
OLS · residuals · out-of-sample
The deliverable script performs all four steps from a terminal — no GPU, no network, no
dependencies — and prints the honest sub-space for any unsolved target. It prefers the raw
BTC-Solved-Unsolved.txt when present and falls back to btc-puzzles.json.
loading script…
Step 4 — Actionable lightweight strategy
zero GPUwhat zero-GPU analysis can and cannot do
- —
Advanced Non-Linear Forensic & Structural Analysis for Bitcoin Challenge Puzzles
5 checks · solved keys only
Steps 1–4 use linear and geometric summaries; these five checks attack the
83 solved private keys non-linearly and structurally — bit-position bias
matrix, spectral / multi-lag periodicity, cross-key algebraic relations, nibble & byte
entropy, and Benford's Law. Each check is computed live in your browser
from btc-puzzles.json and mirrored line-for-line by
advanced() in math_check.py. Thresholds are family-wise
α = 0.01 (Bonferroni across scanned candidates); hit counts are judged against their
exact null expectation with a Poisson tail. No figure below is precomputed.
check 1 — bit-position bias matrix (positional probability)
relative bit-probability matrix — 64 buckets over r = p/(n−1)
| bucket | r range | bits | ones | freq of 1 | z vs 0.5 |
|---|
absolute free-bit positions with ≥ 40 keys — static pinning scan
| bit p | keys | ones | freq | z |
|---|
—
check 2 — spectral & frequency domain (value series u = k/2^n − 0.5 · concatenated bit stream)
value-series multi-lag autocorrelation — lags 1…60
| lag | pairs n_L | r | crit | flag |
|---|
Fisher periodogram — top 5 of 41 ordinates
| frequency k | period n/k | power / mean |
|---|
bit-stream autocorrelation — max |r| per 128-lag block
| lags | max |r| | at lag | crit | flag |
|---|
—
check 3 — cross-key algebraic multipliers & relations (all pairs)
—
check 4 — suffix, nibble & byte entropy profiling (LSB-first)
nibble positions j = 0 (least significant) … 33 — keys contributing, entropy, χ²(15)
| j | keys | entropy (bits) | χ²(15) | p |
|---|
byte positions b = 0 (least significant) … 31 — zero share and entropy
| byte b | zero in | entropy (bits) |
|---|
—
check 5 — Benford's law compliance (decimal & hexadecimal)
decimal leading digit vs Benford log10(1 + 1/d)
| digit | observed | expected | deviation |
|---|
hex leading digit vs Benford log16(1 + 1/d)
| digit | observed | expected | deviation |
|---|
—
Low-Level Bitwise, Algebraic, and Residue Forensics for Bitcoin Challenge Puzzles
5 checks · solved keys only
The checks above summarise keys as numbers; these five examine their bit and
digit structure directly — consecutive-key XOR gaps, greatest-common-divisor
profiling of the gaps, the full Hamming-weight (popcount) distribution against
B(n, ½), base-10 conversion artifacts, and a forbidden-residue matrix across
the small primes 3…31. Every figure is computed live in your browser
from btc-puzzles.json and mirrored line-for-line by
lowlevel() in math_check.py. Thresholds are family-wise
α = 0.01 with exact null expectations (Bonferroni across scanned candidates, Poisson
tails for hit and empty-class counts). Nothing below is precomputed.
check 6 — bitwise XOR gap analysis (Ki+1 ⊕ Ki)
consecutive XOR gaps — popcount against the exact per-gap expectation
| gap i | n → n+1 | bits | popcount | expected | z | flag |
|---|
LFSR signature scan — Berlekamp-Massey linear complexity per XOR bit plane
| bit plane p | linear complexity | LC / n | flag |
|---|
—
check 7 — GCD gap profiling (ΔK = Ki+1 − Ki)
divisibility of the gaps by m — observed vs GAPS/m
| m | gaps divisible | expected | z |
|---|
largest neighbouring-gap gcds
| gap pair | gcd | bits |
|---|
—
check 8 — full Hamming weight (popcount) distribution shape
relative popcount r = pop/n in ten bands — observed vs binomial expectation
| r band | keys | expected | deviation |
|---|
largest standardised popcounts
| bits n | popcount | z |
|---|
—
check 9 — decimal (base-10) conversion artifacts
last decimal digit — keys and consecutive gaps
| digit | keys | gaps |
|---|
base-10 pattern tests — observed vs null expectation
| test | observed | expected | p |
|---|
—
check 10 — forbidden residues across the small primes 3 … 31
residue matrix per modulus — χ², empty classes, and the lowest bucket
| mod M | χ²(M−1) | p | empty (null) | min count | lowest z |
|---|
—
Deep Cryptographic, Dynamic & Information-Theoretic Analysis for Bitcoin Challenge Puzzles
5 checks · solved keys onlyThe sections above treat the keys one at a time; these five ask whether the solved private keys as a set behave like independent uniform draws. Check 11 measures every pairwise Hamming distance H(Ki, Kj) and tests the whole matrix against resampled datasets. Check 12 runs the NIST SP 800-22 runs test and an LZ78 parse per key and on the aggregated 3850-bit stream, looking for the compressible repeated substrings a passphrase-derived (brainwallet) key would leave behind. Check 13 computes Shannon mutual information between bit positions — the quartile MSB-32 × LSB-32 block and all 1953 position pairs — to expose non-linear dependency. Check 14 pushes each key through the Collatz map and Rule 30 and compares trajectory length, odd-step share, parity runs and 1-density against simulations of the same bit length. Check 15 maps each key into the secp256k1 field as (K³ + 7) mod p and tests quadratic residuosity and the uniformity of the field image.
Every figure is computed live in your browser from
btc-puzzles.json and mirrored line-for-line by deep() in
math_check.py. Thresholds are family-wise α = 0.01 with Bonferroni across the
candidates each test scans, and every Monte-Carlo null uses one deterministic xorshift32
stream with identical seeds on both sides. Where a null is discrete and small-n the null is
enumerated exactly (LZ78 below 21 bits) or the inference is carried by an aggregate test
rather than a per-key z. Nothing below is precomputed.
check 11 — pairwise binary Hamming distance matrix (all N(N−1)/2 pairs)
most extreme pairs — Hamming distance against the binomial model
| n pair | Hamming H | expected | z | flag |
|---|
—
check 12 — NIST SP 800-22 runs & LZ78 Lempel-Ziv complexity
exact per-key LZ78 null — full enumeration of every n-bit key (n ≤ 20)
| n | phrases | null mean | z | exact P(X ≤ obs) |
|---|
—
check 13 — bit-segment Shannon mutual information (non-linear links)
ten strongest position pairs — bias-corrected MI and G²
| segment pair | keys | MI (bits) | G² | p | flag |
|---|
—
check 14 — Collatz trajectory & Rule-30 state-space dynamics
aggregate dynamics tests — the inference, since per-key Monte-Carlo z's are descriptive
| statistic | mean z | aggregate z | p | |z| > 2 | P(X ≥) |
|---|
—
check 15 — secp256k1 field geometry, (K³ + 7) mod p
field-geometry sub-tests — observed against the length-matched null
| test | observed | null / expected | p | flag |
|---|
—
Dataset · all 160 puzzles
sorted by n| # | bits | status | range 2^(n−1) .. 2^n − 1 (hex) | private key (hex) | position p | popcount |
|---|
—