wanna test ?
I do not mind, send a public key.
Perhaps in due course I will lay out the code on github, for obvious reasons I dont want to do this. A lot of time has been spent on rewriting the sources, I constantly change it. Added verification of GPU output data in secp256k1 before writing to files. Yesterday, a lot of progress - I replaced 2 expensive inversions with 1 inversion and 3 multiplications - this gave a very significant increase in performance, about 50% (considering that 2 jumps of wild and tame count as 1 jump).
Maybe someone will need comparator code:
// ----------------------------------------------------------------------------
bool VanitySearch::Comparator() {
// Used chrono for get compare time
auto begin = std::chrono::steady_clock::now();
string WfileName = "wild.txt";
string TfileName = "tame.txt";
vector Wpoint;
vector Wkey;
vector Tpoint;
vector Tkey;
// Wild
// Get file size wild
FILE *fw = fopen(WfileName.c_str(), "rb");
if (fw == NULL) {
printf("Error: Cannot open %s %s\n", WfileName.c_str(), strerror(errno));
}
fseek(fw, 0L, SEEK_END);
size_t wsz = ftell(fw); // Get bytes
size_t nbWild = wsz / 129; // Get lines
fclose(fw);
// For check
//printf("File wild.txt: %llu bytes %llu lines \n", (uint64_t)wsz, (uint64_t)nbWild);
// Parse File Wild
int nbWLine = 0;
string Wline = "";
ifstream inFileW(WfileName);
Wpoint.reserve(nbWild);
Wkey.reserve(nbWild);
while (getline(inFileW, Wline)) {
// Remove ending \r\n
int l = (int)Wline.length() - 1;
while (l >= 0 && isspace(Wline.at(l))) {
Wline.pop_back();
l--;
}
if (Wline.length() == 129) {
Wpoint.push_back(Wline.substr(0, 64));
Wkey.push_back(Wline.substr(65, 129));
nbWLine++;
// For check
//printf(" %s %d \n", Wpoint[0].c_str(), nbWLine);
//printf(" %s %d \n", Wkey[0].c_str(), nbWLine);
}
}
// Tame
// Get file size tame
FILE *ft = fopen(TfileName.c_str(), "rb");
if (ft == NULL) {
printf("Error: Cannot open %s %s\n", TfileName.c_str(), strerror(errno));
}
fseek(ft, 0L, SEEK_END);
size_t tsz = ftell(ft); // Get bytes
size_t nbTame = tsz / 129; // Get lines
fclose(ft);
// For check
//printf("File tame.txt: %llu bytes %llu lines \n", (uint64_t)tsz, (uint64_t)nbTame);
// Parse File Tame
int nbTLine = 0;
string Tline = "";
ifstream inFileT(TfileName);
Tpoint.reserve(nbTame);
Tkey.reserve(nbTame);
while (getline(inFileT, Tline)) {
// Remove ending \r\n
int l = (int)Tline.length() - 1;
while (l >= 0 && isspace(Tline.at(l))) {
Tline.pop_back();
l--;
}
if (Tline.length() == 129) {
Tpoint.push_back(Tline.substr(0, 64));
Tkey.push_back(Tline.substr(65, 129));
nbTLine++;
// For check
//printf(" %s %d \n", Tpoint[0].c_str(), nbTLine);
//printf(" %s %d \n", Tkey[0].c_str(), nbTLine);
}
}
// Compare lines
int result = 0;
string WDistance = "";
string TDistance = "";
for (int wi = 0; wi < nbWLine; wi++) {
for (int ti = 0; ti < nbTLine; ti++) {
if (strcmp(Wpoint[wi].c_str(), Tpoint[ti].c_str()) == 0) {
result++;
if (result > 0) {
printf("\n%d Compared lines Tame %d = Wild %d ", result, ti+1, wi+1);
printf("\nTame Distance: 0x%s ", Tkey[ti].c_str());
printf("\nWild Distance: 0x%s ", Wkey[wi].c_str());
}
WDistance = Wkey[wi].c_str();
TDistance = Tkey[ti].c_str();
}
}
}
auto end = std::chrono::steady_clock::now();
std::chrono::duration elapsed_ms = end - begin;
if (flag_verbose > 0) {
printf("\n[i] Comparator time: %.*f msec %s %llu bytes %s %llu bytes \n", 3, elapsed_ms, WfileName.c_str(), (uint64_t)wsz, TfileName.c_str(), (uint64_t)tsz);
}
if (result > 0) {
// Get SOLVED
Int WDist;
Int TDist;
Int Priv;
char *wd = new char [WDistance.length()+1];
char *td = new char [TDistance.length()+1];
strcpy(wd, WDistance.c_str());
strcpy(td, TDistance.c_str());
WDist.SetBase16(wd);
TDist.SetBase16(td);
Priv.SetInt32(0);
if (TDist.IsLower(&WDist))
Priv.Sub(&WDist, &TDist);
else if (TDist.IsGreater(&WDist))
Priv.Sub(&TDist, &WDist);
else {
printf("\n[FATAL_ERROR] Wild Distance == Tame Distance !!!\n");
}
printf("\nSOLVED: 0x%s \n", Priv.GetBase16().c_str());
printf("Tame Distance: 0x%s \n", TDist.GetBase16().c_str());
printf("Wild Distance: 0x%s \n", WDist.GetBase16().c_str());
printf("\n[i] Comparator time: %.*f msec %s %llu bytes %s %llu bytes \n", 3, elapsed_ms, WfileName.c_str(), (uint64_t)wsz, TfileName.c_str(), (uint64_t)tsz);
// SAVE SOLVED
bool saved = output(Priv.GetBase16().c_str());
if (saved) {
printf("[i] Success saved to file %s\n", outputFile.c_str());
}
return true;
}
return false;
}
P.S. Topic moderator delete posts selling scripts.
After seen Bull Fight , no one know who win, and interval started without mention break time, when next show will start for community to watch