Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
mcdouglasx
on 20/04/2025, 20:32:15 UTC
That's exactly what you described. Leaving "less likely" ranges for later because you think it's less likely to be there.
The script that you sent shows that it does not change anything, both methods are equally fast on average.


Okay, I'll return to my field again. I hope this time it makes you happy.


Code:
const { performance } = require("perf_hooks");
const crypto = require("crypto");

const TOTAL_SIZE = 100_000, RANGE_SIZE = 5_000, PREFIX_LENGTH = 3, SIMULATIONS = 200;

console.log(`
=== Configuration ===
Total numbers: ${TOTAL_SIZE.toLocaleString()}
Block size: ${RANGE_SIZE.toLocaleString()}
Prefix: ${PREFIX_LENGTH} characters (16^${PREFIX_LENGTH} combinations)
Simulations: ${SIMULATIONS}
`);

const generateH160 = (data) => crypto.createHash("ripemd160").update(data.toString()).digest("hex");

const shuffledRange = (n) => {
  const arr = [...Array(n + 1).keys()];
  for (let i = arr.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [arr[i], arr[j]] = [arr[j], arr[i]];
  }
  return arr;
};

const sequentialSearch = (size, block, targetHash, order) => {
  let checks = 0;
  for (const idx of order) {
    for (let num = idx * block; num < (idx + 1) * block; num++) {
      checks++;
      if (generateH160(num) === targetHash) return { checks, found: true };
    }
  }
  return { checks, found: false };
};

const preciseSearch = (size, block, prefix, targetHash, order) => {
  const prefixHash = targetHash.slice(0, prefix);
  let checks = 0, ranges = [];
  for (const idx of order) {
    let start = idx * block, end = start + block, foundPrefix = false;
    for (let num = start; num < end; num++) {
      checks++;
      const hash = generateH160(num);
      if (hash === targetHash) return { checks, found: true };
      if (!foundPrefix && hash.startsWith(prefixHash)) {
        foundPrefix = true;
        ranges.push({ start: num + 1, end });
        break;
      }
    }
  }
  for (const { start, end } of ranges) {
    for (let num = end - 1; num >= start; num--) {
      checks++;
      if (generateH160(num) === targetHash) return { checks, found: true };
    }
  }
  return { checks, found: false };
};

const compareMethods = async () => {
  [...Array(5).keys()].forEach((i) => generateH160(i));

  const results = { sequential: { wins: 0 }, precise: { wins: 0 }, ties: 0 };

  for (let i = 0; i < SIMULATIONS; i++) {
    const blocks = Math.floor(TOTAL_SIZE / RANGE_SIZE), order = shuffledRange(blocks - 1);
    const targetNum = Math.floor(Math.random() * TOTAL_SIZE), targetHash = generateH160(targetNum);

    const seqResult = sequentialSearch(TOTAL_SIZE, RANGE_SIZE, targetHash, order);
    const preResult = preciseSearch(TOTAL_SIZE, RANGE_SIZE, PREFIX_LENGTH, targetHash, order);

    if (seqResult.checks < preResult.checks) {
      results.sequential.wins++;
    } else if (seqResult.checks > preResult.checks) {
      results.precise.wins++;
    } else {
      results.ties++;
    }

    console.log(`Simulation ${i + 1}: Sequential = ${seqResult.checks} | Prefix = ${preResult.checks}`);
  }

  console.log(`
=== FINAL RESULTS ===
Wins:
Sequential: ${results.sequential.wins}
Prefix: ${results.precise.wins}
Ties: ${results.ties}
`);
};

compareMethods();

test

Code:

mcdouglasxx@DESKTOP-xxxxx:/mnt/d/scripts/js$ node script2.js

=== Configuration ===
Total numbers: 100,000
Block size: 5,000
Prefix: 3 characters (16^3 combinations)
Simulations: 100

