Author

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

legendary
Activity: 3388
Merit: 3154
1 - Convert the private key from hex to bytes
00000000000000000000000000000000000000000000000354d62e5f7a0d2eb2
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03T\xd6._z\r.\xb2'

...

8 - Extended RIPEMD-160 Hash
b'\x00 \xd4Zjv%3BR\xc81\x8a\x87\xed053\xc1\xc7\xbb'
0020d45a6a7625334252c8318a87ed303533c1c7bb

...

13 - Convert the bytes to a base58-encoded Bitcoin address
13zb1hQbWVnN3ag9GNS2vCraT8PQJDjVdr

provide an alternative, more straightforward method, if available instead of this ?

Your process to generate the address from the hex private key is right, but when you are attacking private keys with brute force there are tons of ways to do it.

People do it the same way as you because they bruteforce the Hex Pk, ...000001, ....000002, etc. But if you want to know an alternate method let me explain one of my favorites:

You can start from the Address: 13zb1hQbWVnN3ag9GNS2vCraT8PQJDjVdr and get the RIPEMD-160 (20d45a6a7625334252c8318a87ed303533c1c7bb).

Sites like privatekeys.pw provide that Hash 160 as you can see in the next link: https://privatekeys.pw/address/bitcoin/13zb1hQbWVnN3ag9GNS2vCraT8PQJDjVdr

And if you want to get that RIPEMD-160 code by yourself you can use the next python script.

Code:
python3 -c "import binascii, hashlib, base58; hash160 = binascii.hexlify(base58.b58decode_check(b'13zb1hQbWVnN3ag9GNS2vCraT8PQJDjVdr')).decode()[2:]; print(hash160)"

Once you have the hash160 you can use tools like brainflayer to get the Private key from the hash160.

I want to be clear, is not the best way but is just a different way to do it.
copper member
Activity: 1330
Merit: 899
🖤😏

I see a not very smart person who does not understand either mathematics or modular mathematics, but with all this with a crown on his head. your every post highlights your low level of intelligence.
What took you so long to realize this? I have been posting for more than 8, 9 months, and you just figured I'm  uneducated with no knowledge of math and EC. 🤣

Off topic,  but still. Guys, where diagran is trying to take you does not make any sense.

Not really off topic, if someone like me is misguided and is dragging others on to the wrong path, it's good for all to warn people. I just wonder who are these Guys you mentioned? Are they mentally retarded to a level where they can't figure out on their own that I'm useless and my posts are all garbage? 


there is no difference to look for 1 key in range 2^130 or 4 in the range 2^128. in terms of the time spent by the currently known tools, you will spend the same amount of time.
The post you quoted has nothing to do with what you said, I don't know where you got 2^130 or 2^128, 1 key, 4 key, what are those?

You see, usually when I communicate with smart people, they immediately realize I know nothing, and since they are smart with high levels of intelligence, they'd try  to correct my mistakes and then teach me the right stuff, because they enjoy teaching other people, it also increases their knowledge after sharing what they already know. But a butthurt who thinks he knows better than everyone else hides behind a newbie account, insulting others, this is their joy, it also increases their butthurt pain and burn. ( this is how the universe works, action=reaction, share knowledge, gain knowledge, share/help with money, gain more money, spread hatred, absorb hatred ),



Where was I wrong exactly, implying my lack of understanding about math/ECC? Show me, then lets fix my mistakes together.

~digaran
hero member
Activity: 630
Merit: 731
Bitcoin g33k
offtopic
member
Activity: 282
Merit: 20
the right steps towerds the goal
1 - Convert the private key from hex to bytes
00000000000000000000000000000000000000000000000354d62e5f7a0d2eb2
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03T\xd6._z\r.\xb2'

2 - Create a signing key from the private key bytes using the SECP256k1 elliptic curve


