eclambda is a set of tools for computing elliptic curve interval discrete logarithms using Pollard’s lambda algorithm, also known as the kangaroo algorithm. It is GPU accelerated using OpenCL.


There are two components, a client and a server. Multiple clients can work on the same problem and send their results to the server.

client program
The client program performs the lambda algorithm on the GPU. Periodically it will sends the results to the server. Before sending results to the server, progress is saved on disk so that no work will be lost in the event of a failure. For machines with multiple GPUs, multiple instances of the client can be run with a different device specified for each instance (see –list-devices and –device options).

The client displays the number of distinguished points (DP), total points (TP) and calculation speed (points per second). Note that DP and TP are not updated until the client contacts the server. The client will contact the server every 3 minutes to check the job status and get the latest count for DP and TP. DPs’s are uploaded to the server every 10 minutes by default.


–name NAME Job name

–gpu-mem-usage N Specify percent of GPU memory to use for points e.g. 0.8 for 80%.

–list-devices List available GPUs then exit

–device N Specify the device to use (see –list-devices)

–submit-interval N Submit points to the server every N minutes. The default is 10 minutes.

–host HOST Specify the server name to connect to. Default is

–port PORT Specify the port to connect on. Default is 5311.
server program
The server accepts results from the client and stores them in a database. Job progress is written to a text file in the working directory. When the solution is found it is also written to a file.

–working-dir DIR Specify the working directory of the server. Default is the current directory.

–port PORT Listen for connections on port PORT

The jobsubmit utility submits work to the server.
jobsubmit program
–host HOST Specify the server to connect to. Default is

–port PORT Specify the port to connect on. Default is 5311.

–name NAME Specify the name of the job. Required.

–keylen KEYLEN Length of the target private key in bits. Required.

–start START The lower end of the interval to search. The default is 0 i.e. the beginning of the entire keyspace. The program will search the interval of [START, START + 2^KEYLEN – 1], where KEYLEN is specified by –keylen.

–pubkey PUBKEY The public key encoded in hexadecimal, either compressed or uncompressed. If no public key is given, test mode is enabled and a key is automatically generated and displayed.

–dbits BITS The number of distinguished bits. The default is 18.

Program Run-Solving a 65-bit problem

we will test with the puzzle 65 as a proof of concept tool as the details are already in public domain

Start the server


Submitting a job to the server
launch CMD
C:\Tools\eclambda_windows_x86_64>jobsubmit.exe –name job65 –pubkey 028F75A32E657F80503BC904215711D9717AEA7376AF8B70A0A130FF56F370F7CA –keylen 65 –dbits 20 –host

Run the client

C:\Tools\eclambda_windows_x86_64>eclambda.exe –name job65 –gpu-mem-usage 0.8 –device 0 –host

it will start tuning for optimal speed and once tuned the speed would increase.

it will verify results in between and after 10 mins the results would be submitted to server for any collision.

so running it for quite a while we can see that it found the collision and hit the puzzle #65

Leave a Reply

Your email address will not be published. Required fields are marked *



Plutus Bitcoin Brute Forcer A Bitcoin wallet collider that brute forces random



Tested on Ubuntu 20

You May Also Like