Bitcoin Forum
August 17, 2026, 11:51:01 AM *
News: Latest Bitcoin Core release: 31.1 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 ... 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 [400] 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 ... 688 »
  Print  
Author Topic: Bitcoin puzzle transaction ~32 BTC prize to who solves it  (Read 404619 times)
nomachine
Full Member
***
Offline

Activity: 868
Merit: 138



View Profile
March 17, 2025, 07:47:21 PM
 #7981

Where is the bottleneck in this script, essentially? How can we speed it up further?  Tongue

Hello, two days ago, you had a speed of 55 keys/s, and now it's 75 keys/s. And you're still not satisfied? 

The bottleneck is SECP256K1 itself, and of course, hashing.

BTC: bc1qdwnxr7s08xwelpjy3cc52rrxg63xsmagv50fa8
pbies
Sr. Member
****
Offline

Activity: 436
Merit: 272



View Profile
March 17, 2025, 07:49:12 PM
 #7982

Because we are searching for puzzle 68 it would be better to use failing or known randomness from the past (or the same seed), than using good randomness which will not guide us towards salvation which here is hitting the same randomness used in the past while creating puzzles.

We need bad randomness, not a good one!

BTC: bc1qmrexlspd24kevspp42uvjg7sjwm8xcf9w86h5k
nomachine
Full Member
***
Offline

Activity: 868
Merit: 138



View Profile
March 17, 2025, 08:13:14 PM
 #7983

We need bad randomness, not a good one!

While Xoshiro256 is fast, it is not optimized for the secure task of generating Bitcoin private keys. Brute-forcing requires the use of GPUs or ASICs, which would far outperform Xoshiro256. I am using it here experimentally, with a line of thinking similar to yours.  Grin

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

Activity: 462
Merit: 8


View Profile
March 17, 2025, 08:29:37 PM
 #7984

I am using it here experimentally, with a line of thinking similar to yours.  Grin

What does this mean? Are the keys generated in a completely different way compared to other scripts?
nomachine
Full Member
***
Offline

Activity: 868
Merit: 138



View Profile
March 17, 2025, 08:47:01 PM
 #7985

I am using it here experimentally, with a line of thinking similar to yours.  Grin

What does this mean? Are the keys generated in a completely different way compared to other scripts?


Not necessarily in a completely different way. The goal here is to guess private keys that are already in use. The rule is that there are no rules about what you should use as a random generator. You can use a lottery drum if that method is fast enough for your needs. I have even used UUID Version 4 in some key generation scripts. This is fine as long as the keys are not used for real funds or transactions.

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

Activity: 462
Merit: 8


View Profile
March 18, 2025, 05:07:31 AM
 #7986

The goal here is to guess private keys that are already in use. The rule is that there are no rules about what you should use as a random generator.

RTX 4090 is capable of doing 7.0 - 7.1 GK/s to scan a given range, not 4 or 5. Yes, just the keys in a given interval, not the ones with symmetry or endo (in that case, it can surpass 10 GK/s).

What do you guys even use as a random generator if the speed needs to be 10 GK/s?
nomachine
Full Member
***
Offline

Activity: 868
Merit: 138



View Profile
March 18, 2025, 05:30:35 AM
 #7987

What do you guys even use as a random generator if the speed needs to be 10 GK/s?

Don't worry. You'll be fine with the Xoshiro256plus PRNG, which can handle up to 8 GB/s running on one core of a CPU.

If you manage to exceed 8 GB/s, PM me.  Grin


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

Activity: 462
Merit: 8


View Profile
March 18, 2025, 05:47:07 AM
 #7988

What do you guys even use as a random generator if the speed needs to be 10 GK/s?

Don't worry. You'll be fine with the Xoshiro256plus PRNG, which can handle up to 8 GB/s running on one core of a CPU.

If you manage to exceed 8 GB/s, PM me.  Grin



I'm totally confused now. What's the difference between 10 GK/s vs 10 GB/s? Undecided
nomachine
Full Member
***
Offline

Activity: 868
Merit: 138



View Profile
March 18, 2025, 05:59:53 AM
Last edit: March 18, 2025, 06:13:54 AM by nomachine
 #7989

I'm totally confused now. What's the difference between 10 GK/s vs 10 GB/s? Undecided

10 GB/s refers to the throughput or the rate at which the PRNG can produce random data.
A Bitcoin private key is a 256-bit (32-byte) number. This is the size of the data required to generate one Bitcoin key.

You would need a PRNG or hardware setup that can generate random data at 320 GB/s to achieve 10 GK/s. Grin

P.S. Xoshiro256plus could achieve the required throughput of 320 GB/s with 128 cores. Wink

BTC: bc1qdwnxr7s08xwelpjy3cc52rrxg63xsmagv50fa8
saeedxxx
Jr. Member
*
Offline

Activity: 31
Merit: 7


View Profile
March 18, 2025, 06:53:40 AM
 #7990

10 GB/s refers to the throughput or the rate at which the PRNG can produce random data.
A Bitcoin private key is a 256-bit (32-byte) number. This is the size of the data required to generate one Bitcoin key.

You would need a PRNG or hardware setup that can generate random data at 320 GB/s to achieve 10 GK/s. Grin

P.S. Xoshiro256plus could achieve the required throughput of 320 GB/s with 128 cores. Wink

Do you consider generating an address to be the same as generating a random number? What about the other parts? Hashing, Elliptic curve ,...?
kTimesG
Sr. Member
****
Offline

Activity: 924
Merit: 272


View Profile
March 18, 2025, 08:16:03 AM
 #7991

The goal here is to guess private keys that are already in use. The rule is that there are no rules about what you should use as a random generator.

RTX 4090 is capable of doing 7.0 - 7.1 GK/s to scan a given range, not 4 or 5. Yes, just the keys in a given interval, not the ones with symmetry or endo (in that case, it can surpass 10 GK/s).

What do you guys even use as a random generator if the speed needs to be 10 GK/s?

Zero PRNG. The keys are in sequence, the only difference between hashing keys at random positions, and keys that are in sequence, is that it's much faster to do them in sequence. And there is no risk to hash the same keys twice, because the birthday paradox cannot occur.

Take a sequence of 2**N keys. You need to have a large N.
Split it evenly by number of threads (let's say, for CUDA, we have 16384 blocks * 256 threads each, and each thread does 2048 point additions at every launch).
Compute the first starting key and delta key (that's only two EC point multiplications).
Compute starting keys for all threads, evenly (that's 16384 * 256 EC group additions - very fast).
Run kernel a required amount of times, to scan full range (it only does EC group additions, and hashing of each key).
For symmetry/endo: also compute hashes of X*beta, X*beta2, combined with -Y. No EC math involved. Also, Y does not even need to be computed at all (except once, for the delta jump) - just check both parities for compressed pubKey!

So: only two point multiplications, and a shitload of group additions. This is how one gets to 10 GK/s using just 450 watts.

tmar777
Newbie
*
Offline

Activity: 33
Merit: 0


View Profile
March 18, 2025, 09:22:05 AM
 #7992

The goal here is to guess private keys that are already in use. The rule is that there are no rules about what you should use as a random generator.

RTX 4090 is capable of doing 7.0 - 7.1 GK/s to scan a given range, not 4 or 5. Yes, just the keys in a given interval, not the ones with symmetry or endo (in that case, it can surpass 10 GK/s).

What do you guys even use as a random generator if the speed needs to be 10 GK/s?

Zero PRNG. The keys are in sequence, the only difference between hashing keys at random positions, and keys that are in sequence, is that it's much faster to do them in sequence. And there is no risk to hash the same keys twice, because the birthday paradox cannot occur.

Take a sequence of 2**N keys. You need to have a large N.
Split it evenly by number of threads (let's say, for CUDA, we have 16384 blocks * 256 threads each, and each thread does 2048 point additions at every launch).
Compute the first starting key and delta key (that's only two EC point multiplications).
Compute starting keys for all threads, evenly (that's 16384 * 256 EC group additions - very fast).
Run kernel a required amount of times, to scan full range (it only does EC group additions, and hashing of each key).
For symmetry/endo: also compute hashes of X*beta, X*beta2, combined with -Y. No EC math involved. Also, Y does not even need to be computed at all (except once, for the delta jump) - just check both parities for compressed pubKey!

So: only two point multiplications, and a shitload of group additions. This is how one gets to 10 GK/s using just 450 watts.

Very clever approach! Is this code somewhere available?
I am not an experienced programmer.
Thanks
nomachine
Full Member
***
Offline

Activity: 868
Merit: 138



View Profile
March 18, 2025, 09:24:38 AM
 #7993

10 GB/s refers to the throughput or the rate at which the PRNG can produce random data.
A Bitcoin private key is a 256-bit (32-byte) number. This is the size of the data required to generate one Bitcoin key.

You would need a PRNG or hardware setup that can generate random data at 320 GB/s to achieve 10 GK/s. Grin

P.S. Xoshiro256plus could achieve the required throughput of 320 GB/s with 128 cores. Wink

Do you consider generating an address to be the same as generating a random number? What about the other parts? Hashing, Elliptic curve ,...?

In the code, the Xoshiro256plus PRNG is used to generate random numbers, but it is adjusted to ensure they fall within the valid range using modulo arithmetic.

I tested this with 128 CPU cores. The speed is approximately 936 Mkeys/s with hashing to HASH160.

Without hashing, just capturing the public key, the speed is around 1380 Mkeys/s.

Now, imagine adapting this to the GPU and using AVX2—combining both CPU and GPU power.

An RTX 3060 achieves around 2300 Mkeys/s, and so on.

But yeah, all this is a waste of time on any single GPU. Without 2000 GPUs, none of this can be solved. So, I'm going fishing....

BTC: bc1qdwnxr7s08xwelpjy3cc52rrxg63xsmagv50fa8
nomachine
Full Member
***
Offline

Activity: 868
Merit: 138



View Profile
March 18, 2025, 09:43:18 AM
 #7994

Honestly, you'll get rich faster selling fish than trying to find the key without some new software created by a genius.  Grin

I wish I were a genius. But I'm not. Maybe someone else here is.   Grin

BTC: bc1qdwnxr7s08xwelpjy3cc52rrxg63xsmagv50fa8
kTimesG
Sr. Member
****
Offline

Activity: 924
Merit: 272


View Profile
March 18, 2025, 09:56:01 AM
 #7995

Now, imagine adapting this to the GPU and using AVX2—combining both CPU and GPU power.

An RTX 3060 achieves around 2300 Mkeys/s, and so on.

You are making a wrong assumption here: that you can simply combine GPU output with CPU calculations, or something. The calculations performed by a GPU are internal to the device (no memory transfers between host and device).

If we remove hashing step from the CUDA code, then the speed is like a few times higher. For example, around 25 GK/s just to produce public keys of a sequential range. Even more if we add the sym/endo (but these are derived from a single public key anyway, there is no point doing it on a GPU).

But in in no way you could ever transfer the huge amounts of results back to the CPU world, in order to hash it. You are limited by the memory clock of the GPU, the total memory of the GPU, and the bus width of the PCIe lanes. So the end result is a very lousy speed, grabbing all the actual results a GPU can produce is something that is totally unmanageable by a CPU, no matter how many cores you have.

Or did I understand something wrong?

Akito S. M. Hosana
Jr. Member
*
Offline

Activity: 462
Merit: 8


View Profile
March 18, 2025, 10:09:59 AM
Last edit: March 18, 2025, 11:28:29 AM by Akito S. M. Hosana
 #7996

Wait a minute. If he just said that the 3060 achieves around 2300 Mkeys/s, how much does the 4090 achieve? Does it reach 8000 Mkeys/s on the RTX 4090? 8 GK/s ?  In Cyclone GPU ?

Why won't anyone share the fastest GPU code here? Are you hiding the best code for yourselves?  It's all just empty talk and blah blah blah.. Tongue
kruk01
Newbie
*
Offline

Activity: 5
Merit: 0


View Profile
March 18, 2025, 12:52:42 PM
 #7997

Did anyone check speed of RTX 4070 on KeyHunt??
Denevron
Newbie
*
Offline

Activity: 122
Merit: 0


View Profile
March 18, 2025, 02:00:38 PM
 #7998

Wait a minute. If he just said that the 3060 achieves around 2300 Mkeys/s, how much does the 4090 achieve? Does it reach 8000 Mkeys/s on the RTX 4090? 8 GK/s ?  In Cyclone GPU ?

Why won't anyone share the fastest GPU code here? Are you hiding the best code for yourselves?  It's all just empty talk and blah blah blah.. Tongue

Because no one is obliged to put their work in the public domain for everyone to see. They spend their time and energy on it.
Akito S. M. Hosana
Jr. Member
*
Offline

Activity: 462
Merit: 8


View Profile
March 18, 2025, 02:08:14 PM
Last edit: March 18, 2025, 02:32:51 PM by Akito S. M. Hosana
 #7999

The x-coordinate for puzzle 135 is 76 digits and the y-coordinate is 77 digits?
This may help with searching a sub-range of keys. My terminal process killed running 1E32 but I only have 4GB of RAM.
Try 1E21 and be sure to check the length of the x_values on output they range from 75-77.
Good Luck!



Why are you even saving it to a file? You can do the matching right away.
  Tongue

Code:
from ecdsa import SigningKey, SECP256k1
import ecdsa

# Define Puzzle #135 coordinates
x_given = 9210836494447108270027136741376870869791784014198948301625976867708124077590
y_given = 69440582532487379038177105219556131878098716909078780397935812212458092996863

# Define the target x-coordinate to match exactly
target_x = x_given  # You can set this to any specific value

# Define private key search range
k_lower = 21778071482940061661655974875633165533184  # + 10**26
k_upper = 43556142965880123323311949751266331066367  # - 10**26

def private_key_to_public_xy(private_key):
    """Computes the x and y coordinates of the public key from a given private key."""
    sk = SigningKey.from_secret_exponent(private_key, curve=SECP256k1)
    vk = sk.verifying_key
    # Extract x and y coordinates
    x_coord = int.from_bytes(vk.to_string()[:32], 'big')  # First 32 bytes are x
    y_coord = int.from_bytes(vk.to_string()[32:], 'big')  # Next 32 bytes are y
    return x_coord, y_coord

# Reduce step size to scan more precisely
step_size = int(1e35)  # Smaller step size for finer detail

print("Scanning for private keys that generate x and y values close to the given coordinates...")

for k in range(k_lower, k_upper, step_size):
    x_value, y_value = private_key_to_public_xy(k)
  
    # Check if x_value matches the target_x exactly
    if x_value == target_x:
        print(f"Exact match found! Private Key = {k}, x = {x_value}, y = {y_value}")
        break  # Stop searching after finding the exact match
You will quickly realize that this is useless. Without a kangaroo, you have no chance of finding a match.
dastic
Jr. Member
*
Offline

Activity: 35
Merit: 1


View Profile
March 18, 2025, 02:20:56 PM
 #8000

Code:
--- Final Best Candidate ---
Private Key: 27465881482940061352098229436045164806144 (hex: 00000000000000000000000000000050b7085c1533b415567000000000000000)
x-coordinate: 9210790008149297258455471224225729038493158517165492613256687428790137027105 (hex: 145d1f5582595ead4268d635071da2f683076ec96fee811b878a424f599e7a21)
Difference: 46486297811011571665517151141831298625497033455688369289438917987050485

Still pretty useless
Pages: « 1 ... 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 [400] 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 ... 688 »
  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!