Ethereum Vanity Address Match Proof of Concept Program in GO/C++

Job ID: 34869476

Budget: €30 – €250 EUR

I'm a part of a crypto research team, we are building Proof of Concept program to make people awareness on how small bugs can be critical.

This program needs to get private key components of given public key using Profanity (ETH vanity address generator program) flaw.

Profanity uses OpenCL kernels to run many GPU threads in parallel that generate millions of addresses per second using a simple algorithm:

Profanity generates a random seed S that is used to sample a private key k.
Then it creates about 4 million work items, where the i-th worker takes K[i, 0] = (k + i * 2¹⁹²) * G as the initial public key.
After that, each worker increases its public key by G until the address derived from it meets the user’s requirements. When it is found, you can easily calculate the private key given the number of the worker that found it and how many iterations it did.

We've got a bit of this done already in Go Lang. Unfortunately we are not cryptographers and it's hard for us to finish this project. We can send you our files.

It needs to do the computing using GPU and threads.

Algorithm Idea -

If you have a public address that was generated using Profanity, you can find the corresponding private key by reversing the generation process:

Enter public key K_t for an address that was generated using Profanity.
If the public key K_t was generated given some initial public key K by adding the needed amount of G (+2¹⁹² * G for each row and +G for each column), you can initialize your workers in a way that the i-th worker starts with a public key K_t - i * 2¹⁹² * G, and then decrease it by G on each iteration until K is finally found by any of them.
If you know what private key corresponds to K, you can calculate the target private key (again, because you know the row and the column where it was found).


Some articles explaining in details on how it should work (!)
https://medium.com/amber-group/exploiting-the-profanity-flaw-e986576de7ab
https://medium.com/@rebryk/how-to-hack-a-vanity-address-generated-with-profanity-ffad61ecacd2

Looking for experienced cryptography programmers.
Related categories: Golang Cryptography CUDA C++ Programming OpenCL