Bitcoin Forum
April 29, 2026, 06:12:07 PM *
News: Latest Bitcoin Core release: 30.2 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 ... 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 [477] 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 ... 657 »
  Print  
Author Topic: Bitcoin puzzle transaction ~32 BTC prize to who solves it  (Read 382249 times)
fixedpaul
Member
**
Offline Offline

Activity: 86
Merit: 27


View Profile WWW
April 27, 2025, 08:23:23 PM
 #9521

Since from a mathematical point of view it has already been explained that it makes no sense, but apparently many choose to ignore it or just don't get i, I don't know. Properly prove it if you claim that prefix-method works.

Proving that there is a method that actually works better then any other is very simple, as ktimesG already said.

Take any range of size N, run many simulations, and calculate the number of operations/keychecked.

If avg(ops)/N is significantly less than 0.5, then you have empirically proven it. By "significantly," I mean a p-value << 1— I don't know, the smaller the better. But it’s enough to share the method so that it’s repeatable and anyone can test it.

That way, we can finally put this topic to rest once and for all.

The burden of proof lies with those who claim to have a better method; at most, we can just mock some scripts using a cartoon dog, which is probably more fun  Grin
WanderingPhilospher
Sr. Member
****
Offline Offline

Activity: 1498
Merit: 286

Shooters Shoot...


View Profile
April 27, 2025, 08:46:07 PM
 #9522

Since from a mathematical point of view it has already been explained that it makes no sense, but apparently many choose to ignore it or just don't get i, I don't know. Properly prove it if you claim that prefix-method works.

Proving that there is a method that actually works better then any other is very simple, as ktimesG already said.

Take any range of size N, run many simulations, and calculate the number of operations/keychecked.

If avg(ops)/N is significantly less than 0.5, then you have empirically proven it. By "significantly," I mean a p-value << 1— I don't know, the smaller the better. But it’s enough to share the method so that it’s repeatable and anyone can test it.

That way, we can finally put this topic to rest once and for all.

The burden of proof lies with those who claim to have a better method; at most, we can just mock some scripts using a cartoon dog, which is probably more fun  Grin

Frankly, I find this post "lazy".

you say, "as ktimesG already said" but don't ever refute anything he says lol?! That the methods should basically be compared via of some luck of the random draw lol.

The numbers for the last test I ran, in case you missed it:

Code:
=== FINAL RESULTS (Sequential, Full Range) ===
Wins:
Scooby_Doo: 1
Prefix: 487
Ties: 12

Total Checks:

Scooby_Doo: 31597542
Prefix: 31485133
Total Time:

Scooby_Doo: 42.913778 seconds
Prefix: 52.088803 seconds

Averages (Total Time / Wins):

Scooby_Doo : 42.913778 seconds/victory
Prefix : 0.106959 seconds/victory

Checks per Win:
Scooby_Doo : 31597542.00 checks/win
Prefix : 64651.20 checks/win


Average Checks per Simulation:

Scooby_Doo : 63,195.08 checks/simulation
Prefix     : 62,970.27 checks/simulation


Now, that is a vastly small range size, compared to what we are working on, as far as the puzzles. So one should take that into consideration. But the numbers would hold true, if due diligence was done on skip count size.

If you want to run a full blown 68 bit test, go for it bud. I will await your results.

And you don't even have to call it the prefix method. You can blindly select a number for skip count, and run the numbers yourself, and just call it the skipkeys method lol. SO no, from a mathematical point of view, it has not been explained, rather the opposite. But I for one, would not blindly do this if I were investing, 100s, thousands, or even hundreds of thousands of dollars to solve a puzzle. I would want some tests and data to back up my skip count number. And the only way I can do that is via h160 bits. Well, that is the way I would chose. I am sure there are other ways, just not explored.

Burden of proof?! The proof and scripts are out there, or create your own. Don't be lazy. I told you everything I changed with the scooby doo method. It's not brain science, nor rocket surgery. Create it and run your tests. You should be able to merely read what I wrote and understand how it finds a match faster, based on, well, math, of all things lol.

