Bitcoin Forum
July 01, 2024, 03:31:12 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [36] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 ... 143 »
  Print  
Author Topic: Pollard's kangaroo ECDLP solver  (Read 57017 times)
Jean_Luc (OP)
Sr. Member
****
Offline Offline

Activity: 462
Merit: 696


View Profile
June 03, 2020, 08:55:17 AM
 #701

Right.
256 for fast access (and check) 1 dummy point is sacrificed.


Code:
// Compute Generator table
  Point N(G);
  for(int i = 0; i < 32; i++) {
    GTable[i * 256] = N;
    N = DoubleDirect(N);
    for (int j = 1; j < 255; j++) {
      GTable[i * 256 + j] = N;
      N = AddDirect(N, GTable[i * 256]);
    }
    GTable[i * 256 + 255] = N; // Dummy point for check function
  }
brainless
Member
**
Offline Offline

Activity: 316
Merit: 34


View Profile
June 03, 2020, 10:35:26 AM
 #702

I am sure #115, #120 and #125 will go to zielar and no pool can compete. gg.

I disagree.
I spent much time to explain in the readme, in this topics or in the code the way to choose best parameters and trap to avoid.
Zielar has also to win his life and cannot spend full time to solve these puzzles.
It is far from sure that Zielar will win all the races.

Anyway, I'm working on the 1.9 in order to integrate mods from PatataFritas and support of -ws for clients.


Edit: You have no idea who Zielar is actually. He is a very competent person in his domain, I must say that from time to time I pain to follow him !


Pls Correct, about Race
there is no Race, as no one have big gpu pools, and developer saying he have some secret setting and contract with winner, so definatly there is no race, that match was fixed Smiley
next time guys make bets on fixed match and definatlly you all will win,


13sXkWqtivcMtNGQpskD78iqsgVy9hcHLF
Interested2020
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile
June 03, 2020, 11:51:55 AM
 #703

-snip-
Code:
error : Designtime build failed for project 'C:\Users\danh\Desktop\kg\Kangaroo-master\VC_CUDA102\Kangaroo.vcxproj' configuration 'Release|x64'. IntelliSense might be unavailable.
Set environment variable TRACEDESIGNTIME = true and restart Visual Studio to investigate.

-snip-

Hi Dan.
I am not using Visual Studio.
I googled the problem and found some solutions that say you should repair the project (I think there is a menu option) or upgrade your visual studio.


Thank you, Tamarindei. The readme file says to use Visual C++ 2017 so upgrading VS won't do any good I suppose.

Jean_Luc , as the creator of this code, would you mind compiling the latest version as .exe on github for those of us having issues building it manually from source code? I am not even trying to solve this Bitcoin puzzle. I need it for a completely different thing at Uni. I am also willing to donate something for your effort. I am not rich but I can appreciate someones time. Feel free to contact me if you want. Thank you.
Jean_Luc (OP)
Sr. Member
****
Offline Offline

Activity: 462
Merit: 696


View Profile
June 03, 2020, 12:02:49 PM
 #704

Visual Studio 2015 + Cuda 8 => Take project files in VC_CUDA8
Visual Sutido 2017 + Cuda 10 => Take project files in VC_CUDA10
Visual Studio 2019 + Cuda10.2 => Take project files in VC_CUDA102

Note: I don't have a dev environment Visual Studio 2017 + Cuda 10 at the moment so project files may be out of date and some files may be missing, in that case just add them to the project...

I recommend to use Visual Studio 2019 + Cuda10.2.

I will update the README.

Compiled exe are available from:
https://github.com/JeanLucPons/Kangaroo/releases
Interested2020
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile
June 03, 2020, 12:18:06 PM
 #705

Visual Studio 2015 + Cuda 8 => Take project files in VC_CUDA8
Visual Sutido 2017 + Cuda 10 => Take project files in VC_CUDA10
Visual Studio 2019 + Cuda10.2 => Take project files in VC_CUDA102

Note: I don't have a dev environment Visual Studio 2017 + Cuda 10 at the moment so project files may be out of date and some files may be missing, in that case just add them to the project...

I recommend to use Visual Studio 2019 + Cuda10.2.

I will update the README.

Compiled exe are available from:
https://github.com/JeanLucPons/Kangaroo/releases

How on earth did I miss the 'Releases' tab? The .exe was there all along...  Huh

Thank you for this clarification. I really appreciate taking the time and replying. Have a wonderful day!
Etar
Sr. Member
****
Offline Offline

Activity: 617
Merit: 312


View Profile
June 03, 2020, 01:35:45 PM
 #706

-snip-

Edit: You have no idea who Zielar is actually. He is a very competent person in his domain, I must say that from time to time I pain to follow him !
i will not put here all message, just one left here...
Server autorestart now works fine. You calmed me down, gentlemen. I must admit that I hope to find # 110 in the next few days ... I will remember you if I do it, and of course about the author of this tool, to which I already owe a lot :-)

Greetings !
i did not need any reward from zielar it is just for clarify.
Jean_Luc (OP)
Sr. Member
****
Offline Offline

Activity: 462
Merit: 696


View Profile
June 03, 2020, 01:51:09 PM
 #707

The only reward I asked to Zielar is a symbolic satoshi to a symbolic address which is quite important for me. Nothing more. And I will refuse any remuneration for this tool or any other GPL3 tools I did. I already received tons of emails for various development request with fee.

I did this tool for everybody and I will continue, however I can't develop a secure server with a validation mechanism for a pool, it is a very hard task.
I don't know if Zielar solved #62 and #63 with the VanitySearch engine and his own mods or with bitcrack.
WanderingPhilospher
Full Member
***
Offline Offline

Activity: 1092
Merit: 223

Shooters Shoot...


View Profile
June 03, 2020, 03:14:48 PM
 #708

What does program compare to result in a solved key/solution?

(Tame,Wild) = Collision
k = k1 + Tame.dist - Wild.dist

Tame File:
Code:
000000000000054e3f71000000000a250208a 0000000024a2b6bb0000000026dd90e3

Wild File:
Code:
00003000000007666967d0000000093b5394a 000000008dc1e960000000002be62262

Those are from Tame and Wild files. What exactly does the program look for in those 2 lines above to result in solved key? Can anyone break it down by line and what the line/characters represent?  Thanks.
math09183
Member
**
Offline Offline

Activity: 170
Merit: 58


View Profile
June 03, 2020, 03:22:05 PM
 #709

What is the earliest moment to be sure that range is wrong and result is outside? 6N?
Jean_Luc (OP)
Sr. Member
****
Offline Offline

Activity: 462
Merit: 696


View Profile
June 03, 2020, 04:27:37 PM
 #710

6*sqrt(N) => 99.752% chance that you found the key so ~0.25% chance that the key is well in the range.
This value assume that your setup is well tuned with a negligible DP overhead.
WanderingPhilospher
Full Member
***
Offline Offline

Activity: 1092
Merit: 223

Shooters Shoot...


View Profile
June 04, 2020, 06:13:39 AM
 #711

What does program compare to result in a solved key/solution?

(Tame,Wild) = Collision
k = k1 + Tame.dist - Wild.dist

Tame File:
Code:
000000000000054e3f71000000000a250208a 0000000024a2b6bb0000000026dd90e3

Wild File:
Code:
00003000000007666967d0000000093b5394a 000000008dc1e960000000002be62262

Those are from Tame and Wild files. What exactly does the program look for in those 2 lines above to result in solved key? Can anyone break it down by line and what the line/characters represent?  Thanks.
Anyone?
Kpot87
Jr. Member
*
Offline Offline

Activity: 40
Merit: 1


View Profile
June 04, 2020, 08:52:25 AM
 #712

What does program compare to result in a solved key/solution?

(Tame,Wild) = Collision
k = k1 + Tame.dist - Wild.dist

Tame File:
Code:
000000000000054e3f71000000000a250208a 0000000024a2b6bb0000000026dd90e3

Wild File:
Code:
00003000000007666967d0000000093b5394a 000000008dc1e960000000002be62262

Those are from Tame and Wild files. What exactly does the program look for in those 2 lines above to result in solved key? Can anyone break it down by line and what the line/characters represent?  Thanks.
Anyone?
Ask Etar he know
Etar
Sr. Member
****
Offline Offline

Activity: 617
Merit: 312


View Profile
June 04, 2020, 09:23:59 AM
 #713

What does program compare to result in a solved key/solution?

(Tame,Wild) = Collision
k = k1 + Tame.dist - Wild.dist

Tame File:
Code:
000000000000054e3f71000000000a250208a 0000000024a2b6bb0000000026dd90e3

Wild File:
Code:
00003000000007666967d0000000093b5394a 000000008dc1e960000000002be62262

Those are from Tame and Wild files. What exactly does the program look for in those 2 lines above to result in solved key? Can anyone break it down by line and what the line/characters represent?  Thanks.
Anyone?
i do not know what wild and tame file you have, but work file has Dp points like tame and wild.
Each dp have 2 128bit word distance and x-coordinate.
There will be collision if x-coordinate of tame and wild Dp the same.
to chech what type of Dp need test 126 bit of distance if it zero then it is tame dp, if it is one then dp is wild.
WanderingPhilospher
Full Member
***
Offline Offline

Activity: 1092
Merit: 223

Shooters Shoot...


View Profile
June 04, 2020, 11:36:35 AM
 #714

What does program compare to result in a solved key/solution?

(Tame,Wild) = Collision
k = k1 + Tame.dist - Wild.dist

Tame File:
Code:
000000000000054e3f71000000000a250208a 0000000024a2b6bb0000000026dd90e3

Wild File:
Code:
00003000000007666967d0000000093b5394a 000000008dc1e960000000002be62262

Those are from Tame and Wild files. What exactly does the program look for in those 2 lines above to result in solved key? Can anyone break it down by line and what the line/characters represent?  Thanks.
Anyone?
i do not know what wild and tame file you have, but work file has Dp points like tame and wild.
Each dp have 2 128bit word distance and x-coordinate.
There will be collision if x-coordinate of tame and wild Dp the same.
to chech what type of Dp need test 126 bit of distance if it zero then it is tame dp, if it is one then dp is wild.
Thank you.
The above tame and wild files, were from some random search I did. These tame and wild were exported from a workfile using this program.
So for the above tame and wild, the first part of each line needs to match; the x coord? The second part is the distance and it just tells us what kind of kangaroo it is?
Jean_Luc (OP)
Sr. Member
****
Offline Offline

Activity: 462
Merit: 696


View Profile
June 04, 2020, 12:22:45 PM
 #715

I'm sorry but I can't help you as I'm not the author of this mods.
HardwareCollector
Member
**
Offline Offline

Activity: 144
Merit: 10


View Profile
June 04, 2020, 01:24:57 PM
 #716

Those are from Tame and Wild files. What exactly does the program look for in those 2 lines above to result in solved key? Can anyone break it down by line and what the line/characters represent?  Thanks.
Without knowing how the data is encoded/decoded, the lines by themselves are not very useful. A link to the source code would be very useful in this case.
WanderingPhilospher
Full Member
***
Offline Offline

Activity: 1092
Merit: 223

Shooters Shoot...


View Profile
June 04, 2020, 01:38:44 PM
 #717

Those are from Tame and Wild files. What exactly does the program look for in those 2 lines above to result in solved key? Can anyone break it down by line and what the line/characters represent?  Thanks.
Without knowing how the data is encoded/decoded, the lines by themselves are not very useful. A link to the source code would be very useful in this case.
was the export done by patatasfritas where he stated:
Quote
The X-coord is 128+18 bits and distance 126bits. The X-coordinate could be re-generated from the distance if necessary.

source code:
Code:
// Read DP
  for(uint32_t h = 0; h < HASH_SIZE; h++) {

    fread(&items,sizeof(uint32_t),1,f1);
    fread(&maxItems,sizeof(uint32_t),1,f1);

    for(uint32_t i = 0; i < items; i++) {
      fread(&x,16,1,f1);
      fread(&d,16,1,f1);
      sign = (d.i64[1] & 0x8000000000000000);
      htype = (d.i64[1] & 0x4000000000000000);

      if(htype==0) {
          ::fprintf(ft,"%05x%016lx%016lx ", h & 0x3ffff, (uint64_t) (x.i64[1]), (uint64_t) (x.i64[0]));
          ::fprintf(ft,"%016lx%016lx\n", (uint64_t) (d.i64[1] & 0x3fffffffffffffff), (uint64_t) (d.i64[0]));
          numTame++;
      } else {
          ::fprintf(fw,"%05x%016lx%016lx ", h & 0x3ffff, (uint64_t) (x.i64[1]), (uint64_t) (x.i64[0]));
          if(sign)
            ::fprintf(fw,"-");
          ::fprintf(fw,"%016lx%016lx\n", (uint64_t) (d.i64[1] & 0x3fffffffffffffff), (uint64_t) (d.i64[0]));
          numWild++;

ft = tame; fw= wild.

HardwareCollector
Member
**
Offline Offline

Activity: 144
Merit: 10


View Profile
June 04, 2020, 02:25:41 PM
 #718

Those are from Tame and Wild files. What exactly does the program look for in those 2 lines above to result in solved key? Can anyone break it down by line and what the line/characters represent?  Thanks.
Without knowing how the data is encoded/decoded, the lines by themselves are not very useful. A link to the source code would be very useful in this case.
was the export done by patatasfritas where he stated:
Quote
The X-coord is 128+18 bits and distance 126bits. The X-coordinate could be re-generated from the distance if necessary.

source code:
Code:
// Read DP
  for(uint32_t h = 0; h < HASH_SIZE; h++) {

    fread(&items,sizeof(uint32_t),1,f1);
    fread(&maxItems,sizeof(uint32_t),1,f1);

    for(uint32_t i = 0; i < items; i++) {
      fread(&x,16,1,f1);
      fread(&d,16,1,f1);
      sign = (d.i64[1] & 0x8000000000000000);
      htype = (d.i64[1] & 0x4000000000000000);

      if(htype==0) {
          ::fprintf(ft,"%05x%016lx%016lx ", h & 0x3ffff, (uint64_t) (x.i64[1]), (uint64_t) (x.i64[0]));
          ::fprintf(ft,"%016lx%016lx\n", (uint64_t) (d.i64[1] & 0x3fffffffffffffff), (uint64_t) (d.i64[0]));
          numTame++;
      } else {
          ::fprintf(fw,"%05x%016lx%016lx ", h & 0x3ffff, (uint64_t) (x.i64[1]), (uint64_t) (x.i64[0]));
          if(sign)
            ::fprintf(fw,"-");
          ::fprintf(fw,"%016lx%016lx\n", (uint64_t) (d.i64[1] & 0x3fffffffffffffff), (uint64_t) (d.i64[0]));
          numWild++;

ft = tame; fw= wild.



I found and compiled the above source code and my exported data validates while yours do not.

The first column is the least significant bits (LSB) of the x-coordinate, and the second column is the traveled_distance to multiply secp256k1_generator_point with.

Tame:
[distinguished_point] = (tame_traveled_distance)*(secp256k1_generator_point)

Wild:
[working_public_key] = [(original_public_key) - (beginning_range)*(secp256k1_generator_point)].
[distinguished_point] = [(+-wild_traveled_distance)*(secp256k1_generator_point)] + [working_public key]
[private_key] = (beginning_range) + (tame_traveled_distance) +- (wild_traveled_distance)
WanderingPhilospher
Full Member
***
Offline Offline

Activity: 1092
Merit: 223

Shooters Shoot...


View Profile
June 04, 2020, 02:46:47 PM
 #719

Those are from Tame and Wild files. What exactly does the program look for in those 2 lines above to result in solved key? Can anyone break it down by line and what the line/characters represent?  Thanks.
Without knowing how the data is encoded/decoded, the lines by themselves are not very useful. A link to the source code would be very useful in this case.
was the export done by patatasfritas where he stated:
Quote
The X-coord is 128+18 bits and distance 126bits. The X-coordinate could be re-generated from the distance if necessary.

source code:
Code:
// Read DP
  for(uint32_t h = 0; h < HASH_SIZE; h++) {

    fread(&items,sizeof(uint32_t),1,f1);
    fread(&maxItems,sizeof(uint32_t),1,f1);

    for(uint32_t i = 0; i < items; i++) {
      fread(&x,16,1,f1);
      fread(&d,16,1,f1);
      sign = (d.i64[1] & 0x8000000000000000);
      htype = (d.i64[1] & 0x4000000000000000);

      if(htype==0) {
          ::fprintf(ft,"%05x%016lx%016lx ", h & 0x3ffff, (uint64_t) (x.i64[1]), (uint64_t) (x.i64[0]));
          ::fprintf(ft,"%016lx%016lx\n", (uint64_t) (d.i64[1] & 0x3fffffffffffffff), (uint64_t) (d.i64[0]));
          numTame++;
      } else {
          ::fprintf(fw,"%05x%016lx%016lx ", h & 0x3ffff, (uint64_t) (x.i64[1]), (uint64_t) (x.i64[0]));
          if(sign)
            ::fprintf(fw,"-");
          ::fprintf(fw,"%016lx%016lx\n", (uint64_t) (d.i64[1] & 0x3fffffffffffffff), (uint64_t) (d.i64[0]));
          numWild++;

ft = tame; fw= wild.



I found and compiled the above source code and my exported data validates while yours do not.

The first column is the least significant bits (LSB) of the x-coordinate, and the second column is the traveled_distance to multiply secp256k1_generator_point with.

Tame:
[distinguished_point] = (tame_traveled_distance)*(secp256k1_generator_point)

Wild:
[working_public_key] = [(original_public_key) - (beginning_range)*(secp256k1_generator_point)].
[distinguished_point] = [(+-wild_traveled_distance)*(secp256k1_generator_point)] + [working_public key]
[private_key] = (beginning_range) + (tame_traveled_distance) +- (wild_traveled_distance)

Thank you!  Great explanation.

When you say your export data validates while mine did not, what do you mean? I just copied and pasted the first two lines from each file that were generated from the export option.

For the private key; can it be solved via the data you get from the export source code I listed above? Sounds like it's missing a piece of data?
WanderingPhilospher
Full Member
***
Offline Offline

Activity: 1092
Merit: 223

Shooters Shoot...


View Profile
June 04, 2020, 02:57:52 PM
 #720

Those are from Tame and Wild files. What exactly does the program look for in those 2 lines above to result in solved key? Can anyone break it down by line and what the line/characters represent?  Thanks.
Without knowing how the data is encoded/decoded, the lines by themselves are not very useful. A link to the source code would be very useful in this case.
was the export done by patatasfritas where he stated:
Quote
The X-coord is 128+18 bits and distance 126bits. The X-coordinate could be re-generated from the distance if necessary.

source code:
Code:
// Read DP
  for(uint32_t h = 0; h < HASH_SIZE; h++) {

    fread(&items,sizeof(uint32_t),1,f1);
    fread(&maxItems,sizeof(uint32_t),1,f1);

    for(uint32_t i = 0; i < items; i++) {
      fread(&x,16,1,f1);
      fread(&d,16,1,f1);
      sign = (d.i64[1] & 0x8000000000000000);
      htype = (d.i64[1] & 0x4000000000000000);

      if(htype==0) {
          ::fprintf(ft,"%05x%016lx%016lx ", h & 0x3ffff, (uint64_t) (x.i64[1]), (uint64_t) (x.i64[0]));
          ::fprintf(ft,"%016lx%016lx\n", (uint64_t) (d.i64[1] & 0x3fffffffffffffff), (uint64_t) (d.i64[0]));
          numTame++;
      } else {
          ::fprintf(fw,"%05x%016lx%016lx ", h & 0x3ffff, (uint64_t) (x.i64[1]), (uint64_t) (x.i64[0]));
          if(sign)
            ::fprintf(fw,"-");
          ::fprintf(fw,"%016lx%016lx\n", (uint64_t) (d.i64[1] & 0x3fffffffffffffff), (uint64_t) (d.i64[0]));
          numWild++;

ft = tame; fw= wild.



I found and compiled the above source code and my exported data validates while yours do not.

The first column is the least significant bits (LSB) of the x-coordinate, and the second column is the traveled_distance to multiply secp256k1_generator_point with.

Tame:
[distinguished_point] = (tame_traveled_distance)*(secp256k1_generator_point)

Wild:
[working_public_key] = [(original_public_key) - (beginning_range)*(secp256k1_generator_point)].
[distinguished_point] = [(+-wild_traveled_distance)*(secp256k1_generator_point)] + [working_public key]
[private_key] = (beginning_range) + (tame_traveled_distance) +- (wild_traveled_distance)

Thank you!  Great explanation.

When you say your export data validates while mine did not, what do you mean? I just copied and pasted the first two lines from each file that were generated from the export option.

For the private key; can it be solved via the data you get from the export source code I listed above? Sounds like it's missing a piece of data?

So, in order for the server to solve the private key, all it needs is x coord and distance?
Code:
// Send DP to server
      for(int g = 0; g < CPU_GRP_SIZE; g++) {
        if(IsDP(ph->px[g].bits64[3])) {
          ITEM it;
          it.x.Set(&ph->px[g]);
          it.d.Set(&ph->distance[g]);
          it.kIdx = g;
          dps.push_back(it);
The server takes in all the DPs, compares all the x coords and distances, to see if a collision has been made/the key is solved?
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [36] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 ... 143 »
  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!