3 - Get the corresponding public key
02b21a6b1590b145841a0dabbe71ea01e29ed60f0e468cff36445a9c92eb3a6375
VerifyingKey.from_string(b'\x02\xb2\x1ak\x15\x90\xb1E\x84\x1a\r\xab\xbeq\xea\x01\xe2\x9e\xd6\x0f\x0eF\x8c\xff6DZ\x9c\x92\xeb:cu', SECP256k1, sha1)

4 - Serialize the public key in compressed format (33 bytes)
b'\x02\xb2\x1ak\x15\x90\xb1E\x84\x1a\r\xab\xbeq\xea\x01\xe2\x9e\xd6\x0f\x0eF\x8c\xff6DZ\x9c\x92\xeb:cu'
02b21a6b1590b145841a0dabbe71ea01e29ed60f0e468cff36445a9c92eb3a6375

5 - Calculate the SHA-256 hash of the public key
b'\t\xb4\x87?D\'I\xef>\x86\xc7\x1d\x92\x86\xb1"\xa9\xdd\xf9v%\xa0\x03X\x88\xfb\x96%F\x0e\'\x16'
09b4873f442749ef3e86c71d9286b122a9ddf97625a0035888fb9625460e2716

6 - Calculate the RIPEMD-160 hash of the SHA-256 hash

b' \xd4Zjv%3BR\xc81\x8a\x87\xed053\xc1\xc7\xbb'
20d45a6a7625334252c8318a87ed303533c1c7bb

7 - Add the version byte (0x00 for mainnet) to the RIPEMD-160 hash
b'\x00'

8 - Extended RIPEMD-160 Hash
b'\x00 \xd4Zjv%3BR\xc81\x8a\x87\xed053\xc1\xc7\xbb'
0020d45a6a7625334252c8318a87ed303533c1c7bb

9 - Calculate the double SHA-256 checksum
b'\x01\x02l\xf90\xf6N\x8f\xeb\xca\xc8\xc2\x15\xd9Q\xb8i))\xb0\xce:\xb1\xba\x9e\xa4\xa1\x07_\x05\xe2\xa2'
b'\x01\x02l\xf9'

10 - Checksum: 01026cf9

11 - Append the checksum to the extended RIPEMD-160 hash
b'\x00 \xd4Zjv%3BR\xc81\x8a\x87\xed053\xc1\xc7\xbb\x01\x02l\xf9'
0020d45a6a7625334252c8318a87ed303533c1c7bb01026cf9

12 - Address (with checksum)
0020d45a6a7625334252c8318a87ed303533c1c7bb01026cf9

13 - Convert the bytes to a base58-encoded Bitcoin address
13zb1hQbWVnN3ag9GNS2vCraT8PQJDjVdr

provide an alternative, more straightforward method, if available instead of this ?
member
Activity: 503
Merit: 38
newbie
Activity: 7
Merit: 0
newbie
Activity: 10
Merit: 0


Now ignore whatever you see before the dot "." Just look at whatever you see after the dot.😉 chop chop and good luck.
I see a not very smart person who does not understand either mathematics or modular mathematics, but with all this with a crown on his head. your every post highlights your low level of intelligence.
Ps
it was offtopic. but still. Guys, where diagran is trying to take you does not make any sense. for subtraction, division, multiplication, etc. even if it reduces the search range for a key, it proportionally increases the number of searched keys. it all makes no sense.
there is no difference to look for 1 key in range 2^130 or 4 in the range 2^128. in terms of the time spent by the currently known tools, you will spend the same amount of time.
member
Activity: 503
Merit: 38
copper member
Activity: 1330
Merit: 899
🖤😏
It would be great, also note that you should calculate the result private key mod n, your current script returns the correct public key but not private key.