Or better yet, create your own script from scratch.

First method, call it method A:
it starts at start and checks for match until range is exhausted.

Second method, call it method B:
It starts at start and if it finds a "DP" (prefix length match) it stores the keys it checked prior to finding prefix match, then skips ahead in the range by skip count value, and again goes sequentially until next prefix match is found, rinse and repeat. If it gets to the end of the range and the key was not found, it goes back and searches the keys it skipped, sequentially, until it finds the key.

How is that hard to understand/see why on average, it will find the key faster?!

Want to be super lazy? Don't look for prefix matches, just skip x amount of keys...meaning just randomly come up with a skip count number. I bet it will still will win more than sequential. Matter of fact, I will test this alongside sequential, prefix match, and now, random skip count number. It will be glorious lol.
kTimesG
Full Member
***
Offline Offline

Activity: 812
Merit: 248


View Profile
April 27, 2025, 08:49:13 PM
 #9523

If we are comparing two methods, we need them to use the same everything. If we use different orders of checking blocks, how does that help us at all? It then is just which method landed on the correct block first, which is 100% pure luck of the draw? I dunno, we can agree to disagree on that one.

And ok, if my method loses, it loses big/I have a huge problem. Cool. That one loss out of 500...probably a risk I would take TBH.

They do use the same everything: same data, same target.

Anything else except those is a conditional constraint, not at all part of what is being asked from the algorithm. Sorry but it does not make any sense at all. Maybe it does for you though.

You're closer to your answer though - you're spot on that it's because that blocks / whatever are traversed in the same order, that introduces the "bias". Once you freely let go of this constraint - you will notice that  both methods act identical, which is the expected thing to happen.

Did you look at the histogram? Maybe this detail will change your mind:

When Prefix wins - it wins by a very small margin (by just a few ops ahead)
When Prefix loses - it loses by a very high margin (proportional to range size)

I wouldn't take that risk just because I have more chances to find some key sooner by a handful of ops, while risking to descent into scanning N times more keys in vain, but of course everyone is free to do what they want, at the end of the day. And completely ignore the fact that simply scanning sequentially in the exact opposite order of what the magic method does yields the exact same performance in all aspects...

I think the subject was dissected way too much for anything more substantial to ever be added.

Off the grid, training pigeons to broadcast signed messages.
WanderingPhilospher
Sr. Member
****
Offline Offline

Activity: 1498
Merit: 286

Shooters Shoot...


View Profile
April 27, 2025, 09:01:35 PM
Last edit: April 27, 2025, 09:12:44 PM by WanderingPhilospher
 #9524

Quote
When Prefix wins - it wins by a very small margin (by just a few ops ahead)
When Prefix loses - it loses by a very high margin (proportional to range size)

Well we are working with very tiny ranges lol...

Quote
Once you freely let go of this constraint - you will notice that  both methods act identical, which is the expected thing to happen.
For grins and giggles I will use random starting points (since I am just using 1 block size)

Who needs prefixes or straight line sequential order Smiley
(2^17 range size, 500 simulations, random checked 4096 consecutive keys then skipped 64, if range was exhausted, it went back to first key skipped and checked them sequentially until key was found)

Code:
=== FINAL RESULTS (Sequential, Full Range) ===
Wins:
ScoobyDoo  : 0
Prefix     : 9
RandomSkip : 482
Ties       : 9

Total Checks:

ScoobyDoo  : 31597542
Prefix     : 31485133
RandomSkip : 31429414

Total Time:

ScoobyDoo  : 43.892759 seconds
Prefix     : 53.199185 seconds
RandomSkip : 46.203749 seconds

Averages (Total Time / Wins):

ScoobyDoo  : inf seconds/victory
Prefix     : 5.911021 seconds/victory
RandomSkip : 0.095858 seconds/victory

Checks per Win:
ScoobyDoo  : inf checks/win
Prefix     : 3,498,348.11 checks/win
RandomSkip : 65,206.25 checks/win


Average Checks per Simulation:

ScoobyDoo  : 63,195.08 checks/simulation
Prefix     : 62,970.27 checks/simulation
RandomSkip : 62,858.83 checks/simulation


Ok, 2^17 range size, 500 simulations, each method started from a random point inside the range, if key not found it went to whatever keys were not checked, and started checking those.

Code:
=== FINAL RESULTS (Sequential, Full Range with Random Starts) ===
Wins:
ScoobyDoo  : 133
Prefix     : 241
RandomSkip : 126
Ties       : 0

Total Checks:

ScoobyDoo  : 31775601
Prefix     : 22520018
RandomSkip : 32676939

Total Time:

ScoobyDoo  : 45.047694 seconds
Prefix     : 42.106104 seconds
RandomSkip : 49.145924 seconds

Averages (Total Time / Wins):

ScoobyDoo  : 0.338704 seconds/victory
Prefix     : 0.174714 seconds/victory
RandomSkip : 0.390047 seconds/victory

Checks per Win:
ScoobyDoo  : 238,914.29 checks/win
Prefix     : 93,444.06 checks/win
RandomSkip : 259,340.79 checks/win


Average Checks per Simulation:

ScoobyDoo  : 63,551.20 checks/simulation
Prefix     : 45,040.04 checks/simulation
RandomSkip : 65,353.88 checks/simulation


Prefix whooped some azzzzz....
fantom06
Jr. Member
*
Offline Offline

Activity: 49
Merit: 1


View Profile
April 27, 2025, 09:52:27 PM
 #9525

Quote
When Prefix wins - it wins by a very small margin (by just a few ops ahead)
When Prefix loses - it loses by a very high margin (proportional to range size)

Well we are working with very tiny ranges lol...

Quote
Once you freely let go of this constraint - you will notice that  both methods act identical, which is the expected thing to happen.
For grins and giggles I will use random starting points (since I am just using 1 block size)

Who needs prefixes or straight line sequential order Smiley
(2^17 range size, 500 simulations, random checked 4096 consecutive keys then skipped 64, if range was exhausted, it went back to first key skipped and checked them sequentially until key was found)

Code:
=== FINAL RESULTS (Sequential, Full Range) ===
Wins:
ScoobyDoo  : 0
Prefix     : 9
RandomSkip : 482
Ties       : 9

Total Checks:

ScoobyDoo  : 31597542
Prefix     : 31485133
RandomSkip : 31429414

Total Time:

ScoobyDoo  : 43.892759 seconds
Prefix     : 53.199185 seconds
RandomSkip : 46.203749 seconds

Averages (Total Time / Wins):

ScoobyDoo  : inf seconds/victory
Prefix     : 5.911021 seconds/victory
RandomSkip : 0.095858 seconds/victory

Checks per Win:
ScoobyDoo  : inf checks/win
Prefix     : 3,498,348.11 checks/win
RandomSkip : 65,206.25 checks/win


Average Checks per Simulation:

ScoobyDoo  : 63,195.08 checks/simulation
Prefix     : 62,970.27 checks/simulation
RandomSkip : 62,858.83 checks/simulation


Ok, 2^17 range size, 500 simulations, each method started from a random point inside the range, if key not found it went to whatever keys were not checked, and started checking those.

Code:
=== FINAL RESULTS (Sequential, Full Range with Random Starts) ===
Wins:
ScoobyDoo  : 133
Prefix     : 241
RandomSkip : 126
Ties       : 0

Total Checks:

ScoobyDoo  : 31775601
Prefix     : 22520018
RandomSkip : 32676939

Total Time:

ScoobyDoo  : 45.047694 seconds
Prefix     : 42.106104 seconds
RandomSkip : 49.145924 seconds

Averages (Total Time / Wins):

ScoobyDoo  : 0.338704 seconds/victory
Prefix     : 0.174714 seconds/victory
RandomSkip : 0.390047 seconds/victory

Checks per Win:
ScoobyDoo  : 238,914.29 checks/win
Prefix     : 93,444.06 checks/win
RandomSkip : 259,340.79 checks/win


Average Checks per Simulation:

ScoobyDoo  : 63,551.20 checks/simulation
Prefix     : 45,040.04 checks/simulation
RandomSkip : 65,353.88 checks/simulation


Prefix whooped some azzzzz....

Simulation 5000: Scooby_Doo = 87634 checks in 0.406732s | Prefix = 70515 checks in 0.261866s

=== FINAL RESULTS ===
Wins:
Scooby_Doo: 2423
Prefix: 2379
Ties: 198

Total Checks:

Scooby_Doo: 248193832
Prefix: 251283717
Total Time:

Scooby_Doo: 1133.652252 seconds
Prefix: 949.231911 seconds

Averages (Total Time / Wins):

Scooby_Doo : 0.467871 seconds/victory
Prefix : 0.399005 seconds/victory

Checks per Win:
Scooby_Doo : 102432.45 checks/win
Prefix : 105625.77 checks/win
Menowa*
Newbie
*
Offline Offline

Activity: 55
Merit: 0


View Profile
April 27, 2025, 10:20:54 PM
 #9526

could be anywhere but if you thinking at hex 4321 you go ahead and scan it yourself

Puzzle 69:  

19vkiEajfhuZ8bs8Zu2jgmC6oqZbWqhxhG
 
Start Hex : 176DAEDFC76AE2EE58
End Hex: 17733BF5A8E10AEE69


why
I'm 70% sure the key is in this range. Try it, you'll thank me later.
It’s not there!
lunixtlt
Newbie
*
Offline Offline

Activity: 2
Merit: 0


View Profile
April 27, 2025, 11:06:56 PM
 #9527

Hello everyone. Guys, please help me with the script. I made a script in Python that calculates addresses in order, but it calculates on the CPU. The speed is 200 Kkey/s. I have already tried everything. Tell me a script that would calculate on the GPU. Please, someone.
fantom06
Jr. Member
*
Offline Offline

Activity: 49
Merit: 1


View Profile
April 27, 2025, 11:22:00 PM
 #9528

Hello everyone. Guys, please help me with the script. I made a script in Python that calculates addresses in order, but it calculates on the CPU. The speed is 200 Kkey/s. I have already tried everything. Tell me a script that would calculate on the GPU. Please, someone.

a hundred for the script?
lunixtlt
Newbie
*
Offline Offline

Activity: 2
Merit: 0


View Profile
April 27, 2025, 11:38:26 PM
 #9529

Hello everyone. Guys, please help me with the script. I made a script in Python that calculates addresses in order, but it calculates on the CPU. The speed is 200 Kkey/s. I have already tried everything. Tell me a script that would calculate on the GPU. Please, someone.

a hundred for the script?

I am communicating through a translator. I didn't quite understand you.
farou9
Newbie
*
Offline Offline

Activity: 89
Merit: 0


View Profile
April 27, 2025, 11:38:37 PM
 #9530

Hello everyone. Guys, please help me with the script. I made a script in Python that calculates addresses in order, but it calculates on the CPU. The speed is 200 Kkey/s. I have already tried everything. Tell me a script that would calculate on the GPU. Please, someone.
tell chatgpt to make you Cuda script
Bram24732
Member
**
Offline Offline

Activity: 322
Merit: 28


View Profile
April 28, 2025, 05:47:05 AM
Merited by Cricktor (1)
 #9531

I think I’ve approached all of this the wrong way.

I’m offering a 0.1 BTC bounty for the formal proof of any traversal method that provides a statistical edge over a linear scan for puzzle 69. By statistical edge I mean that this new traversal method running on a statistically significant number of executions requires significantly fewer checks (let’s put the threshold at 5%) to find the key.

Conditions :
- Has to be written using math semantics. Not “where does John lives” metaphors.
- Has to be empirically validated using a python / nodeJS script.
- First one posting it to this thread will be recipient of the bounty.

I solved 67 and 68 using custom software distributing the load across ~25k GPUs. 4090 stocks speeds : ~8.1Bkeys/sec. Don’t challenge me technically if you know shit about fuck, I’ll ignore you. Same goes if all you can do is LLM reply.
kTimesG
Full Member
***
Offline Offline

Activity: 812
Merit: 248


View Profile
April 28, 2025, 06:21:55 AM
 #9532

For anyone who still has more than 2 living neurons:

Block size: 5000; Same traverse order.
No need to bother even checking for an actual prefix. Or do it - it's basically the same thing

- key < 4096: on average, a tie; this results in 4.1% ties overall
- key < 5000: on average, seq wins; +1%
- key < 9096: prefix wins because it skipped 904 keys in block 1
- ... rinse and repeat according to what happened so far

etc, etc, etc... but instead of anyone actually doing this analysis to explain why the bias appears when the SAME ORDER is used... we get Doodles. At least it's an upgrade from TicTacToe I guess.

If anyone still thinks the magic method works, and that it's a fallacy to ever have the atrocity to compare it to a method that goes from the other end (sorry, I meant breaking the relativity theory), I can only have a few recommendations:

1. Write to MIT / NASA / your local secret services agency.
2. Publish the paper. I have a good title: "How to read people's mind. Prefix Theory for Dummies"
3. You might want to stay off from the internet for a while. Forget the forums! Those haters who don't get math will be all over you.
4. Since you now have too much free time, maybe plot a few graphs of your magic method and observe that the CDF is straight up identical in all cases. CDF stands for "Cute Doodle Figures".

Off the grid, training pigeons to broadcast signed messages.
viceversas
Newbie
*
Offline Offline

Activity: 8
Merit: 0


View Profile
April 28, 2025, 07:41:05 AM
 #9533

I think I’ve approached all of this the wrong way.

I’m offering a 0.1 BTC bounty for the formal proof of any traversal method that provides a statistical edge over a linear scan for puzzle 69. By statistical edge I mean that this new traversal method running on a statistically significant number of executions requires significantly fewer checks (let’s put the threshold at 5%) to find the key.

Conditions :
- Has to be written using math semantics. Not “where does John lives” metaphors.
- Has to be empirically validated using a python / nodeJS script.
- First one posting it to this thread will be recipient of the bounty.

In theory, modular traversal is bijective and randomized. So, generally speaking, if the target keys are randomly distributed across the keyspace, modular traversal can be as efficient as linear traversal. But, for clustered targets like in the 2^69 puzzle, modular traversal is not efficient because the targets were clustered near the starting point (within a small range of the keyspace). So we need a "new" linear traversal.

just my 2cents.
kTimesG
Full Member
***
Offline Offline

Activity: 812
Merit: 248


View Profile
April 28, 2025, 08:15:22 AM
 #9534

Here a direct proof on puzzle 17:

Code:
def get_filter_candidate(x: int, c: int) -> int:
    h2  = hash160_pubkey(x)
    val = int.from_bytes(h2, 'big')
    return val >> (160 - c)

def prefilter_scan(start: int, end: int, target: str, c: int):
    t1  = get_filter_target(target, c)
    ops = 0
    for x in range(start, end+1):
        if get_filter_candidate(x, c) != t1:
            continue
        ops += 1
        if derive_address(x) == target:
            return x, ops
    return None, ops

You have an error in your script. You do H160 and continue before you increment ops. So the heavy op is not accounted always.

Also - if the key isn't found, the method simply fails.

I also believe that the actual HEAVY operation that actually ever matters is having a public key of the private key - because that is the actual step where you go from the scalar domain into the discrete log injective-only domain.

Off the grid, training pigeons to broadcast signed messages.
kTimesG
Full Member
***
Offline Offline

Activity: 812
Merit: 248


View Profile
April 28, 2025, 08:34:24 AM
 #9535

My C-bit prefilter is a winner, my friend.
Convinced? ⇒ bc1qvmw6hxf7fhatxstf7vg53cd3n2a4jfa8at9wa6  Smiley

I'm not. Maybe Bram is, who knows?

You still do the same amount of hashing, so there's zero saving. We don't need to derive an address. The H160 is always enough. And it's always also necessary.

You still might not find a key also.

Nice try though.

Off the grid, training pigeons to broadcast signed messages.
nomachine
Full Member
***
Offline Offline

Activity: 826
Merit: 135



View Profile
April 28, 2025, 08:46:11 AM
 #9536

I'm not going to prove anything to anyone, but here is the Millisecond Puzzle 30 solver

Code:
import random
import os
import time
import secp256k1 as ice

puzzle = 30
target = "d39c4704664e1deb76c9331e637564c257d68a08"
lower_range_limit = 2 ** (puzzle - 1)
upper_range_limit = (2 ** puzzle) - 1

start_time = time.time()

for x in range(10000000):
    #Random seed Config
    #constant_prefix = b''  #back to no constant
    constant_prefix = b'yx\xcb\x08\xb70l'
    prefix_length = len(constant_prefix)
    length = 8
    ending_length = length - prefix_length
    ending_bytes = os.urandom(ending_length)
    random_bytes = constant_prefix + ending_bytes
    random.seed(random_bytes)
    dec = random.randint(lower_range_limit, upper_range_limit)
    h160 = ice.privatekey_to_h160(0, True, dec).hex()
    if h160 == target:
        HEX = "%064x" % dec
        caddr = ice.privatekey_to_address(0, True, dec)
        wifc = ice.btc_pvk_to_wif(HEX)
        print("Bitcoin address Compressed: " + caddr)
        print("Private Key (decimal): " + str(dec))
        print("Private key (wif) Compressed : " + wifc)
        print(f"Random seed: {random_bytes}")
        break

end_time = time.time()
execution_time_ms = (end_time - start_time) * 1000

print("Execution Time (ms):", execution_time_ms)

Bitcoin address Compressed: 1LHtnpd8nU5VHEMkG2TMYYNUjjLc992bps
Private Key (decimal): 1033162084
Private key (wif) Compressed : KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M8diLSC5MyERoW
Random seed: b'yx\xcb\x08\xb70l\xf1'
Execution Time (ms): 2.977609634399414


There are no rules for how any puzzle should be solved — the rule is that there are no rules Grin

BTC: bc1qdwnxr7s08xwelpjy3cc52rrxg63xsmagv50fa8
kTimesG
Full Member
***
Offline Offline

Activity: 812
Merit: 248


View Profile
April 28, 2025, 08:55:16 AM
 #9537

My C-bit prefilter is a winner, my friend.
You still do the same amount of hashing, so there's zero saving. We don't need to derive an address. The H160 is always enough. And it's always also necessary.
That comment misses the real win: we’re not paying the full cost of address derivation + Base58 on every candidate, only on the tiny fraction that passes the c-bit filter.

I think you're either trolling, or simply don't get what is being searched.

Off the grid, training pigeons to broadcast signed messages.
Akito S. M. Hosana
Jr. Member
*
Offline Offline

Activity: 434
Merit: 8


View Profile
April 28, 2025, 08:56:49 AM
 #9538

the Millisecond Puzzle 30 solver



So, you can solve any puzzle in less than a second if you have the correct random seed?   Tongue
nomachine
Full Member
***
Offline Offline

Activity: 826
Merit: 135



View Profile
April 28, 2025, 08:59:24 AM
 #9539

the Millisecond Puzzle 30 solver



So, you can solve any puzzle in less than a second if you have the correct random seed?   Tongue

That's right — and even more than that: with one and the same seed, multiple puzzles  Grin

BTC: bc1qdwnxr7s08xwelpjy3cc52rrxg63xsmagv50fa8
Akito S. M. Hosana
Jr. Member
*
Offline Offline

Activity: 434
Merit: 8


View Profile
April 28, 2025, 09:07:12 AM
 #9540

the Millisecond Puzzle 30 solver



So, you can solve any puzzle in less than a second if you have the correct random seed?   Tongue

That's right — and even more than that: with one and the same seed, multiple puzzles  Grin

How can that be? Tongue
Pages: « 1 ... 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 [477] 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 ... 657 »
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!