Simulation 1: Sequential = 75004 | Prefix = 34473
Simulation 2: Sequential = 74710 | Prefix = 36860
Simulation 3: Sequential = 63542 | Prefix = 85621
Simulation 4: Sequential = 37020 | Prefix = 81067
Simulation 5: Sequential = 44938 | Prefix = 68596
Simulation 6: Sequential = 29987 | Prefix = 75771
Simulation 7: Sequential = 56312 | Prefix = 35250
Simulation 8: Sequential = 94955 | Prefix = 62007
Simulation 9: Sequential = 5987 | Prefix = 5987
Simulation 10: Sequential = 69235 | Prefix = 82083
Simulation 11: Sequential = 76418 | Prefix = 47596
Simulation 12: Sequential = 31213 | Prefix = 12355
Simulation 13: Sequential = 22203 | Prefix = 14951
Simulation 14: Sequential = 89490 | Prefix = 92243
Simulation 15: Sequential = 97895 | Prefix = 64774
Simulation 16: Sequential = 52601 | Prefix = 32164
Simulation 17: Sequential = 65497 | Prefix = 36823
Simulation 18: Sequential = 92662 | Prefix = 66093
Simulation 19: Sequential = 85647 | Prefix = 94981
Simulation 20: Sequential = 84244 | Prefix = 55965
Simulation 21: Sequential = 30199 | Prefix = 21116
Simulation 22: Sequential = 79185 | Prefix = 46457
Simulation 23: Sequential = 59370 | Prefix = 83567
Simulation 24: Sequential = 73713 | Prefix = 91788
Simulation 25: Sequential = 18320 | Prefix = 5081
Simulation 26: Sequential = 2055 | Prefix = 76830
Simulation 27: Sequential = 38205 | Prefix = 20850
Simulation 28: Sequential = 36037 | Prefix = 70280
Simulation 29: Sequential = 72671 | Prefix = 42126
Simulation 30: Sequential = 78829 | Prefix = 48454
Simulation 31: Sequential = 15121 | Prefix = 8646
Simulation 32: Sequential = 49247 | Prefix = 27642
Simulation 33: Sequential = 35476 | Prefix = 26740
Simulation 34: Sequential = 60112 | Prefix = 31800
Simulation 35: Sequential = 63668 | Prefix = 79126
Simulation 36: Sequential = 76941 | Prefix = 54223
Simulation 37: Sequential = 55926 | Prefix = 41484
Simulation 38: Sequential = 25467 | Prefix = 15749
Simulation 39: Sequential = 70010 | Prefix = 31182
Simulation 40: Sequential = 73402 | Prefix = 93719
Simulation 41: Sequential = 61589 | Prefix = 38721
Simulation 42: Sequential = 86392 | Prefix = 43589
Simulation 43: Sequential = 20284 | Prefix = 13769
Simulation 44: Sequential = 91451 | Prefix = 97834
Simulation 45: Sequential = 84368 | Prefix = 89120
Simulation 46: Sequential = 66138 | Prefix = 25019
Simulation 47: Sequential = 71756 | Prefix = 39633
Simulation 48: Sequential = 31578 | Prefix = 18069
Simulation 49: Sequential = 42514 | Prefix = 24550
Simulation 50: Sequential = 85195 | Prefix = 42217
Simulation 51: Sequential = 92767 | Prefix = 95810
Simulation 52: Sequential = 35210 | Prefix = 13701
Simulation 53: Sequential = 67645 | Prefix = 35771
Simulation 54: Sequential = 63090 | Prefix = 97134
Simulation 55: Sequential = 39726 | Prefix = 18368
Simulation 56: Sequential = 38016 | Prefix = 63347
Simulation 57: Sequential = 90989 | Prefix = 99096
Simulation 58: Sequential = 28074 | Prefix = 62070
Simulation 59: Sequential = 72943 | Prefix = 87572
Simulation 60: Sequential = 25424 | Prefix = 13379
Simulation 61: Sequential = 31033 | Prefix = 12828
Simulation 62: Sequential = 80694 | Prefix = 54126
Simulation 63: Sequential = 22245 | Prefix = 78850
Simulation 64: Sequential = 35670 | Prefix = 80926
Simulation 65: Sequential = 76276 | Prefix = 50318
Simulation 66: Sequential = 49843 | Prefix = 74152
Simulation 67: Sequential = 96449 | Prefix = 44735
Simulation 68: Sequential = 72630 | Prefix = 96172
Simulation 69: Sequential = 32064 | Prefix = 73041
Simulation 70: Sequential = 10063 | Prefix = 6981
Simulation 71: Sequential = 42448 | Prefix = 25395
Simulation 72: Sequential = 81354 | Prefix = 39142
Simulation 73: Sequential = 12286 | Prefix = 51349
Simulation 74: Sequential = 43994 | Prefix = 24741
Simulation 75: Sequential = 9763 | Prefix = 66303
Simulation 76: Sequential = 83167 | Prefix = 94822
Simulation 77: Sequential = 64682 | Prefix = 83432
Simulation 78: Sequential = 85489 | Prefix = 53821
Simulation 79: Sequential = 87738 | Prefix = 99338
Simulation 80: Sequential = 4243 | Prefix = 67795
Simulation 81: Sequential = 13197 | Prefix = 7789
Simulation 82: Sequential = 41731 | Prefix = 81324
Simulation 83: Sequential = 7451 | Prefix = 2760
Simulation 84: Sequential = 80703 | Prefix = 35635
Simulation 85: Sequential = 93740 | Prefix = 58204
Simulation 86: Sequential = 12434 | Prefix = 67203
Simulation 87: Sequential = 37 | Prefix = 37
Simulation 88: Sequential = 58587 | Prefix = 88665
Simulation 89: Sequential = 90974 | Prefix = 43278
Simulation 90: Sequential = 30688 | Prefix = 15374
Simulation 91: Sequential = 25992 | Prefix = 71388
Simulation 92: Sequential = 73613 | Prefix = 85796
Simulation 93: Sequential = 7227 | Prefix = 3186
Simulation 94: Sequential = 85088 | Prefix = 54816
Simulation 95: Sequential = 28138 | Prefix = 11612
Simulation 96: Sequential = 37271 | Prefix = 67658
Simulation 97: Sequential = 26293 | Prefix = 16304
Simulation 98: Sequential = 86015 | Prefix = 94243
Simulation 99: Sequential = 49345 | Prefix = 33127
Simulation 100: Sequential = 37361 | Prefix = 20712