Only thing it needs is to accept public key as target.
Amazing coding btw.👍, it's really joyful to see people are using their brains rather than giving up and quitting.
member
Activity: 239
Merit: 53
New ideas will be criticized and then admired.
I'm not sure if it helps, but for 130 bits, we only need to divide the point by 2, 101 times. The issue is figuring out where to subtract 1 to avoid floating-point errors.
the problem of dividing by 2 is that you need 2**101 pubkeys (according to your approach).
update:
dividing by 3 you need 3**14 pubkeys, to reduce puzzle130 down to the equivalent of puzzle 105.

So reducing 25 bits, if dividing by 2 we need 2^25 public keys with 1 one of them to be the correct result, but dividing by 3 we need 3^14 keys, one of them would be correct, how did you calculate it?

I hope your scrip saves the results to a file, because I only see print, are we supposed to print thousands of keys on screen? 😅

He says he wants to divide 101 times, and since he doesn't know the pk he needs to do pk/2 and ( pk-1)/2 which results in 2x2x2x2.... 101 times (2**101)
by 3 is 3x3x3x3.... 14 times (3**14) equivalent to puzzle 105
Ok, can you tell us where to put our target public key in your script, where to put the number of times etc, please?

This script is just theory, not done to create massive continuous divisions, when I have time I'll do it.

copper member
Activity: 1330
Merit: 899
🖤😏
I'm not sure if it helps, but for 130 bits, we only need to divide the point by 2, 101 times. The issue is figuring out where to subtract 1 to avoid floating-point errors.
the problem of dividing by 2 is that you need 2**101 pubkeys (according to your approach).
update:
dividing by 3 you need 3**14 pubkeys, to reduce puzzle130 down to the equivalent of puzzle 105.

So reducing 25 bits, if dividing by 2 we need 2^25 public keys with 1 one of them to be the correct result, but dividing by 3 we need 3^14 keys, one of them would be correct, how did you calculate it?

I hope your scrip saves the results to a file, because I only see print, are we supposed to print thousands of keys on screen? 😅

He says he wants to divide 101 times, and since he doesn't know the pk he needs to do pk/2 and ( pk-1)/2 which results in 2x2x2x2.... 101 times (2**101)
by 3 is 3x3x3x3.... 14 times (3**14) equivalent to puzzle 105
Ok, can you tell us where to put our target public key in your script, where to put the number of times etc, please?
member
Activity: 239
Merit: 53
New ideas will be criticized and then admired.
I'm not sure if it helps, but for 130 bits, we only need to divide the point by 2, 101 times. The issue is figuring out where to subtract 1 to avoid floating-point errors.
the problem of dividing by 2 is that you need 2**101 pubkeys (according to your approach).
update:
dividing by 3 you need 3**14 pubkeys, to reduce puzzle130 down to the equivalent of puzzle 105.

So reducing 25 bits, if dividing by 2 we need 2^25 public keys with 1 one of them to be the correct result, but dividing by 3 we need 3^14 keys, one of them would be correct, how did you calculate it?

I hope your scrip saves the results to a file, because I only see print, are we supposed to print thousands of keys on screen? 😅

He says he wants to divide 101 times, and since he doesn't know the pk he needs to do pk/2 and ( pk-1)/2 which results in 2x2x2x2.... 101 times (2**101)
by 3 is 3x3x3x3.... 14 times (3**14) equivalent to puzzle 105
copper member
Activity: 1330
Merit: 899
🖤😏
I'm not sure if it helps, but for 130 bits, we only need to divide the point by 2, 101 times. The issue is figuring out where to subtract 1 to avoid floating-point errors.
the problem of dividing by 2 is that you need 2**101 pubkeys (according to your approach).
update:
dividing by 3 you need 3**14 pubkeys, to reduce puzzle130 down to the equivalent of puzzle 105.

So reducing 25 bits, if dividing by 2 we need 2^25 public keys with 1 one of them to be the correct result, but dividing by 3 we need 3^14 keys, one of them would be correct, how did you calculate it?

