Skip to content

Commit

Permalink
Merget address mode and rmd160 now both of them have the same speed
Browse files Browse the repository at this point in the history
  • Loading branch information
albertobsd committed Apr 25, 2023
1 parent 81eedca commit 5a6d8a4
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 66 deletions.
39 changes: 19 additions & 20 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,24 +1,23 @@
default:
g++ -m64 -Ofast -march=native -funroll-loops -flto -c oldbloom/bloom.cpp -o oldbloom.o
g++ -m64 -Ofast -march=native -funroll-loops -flto -c bloom/bloom.cpp -o bloom.o
# g++ -Ofast -c sha256/sha256.c -o sha256.o
gcc -m64 -Ofast -march=native -funroll-loops -flto -c base58/base58.c -o base58.o
gcc -m64 -Ofast -march=native -funroll-loops -flto -c rmd160/rmd160.c -o rmd160.o
g++ -m64 -Ofast -march=native -funroll-loops -flto -c sha3/sha3.c -o sha3.o
g++ -m64 -Ofast -march=native -funroll-loops -flto -c sha3/keccak.c -o keccak.o
gcc -m64 -Ofast -march=native -funroll-loops -flto -c xxhash/xxhash.c -o xxhash.o
g++ -m64 -Ofast -march=native -funroll-loops -flto -c util.c -o util.o
g++ -m64 -march=native -Wno-unused-result -Wno-write-strings -Ofast -c secp256k1/Int.cpp -o Int.o
g++ -m64 -march=native -Wno-unused-result -Wno-write-strings -Ofast -c secp256k1/Point.cpp -o Point.o
g++ -m64 -march=native -Wno-unused-result -Wno-write-strings -Ofast -c secp256k1/SECP256K1.cpp -o SECP256K1.o
g++ -m64 -march=native -Wno-unused-result -Wno-write-strings -Ofast -c secp256k1/IntMod.cpp -o IntMod.o
g++ -m64 -march=native -Wno-unused-result -Wno-write-strings -Ofast -c secp256k1/Random.cpp -o Random.o
g++ -m64 -march=native -Wno-unused-result -Wno-write-strings -Ofast -c secp256k1/IntGroup.cpp -o IntGroup.o
g++ -m64 -march=native -Wno-write-strings -Ofast -o hash/ripemd160.o -c hash/ripemd160.cpp
g++ -m64 -march=native -Wno-write-strings -Ofast -o hash/sha256.o -c hash/sha256.cpp
g++ -m64 -march=native -Wno-write-strings -Ofast -o hash/ripemd160_sse.o -c hash/ripemd160_sse.cpp
g++ -m64 -march=native -Wno-write-strings -Ofast -o hash/sha256_sse.o -c hash/sha256_sse.cpp
g++ -m64 -Ofast -march=native -funroll-loops -flto -o keyhunt keyhunt.cpp base58.o rmd160.o hash/ripemd160.o hash/ripemd160_sse.o hash/sha256.o hash/sha256_sse.o bloom.o oldbloom.o xxhash.o util.o Int.o Point.o SECP256K1.o IntMod.o Random.o IntGroup.o sha3.o keccak.o -lm -pthread
g++ -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -ftree-vectorize -flto -c oldbloom/bloom.cpp -o oldbloom.o
g++ -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -ftree-vectorize -flto -c bloom/bloom.cpp -o bloom.o
gcc -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -ftree-vectorize -c base58/base58.c -o base58.o
gcc -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -ftree-vectorize -c rmd160/rmd160.c -o rmd160.o
g++ -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -ftree-vectorize -c sha3/sha3.c -o sha3.o
g++ -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -ftree-vectorize -c sha3/keccak.c -o keccak.o
gcc -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -ftree-vectorize -c xxhash/xxhash.c -o xxhash.o
g++ -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -ftree-vectorize -c util.c -o util.o
g++ -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -ftree-vectorize -c secp256k1/Int.cpp -o Int.o
g++ -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -ftree-vectorize -c secp256k1/Point.cpp -o Point.o
g++ -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -ftree-vectorize -c secp256k1/SECP256K1.cpp -o SECP256K1.o
g++ -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -ftree-vectorize -c secp256k1/IntMod.cpp -o IntMod.o
g++ -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -ftree-vectorize -flto -c secp256k1/Random.cpp -o Random.o
g++ -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -ftree-vectorize -flto -c secp256k1/IntGroup.cpp -o IntGroup.o
g++ -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -o hash/ripemd160.o -ftree-vectorize -flto -c hash/ripemd160.cpp
g++ -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -o hash/sha256.o -ftree-vectorize -flto -c hash/sha256.cpp
g++ -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -o hash/ripemd160_sse.o -ftree-vectorize -flto -c hash/ripemd160_sse.cpp
g++ -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -o hash/sha256_sse.o -ftree-vectorize -flto -c hash/sha256_sse.cpp
g++ -m64 -march=native -mtune=native -mssse3 -Wno-unused-result -Wno-write-strings -Ofast -ftree-vectorize -o keyhunt keyhunt.cpp base58.o rmd160.o hash/ripemd160.o hash/ripemd160_sse.o hash/sha256.o hash/sha256_sse.o bloom.o oldbloom.o xxhash.o util.o Int.o Point.o SECP256K1.o IntMod.o Random.o IntGroup.o sha3.o keccak.o -lm -lpthread
rm -r *.o
clean:
rm keyhunt
111 changes: 65 additions & 46 deletions keyhunt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -417,7 +417,7 @@ int main(int argc, char **argv) {
int readed,continue_flag,check_flag,r,lenaux,lendiff,c,salir,index_value;
Int total,pretotal,debugcount_mpz,seconds,div_pretotal,int_aux,int_r,int_q,int58;
struct bPload *bPload_temp_ptr;
size_t rsize;
size_t rsize,raw_value_length;

#if defined(_WIN64) && !defined(__CYGWIN__)
DWORD s;
Expand Down Expand Up @@ -913,25 +913,18 @@ int main(int argc, char **argv) {
switch(FLAGMODE) {
case MODE_ADDRESS:
/* We need to count how many lines are in the file */
while(!feof(fd)) {
hextemp = fgets(aux,998,fd);
if(hextemp == aux) {
trim(aux," \t\n\r");
r = strlen(aux);
if(r > 10) { //Any length for invalid Address?
if(r > MAXLENGTHADDRESS) {
MAXLENGTHADDRESS = r;
}
N++;
}
while(!feof(fd)) {
hextemp = fgets(aux,998,fd);
if(hextemp == aux) {
trim(aux," \t\n\r");
r = strlen(aux);
if(r > 20) {
N++;
}
}
if(FLAGCRYPTO == CRYPTO_BTC) {
MAXLENGTHADDRESS = 32;
}
if(FLAGCRYPTO == CRYPTO_ETH) {
MAXLENGTHADDRESS = 20; /*20 bytes beacuase we only need the data in binary*/
}
}

MAXLENGTHADDRESS = 20; /*20 bytes beacuase we only need the data in binary*/
break;
case MODE_MINIKEYS:
case MODE_PUB2RMD:
Expand Down Expand Up @@ -1008,8 +1001,7 @@ int main(int argc, char **argv) {
fseek(fd,0,SEEK_SET);

if(FLAGMODE != MODE_VANITY ) {
printf("[+] Allocating memory for %" PRIu64 " elements: %.2f MB\n",N,(double)(((double) sizeof(struct address_value)*N)/(double)1048576));
i = 0;
printf("[+] Allocating memory for %" PRIu64 " elements: %.2f MB\n",N,(double)(((double) sizeof(struct address_value)*N)/(double)1048576));
addressTable = (struct address_value*) malloc(sizeof(struct address_value)*N);
checkpointer((void *)addressTable,__FILE__,"malloc","addressTable" ,__LINE__);
}
Expand All @@ -1021,7 +1013,7 @@ int main(int argc, char **argv) {
}
}
else {
if(bloom_init2(&bloom,N,0.000001) == 1){
if(bloom_init2(&bloom,2*N,0.000001) == 1){
fprintf(stderr,"[E] error bloom_init for %" PRIu64 " elements.\n",N);
exit(0);
}
Expand All @@ -1031,7 +1023,7 @@ int main(int argc, char **argv) {

switch (FLAGMODE) {
case MODE_VANITY:
aux =(char*) malloc(1); //To avoid "free(): double free detected in tcache 2" is this or chage more code
aux =(char*) malloc(1); //To avoid "free(): double free detected in tcache 2", is that or chage more code

while(i < vanity_rmd_targets) {
if(FLAGDEBUG) {
Expand All @@ -1051,21 +1043,66 @@ int main(int argc, char **argv) {
break;
case MODE_ADDRESS:
if(FLAGCRYPTO == CRYPTO_BTC) { // BTC address
aux =(char*) malloc(2*MAXLENGTHADDRESS);
aux =(char*) malloc(8*MAXLENGTHADDRESS);
checkpointer((void *)aux,__FILE__,"malloc","aux" ,__LINE__);
while(i < N) {
memset(aux,0,2*MAXLENGTHADDRESS);
if(FLAGDEBUG && i % 1000000 == 0)printf("[D] working %li\n",i);
memset(aux,0,8*MAXLENGTHADDRESS);
memset(addressTable[i].value,0,sizeof(struct address_value));
hextemp = fgets(aux,2*MAXLENGTHADDRESS,fd);
hextemp = fgets(aux,8*MAXLENGTHADDRESS,fd);
if(hextemp == aux) {
trim(aux," \t\n\r");
bloom_add(&bloom, aux,MAXLENGTHADDRESS);
memcpy(addressTable[i].value,aux,20);
i++;
r = strlen(aux);
if(r > 0) {
switch(aux[0]) {
case '1':
if(isValidBase58String(aux)){
if(r <= 36) {
raw_value_length = 25;
b58tobin(rawvalue,&raw_value_length,aux,r);
if(raw_value_length == 25) {
bloom_add(&bloom, rawvalue+1 ,sizeof(struct address_value));
memcpy(addressTable[i].value,rawvalue+1,sizeof(struct address_value));
i++;
}
else {
fprintf(stderr,"[I] Invalid decoded size %s\n",aux);
N--;
}
}
else {
N--;
fprintf(stderr,"[I] Address too long %s\n",aux);
}
}
else {
fprintf(stderr,"[I] Invalid base58 Address %s\n",aux);
N--;
}
break;
case 'b':
N--;
fprintf(stderr,"[I] Unsopporting type of address %s\n",aux);
break;
case '3':
N--;
fprintf(stderr,"[I] Unsopporting type of address %s\n",aux);
break;
default:
N--;
fprintf(stderr,"[I] Unknown type of address %s\n",aux);
break;
}
}
else {
N--;
fprintf(stderr,"[E] Omiting line : %s\n",aux);
}
}
else {
trim(aux," \t\n\r");
fprintf(stderr,"[E] Omiting line : %s\n",aux);
N--;
}
}
}
Expand Down Expand Up @@ -6774,13 +6811,6 @@ int addvanity(char *target) {
raw_value_length = 50;
b58tobin(raw_value_A,&raw_value_length,target_copy,stringsize);
if(raw_value_length < 25) {
/*
if(FLAGDEBUG) {
hextemp = tohex((char*)raw_value_A,25);
printf("Raw size: %li, Encoded size: %i : expected string %s, base string %s => hex %s\n", raw_value_length,stringsize,target,target_copy,hextemp);
free(hextemp);
}
*/
target_copy[stringsize] = '1';
stringsize++;
}
Expand All @@ -6794,13 +6824,11 @@ int addvanity(char *target) {

memcpy(vanity_rmd_limit_values_A[vanity_rmd_targets][j] ,raw_value_A +1,20);

/*
if(FLAGDEBUG) {
hextemp = tohex((char*)vanity_rmd_limit_values_A[vanity_rmd_targets][j],20);
printf("[D] Raw size: %li, Encoded size: %i : expected string %s, base string %s => hex %s\n", raw_value_length,stringsize,target,target_copy,hextemp);
free(hextemp);
}
*/

j++;
values_A_size = j;
Expand All @@ -6820,13 +6848,6 @@ int addvanity(char *target) {
raw_value_length = 50;
b58tobin(raw_value_B,&raw_value_length,target_copy,stringsize);
if(raw_value_length < 25) {
/*
if(FLAGDEBUG) {
hextemp = tohex((char*)vanity_rmd_limit_values_B[vanity_rmd_targets][j],20);
printf("Raw size: %li, Encoded size: %i : expected string %s, base string %s => hex %s\n", raw_value_length,stringsize,target,target_copy,hextemp);
free(hextemp);
}
*/
target_copy[stringsize] = 'z';
stringsize++;
}
Expand All @@ -6839,13 +6860,11 @@ int addvanity(char *target) {
vanity_rmd_limit_values_B[vanity_rmd_targets][j] = (uint8_t*)calloc(20,1);
checkpointer((void *)vanity_rmd_limit_values_B[vanity_rmd_targets][j],__FILE__,"calloc","vanity_rmd_limit_values_B" ,__LINE__);
memcpy(vanity_rmd_limit_values_B[vanity_rmd_targets][j],raw_value_B+1,20);
/*
if(FLAGDEBUG) {
hextemp = tohex((char*)vanity_rmd_limit_values_B[vanity_rmd_targets][j],20);
printf("[D] Raw size: %li, Encoded size: %i : expected string %s, base string %s => hex %s\n", raw_value_length,stringsize,target,target_copy,hextemp);
free(hextemp);
}
*/
j++;
values_B_size = j;

Expand Down

0 comments on commit 5a6d8a4

Please sign in to comment.