=== FINAL RESULTS ===
Wins:
Sequential: 39
Prefix: 59
Ties: 2

mcdouglasxx@DESKTOP-xxxxx:/mnt/d/scripts/js$ node script2.js

=== Configuration ===
Total numbers: 100,000
Block size: 5,000
Prefix: 3 characters (16^3 combinations)
Simulations: 200

Simulation 1: Sequential = 42011 | Prefix = 73331
Simulation 2: Sequential = 61280 | Prefix = 41543
Simulation 3: Sequential = 54999 | Prefix = 72043
Simulation 4: Sequential = 60288 | Prefix = 91960
Simulation 5: Sequential = 45857 | Prefix = 26364
Simulation 6: Sequential = 57160 | Prefix = 87031
Simulation 7: Sequential = 16585 | Prefix = 5805
Simulation 8: Sequential = 78936 | Prefix = 90640
Simulation 9: Sequential = 9869 | Prefix = 55319
Simulation 10: Sequential = 19576 | Prefix = 51238
Simulation 11: Sequential = 21798 | Prefix = 82717
Simulation 12: Sequential = 52394 | Prefix = 26594
Simulation 13: Sequential = 15524 | Prefix = 7981
Simulation 14: Sequential = 99878 | Prefix = 95325
Simulation 15: Sequential = 12615 | Prefix = 11821
Simulation 16: Sequential = 5515 | Prefix = 2929
Simulation 17: Sequential = 68727 | Prefix = 82317
Simulation 18: Sequential = 47318 | Prefix = 76912
Simulation 19: Sequential = 26347 | Prefix = 18179
Simulation 20: Sequential = 2866 | Prefix = 2866
Simulation 21: Sequential = 41361 | Prefix = 20039
Simulation 22: Sequential = 15991 | Prefix = 6802
Simulation 23: Sequential = 77107 | Prefix = 87401
Simulation 24: Sequential = 28200 | Prefix = 17327
Simulation 25: Sequential = 65277 | Prefix = 77867
Simulation 26: Sequential = 62995 | Prefix = 37923
Simulation 27: Sequential = 35467 | Prefix = 20363
Simulation 28: Sequential = 73584 | Prefix = 76952
Simulation 29: Sequential = 34727 | Prefix = 65990
Simulation 30: Sequential = 54290 | Prefix = 85178
Simulation 31: Sequential = 36243 | Prefix = 81595
Simulation 32: Sequential = 94932 | Prefix = 62083
Simulation 33: Sequential = 9361 | Prefix = 65745
Simulation 34: Sequential = 35067 | Prefix = 21963
Simulation 35: Sequential = 36111 | Prefix = 15660
Simulation 36: Sequential = 89077 | Prefix = 92290
Simulation 37: Sequential = 94948 | Prefix = 45868
Simulation 38: Sequential = 96690 | Prefix = 45625
Simulation 39: Sequential = 90656 | Prefix = 96292
Simulation 40: Sequential = 12204 | Prefix = 9145
Simulation 41: Sequential = 29889 | Prefix = 71032
Simulation 42: Sequential = 95991 | Prefix = 99931
Simulation 43: Sequential = 43583 | Prefix = 19356
Simulation 44: Sequential = 59256 | Prefix = 72233
Simulation 45: Sequential = 86502 | Prefix = 54802
Simulation 46: Sequential = 97625 | Prefix = 46700
Simulation 47: Sequential = 9925 | Prefix = 58869
Simulation 48: Sequential = 77845 | Prefix = 92720
Simulation 49: Sequential = 82551 | Prefix = 49884
Simulation 50: Sequential = 40540 | Prefix = 77012
Simulation 51: Sequential = 10912 | Prefix = 2045
Simulation 52: Sequential = 35974 | Prefix = 20288
Simulation 53: Sequential = 18957 | Prefix = 14425
Simulation 54: Sequential = 46157 | Prefix = 83742
Simulation 55: Sequential = 95650 | Prefix = 65010
Simulation 56: Sequential = 78608 | Prefix = 52531
Simulation 57: Sequential = 93432 | Prefix = 62208
Simulation 58: Sequential = 62970 | Prefix = 74303
Simulation 59: Sequential = 10796 | Prefix = 6213
Simulation 60: Sequential = 68282 | Prefix = 32721
Simulation 61: Sequential = 41648 | Prefix = 34394
Simulation 62: Sequential = 38260 | Prefix = 58198
Simulation 63: Sequential = 57529 | Prefix = 26724
Simulation 64: Sequential = 14247 | Prefix = 71416
Simulation 65: Sequential = 34848 | Prefix = 63862
Simulation 66: Sequential = 54455 | Prefix = 84087
Simulation 67: Sequential = 26395 | Prefix = 11413
Simulation 68: Sequential = 58040 | Prefix = 77245
Simulation 69: Sequential = 31643 | Prefix = 66123
Simulation 70: Sequential = 36759 | Prefix = 23853
Simulation 71: Sequential = 66598 | Prefix = 29399
Simulation 72: Sequential = 15713 | Prefix = 13545
Simulation 73: Sequential = 76142 | Prefix = 91467
Simulation 74: Sequential = 98591 | Prefix = 99951
Simulation 75: Sequential = 60804 | Prefix = 29268
Simulation 76: Sequential = 63862 | Prefix = 34813
Simulation 77: Sequential = 12351 | Prefix = 74403
Simulation 78: Sequential = 78419 | Prefix = 88566
Simulation 79: Sequential = 31052 | Prefix = 20956
Simulation 80: Sequential = 92186 | Prefix = 49161
Simulation 81: Sequential = 429 | Prefix = 429
Simulation 82: Sequential = 22705 | Prefix = 68447
Simulation 83: Sequential = 75020 | Prefix = 38895
Simulation 84: Sequential = 4325 | Prefix = 55871
Simulation 85: Sequential = 51322 | Prefix = 34764
Simulation 86: Sequential = 85732 | Prefix = 42645
Simulation 87: Sequential = 17171 | Prefix = 59780
Simulation 88: Sequential = 98034 | Prefix = 99261
Simulation 89: Sequential = 9937 | Prefix = 61406
Simulation 90: Sequential = 55996 | Prefix = 81478
Simulation 91: Sequential = 99567 | Prefix = 62509
Simulation 92: Sequential = 4263 | Prefix = 58453
Simulation 93: Sequential = 48129 | Prefix = 15896
Simulation 94: Sequential = 24691 | Prefix = 64068
Simulation 95: Sequential = 39460 | Prefix = 75507
Simulation 96: Sequential = 87875 | Prefix = 58728
Simulation 97: Sequential = 77751 | Prefix = 40177
Simulation 98: Sequential = 54836 | Prefix = 80452
Simulation 99: Sequential = 95450 | Prefix = 64043
Simulation 100: Sequential = 77084 | Prefix = 52660
Simulation 101: Sequential = 96261 | Prefix = 50307
Simulation 102: Sequential = 95463 | Prefix = 55581
Simulation 103: Sequential = 79750 | Prefix = 87692
Simulation 104: Sequential = 60951 | Prefix = 38941
Simulation 105: Sequential = 26375 | Prefix = 9776
Simulation 106: Sequential = 39433 | Prefix = 62202
Simulation 107: Sequential = 33414 | Prefix = 21602
Simulation 108: Sequential = 49500 | Prefix = 24666
Simulation 109: Sequential = 97488 | Prefix = 54097
Simulation 110: Sequential = 9045 | Prefix = 9045
Simulation 111: Sequential = 85609 | Prefix = 49185
Simulation 112: Sequential = 42304 | Prefix = 67758
Simulation 113: Sequential = 90684 | Prefix = 51890
Simulation 114: Sequential = 82849 | Prefix = 54362
Simulation 115: Sequential = 99423 | Prefix = 97246
Simulation 116: Sequential = 17218 | Prefix = 10948
Simulation 117: Sequential = 34699 | Prefix = 25025
Simulation 118: Sequential = 28710 | Prefix = 66511
Simulation 119: Sequential = 18499 | Prefix = 66541
Simulation 120: Sequential = 19434 | Prefix = 62426
Simulation 121: Sequential = 57844 | Prefix = 39484
Simulation 122: Sequential = 79027 | Prefix = 52554
Simulation 123: Sequential = 16305 | Prefix = 10842
Simulation 124: Sequential = 16186 | Prefix = 8227
Simulation 125: Sequential = 60772 | Prefix = 34087
Simulation 126: Sequential = 86692 | Prefix = 46941
Simulation 127: Sequential = 48505 | Prefix = 41160
Simulation 128: Sequential = 52071 | Prefix = 24952
Simulation 129: Sequential = 71206 | Prefix = 40587
Simulation 130: Sequential = 99135 | Prefix = 99883
Simulation 131: Sequential = 65953 | Prefix = 42562
Simulation 132: Sequential = 57397 | Prefix = 81390
Simulation 133: Sequential = 84987 | Prefix = 94016
Simulation 134: Sequential = 32768 | Prefix = 20336
Simulation 135: Sequential = 46451 | Prefix = 71222
Simulation 136: Sequential = 67371 | Prefix = 44730
Simulation 137: Sequential = 49590 | Prefix = 79853
Simulation 138: Sequential = 3760 | Prefix = 56835
Simulation 139: Sequential = 46692 | Prefix = 29185
Simulation 140: Sequential = 29102 | Prefix = 66428
Simulation 141: Sequential = 90810 | Prefix = 46874
Simulation 142: Sequential = 79577 | Prefix = 85543
Simulation 143: Sequential = 3851 | Prefix = 3851
Simulation 144: Sequential = 70011 | Prefix = 30212
Simulation 145: Sequential = 57323 | Prefix = 85971
Simulation 146: Sequential = 9728 | Prefix = 52770
Simulation 147: Sequential = 53573 | Prefix = 78726
Simulation 148: Sequential = 70458 | Prefix = 84254
Simulation 149: Sequential = 95484 | Prefix = 62048
Simulation 150: Sequential = 48045 | Prefix = 80894
Simulation 151: Sequential = 33143 | Prefix = 74700
Simulation 152: Sequential = 33736 | Prefix = 64961
Simulation 153: Sequential = 40060 | Prefix = 23271
Simulation 154: Sequential = 3597 | Prefix = 55429
Simulation 155: Sequential = 71332 | Prefix = 91239
Simulation 156: Sequential = 24184 | Prefix = 8516
Simulation 157: Sequential = 58241 | Prefix = 78083
Simulation 158: Sequential = 62413 | Prefix = 26915
Simulation 159: Sequential = 90354 | Prefix = 51823
Simulation 160: Sequential = 13656 | Prefix = 59269
Simulation 161: Sequential = 46353 | Prefix = 31651
Simulation 162: Sequential = 53395 | Prefix = 42595
Simulation 163: Sequential = 71828 | Prefix = 96669
Simulation 164: Sequential = 98601 | Prefix = 97759
Simulation 165: Sequential = 30591 | Prefix = 14676
Simulation 166: Sequential = 80781 | Prefix = 56383
Simulation 167: Sequential = 55417 | Prefix = 40122
Simulation 168: Sequential = 88736 | Prefix = 61467
Simulation 169: Sequential = 71105 | Prefix = 30305
Simulation 170: Sequential = 82722 | Prefix = 47960
Simulation 171: Sequential = 67022 | Prefix = 47016
Simulation 172: Sequential = 72089 | Prefix = 43145
Simulation 173: Sequential = 15039 | Prefix = 5165
Simulation 174: Sequential = 2849 | Prefix = 65513
Simulation 175: Sequential = 92214 | Prefix = 51923
Simulation 176: Sequential = 95999 | Prefix = 48186
Simulation 177: Sequential = 92522 | Prefix = 97899
Simulation 178: Sequential = 97076 | Prefix = 97987
Simulation 179: Sequential = 67155 | Prefix = 92637
Simulation 180: Sequential = 14812 | Prefix = 72648
Simulation 181: Sequential = 26561 | Prefix = 67868
Simulation 182: Sequential = 56923 | Prefix = 84458
Simulation 183: Sequential = 55699 | Prefix = 34948
Simulation 184: Sequential = 24658 | Prefix = 60557
Simulation 185: Sequential = 67844 | Prefix = 33855
Simulation 186: Sequential = 76218 | Prefix = 44573
Simulation 187: Sequential = 8747 | Prefix = 5523
Simulation 188: Sequential = 19044 | Prefix = 14628
Simulation 189: Sequential = 92222 | Prefix = 50770
Simulation 190: Sequential = 27608 | Prefix = 66848
Simulation 191: Sequential = 71850 | Prefix = 37392
Simulation 192: Sequential = 94664 | Prefix = 98763
Simulation 193: Sequential = 94971 | Prefix = 95176
Simulation 194: Sequential = 84913 | Prefix = 90029
Simulation 195: Sequential = 61326 | Prefix = 45809
Simulation 196: Sequential = 63625 | Prefix = 81397
Simulation 197: Sequential = 27842 | Prefix = 12642
Simulation 198: Sequential = 5286 | Prefix = 5130
Simulation 199: Sequential = 9075 | Prefix = 5611
Simulation 200: Sequential = 61734 | Prefix = 31056

=== FINAL RESULTS ===
Wins:
Sequential: 86
Prefix: 110
Ties: 4


Let it run overnight for a bit more, 200 simulations is quite low to establish a trend. You’ll get nicer results (about 50/50) if you run 10k simulations.

At this point, I invite everyone to test it with as many simulations as they wish and to publish it, for a neutral environment.