I hope your scrip saves the results to a file, because I only see print, are we supposed to print thousands of keys on screen? 😅  save us from this abomination!
member
Activity: 239
Merit: 53
New ideas will be criticized and then admired.
I'm not sure if it helps, but for 130 bits, we only need to divide the point by 2, 101 times. The issue is figuring out where to subtract 1 to avoid floating-point errors.
the problem of dividing by 2 is that you need 2**101 pubkeys (according to your approach).
update:
dividing by 3 you need 3**14 pubkeys, to reduce puzzle130 down to the equivalent of puzzle 105.
jr. member
Activity: 69
Merit: 2
I'm not sure if it helps, but for 130 bits, we only need to divide the point by 2, 101 times. The issue is figuring out where to subtract 1 to avoid floating-point errors.
jr. member
Activity: 69
Merit: 2

Why do you want to apply to a number that is division of 3? 150/3= 50

I took the number 150 just as an example.

For example Puzzle #65:

target = 30568377312064202855
target_2 = 30568377312064202855+1 #= 30568377312064202856

t1= target/3 #= 10189459104021400951.666666666666667
t2= target_2/3 #= 10189459104021400952

r= t1+t2 # = 20378918208042801903.666666666666667

30568377312064202855 − 20378918208042801903.666666666666667 = 10189459104021400951.333333333333333


I cannot understand how this method will help in solving the puzzle if the "target" is unknown to us.

There are only three ways to divide any number by 3.
I'll call them A B C.

A= the normal division of the number.
B= applying my script
C= adding + 1 and dividing.
Since you don't know what the pk is, you must apply A, B, C and one of the three will always be correct.
So you want to apply another division of 3 to the result.
you will get 9 pub one of them will be correct.
and so on..

3**X is the final amount of pubkeys where X is the number of times to divide the result (and of that result only one will be correct)


I still can't understand where you're going with this.
copper member
Activity: 1330
Merit: 899
🖤😏
5/3 = 1.66666666666666666666666666666666666666666666666666666666666666666666666666666 6666666666666666666666666666666666666666666666666666666666666666666666666666666 6666666666666666666666666666666666666666667

Puzzle 65/3 =
10189459104021400951.6666666666666666666666666666666666666666666666666666666666 6666666666666666666666666666666666666666666666666666666666666666666666666666666 6666666666666666666666666666666666666666667

Puzzle 65/333 =

91796928865057666.2312312312312312312312312312312312312312312312312312312312312 3123123123123123123123123123123123123123123123123123123123123123123123123123123 1231231231231231231231231231231231231231231

5/333 =
0.01501501501501501501501501501501501501501501501501501501501501501501501501501 5015015015015015015015015015015015015015015015015015015015015015015015015015015 015015015015015015015015015015015015015015015

Puzzle 65/9 =
3396486368007133650.55555555555555555555555555555555555555555555555555555555555 5555555555555555555555555555555555555555555555555555555555555555555555555555555 5555555555555555555555555555555555555555556

5/9 =
0.55555555555555555555555555555555555555555555555555555555555555555555555555555 5555555555555555555555555555555555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555556

5/27 =
0.18518518518518518518518518518518518518518518518518518518518518518518518518518 5185185185185185185185185185185185185185185185185185185185185185185185185185185 18518518518518518518518518518518518518518519

Puzzle 65/27 =
1132162122669044550.18518518518518518518518518518518518518518518518518518518518 5185185185185185185185185185185185185185185185185185185185185185185185185185185 1851851851851851851851851851851851851851852

Puzzle 65/999 =
30598976288352555.4104104104104104104104104104104104104104104104104104104104104 1041041041041041041041041041041041041041041041041041041041041041041041041041041 041041041041041041041041041041041041041041

5/999 =
0.00500500500500500500500500500500500500500500500500500500500500500500500500500 5005005005005005005005005005005005005005005005005005005005005005005005005005005 005005005005005005005005005005005005005005005

Puzzle 65/666 =
45898464432528833.1156156156156156156156156156156156156156156156156156156156156 1561561561561561561561561561561561561561561561561561561561561561561561561561561 5615615615615615615615615615615615615615616

5/666 =
0.00750750750750750750750750750750750750750750750750750750750750750750750750750 7507507507507507507507507507507507507507507507507507507507507507507507507507507 5075075075075075075075075075075075075075075075

Puzzle 65/18 =
1698243184003566825.27777777777777777777777777777777777777777777777777777777777 7777777777777777777777777777777777777777777777777777777777777777777777777777777 7777777777777777777777777777777777777777778

5/18 =
0.27777777777777777777777777777777777777777777777777777777777777777777777777777 7777777777777777777777777777777777777777777777777777777777777777777777777777777 77777777777777777777777777777777777777777778

Now ignore whatever you see before the dot "." Just look at whatever you see after the dot.😉 chop chop and good luck.
jr. member
Activity: 69
Merit: 2

Why do you want to apply to a number that is division of 3? 150/3= 50

I took the number 150 just as an example.

For example Puzzle #65:

target = 30568377312064202855
target_2 = 30568377312064202855+1 #= 30568377312064202856

t1= target/3 #= 10189459104021400951.666666666666667
t2= target_2/3 #= 10189459104021400952

r= t1+t2 # = 20378918208042801903.666666666666667

30568377312064202855 − 20378918208042801903.666666666666667 = 10189459104021400951.333333333333333


I cannot understand how this method will help in solving the puzzle if the "target" is unknown to us.


I'm also quite curious about it.
newbie
Activity: 49
Merit: 0

Why do you want to apply to a number that is division of 3? 150/3= 50

I took the number 150 just as an example.

For example Puzzle #65:

target = 30568377312064202855
target_2 = 30568377312064202855+1 #= 30568377312064202856

t1= target/3 #= 10189459104021400951.666666666666667
t2= target_2/3 #= 10189459104021400952

r= t1+t2 # = 20378918208042801903.666666666666667

30568377312064202855 − 20378918208042801903.666666666666667 = 10189459104021400951.333333333333333


I cannot understand how this method will help in solving the puzzle if the "target" is unknown to us.
member
Activity: 239
Merit: 53
New ideas will be criticized and then admired.

33.333333333333336+33.666666666666664 = 67
use 1 "/" symbol, 2 " //" is for rounding, sorry.
in Python the // operator stands for floor division, that means it divides the first number by the second number and rounds the result down to the nearest integer.

is just what I wanted to say.

33.333333333333336+33.666666666666664 = 67
use 1 "/" symbol, 2 " //" is for rounding, sorry.
in Python the // operator stands for floor division, that means it divides the first number by the second number and rounds the result down to the nearest integer.


It works for the private key, but what we have is the public key; in this case, Python doesn't round the result.
It's just what the script does (if the condition I wrote is met)

a mathematical curiosity that maybe could help the puzzle:

all numbers even that respects this succession 4,10,16,22,28,34,40,46.....To infinity
divided by 3

plus the sum of +1 to the same number divided by 3, results in an integer, odd number.

Code:
target = 100
target_2 = 100+1 #= 101

t1= target//3  #= 33.333333333333336
t2= target_2//3  #= 33.666666666666664

r= t1+t2 # = 67
---snipp---

t1 = t2 = 33
r will not result in 67 as you said, r=66



33.333333333333336+33.666666666666664 = 67
use 1 "/" symbol, 2 " //" is for rounding, sorry.
even if you run the script it gives you like

pk decimal=67

03df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f

edit

and if you subtract 100-67= 33
you would get the division of 100/3 rounded to 33.



Unfortunately, this method does not work for all numbers:

target = 150
target_2 = 150+1 #= 151

t1= target/3 #= 50
t2= target_2/3 #= 50.333333333333336

r= t1+t2 # = 100.333333333333336
150 − 100.333333333333336 = 49.666666666666664


Why do you want to apply to a number that is division of 3? 150/3= 50
Jump to: