Skip to content

Fast ECDLP Solver for Nvidia GPUs based on SOTA method

License

Notifications You must be signed in to change notification settings

RetiredC/RCKangaroo

Repository files navigation

(c) 2024, RetiredCoder (RC)

RCKangaroo is free and open-source (GPLv3). This software demonstrates efficient GPU implementation of SOTA Kangaroo method for solving ECDLP. It's part #3 of my research, you can find more details here: https://github.com/RetiredC

Discussion thread: https://bitcointalk.org/index.php?topic=5517607

Features:

  • Lowest K=1.15, it means 1.8 times less required operations compared to classic method with K=2.1, also it means that you need 1.8 times less memory to store DPs.
  • Fast, about 8GKeys/s on RTX 4090, 4GKeys/s on RTX 3090.
  • Keeps DP overhead as small as possible.
  • Supports ranges up to 170 bits.
  • Both Windows and Linux are supported.

Limitations:

  • No advanced features like networking, saving/loading DPs, etc.

Command line parameters:

-gpu which GPUs are used, for example, "035" means that GPUs #0, #3 and #5 are used. If not specified, all available GPUs are used.

-pubkey public key to solve, both compressed and uncompressed keys are supported. If not specified, software starts in benchmark mode and solves random keys.

-start start offset of the key, in hex. Mandatory if "-pubkey" option is specified. For example, for puzzle #85 start offset is "1000000000000000000000".

-range bit range of private the key. Mandatory if "-pubkey" option is specified. For example, for puzzle #85 bit range is "84" (84 bits). Must be in range 32...170.

-dp DP bits. Must be in range 14...60. Low DP bits values cause larger DB but reduces DP overhead and vice versa.

When public key is solved, software displays it and also writes it to "RESULTS.TXT" file.

Sample command line for puzzle #85:

RCKangaroo.exe -dp 16 -range 84 -start 1000000000000000000000 -pubkey 0329c4574a4fd8c810b7e42a4b398882b381bcd85e40c6883712912d167c83e73a

Some notes:

Fastest ECDLP solvers will always use SOTA method, as it's 1.4 times faster and requires less memory for DPs compared to the best 3-way kangaroos with K=1.6. Even if you already have a faster implementation of kangaroo jumps, incorporating SOTA method will improve it further. While adding the necessary loop-handling code will cause you to lose about 5–15% of your current speed, the SOTA method itself will provide a 40% performance increase. Overall, this translates to roughly a 25% net improvement, which should not be ignored if your goal is to build a truly fast solver.

Changelog:

v2.0:

  • added support for 30xx, 20xx and 1xxx cards.
  • some minor changes.

v1.1:

  • added ability to start software on 30xx cards.

v1.0:

  • initial release.