Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
scorta committed Dec 18, 2017
1 parent b98f266 commit f375271
Showing 1 changed file with 16 additions and 4 deletions.
20 changes: 16 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,31 @@ Just in case you are serious about finding a key for a Bitcoin address with posi

## Room for improvement

**If Bitcoin Private Keys are truly random**, then doing a thorough search for a particular part is better than guessing randomly. Eg. currently, there are ~8x10^6 Bitcoin addresses with 0.005BTC or more; so we should divide 10^77 into 8x10^6 parts, each part has 125x10^68 numbers; then we should search for the part near 10^77/2 first. 125x10^68 is still a big number, but maybe it is better than making randomly guess.
**If Bitcoin Private Keys are truly random**, then doing a thorough search for a particular part is better than guessing randomly. Eg. currently, there are ~8x10^6 Bitcoin addresses with 0.005BTC or more; so we should divide 10^77 into 8x10^6 parts, each part has 125x10^68 numbers; then we should search for the part near 10^77/2 first. 125x10^68 is still a big number, but maybe it is better than making randomly guess. **UPDATE: done!**

**Use GPU for calculation.** GPU may work much faster for this kind of task, but this program need to be rewritten in [C, C++, Fortran or Python](https://developer.nvidia.com/how-to-cuda-c-cpp). [Java could do the work](http://www.jcuda.org/), but I doubt if it is a good choice.

## Usage

Install java on your computer, download the **[GuessPrivateKey.jar](https://github.com/scorta/GuessPrivateKey/releases/tag/0.1)** file, then enter this command

java -jar <this_program> <numbers of threads> <file_contains_bitcoin_addresses>
`java -jar <this_program> <numbers of threads> <file_contains_bitcoin_addresses> <choice> <start_from>`

`<numbers of threads>`: number of threads, should be equal to your CPU cores (or less, if you want to use it for other tasks). Eg. my CPU has 8 cores, so I set `<Number of threads>` to 7 or 8.

`<choice>`: 0 means guessing keys randomly; while non-zero means sequential check, starting from `<start_from>`. Default value is 0.

`<start_from>`: if you do not specify `<start_from>`, then the program will check from 0.

Eg.
`java -jar GuessPrivateKey.jar 7 bit.txt`

Running with 7 threads, and searching key(s) randomly for list of Bitcoin address(es) in the file `bit.txt`.

Eg.
`java -jar GuessPrivateKey.jar 8 bit.txt 1 666`

java -jar GuessPrivateKey.jar 7 bit.txt
It will run with 7 threads, and searching key(s) for list of Bitcoin address(es) in the file `bit.txt`. `<Number of threads>` should be equal to your CPU cores (or less, if you want to use it for other tasks). Eg. my CPU has 8 cores, so I set `<Number of threads>` to 7 or 8.
Running with 8 threads, and searching key(s) sequentially for list of Bitcoin address(es) in the file `bit.txt`.

### Compile yourself?

Expand Down

0 comments on commit f375271

Please sign in to comment.