parcrypt is designed for parallel computational problems which have low communication requirements. It is a server-client model where clients request work from the server, perform processing and submit the results. The server got no security so it should not be public internet facing, client is console program that retriever work from server, does computation task and report results back to server. Currently it supports only compressed/uncompressed legacy bitcoin addresses.
The work is divided into Work Units. A Work Unit has a unique ID and the server tracks which work units were sent out.
The client requests a work unit from the server. The client divides the work unit into one or more Work Items. The work items are distributed to one or more GPUs on the client machine. If a single work unit does not provide enough work items, the client can request another work unit from the server
Scan/Click QR to download
Windows:
the tool requires python3 ,flask, optionally visual studio 2019 or newer for building solution file
python3
pip3 install flask
C:\Tools\parcrypt-main>pip3 install flask
Linux:
make
g++ 8.0 or later
libcurl
python3
go to server directory and we can configure directory name for projects by editing "server_config.json".by default its "projects" in same folder.
go to bin folder for making validation checks on our GPUs if they are hitting keys or not
C:\Tools\parcrypt-main\bin>unit_tests.exe
C:\Tools\parcrypt-main>cd server
C:\Tools\parcrypt-main\server>python3 server.py
we can see the server started successfully on 192.168.50.100/127.0.0.1 port number 8080.we can verify this by going to http://192.168.50.100 or http://127.0.0.1
now we will create a test project
Test case
for searching private key of address 1GCxrVoXGdrui8eYxuqryez3mzwu1WR23V in the key range 1 and 8000000000 we will configure
C:\Tools\parcrypt-main\server>python3 make_project.py --name test --address 1GCxrVoXGdrui8eYxuqryez3mzwu1WR23V --start 1 --end 8000000000
we can see that after executing command the job was submitted to the server.by default the address is considered as compressed.for uncompressed addresses we can use --uncompressed parameter
go to bin directory
the client configuration also requires config.json.we can define several parameters like hostname/IP,port,data directory,OpenCL GPUs,GPU Memory usage. We can allocate memory usage in either "%" or "GB".it supports multi GPU architecture. There is one default json file already included with package based on Nvidia 1050Ti & Intel 630 HD iGPU.
C:\Tools\parcrypt-main\bin>parcrypt.exe --config config.json
the --config parameter is optional in case of custom .json file is used, otherwise the tool will look for default config.json within same folder. We can see client got connected with server and in initializing state. The client will periodically fetch jobwork from server. Remember it may take sometime(1 t0 15 minutes)from initialization state to running state of GPUs.its quite normal that out of the 2-5 GPU Cluster only one GPU is running and rest are in initialization state.
Nvidia 1050Ti initialized and getting upto 100.16 Mkey/second on 90% usage configuration.
the client has hit the key and submitted the results to server. On console we can see the private hex key is "0000000000000000000000000000000000000000000000000000000007A12000".the server will also dump the private key in test_key.txt file located in server/projects/<project name>/
converting it to compressed address reveals 1GCxrVoXGdrui8eYxuqryez3mzwu1WR23V
converting it to compressed address reveals 144soKeV8fRz2rZXLMNv1LGQ5PxLZaczxX
converting it to compressed WIF reveals KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7wt9s4w3JCdki
converting it to uncompressed WIF reveals 5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kG9sVZgNF4aV
after the key is hit terminate client by pressing ctrl+c in case of there are no more jobs available, otherwise the client will keep polling and will look for more jobwork.
For checking job process on server we can use DB Viewer.go to DB Browser folder and open portable DB Browser executable.
Open database->server->projects folder->project name->projectname.db
click browse data tab
under table drop down menu choose first table "OutstandingWork"
we can see the progress that 2 of the jobs are over and 1 of them running and 1 got expired.
under table drop down menu choose second table "ProjectInfo"
we can see project ID,compressed address,range,status,hit private key here