Pages:
Author

Topic: Pollard's kangaroo ECDLP solver - page 61. (Read 59436 times)

full member
Activity: 1162
Merit: 237
Shooters Shoot...
April 26, 2021, 04:07:44 PM
So if I am searching a keyspace and the count say Count 2^60.86 and that exceeds the expected
Range width: 2^116
Jump Avg distance: 2^57.96
Number of kangaroos: 2^17.60
Expected operations: 2^59.99
then does it mean it has finished searching the range inputted and I should check another portion of the keyspace?

[21295663.60 MK/s][GPU 21295655.80 MK/s][Count 2^60.86][Dead 0][1.4d (Avg 14:58:43)][2.0/4.0MB]  B]
No, it is an estimate.  Do you know if the key is in the range you are looking for?

Also, your MK/s seems extremely high.

The B] is a carry over from the MB]
jr. member
Activity: 76
Merit: 4
April 26, 2021, 02:55:48 PM
So if I am searching a keyspace and the count say Count 2^60.86 and that exceeds the expected
Range width: 2^116
Jump Avg distance: 2^57.96
Number of kangaroos: 2^17.60
Expected operations: 2^59.99
then does it mean it has finished searching the range inputted and I should check another portion of the keyspace?

[21295663.60 MK/s][GPU 21295655.80 MK/s][Count 2^60.86][Dead 0][1.4d (Avg 14:58:43)][2.0/4.0MB]  B]
jr. member
Activity: 76
Merit: 4
April 26, 2021, 02:48:22 PM
Thanks for the response I already read your similar response on another post. I am still trying to get an answer regarding the "B]" that appears after a while on long keyspaces. i tried to upload an image of what I am talking about but seems they blocked the google drive address
full member
Activity: 1162
Merit: 237
Shooters Shoot...
April 26, 2021, 02:41:26 PM
Three questions,
Is there any way to see the current keyspace being worked on like some type of  command that prints out in intervals the progress like "continue.txt" on bitcrack. I know there is save.work but this is not readable.
and what does the "B]" stand for at the end of the command line? picture here of the B.
Why in some keyspaces searches are there many dead kangaroos?

Current keyspace is the entire keyspace. The Tames and Wilds start at different random points and hop looking for DPs.  So if you are searching from 0:FFFFFFFFFF ; then kangaroos will be spread out all over the range. The progress is group ops or total DPs found. It is readable if you use python script loaded in this thread.  But it will not help you determine "progress"; total ops/DPs are your progress.

If you are in a small range (especially if using a GPU), you may get many dead kangaroos because you have many kangaroos hopping around in a small keyspace so many of them will be landing on the same points. Dead kangaroos can also happen if you are searching for a key that does not exist in the keyspace being searched.
jr. member
Activity: 76
Merit: 4
April 26, 2021, 02:33:47 PM
Three questions,
Is there any way to see the current keyspace being worked on like some type of  command that prints out in intervals the progress like "continue.txt" on bitcrack. I know there is save.work but this is not readable.
and what does the "B]" stand for at the end of the command line? picture here of the B.
Why in some keyspaces searches are there many dead kangaroos?
jr. member
Activity: 82
Merit: 8
April 26, 2021, 11:37:54 AM
Quote
Thanks
but, I still not understand code
why GetBase10() not convert hex to decimal
that mean I use wrong code
(sorry I am not programmer)

Code:
   printf("\nP.x   %s\n" , P.x.GetBase10().c_str() );

you must use  %s  , not %d

Improve and optimize the project "Kangaroo , VanitySearch " , maybe requires several  years of learn VC++
member
Activity: 406
Merit: 47
April 26, 2021, 10:31:39 AM
like sample
GetBase16() result = P.x.: 59EF0C8304BB2FDB2C0F18B262EBDBCB992D0B4CB7AE92358C22406740862D78
GetBase10() result = P.x.: -1235795984
Base10 should be = 40678206325600170710078198845059231036639843417349082810943540381348337692024

Code:
  Int privKey;
  privKey.SetBase16("00000000000000000000000000000000000000000000000000000000000000FF");
  printf("A: %s \n", privKey.GetBase10().c_str());
  privKey.SetBase16("59ef0c8304bb2fdb2c0f18b262ebdbcb992d0b4cb7ae92358c22406740862d78");
  printf("B: %s \n", privKey.GetBase10().c_str());
  privKey.SetBase16("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141");
  printf("spec256k1 MAX value: %s \n", privKey.GetBase10().c_str());

=====output Decimal:=====
A: 255
B: 40678206325600170710078198845059231036639843417349082810943540381348337692024
spec256k1 MAX value: 115792089237316195423570985008687907852837564279074904382605163141518161494337




Thanks
but, I still not understand code

I use code from  jacky19790729

I print like this

printf("\nP.x   %064s\n" , P.x.GetBase16().c_str() );

and I change 16 to 10

printf("\nP.x   %d\n" , P.x.GetBase10().c_str() );


result = P.x.: 59EF0C8304BB2FDB2C0F18B262EBDBCB992D0B4CB7AE92358C22406740862D78
result = P.x.: -1235795984

for this I convert from hex to decimal by manual
40678206325600170710078198845059231036639843417349082810943540381348337692024
https://www.rapidtables.com/convert/number/hex-to-decimal.html

why GetBase10() not convert hex to decimal

that mean I use wrong code
(sorry I am not programmer)
jr. member
Activity: 82
Merit: 8
April 26, 2021, 09:38:27 AM
like sample
GetBase16() result = P.x.: 59EF0C8304BB2FDB2C0F18B262EBDBCB992D0B4CB7AE92358C22406740862D78
GetBase10() result = P.x.: -1235795984
Base10 should be = 40678206325600170710078198845059231036639843417349082810943540381348337692024

Code:
  Int privKey;
  privKey.SetBase16("00000000000000000000000000000000000000000000000000000000000000FF");
  printf("A: %s \n", privKey.GetBase10().c_str());
  privKey.SetBase16("59ef0c8304bb2fdb2c0f18b262ebdbcb992d0b4cb7ae92358c22406740862d78");
  printf("B: %s \n", privKey.GetBase10().c_str());
  privKey.SetBase16("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141");
  printf("secp256k1 MAX value: %s \n", privKey.GetBase10().c_str());

=====output Decimal:=====
A: 255
B: 40678206325600170710078198845059231036639843417349082810943540381348337692024
secp256k1 MAX value: 115792089237316195423570985008687907852837564279074904382605163141518161494337


member
Activity: 406
Merit: 47
April 26, 2021, 06:57:19 AM

how to use function GetBase10() on kangaroo

I copy GetBase16() and change to  GetBase10()
I using GetBase10() with display %d  but it is show wring

GetBase10() convert to decimal right?
( and GetBase16() convert to hex)

I compare by print out next line

like sample
GetBase16() result = P.x.: 59EF0C8304BB2FDB2C0F18B262EBDBCB992D0B4CB7AE92358C22406740862D78
GetBase10() result = P.x.: -1235795984


Base10 should be = 40678206325600170710078198845059231036639843417349082810943540381348337692024
member
Activity: 406
Merit: 47
April 26, 2021, 03:51:12 AM

My goal is not to race the quiz.


I like to have a name on Wikipedia records
https://en.wikipedia.org/wiki/Discrete_logarithm_records
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
April 26, 2021, 01:54:17 AM



Receive input when playing the Kangaroo executable
Please modify the program so that the kangaroo can run it.


The reason is that Bitcoin 1% is an integer
99% was done with the decimal point key.


0.0573619 =0x822557f3ae9c29d0940e305bbcc30babe59d36ccfad2ebc972a323a8acefefc8, 0x1d5954c43bc29bd412c887d67759a0465aca7b7ce5195212b671e2ba21094dd1
0.0573619 * 10,000,000 = 573619
priv(573619) = 0x3ec274bef2990b86b8c0740faf90c11e15b8b1891c110063e3d15f05ea9bd23, 0x273f184f12a2a029c0643628561f670de859013a7dd0ef0382d86463f4b75435


I guess if you want to scale all calculations down by 1/10 or 1/100, you can replace the point in the SetBase16 code above with the one for 0.1G or 0.01G.

So, do you want to change the program to look for 0.1G, 1G, 10G, 100G points like this? (I can not read CJK languages so it is hard for me to understand the last screenshot, can you explain what's going on in there?)

To my understanding you have these values [for example]:

0.0573619 <-- this is a private key "A"
10,000,000  <-- this is some kind of multiplier I think
1505297...the value in green   <--- a private key
0x822557f3ae9c29d0940e305bbcc30babe59d36ccfad2ebc972a323a8acefefc8, 0x1d5954c43bc29bd412c887d67759a0465aca7b7ce5195212b671e2ba21094dd1
^-- this is the public key for 1505297...?  Huh Or for 0.0573619?

So is this 1505297... private key multiplied by 10 million to get the 573619 private key? Or more likely you're multiplying their pubkeys to get that privkey, am I understanding you correctly?

What is the relation between these private keys?
573619
0.0573619
1505297...
0x15cf751db (I saw this in your second screenshot, not sure what this is I'm assuming a hex version of a privkey)?

Friends will hear this story for the first time.
However, I did a lot of tests and found these things.

My goal is not to race the quiz.
Many people are sad because they have lost their private keys.
I think you can solve this problem with a newly developed calculator

Well, I can understand that we are multiplying public keys A and B to get C, but what's special about the relation between their private keys (private key A and C in particular, why use a large number to get 573619?)



is there any way to jump over some numbers for example never use numer 3 or number 1?

Skipping particular kangaroo values? I think it will be hard to exclude specific values because they are all very large and random, but I guess you could find some group of numbers that match a pattern and sequence and do another hop for those, without making them a distinguished point.
newbie
Activity: 28
Merit: 1
April 26, 2021, 12:40:59 AM
is there any way to jump over some numbers for example never use numer 3 or number 1?
member
Activity: 406
Merit: 47
April 25, 2021, 01:45:46 PM


Is this bolded number and point corresponding to G? Because this will make the problem easier to understand. I'm not really sure what you're trying to do when you say "oscillator".

I'm assuming you took the modular inverse G*(10G)-1 to get the 0.1 result? (And not just did straight up division of the 10 by the 1 Smiley)

I don't really see the point of using G/10 as the generator point for Kangaroo but it's technically possible if you edit the jump table.

I think lostbitcoin need to be show python modify code to can easy compare with C++ code, what want to do
member
Activity: 406
Merit: 47
April 25, 2021, 01:43:57 PM
I don't understand "kangaroos"
 


try read description on  JeanLucPons Kangaroo github

explain about how kangaroos works with images illustration figure

https://github.com/JeanLucPons/Kangaroo


legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
April 25, 2021, 01:30:48 PM
I want to do a test.
Part of the oscillator
0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798, 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8

I'd like to know that this is the most basic so it shouldn't be modified
For testing purposes, I want to change this public key value and run the kangaroo.

1 = 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798, 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8

10 = 0xa0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7, 0x893aba425419bc27a3b6c7e693a24c696f794c2ed877a1593cbee53b037368d7
1/10 = 0.1

0.1= 0x8c6154856794fcd5ee79ba8c96b7dd980e289a6b93a52d50dbdb9388a4c75604, 0x8fa03512509c5caa2238ef16720c9b787961e695e5401a6f5df6817ad0032d5c
priv = (81054462466121336796499689506081535496986294995352433067823614199062713046036)

Is this bolded number and point corresponding to G? Because this will make the problem easier to understand. I'm not really sure what you're trying to do when you say "oscillator".

I'm assuming you took the modular inverse G*(10G)-1 to get the 0.1 result? (And not just did straight up division of the 10 by the 1 Smiley)

I don't really see the point of using G/10 as the generator point for Kangaroo but it's technically possible if you edit the jump table.
jr. member
Activity: 82
Merit: 8
April 25, 2021, 08:51:32 AM
I don't understand "kangaroos"
but, if you want to printf  P.x,  P.y ,   pk   value  
you can use  GetBase16()

Public Key (compressed)     =  (02 or 03)  + P.x
Public Key (uncompressed) =  04 + P.x + P.y
Target Private key  =  0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - pk  

Code:
  Point P = secp->ComputePublicKey(&pk);

  printf("\nTestPrint1   %064s  %064s \nPK: %064s\n"
 , P.x.GetBase16().c_str() , P.y.GetBase16().c_str()
 , pk.GetBase16().c_str() );

-----my result output

TestPrint1   9FFC74F6136E60E9229A58544C0E9CFFA5A9D955D949E75E4BCCBE1C06B81C34  
FD2B45B2609A46E7C893F3409073557BF59D9E306FF0BEC04AD8644CBC0DEFE3
PK: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A027244DA849B5C9F250

====  2021-04-25 21:38:34 =====
找到了 Key# 0 [1S]Pub:  0x0290E6900A58D33393BC1097B5AED31F2E4E7CBD3E5466AF958665BC0121248483
       Priv: 0x349B84B6431A6C4EF1

This Find time 06:35

test in #70



member
Activity: 406
Merit: 47
April 25, 2021, 08:01:11 AM
Wait those spaces in between shouldn't be there, I meant for it to be zero-padded, can you change the code to this?

Code:
::printf("Point X: %016X%016X%016X%016X \n", P.x.bits64[3], P.x.bits64[2], P.x.bits64[1], P.x.bits64[0]);
::printf("Point Y: %016X%016X%016X%016X \n", P.y.bits64[3], P.y.bits64[2], P.y.bits64[1], P.y.bits64[0]);


Thank you very much

last code compare with old one, am I do correct?
if correct I will remove all old code that wrong




member
Activity: 406
Merit: 47
April 25, 2021, 07:59:15 AM
I'm using Kangaroo 2.2
Windows version
 

Kangaroo 2.2 using C++ language

Visual Studio 2019 Community Edition (Free)
https://visualstudio.microsoft.com/downloads/

compile using project file  Kangaroo.sln  on folder VC_CUDA102
require to install CUDA version 10.2


I  am not programmer it is hard to modify it a lot
Kangaroo 2.2 only can work with 120 bit puzzle

python it easy to modify but it very very slow and limited with 50 bit puzzle
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
April 25, 2021, 06:00:01 AM
Wait those spaces in between shouldn't be there, I meant for it to be zero-padded, can you change the code to this?

Code:
::printf("Point X: %016X%016X%016X%016X \n", P.x.bits64[3], P.x.bits64[2], P.x.bits64[1], P.x.bits64[0]);
::printf("Point Y: %016X%016X%016X%016X \n", P.y.bits64[3], P.y.bits64[2], P.y.bits64[1], P.y.bits64[0]);
member
Activity: 406
Merit: 47
April 25, 2021, 04:48:57 AM

Don't do it like that, print it like this using 16-character padding for the hex numbers (they are 64-bit):

Code:
::printf("Point X: %16X%16X%16X%16X \n", P.x.bits64[3], P.x.bits64[2], P.x.bits64[1], P.x.bits64[0]);
::printf("Point Y: %16X%16X%16X%16X \n", P.y.bits64[3], P.y.bits64[2], P.y.bits64[1], P.y.bits64[0]);

Thank you very much

code it is works

compare with my test print directly

this is 64 bit number right , how can decode to decimal


Pages:
Jump to: