Author

Topic: Bitcoin puzzle transaction ~32 BTC prize to who solves it - page 254. (Read 244044 times)

jr. member
Activity: 67
Merit: 1
I consider base58 to be one of the weakest methods for scanning, it slows down the speed and so on. As for the code, I was interested in this setting, it adds one letter to the base58 private key, such a pyramid, I used to deal with it with binary, but I forgot about it
Code:
#import pyopencl as cl
#import numpy as np
import secp256k1 as ice
from tqdm import tqdm
import random
import base58
import time
length = 1 #12 length is base58 for 66 address
num = 32 #stack world write one number code run 10 time faster running
randStr = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
for x in tqdm(range(1000000)):
 def randomwords(size,chars):
  return ''.join(random.choice(chars) for _ in range(size))
 def cpu_gen(length,num,randStr):
  str_list=[]
  #cpu_start_time = time.time()
  for i in range(num):
   x0 = str_list.append(randomwords(length,randStr))
   x1 = ''.join(str_list)
   ba = base58.b58decode(x1).hex()
   xx = int(ba,16)
   ke = ice.privatekey_loop_h160(0,0,True,xx).hex()
   if "7025b4efb3ff42eb4d6d71fab6b53b4f4967e3dd" in (ke):
    f=open("collision.txt","a")
    f.write(str(xx)+"-"+(ke)+"\n")
    f.close()
    #cpu_end_time = time.time()  # Get the CPU end time
    #timeGap = cpu_end_time - cpu_start_time
    #print(str_list,x1,ba,xx)
   print(x1,ba,xx)
    #return timeGap
 cpu_time = cpu_gen(length,num,randStr)
 #print("CPU Time: {0} s".format(cpu_time))



here is the full speed version of the old code, don't forget this code will never crack 120 ddd why because it works like this it gives it some full number and the last 6 nulls it scans sequentially what gives you at 4m keys per second 3 full keys per second simply put it only scans the last numbers of the private keys
Code:
from timeit import default_timer as timer
import secp256k1 as ice
import random
while True:
 stackk = 1000000
 target = b'\x04n\xa89\xd2(G\xee\x1d\xce;\xfc[\x11\xf6\xcfx[\x06\x82\xdbX\xc3[c\xd14.\xb2!\xc3I\x0c\xd41>@\n\xc0%\xa1\x8fr\xb7\xe4Hz:Ggl\x1e\x97\xbao\x81\x19\xe9smK\x8cL\xe2\xa9'
 number = round(random.getrandbits(24)/stackk)
 public = ice.scalar_multiplication(number*stackk)
 startt = timer()
 checkk = ice.point_sequential_increment(stackk,public)
 #startt = timer()
 if target in checkk:
  f=open("results.txt","a")
  f.write((target).hex()+" -start number for key "+str(number)+"\n")
  f.close()
 print('Key/s:'+str(stackk/(timer()-startt))[:7]+' Time:'+str(timer()-startt)[:3]+' start number for key:'+str(number))

.hex() this slowed down the code because it had to convert the entire chain of 1,000,000 bytes public keys to hex
hero member
Activity: 630
Merit: 731
Bitcoin g33k
I was bored so I made this
Code:
#import pyopencl as cl
#import numpy as np
import secp256k1 as ice
from tqdm import tqdm
import random
import base58
import time
length = 3 #12 length is base58 for 66 address
num = 1 #stack world write one number code run 10 time faster running
randStr = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
for x in tqdm(range(100000000)):
 def randomwords(size,chars):
  return ''.join(random.choice(chars) for _ in range(size))
 def cpu_gen(length,num,randStr):
  str_list=[]
  #cpu_start_time = time.time()
  for i in range(num):
   x0 = str_list.append(randomwords(length,randStr))
   x1 = ''.join(str_list)
   ba = base58.b58decode(x1).hex()
   xx = int(ba,16)
   ke = ice.privatekey_loop_h160(0,0,True,xx).hex()
   if "7025b4efb3ff42eb4d6d71fab6b53b4f4967e3dd" in (ke):
    f=open("collision.txt","a")
    f.write(str(xx)+"-"+(ke)+"\n")
    f.close()
    #cpu_end_time = time.time()  # Get the CPU end time
    #timeGap = cpu_end_time - cpu_start_time
    print(str_list,x1,ba,xx)
    #return timeGap
 cpu_time = cpu_gen(length,num,randStr)
 #print("CPU Time: {0} s".format(cpu_time))

what do you want to tell us? you are doing collission on the hash160 of puzzle 16, what for? please explain and add some info, the code just sitting there alone without information is useless.
jr. member
Activity: 184
Merit: 3
@Andzhig And if we increase one more character of address 16jY7qLJn & 'x' then most binaries are started from '111'

few examples -

16jY7qLJnxLQQRYPX5BLuCtcBs6tvXz8BE   1110000000100110101001101101010100100011010011001000100000110110000   7013536A91A6441B0
16jY7qLJnX9uchnyf26t3QJnsUf78Xdikb   1110010000101000111010000001111110010000001011001101111011100000   E428E81F902CDEE0
16jY7qLJnX9eX8j612s8fnbn6uzR48xjua   1110100000001101111010110011001110101001011001111010000010001111   E80DEB33A967A08F
16jY7qLJnx2EZZumnYFke3GutCrRnHKs1M   111010110100110101001101101010111010101000110011101011001010110000   3AD3536AEA8CEB2B0
16jY7qLJnx2ixrxCnTLSraerkgyB3YYAiT   1110110111111001110011010110000000110101011011011100110000011001   EDF9CD60356DCC19
16jY7qLJnxHBp3dqwV2kzYq1LucfZzgxsH   1110111010111001101010110011001101001101111100100111011100001101   EEB9AB334DF2770D
16jY7qLJnX2cZXJ78wV1ef42e7cLAZJ1Vn   1111111000101000011001011100011011011011111111101100001110000011   FE2865C6DBFEC383
16jY7qLJnxb7CHZyqBP8qca9d51gAjyXQN   1111011100000101000111110010011110110000100100010001001011010100 F7051F27B09112D4


Could this also be some logic?

can you shed more light on this issue

you still don't understand the meaning sense of the hash function? "more light" > what is random? you take a coin and flip it 1 time, it may come up heads or tails. what happens if you flip a coin 10 times in a row, according to the theory of probability, either 10 heads or 10 tails can fall out. if you want to get 5 heads and 5 tails (in any order) you will need to flip a coin in series of 10, 2^10 = 1024 (1024 by 10). to drop all possible combinations from 10 heads in a row to 10 tails in a row, for all tosses in a row 1024 by 10, you need to flip a coin, 1024^1024=... when we start looking at the numbers generated when creating a bitcoin address (any or the address itself or its private key or its 160 hash in any form, hex, dec, bin) we get some parts of this huge number 2^10 = 1024 (1024 by 10) <> 1024^1024=... if you take 3 bits, 2^3=8, 8^8=16777216, then we start looking from 1 to 2^160 what we have in rmd160 hash in hex or dec

someting blablabla
...

1111101110010000010011001101000011011011000101101111100110000011100011011110010 1101011011011101111100000100100110000001010101110011001000000111000100000111101
1111101110010000010011011101010001011110010001010101111001100100101001001001000 1010001010111001000001111010110110000110010101010100001100011111100000110111111
1111101110010000010000101000101001011101000101100110011001100110111110110010000 0011000111101001111110011101100110100010110011110100110011111010000101000000010
1111101110010000010011110100011011001001011101100011111101001110111010000111011 0001001100010000010011000110111010111010110010011001001111010010100000010100001
1111101110010000010011111001001101010000001111001001110001101011110000111011011 0111000010010000111110000100000111010010001000110010111010110111000110000011111
1111101110010000010011000111010011111010010100001000011000001100110010010110001 1010100111011011111111001101001111100000101000101000000110011010110110110111000
1111101110010000010000000110100101101111101110001100000111111001100110111011111 0010000010110100011110101010101010101000100110101100010001111000000000111110001
1111101110010000010000011010010110100011111111100110001101001111001000110101011 0010100010010101100111100010000000110101000001101101111001011101010100101010101


the principle is preserved that vertically and horizontally > 2^3=8, 8^8=16777216


11111011
11111011
11111011
111
111
111
111
111


how many such sections will fit into 2:160 > 1461501637330902918203684832716283019655932542976 / 16777216 = 87112285931760246646623899502532662132736

we will split our 160 bits by 3 bits into sections


111 110 111 001...
111 110 111 001...
111 110 111 001...
111 110 111 001...
111 110 111 001...
111 110 111 001...
111 110 111 001...
111 110 111 001...




11111011 10010000 01001100...
11111011 10010000 01001101...
11111011 10010000 01000010...

11111011 10010000 01001111...
11111011 10010000 01001111...
11111011 10010000 01001100...



of course we can't look further from where they fall from for each row > 16777216^16777216=...

with a horizontal representation, we get 160hesh/8bits = 20 parts.

8 bit 2^8 = 256, 256/20 = 12,8

2^1
1461501637330902918203684832716283019655932542976/12,8 = 114179815416476790484662877555959610910619729920 steps
2^160

256^256=... huge number 3231700607131100730071487668866995196044410266971548403213034542752465513886789 0893197201411522913463688717960921898019494119559150490921095088152386448283120 6308773673009960917501977503896521067960576383840675682767922186426197561618380 9433847617047058164585203630504288757589154106580860755239912393038552191433338 9668342420684974786564569494856176035326322058077805659331026192708460314150258 5928641771167259436037184618573575983511523016459044036976132332872312271256847 1082020972515710172693132346967854258065669793504599726835299863821552516638943 7335543602135433229604645318478604952148193555853611059596230656


16777216/12,8 =  1310720 steps, 2^1 to 2^160, 1461501637330902918203684832716283019655932542976 / 1310720 = 1115037259926531157076785913632418075299020,8

256^256=... huge number / 1115037259926531157076785913632418075299020,8

3231700607131100730071487668866995196044410266971548403213034542752465513886789 0893197201411522913463688717960921898019494119559150490921095088152386448283120 6308773673009960917501977503896521067960576383840675682767922186426197561618380 9433847617047058164585203630504288757589154106580860755239912393038552191433338 9668342420684974786564569494856176035326322058077805659331026192708460314150258 5928641771167259436037184618573575983511523016459044036976132332872312271256847 1082020972515710172693132346967854258065669793504599726835299863821552516638943 7335543602135433229604645318478604952148193555853611059596230656 / 1115037259926531157076785913632418075299020,8 =~

2898289342675449871993098867672270812704240074863894775739976204579701715524344 5980591244385169006487474859731523184059403721470360895667790293862650383583527 8052308371150131655537851476057700318587873331791124614866020470257907019747447 1073288393330068706379548507509145858817458460347497468230852750261100385960260 0438313585964807278885206604007966494048122967982378718514987992376064111499830 2154324000491294951584421374564447449664912755949011836586456519390866498333142 8684237600062725568520340756025511278116285953620110095472786524359663371614992 7614893228693106196480

in general our 2^3=8, 8^8=16777216 fall into their position from the general 256^256=... huge number...

in the first column, theirs fall out all over, in the second one, etc. when presented vertically and similarly when recalculating and converting in horizontal...

instead of constantly flipping a coin, we initiate with Mersenne twister and hash functions (256,160hashs) by initiating the creation of a bitcoin address using a number, we get a fixed result instead of randomly generating a constantly new one (but it randomly takes it from a large number), but this number itself 2^160 or 2^256 is still fixed and falls out of the total huge number that goes into infinity 2^3=8, 8^8=16777216, 16777216^16777216... etc

in general, everyone is picking something and looking for their own ways))

https://youtu.be/AYWoDqQmm1o?t=128
jr. member
Activity: 67
Merit: 1
I was bored so I made this
Code:
#import pyopencl as cl
#import numpy as np
import secp256k1 as ice
from tqdm import tqdm
import random
import base58
import time
length = 3 #12 length is base58 for 66 address
num = 1 #stack world write one number code run 10 time faster running
randStr = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
for x in tqdm(range(100000000)):
 def randomwords(size,chars):
  return ''.join(random.choice(chars) for _ in range(size))
 def cpu_gen(length,num,randStr):
  str_list=[]
  #cpu_start_time = time.time()
  for i in range(num):
   x0 = str_list.append(randomwords(length,randStr))
   x1 = ''.join(str_list)
   ba = base58.b58decode(x1).hex()
   xx = int(ba,16)
   ke = ice.privatekey_loop_h160(0,0,True,xx).hex()
   if "7025b4efb3ff42eb4d6d71fab6b53b4f4967e3dd" in (ke):
    f=open("collision.txt","a")
    f.write(str(xx)+"-"+(ke)+"\n")
    f.close()
    #cpu_end_time = time.time()  # Get the CPU end time
    #timeGap = cpu_end_time - cpu_start_time
    print(str_list,x1,ba,xx)
    #return timeGap
 cpu_time = cpu_gen(length,num,randStr)
 #print("CPU Time: {0} s".format(cpu_time))
hero member
Activity: 630
Merit: 731
Bitcoin g33k
commenting the if-line results in 2.6 seconds, that helped. However I don't see any GPU utilization. I tried raising num to 50 million, but then the process died before it ended. No result, GPU util = 0%

any clues ?
newbie
Activity: 5
Merit: 0
Code:
[...]
num = 50000000
[...]
#cpu_time = cpu_gen(length, num, randStr)
gpu_time = gpu_gen(length, num, randStr)
print("****************************************************")
print("CPU and GPU execution time comparison")
#print("CPU Time: {0} s".format(cpu_time))
print("GPU Time: {0} s".format(gpu_time))

I was curious to see if and how fast the GPU part is done. So I disabled the CPU part in your code and raised num to 50 million. Before starting I opened my Nvidia System app to monitor the load of my GPU. After about 1.5 sec my Nvidia System Monitor showed
Quote
Used Dedicated Memory: 3531 MB (43%)
GPU Utilization: 0%

that means that data was loaded into the dedicated memory, but GPU utilization remains during the complete run at 0% which is unusual. Whenever I run other tools like VanitySearch, BitCrack, KeyHunt-Cuda, etc. GPU utilization is at 100%. I doubt that everything is running at optimum speed inside the GPU part.

Also, when measuring the execution time it takes 39sec. and not only 0.9sec as stated by the program.

Quote
$ time python3 crewchill.py
GPU Time: 0.9311995506286621 s
****************************************************
Random Strings gnerated by GPU
****************************************************
CPU and GPU execution time comparison
GPU Time: 0.9311995506286621 s

real   0m39,594s
user   0m38,058s
sys   0m3,153s

0.9 seconds is too fast to activate gpu.

39s because you print space.

Code:
for i in range(totChar):
if i>1 and i % length==0:print('' ,end='')    <=hide this print and try again
hero member
Activity: 630
Merit: 731
Bitcoin g33k
Code:
[...]
num = 50000000
[...]
#cpu_time = cpu_gen(length, num, randStr)
gpu_time = gpu_gen(length, num, randStr)
print("****************************************************")
print("CPU and GPU execution time comparison")
#print("CPU Time: {0} s".format(cpu_time))
print("GPU Time: {0} s".format(gpu_time))

I was curious to see if and how fast the GPU part is done. So I disabled the CPU part in your code and raised num to 50 million. Before starting I opened my Nvidia System app to monitor the load of my GPU. After about 1.5 sec my Nvidia System Monitor showed
Quote
Used Dedicated Memory: 3531 MB (43%)
GPU Utilization: 0%

that means that data was loaded into the dedicated memory, but GPU utilization remains during the complete run at 0% which is unusual. Whenever I run other tools like VanitySearch, BitCrack, KeyHunt-Cuda, etc. GPU utilization is at 100%. I doubt that everything is running at optimum speed inside the GPU part.

Also, when measuring the execution time it takes 39sec. and not only 0.9sec as stated by the program.

Quote
$ time python3 crewchill.py
GPU Time: 0.9311995506286621 s
****************************************************
Random Strings gnerated by GPU
****************************************************
CPU and GPU execution time comparison
GPU Time: 0.9311995506286621 s

real   0m39,594s
user   0m38,058s
sys   0m3,153s
newbie
Activity: 5
Merit: 0
Code:
import string
import random
import time
import numpy as np
import pyopencl as cl 
import math   
# You can input here
length = 17  #hex length for 66
num = 1000000
randStr = "abcdefghijklmnopqrstuvwxyz0123456789"

# end of Input


def randomwords(size, chars):
return ''.join(random.choice(chars) for _ in range(size))

def cpu_gen(length, num, randStr):
str_list=[]
cpu_start_time = time.time()  # Get the CPU start time
for i in range(num):
str_list.append(randomwords(length, randStr))
cpu_end_time = time.time()  # Get the CPU end time
timeGap = cpu_end_time - cpu_start_time
print("CPU Time: {0} s".format(timeGap))
print("****************************************************")
print("Random Strings gnerated by CPU")
#print(str_list)
return timeGap

def gpu_gen(length, num, randStr):
#define random basic letters
# radom base length
totChar = length * num
randomIndex = len(randStr)
# parameters of random generation function
# right_index = np.array.randint(randomIndex, size= totChar)
right_index = np.empty(totChar, dtype=str)
ranss = np.array((randStr,))

rand_seed = math.floor(time.time()) % 20
# define the contect to use gpu
ctx = cl.create_some_context(0)
queue = cl.CommandQueue(ctx)
# define flag of the opencl
mf = cl.mem_flags

rand_buff_1 = cl.Buffer(ctx, mf.READ_ONLY | mf.COPY_HOST_PTR, hostbuf=right_index)
rand_str = cl.Buffer(ctx, mf.READ_ONLY | mf.COPY_HOST_PTR, hostbuf=ranss)
program = cl.Program(ctx, """
int mpow(int n, int p){
int s =1;
for(int i=1; i<=p; ++i){
s = s * n;
}
return s;
}
int myRand(int next){
next = ((next * (next % 3) )/50)% 100;
return next;
}
int mabs(int a){
if (a<0){
a = 0-a;
}
return a;
}
int myRandInRange(int next, int min, int max){
int temp;
if (max < min){
temp = max;
max = min;
min = temp;
}
return myRand(next) % (max + 1 - min) + min;
}
__kernel void RandGen(
    __global int *rand_out_buff, __global char *ss, int rand_buff, int seed_buff)
{
 
  int gid = get_global_id(0);

  int temp = mpow(gid, seed_buff) + seed_buff % (gid+1);
 
  int input = myRandInRange(temp, gid * seed_buff, gid * (gid % seed_buff)) + seed_buff;
  input  = mabs(input);
  rand_out_buff[gid] =ss[(input % rand_buff)*4];
}
""").build()

rand_out_buff = cl.Buffer(ctx, mf.WRITE_ONLY, right_index.nbytes)
gpu_start_time = time.time()
event = program.RandGen(queue, right_index.shape, None, rand_out_buff, rand_str, np.int32(randomIndex), np.int32(rand_seed))
event.wait()
rand_list = np.empty_like(right_index)
cl.enqueue_copy(queue, rand_list, rand_out_buff)
gpu_end_time = time.time()  # Get the GPU end time
timeGap = gpu_end_time - gpu_start_time
print("GPU Time: {0} s".format(timeGap))
for i in range(totChar):
if i>1 and i % length==0:print('' ,end='')
#print(rand_list[i], end='')
#print('')
print("****************************************************")
print("Random Strings gnerated by GPU")
return timeGap

cpu_time = cpu_gen(length, num, randStr)
gpu_time = gpu_gen(length, num, randStr)
print("****************************************************")
print("CPU and GPU execution time comparison")
print("CPU Time: {0} s".format(cpu_time))
print("GPU Time: {0} s".format(gpu_time))


 compile this random generator with  ice.secp256k1 to increase speed.
copper member
Activity: 1330
Merit: 899
🖤😏
for those still doing puzzle:) here is WIF 1-65 compressed and uncompressed hope this helps. if so tip me up.

i give up now:(
Why do you have so many uncompressed private keys? Don't you know puzzle transactions use compressed addresses only? Searching for unc addresses and even storing them is a waste of time.
newbie
Activity: 9
Merit: 0
@Andzhig And if we increase one more character of address 16jY7qLJn & 'x' then most binaries are started from '111'

few examples -

16jY7qLJnxLQQRYPX5BLuCtcBs6tvXz8BE   1110000000100110101001101101010100100011010011001000100000110110000   7013536A91A6441B0
16jY7qLJnX9uchnyf26t3QJnsUf78Xdikb   1110010000101000111010000001111110010000001011001101111011100000   E428E81F902CDEE0
16jY7qLJnX9eX8j612s8fnbn6uzR48xjua   1110100000001101111010110011001110101001011001111010000010001111   E80DEB33A967A08F
16jY7qLJnx2EZZumnYFke3GutCrRnHKs1M   111010110100110101001101101010111010101000110011101011001010110000   3AD3536AEA8CEB2B0
16jY7qLJnx2ixrxCnTLSraerkgyB3YYAiT   1110110111111001110011010110000000110101011011011100110000011001   EDF9CD60356DCC19
16jY7qLJnxHBp3dqwV2kzYq1LucfZzgxsH   1110111010111001101010110011001101001101111100100111011100001101   EEB9AB334DF2770D
16jY7qLJnX2cZXJ78wV1ef42e7cLAZJ1Vn   1111111000101000011001011100011011011011111111101100001110000011   FE2865C6DBFEC383
16jY7qLJnxb7CHZyqBP8qca9d51gAjyXQN   1111011100000101000111110010011110110000100100010001001011010100 F7051F27B09112D4


Could this also be some logic?

can you shed more light on this issue

5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU73sVHnoWn
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreB1FQ8BZ          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU74sHUHy8S
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreBR6zCMU          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU76rnZwVdz
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreBbMaQX1          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU77MfhviY5
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreD437Nay          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU7Dq8Au4Pv
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreGAk6qMH          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU7Tmu6qHxS
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreKD614Nu          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU7hDgvu64y
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsrebwE4gQs          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU8xvGK1zpm
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsrf5KgGj3x          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFUB3vfDKcxZ
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsrfAeGjhSe          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFUBTL67V6dE
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsrgQwUiKuq          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFUGxXgtm63M
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsrjPKxKjY2          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFUW5RtS2JN1
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsrpKArkUBq          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFUspniiQZds
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsrzgDWpY2w          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFVfZyiN5iEG
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEssYRrMCmpZ          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFY5iMZbuRxj
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEstNN85F5Mw          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFbjHrFMWzJp
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsurZXJixkP          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFiHkRsp99uC
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsyJco3YM5Z          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFyWkjT5fywW
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEt4deKgfY59          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rGP2jMrxCfX3
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEtMbVN6VkAe          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rHfuE2Tg4nJW
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEtuQQfBxcrT          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rL6JJvw6XUry
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEubWMgPbZSY          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rP9Ja2dhtxoh
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEw6QwynKpQi          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rVkthFNsQ6i7
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kF2CYofJGeWz          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rtHyNcFoApRd
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kFD3cZqtqDcV          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7siAXycwkwRQg
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kFRPm5LvgRsh          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7tefTXkqGMNis
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kFzbD1oFi4uP          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7wBBz2KJQdASx
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kH9V2Fos6zmj          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M82GSgY8p5EkUe
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kJsZaUF8qWJH          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M89tAnjFUUDRtJ
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kRBGjQsHeT9B          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M8diLSC5MyERoW
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kbqYM38cziku          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M9SmFMSCA4jQRW
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kmidEaBAp5Ee          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9MACNivtz8yMYTd
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3mU31M4JzEsry          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9MDGKrXXQL647jj
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3nfnAFgUF9hzZ          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9MJaAKqns7PN9Ra
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3ohPvCS9khB9n          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9MP7J9oTbu6KuRr
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3sXU9b1haJkT8          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9Mg1Upu7eJAtiDr
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB43UMHpcm3f8ag          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9NRuiZFAX6XciCX
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB4BW8dsj4c9a6g          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9P3MahktLW5315v
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB4htJVTbuNiGA1          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9RMTSCcQzX3EjMZ
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB6ikvy2duGEu2D          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9aFJuCJDo5F6Jm7
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB84u9Cbd5fwdR6          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9gCD9CBomewdcUD
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEBCKvkRRBUtpNdX          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9zzYEemjCVJ3vo9
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEBRhv6ue8TGcLBe          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgdB23bP5LsYN8Krv7
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEBqQAxxEAdgvLgN          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgdCpdGyxm7PWoNQdr
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEC51Sd31pLUWx3i          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgdDrgx63tbte4scLA
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEDg6uLuezrDySzX          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgdLwb42sQhwTBJDnG
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEHAPod6LNRWAZBf          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgdcLTenJYVVVTRzxN
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nELpQuZ1gQQYrZ1J          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgdtUGWxHzvDi28MfR
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEXxDuJBiUbiVA9e          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgejcjwprJ4MAYLw8e
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEiGwVv6mtxTe9ip          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgfXBMYdNVA4EjUMzg
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nFzFBD1zxALEsLqK          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgm9fa43QnU2CpULaK
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nHtVssx1RqUdSdVj          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjguYJTZsntce5oQQrh
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nL8eoQu4hLSpXwa4          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjh5SmqrUoK2mhwSYFV
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nNxiLZixsgdChZjz          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjhHvuTMSDchRp5hktc
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4ngeHA7b4zPaJ3ga1          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjidyYKE5NcJQZYvknA
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nu8VixoNGBCuaLCm          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjjb65nDHeqyjiBaJXv
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4pKxzyzRYGJZF2CUQ          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjqtiAvYTJzYEmqup7b
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4qGMGYDHfP5bxwCnj          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjv2kTamEYQT9BNC7o1
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4vCkbw1TKC5xefUVS          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYkHpsTBP19HvTFqiU6i  
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip55U8L18x1xXBdqu84          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYkzijLsc5qE43yZ5eLV
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip59tGc46u8joQDakRT          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYmLDHsih379uP9zbHSD
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip5obPQhDC8LRVrSnwc          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYpCemuaUp7NigjvtJug
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip78q4h8QmfB6MwMuF1          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYv5Z9J7hv7VYYN3XL3Y
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip9SbPnb1C74XPPH9cU          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qZ6FxoaD5r1kYegmtbaT
5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ipCnYRNeQuRFKarWVVs          KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qZM21gaY8WN2CdwnTG57

for those still doing puzzle:) here is WIF 1-65 compressed and uncompressed hope this helps. if so tip me up bc1q7h54ddkhy7c2fxqvhg34jxejpq89e8k483632a

i give up now:(
newbie
Activity: 9
Merit: 0
For half a year I use my cpu to scan for the #67 puzzle. I am 0.000039% scanned addresses of the range ;( A lifetime more to wait. I wonder how many supercomputers out there scan the bitcoin chain for these keys every minute. If you remember the pipeline hack, the FBI had already the privkey for the address used and it was not obtain during a hack or seize.
But Why the 67th puzzle ?.. why not the easier one? I mean the amount of private keys in 66 is unbelievably enormous already .. why go for the double of that gigantic range?
because someone is more likely to find 66 before 67 he doesnt wanna spend a shit ton of time on 66 and someone find it before him so he does 67 by time someone does find 66 he will be at head start( to most people anyway ) thats what i think at least

This analogy may seem smart if we're dealing with normal amounts like million or even billions. But when talking about tens of million trillions, that "head start" gets engulfed to almost nothing. The human mind can't grasp how extremely improbable it is to find ONE address among 73 million trillion ones, let alone double that digit. That being said, why are we still searching?
Because luck and coincidence do happen. But that's just that, you don't need to try outsmarting your odds in order to land on the key. The only factor you need is luck, and you're surely not doing yourself any more favours by doubling the odds against yourself, aka: puzz 67

and im always tryna think of a way to explain that to people you just cant people dont understand cuz its that many numbers lol people who dont know much about btc that is. bitcoins security is literally based on how many numbers it is
sr. member
Activity: 346
Merit: 250
Well in essence, lets say he eventually reaches 0.005 percent when someone hit's 66 on a lucky hit in a year and a bit. if he has large saved segments of what he has searched he can go to tdd/ttd can't remember and say, here are the ranges checked and get his according percentage as was done with 64 when it started. You move from private to a team split. It's the very long game to play. Has it's pro's and cons. 
member
Activity: 185
Merit: 15
For half a year I use my cpu to scan for the #67 puzzle. I am 0.000039% scanned addresses of the range ;( A lifetime more to wait. I wonder how many supercomputers out there scan the bitcoin chain for these keys every minute. If you remember the pipeline hack, the FBI had already the privkey for the address used and it was not obtain during a hack or seize.
But Why the 67th puzzle ?.. why not the easier one? I mean the amount of private keys in 66 is unbelievably enormous already .. why go for the double of that gigantic range?
because someone is more likely to find 66 before 67 he doesnt wanna spend a shit ton of time on 66 and someone find it before him so he does 67 by time someone does find 66 he will be at head start( to most people anyway ) thats what i think at least

This analogy may seem smart if we're dealing with normal amounts like million or even billions. But when talking about tens of million trillions, that "head start" gets engulfed to almost nothing. The human mind can't grasp how extremely improbable it is to find ONE address among 73 million trillion ones, let alone double that digit. That being said, why are we still searching?
Because luck and coincidence do happen. But that's just that, you don't need to try outsmarting your odds in order to land on the key. The only factor you need is luck, and you're surely not doing yourself any more favours by doubling the odds against yourself, aka: puzz 67
newbie
Activity: 9
Merit: 0
For half a year I use my cpu to scan for the #67 puzzle. I am 0.000039% scanned addresses of the range ;( A lifetime more to wait. I wonder how many supercomputers out there scan the bitcoin chain for these keys every minute. If you remember the pipeline hack, the FBI had already the privkey for the address used and it was not obtain during a hack or seize.
But Why the 67th puzzle ?.. why not the easier one? I mean the amount of private keys in 66 is unbelievably enormous already .. why go for the double of that gigantic range?
because someone is more likely to find 66 before 67 he doesnt wanna spend a shit ton of time on 66 and someone find it before him so he does 67 by time someone does find 66 he will be at head start( to most people anyway ) thats what i think at least
hero member
Activity: 630
Merit: 731
Bitcoin g33k
Here's an example for python. The program takes the hash160 value as the first argument of the command line call. It then uses this value to generate both the Bitcoin and Dogecoin addresses by using the same value with different version bytes and Base58Check encoding rules.

Code:
#/usr/bin/env python3
# ./hash160_to_address.py
# by citb0in, 2023/Jan/19
import sys
import hashlib
import base58

# hash160
h = sys.argv[1]

# version byte (for Bitcoin "00", for Dogecoin it's "1E")
version_btc = b"\x00"
version_doge = b"\x1E"

# hash160 + version byte
h_btc = version_btc + bytes.fromhex(h)
h_doge = version_doge + bytes.fromhex(h)

# double-sha256
r_btc = hashlib.sha256(h_btc).digest()
r_doge = hashlib.sha256(h_doge).digest()
r_btc = hashlib.sha256(r_btc).digest()
r_doge = hashlib.sha256(r_doge).digest()

# first 4 bytes of sha256(sha256)
checksum_btc = r_btc[:4]
checksum_doge = r_doge[:4]

# hash160 + version byte + checksum
address_btc = h_btc + checksum_btc
address_doge = h_doge + checksum_doge

# base58 conversion to get the address
address_btc = base58.b58encode(address_btc)
address_doge = base58.b58encode(address_doge)

print(f"\n\nHash160 = {h}")
print(f"Bitcoin (BTC) address = {address_btc.decode()}")
print(f"Dogecoin (DOGE) address = {address_doge.decode()}")

Code:
$ python3 hash160_to_address.py 20d45a6a762535700ce9e0b216e31994335db8a5 
Quote
Hash160 = 20d45a6a762535700ce9e0b216e31994335db8a5
Bitcoin (BTC) address = 13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so
Dogecoin (DOGE) address = D88gYxMEoumtZSJAC9mwa2EWfm6g3uocon

Now for additional example take the hash160 of puzzle #67 which is 739437bb3dd6d1983e66629c5f08c70e52769371 and calculate the DOGE address:
Code:
$ python3 hash160_to_address.py 739437bb3dd6d1983e66629c5f08c70e52769371
Quote
Hash160 = 739437bb3dd6d1983e66629c5f08c70e52769371
Bitcoin (BTC) address = 1BY8GQbnueYofwSuFAT3USAhGjPrkxDdW9
Dogecoin (DOGE) address = DFgDofYSD4T6CwdVykSc2CLJ9s8A6Bqt97

If you or someone else send some coins to DFgDofYSD4T6CwdVykSc2CLJ9s8A6Bqt97 you will see the same effect.

EDIT:
You can find an extended version of this tool on my github repository. It will also show the native segwit (bech32) address of the hash. I have added also Litecoin as an additional example because I know that Litecoin supports bech32, too. I don't give a **** about shitcoins, it should just serve as programming example to see how this works.

Code:
$ python3 ./hash160_to_coin_addresses.py 20d45a6a762535700ce9e0b216e31994335db8a5
Quote
Hash160 = 20d45a6a762535700ce9e0b216e31994335db8a5
Bitcoin (BTC) address = 13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so
Bitcoin (BTC) bech32 address = bc1qyr2956nky56hqr8fuzepdccejse4mw994lyftn
Dogecoin (DOGE) address = D88gYxMEoumtZSJAC9mwa2EWfm6g3uocon
Litecoin (LTC) address = LNDYGuiRbA7fHEoidhmgJH8fzqjeseATsU
Litecoin (LTC) bech32 address = ltc1qyr2956nky56hqr8fuzepdccejse4mw993r7dnr
legendary
Activity: 2646
Merit: 6681
Self-proclaimed Genius
-snip-
I am really suprised of the probability that this can happen.... same key that have a Bitcoin and DOGE addresses both with balance ? it could be the puzzle owner DOGE account ? or maybe that key is derived from some simple schema ??
what do you think ?
If you see any funded address, that doesn't mean that someone knows its private key.
That Dogecoin address is one example, someone just derived the dogecoin address from p66's address then sent dogecoins to it.

In your link, see that "Public Key Hash (Hash 160)" below the address?
That's basically the address when decoded with base58 without the network bytes and checksum.
Simply add any altcoin's network bytes, etc. and encode it with base58check to get the equivalent altcoin address.
hero member
Activity: 862
Merit: 662
The hash rmd160 is the same for almost all chains, yes you can derive the doge address from it the only change is the prefix byte.
newbie
Activity: 5
Merit: 0
Hi everybody,
maybe someone already noticed.. not sure
PUZZLE 66.....
Looking at address "https://privatekeys.pw/address/bitcoin/13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so" I just realized that there is a DOGE coin address  with A BALANCE that has the SAME private key !!!
Does this means that the owner of DOGE address could theoretically take the Bitcoin in puzzle#66 ??
.. in addition...
I am really suprised of the probability that this can happen.... same key that have a Bitcoin and DOGE addresses both with balance ? it could be the puzzle owner DOGE account ? or maybe that key is derived from some simple schema ??
what do you think ?
I tried to search in google for that DOGE address but no relevant info found.
full member
Activity: 1232
Merit: 242
Shooters Shoot...
yes, there is, if you really think automated random created things are really random, then think twice.

Ok, I will ... hold on a second ... finished.

Now, please tell me what the weather in South Florida will be on 2024/Feb/29 at 02:19 PM.
Warmer than what it will be where I am lol...
hero member
Activity: 630
Merit: 731
Bitcoin g33k
yes, there is, if you really think automated random created things are really random, then think twice.

Ok, I will ... hold on a second ... finished.

Now, please tell me what the weather in South Florida will be on 2024/Feb/29 at 02:19 PM.
Jump to: