62 2000000000000000 - 3FFFFFFFFFFFFFFF 63 4000000000000000 - 7FFFFFFFFFFFFFFF 64 8000000000000000- FFFFFFFFFFFFFFFF
If realy getting random number at privat key. And used previos statisks. When, no any numbers not found in previos 30 percent in own range. Pos='01' Diff='0' Pos='0' Perc='100' Percent2='100' Pos='02' Diff='2' Pos='2' Perc='100' Percent2='100' Pos='03' Diff='5' Pos='5' Perc='100' Percent2='100' Pos='04' Diff='11' Pos='4' Perc='36.36' Percent2='53.33' Pos='05' Diff='23' Pos='13' Perc='56.52' Percent2='67.74' Pos='06' Diff='47' Pos='33' Perc='70.21' Percent2='77.77' Pos='07' Diff='95' Pos='44' Perc='46.31' Percent2='59.84' Pos='08' Diff='191' Pos='160' Perc='83.76' Percent2='87.84' Pos='09' Diff='383' Pos='339' Perc='88.51' Percent2='91.38' Pos='10' Diff='767' Pos='258' Perc='33.63' Percent2='50.24' Pos='11' Diff='1535' Pos='643' Perc='41.88' Percent2='56.42' Pos='12' Diff='3071' Pos='1659' Perc='54.02' Percent2='65.51' Pos='13' Diff='6143' Pos='3168' Perc='51.57' Percent2='63.67' Pos='14' Diff='12287' Pos='6448' Perc='52.47' Percent2='64.35' Pos='15' Diff='24575' Pos='18675' Perc='75.99' Percent2='81.99' Pos='16' Diff='49151' Pos='35126' Perc='71.46' Percent2='78.59' Pos='17' Diff='98303' Pos='63055' Perc='64.14' Percent2='73.1' Pos='18' Diff='196607' Pos='133133' Perc='67.71' Percent2='75.78' Pos='19' Diff='393215' Pos='226463' Perc='57.59' Percent2='68.19' Pos='20' Diff='786431' Pos='601173' Perc='76.44' Percent2='82.33' Pos='21' Diff='1572863' Pos='1287476' Perc='81.85' Percent2='86.39' Pos='22' Diff='3145727' Pos='1958927' Perc='62.27' Percent2='71.7' Pos='23' Diff='6291455' Pos='3501650' Perc='55.65' Percent2='66.74' Pos='24' Diff='12582911' Pos='10234372' Perc='81.33' Percent2='86' Pos='25' Diff='25165823' Pos='24796901' Perc='98.53' Percent2='98.9' Pos='26' Diff='50331647' Pos='37761646' Perc='75.02' Percent2='81.26' Pos='27' Diff='100663295' Pos='78395509' Perc='77.87' Percent2='83.4' Pos='28' Diff='201326591' Pos='160525544' Perc='79.73' Percent2='84.8' Pos='29' Diff='402653183' Pos='266491166' Perc='66.18' Percent2='74.63' Pos='30' Diff='805306367' Pos='764726628' Perc='94.96' Percent2='96.22' Pos='31' Diff='1610612735' Pos='1565517639' Perc='97.2' Percent2='97.9' Pos='32' Diff='3221225471' Pos='2019730990' Perc='62.7' Percent2='72.02' Pos='33' Diff='6442450943' Pos='4989954264' Perc='77.45' Percent2='83.09' Pos='34' Diff='12884901887' Pos='9838104861' Perc='76.35' Percent2='82.26' Pos='35' Diff='25769803775' Pos='11522937200' Perc='44.71' Percent2='58.53' Pos='36' Diff='51539607551' Pos='25207900796' Perc='48.9' Percent2='61.68' Pos='37' Diff='103079215103' Pos='65891822227' Perc='63.92' Percent2='72.94' Pos='38' Diff='206158430207' Pos='78252059856' Perc='37.95' Percent2='53.46' Pos='39' Diff='412316860415' Pos='186286015465' Perc='45.18' Percent2='58.88' Pos='40' Diff='824633720831' Pos='728773506006' Perc='88.37' Percent2='91.28' Pos='41' Diff='1649267441663' Pos='908496391259' Perc='55.08' Percent2='66.31' Pos='42' Diff='3298534883327' Pos='1795862924687' Perc='54.44' Percent2='65.83' Pos='43' Diff='6597069766655' Pos='5210787792273' Perc='78.98' Percent2='84.23' Pos='44' Diff='13194139533311' Pos='11006715245967' Perc='83.42' Percent2='87.56' Pos='45' Diff='26388279066623' Pos='11200370064389' Perc='42.44' Percent2='56.83' Pos='46' Diff='52776558133247' Pos='33816484304196' Perc='64.07' Percent2='73.05' Pos='47' Diff='105553116266495' Pos='84482287025338' Perc='80.03' Percent2='85.02' Pos='48' Diff='211106232532991' Pos='120838230522779' Perc='57.24' Percent2='67.93' Pos='49' Diff='422212465065983' Pos='268381416677197' Perc='63.56' Percent2='72.67' Pos='50' Diff='844424930131967' Pos='329665519457108' Perc='39.04' Percent2='54.28' Pos='51' Diff='1688849860263935' Pos='1495819561732564' Perc='88.57' Percent2='91.42' Pos='52' Diff='3377699720527871' Pos='3090595732758076' Perc='91.5' Percent2='93.62' Pos='53' Diff='6755399441055743' Pos='4511884157792876' Perc='66.78' Percent2='75.09' Pos='54' Diff='13510798882111487' Pos='5470855617126211' Perc='40.49' Percent2='55.36' Pos='55' Diff='27021597764222975' Pos='21038191237128468' Perc='77.85' Percent2='83.39' Pos='56' Diff='54043195528445951' Pos='26204343783194591' Perc='48.48' Percent2='61.36' Pos='57' Diff='108086391056891903' Pos='102216961891882524' Perc='94.56' Percent2='95.92' Pos='58' Diff='216172782113783807' Pos='127919073938414113' Perc='59.17' Percent2='69.38' Pos='59' Diff='432345564227567615' Pos='380955196182410319' Perc='88.11' Percent2='91.08' Pos='60' Diff='864691128455135231' Pos='846810974067784638' Perc='97.93' Percent2='98.44' Pos='61' Diff='1729382256910270463' Pos='849326790315231494' Perc='49.11' Percent2='61.83'
First percent in own range. Second in full range from 0 to own end. It just happens that it is difficult (small chance) to get a large number of consecutive zeros. And a very small chance that it will look like 10001... or 1001... or 101... or 11... and a very small chance that it will look like 1000000000.....But for some reason, this logic does not come to the end of the list. If we throw away very small ranges, then we see that there are a lot of keys in the range of 90 percent. 98.53, 94.96, 97.2, 91.5, 94.56, 97.93. By the way, this does not contradict logic. Six out of sixty is 10 percent. And from 90 to 99.99 is also 10 percent. Sorted percentage Percent='33.63' Count='1' Percent='36.36' Count='1' Percent='37.95' Count='1' Percent='39.04' Count='1' Percent='40.49' Count='1' Percent='41.88' Count='1' Percent='42.44' Count='1' Percent='44.71' Count='1' Percent='45.18' Count='1' Percent='46.31' Count='1' Percent='48.48' Count='1' Percent='48.9' Count='1' Percent='49.11' Count='1' Percent='51.57' Count='1' Percent='52.47' Count='1' Percent='54.02' Count='1' Percent='54.44' Count='1' Percent='55.08' Count='1' Percent='55.65' Count='1' Percent='56.52' Count='1' Percent='57.24' Count='1' Percent='57.59' Count='1' Percent='59.17' Count='1' Percent='62.27' Count='1' Percent='62.7' Count='1' Percent='63.56' Count='1' Percent='63.92' Count='1' Percent='64.07' Count='1' Percent='64.14' Count='1' Percent='66.18' Count='1' Percent='66.78' Count='1' Percent='67.71' Count='1' Percent='70.21' Count='1' Percent='71.46' Count='1' Percent='75.02' Count='1' Percent='75.99' Count='1' Percent='76.35' Count='1' Percent='76.44' Count='1' Percent='77.45' Count='1' Percent='77.85' Count='1' Percent='77.87' Count='1' Percent='78.98' Count='1' Percent='79.73' Count='1' Percent='80.03' Count='1' Percent='81.33' Count='1' Percent='81.85' Count='1' Percent='83.42' Count='1' Percent='83.76' Count='1' Percent='88.11' Count='1' Percent='88.37' Count='1' Percent='88.51' Count='1' Percent='88.57' Count='1' Percent='91.5' Count='1' Percent='94.56' Count='1' Percent='94.96' Count='1' Percent='97.2' Count='1' Percent='97.93' Count='1' Percent='98.53' Count='1' Percent='100' Count='3' Based on this, we can conclude that in the key in the binary form there will be a small probability of long repetitions of zero or unity. 01 1 Max1:1 Max0:0 Min1:1 Min0:0 InStr: 1 02 11 Max1:2 Max0:0 Min1:2 Min0:0 InStr: 2 03 111 Max1:3 Max0:0 Min1:3 Min0:0 InStr: 3 04 1000 Max1:1 Max0:3 Min1:0 Min0:3 InStr: 13 05 10101 Max1:1 Max0:1 Min1:1 Min0:0 InStr: 11111 06 110001 Max1:2 Max0:3 Min1:1 Min0:0 InStr: 231 07 1001100 Max1:2 Max0:2 Min1:0 Min0:2 InStr: 1222 08 11100000 Max1:3 Max0:5 Min1:0 Min0:5 InStr: 35 09 111010011 Max1:3 Max0:2 Min1:1 Min0:0 InStr: 31122 10 1000000010 Max1:1 Max0:7 Min1:0 Min0:1 InStr: 1711 11 10010000011 Max1:2 Max0:5 Min1:1 Min0:0 InStr: 12152 12 101001111011 Max1:4 Max0:2 Min1:1 Min0:0 InStr: 1112412 13 1010001100000 Max1:2 Max0:5 Min1:0 Min0:1 InStr: 111325 14 10100100110000 Max1:2 Max0:4 Min1:0 Min0:1 InStr: 11121224 15 110100011110011 Max1:4 Max0:3 Min1:1 Min0:0 InStr: 2113422 16 1100100100110110 Max1:2 Max0:2 Min1:0 Min0:1 InStr: 2212122121 17 10111011001001111 Max1:4 Max0:2 Min1:1 Min0:0 InStr: 113122124 18 110000100000001101 Max1:2 Max0:7 Min1:1 Min0:0 InStr: 2417211 19 1010111010010011111 Max1:5 Max0:2 Min1:1 Min0:0 InStr: 11113112125 20 11010010110001010101 Max1:2 Max0:3 Min1:1 Min0:0 InStr: 211211231111111 21 110111010010100110100 Max1:3 Max0:2 Min1:0 Min0:1 InStr: 21311211122112 22 1011011110010000001111 Max1:4 Max0:6 Min1:1 Min0:0 InStr: 112142164 23 10101010110111001010010 Max1:3 Max0:2 Min1:0 Min0:1 InStr: 111111112132111211 24 110111000010101000000100 Max1:3 Max0:6 Min1:0 Min0:1 InStr: 213411111612 25 1111110100101111011100101 Max1:6 Max0:2 Min1:1 Min0:0 InStr: 6112114132111 26 11010000000011001001101110 Max1:3 Max0:8 Min1:0 Min0:1 InStr: 211822122131 27 110101011000011100001110101 Max1:3 Max0:4 Min1:1 Min0:0 InStr: 211111243431111 28 1101100100010110110011101000 Max1:3 Max0:3 Min1:0 Min0:1 InStr: 2122131121223113 29 10111111000100101010100011110 Max1:6 Max0:3 Min1:0 Min0:1 InStr: 1163121111111341 30 111101100101001100110101100100 Max1:4 Max0:2 Min1:0 Min0:1 InStr: 412211122221112212 31 1111101010011111110011101000111 Max1:7 Max0:3 Min1:1 Min0:0 InStr: 5111127231133 32 10111000011000101010011000101110 Max1:3 Max0:4 Min1:0 Min0:1 InStr: 113423111112231131 33 110101001011011001010100011011000 Max1:2 Max0:3 Min1:0 Min0:1 InStr: 2111121121221111132123 34 1101001010011001011001000100011101 Max1:3 Max0:3 Min1:1 Min0:0 InStr: 211211122211221313311 35 10010101110110100100001000101110000 Max1:3 Max0:4 Min1:0 Min0:1 InStr: 12111131211214131134 36 100111011110100000100000101001111100 Max1:5 Max0:5 Min1:0 Min0:1 InStr: 1231411515111252 37 1011101010111011101010110101010010011 Max1:3 Max0:2 Min1:1 Min0:0 InStr: 113111113131111121111112122 38 10001000111000001011111010110011010000 Max1:5 Max0:5 Min1:0 Min0:1 InStr: 131335115111222114 39 100101101011111100000110000001111101001 Max1:6 Max0:6 Min1:1 Min0:0 InStr: 12112111652651121 40 1110100110101110010010010011001111010110 Max1:4 Max0:2 Min1:0 Min0:1 InStr: 311221113212121222411121 41 10101001110000110100110101100110001011011 Max1:3 Max0:4 Min1:1 Min0:0 InStr: 1111123421122111222311212 42 101010001000100001110001011000110110001111 Max1:4 Max0:4 Min1:1 Min0:0 InStr: 111113131433112321234 43 1101011110100111011001001111100010110010001 Max1:5 Max0:3 Min1:1 Min0:0 InStr: 21114112312212531122131 44 11100000001010110011010110100011010110001111 Max1:4 Max0:7 Min1:1 Min0:0 InStr: 37111122211121132111234 45 100100010111111001010000101000011110000000101 Max1:6 Max0:7 Min1:1 Min0:0 InStr: 121311621114111447111 46 1011101100000110000011100010001101010101000100 Max1:3 Max0:5 Min1:0 Min0:1 InStr: 113125253313211111111312 47 11011001101011000010000101101010011110010111010 Max1:4 Max0:4 Min1:0 Min0:1 InStr: 2122211124141121111242113111 48 101011011110011011010111110011100011101110011011 Max1:5 Max0:3 Min1:1 Min0:0 InStr: 1111214221211152333132212 49 1011101000001011101101011000000010101111101001101 Max1:5 Max0:7 Min1:1 Min0:0 InStr: 113115113121112711115112211 50 10001010111101010000111100001011101001001101010100 Max1:4 Max0:4 Min1:0 Min0:1 InStr: 131111411114441131121221111112 51 111010100000111000010100001101000000000100111010100 Max1:3 Max0:9 Min1:0 Min0:1 InStr: 311115341114211912311112 52 1110111110101110000101100100110010111001111000111100 Max1:5 Max0:4 Min1:0 Min0:1 InStr: 315111341122122211324342 53 11000000001111000100011100100011111100011001001101100 Max1:6 Max0:8 Min1:0 Min0:1 InStr: 28431332136322122122 54 100011011011111011011011010101101011010001111101000011 Max1:5 Max0:4 Min1:1 Min0:0 InStr: 1321215121212111112111211351142 55 1101010101111100001111110011011011001111110000100010100 Max1:6 Max0:4 Min1:0 Min0:1 InStr: 21111111546221212264131112 56 10011101000110001011011000111010110001001111111111011111 Max1:10 Max0:3 Min1:1 Min0:0 InStr: 1231132311212331112312a15 57 111101011001001011100100100000111100101011101011000011100 Max1:4 Max0:5 Min1:0 Min0:1 InStr: 411122121132121542111131112432 58 1011000110011101011011100001010010000110001001101000100001 Max1:3 Max0:4 Min1:1 Min0:0 InStr: 1123223111213411121423122113141 59 11101001001011011001011101110000111110010101011010001001111 Max1:5 Max0:4 Min1:1 Min0:0 InStr: 311212112122113134521111112113124 60 111111000000011110100001100000100101001101100111101110111110 Max1:6 Max0:7 Min1:0 Min0:1 InStr: 674114251211122122413151 61 1001111001001011010100011011101000010111101100100100100000110 Max1:4 Max0:5 Min1:0 Min0:1 InStr: 1242121121111321311411412212121521
Theoretically, using this data, and also add a calculation of the repetition of the following public address. You can make an algorithm that will iterate over the initially possible private keys. Increasing repetition ranges. Sorry by english. Translating.
|
|
|
Thank you so much.... Now that's working.
5-10 percetn from found prize Jock Good luck.
|
|
|
On first machine (600GB RAM):Check bit = 90 only, pubkey is: 035c38bd9ae4b10e8a250857006f3cfd98ab15a6196d9f4dfd25bc7ecc77d788d5 Build Hash, MEM size = 384GB On second machine (80GB RAM): Check bit = 90 only, pubkey is: 035c38bd9ae4b10e8a250857006f3cfd98ab15a6196d9f4dfd25bc7ecc77d788d5 Build Hash, MEM size = 64GB Search bits = 90 Search Keys.... from 20000000000000000000000 to 3ffffffffffffffffffffff
... and nothing changes from two days on both machines. Something is wrong? Am I to understand that no more changes are expected in these processes? Can someone modify the code in such a way that the process is visible (along with the percentage)? After string for (uint64_t i = 1; i < GSTEP; i++) { insert if(i%1000000==0){ time_t tt = time(NULL); tim = localtime(&tt); printf("%d:%d:%d Loop generate %zu from %zu, %g%% \n", tim->tm_hour, tim->tm_min, tim->tm_sec, i, GSTEP, (double)(i/(GSTEP/100))); }
showed percentage at generated array. Where 1000000 each showed. May changed. After string for (uint64_t i = skip; i < g_max; i++) { Insert if(i%10000000==0){ time_t tt = time(NULL); tim = localtime(&tt); uint64_t real_i = i - skip; uint64_t real_diff = g_max - skip; printf("%d:%d:%d Search in %zu from start %zu end %zu, real_i:%zu \t \t real_diff:%zu \tPercent %g%% \n", tim->tm_hour, tim->tm_min, tim->tm_sec, i, skip, g_max, real_i, real_diff, (double)(real_i/(real_diff/100))); }
showed percentage each 10000000 try searched. 9.c: In function ‘main’: 9.c:107:2: error: ‘tim’ undeclared (first use in this function); did you mean ‘time’? tim = localtime(&tt); ^~~ time 9.c:107:2: note: each undeclared identifier is reported only once for each function it appears in Sorry Before string printf("Build Hash, MEM size = %dGB\n", (uint32_t)(HASH_SIZE*one_table_bytes>>30));
insert example uint64_t one_table_bytes; one_table_bytes = (uint64_t)&table[1] - (uint64_t)&table[0]; struct tm *tim;//Inser this line
printf("Build Hash, MEM size = %dGB\n", (uint32_t)(HASH_SIZE*one_table_bytes>>30)); secp256k1_gej pt;
|
|
|
On first machine (600GB RAM):Check bit = 90 only, pubkey is: 035c38bd9ae4b10e8a250857006f3cfd98ab15a6196d9f4dfd25bc7ecc77d788d5 Build Hash, MEM size = 384GB On second machine (80GB RAM): Check bit = 90 only, pubkey is: 035c38bd9ae4b10e8a250857006f3cfd98ab15a6196d9f4dfd25bc7ecc77d788d5 Build Hash, MEM size = 64GB Search bits = 90 Search Keys.... from 20000000000000000000000 to 3ffffffffffffffffffffff
... and nothing changes from two days on both machines. Something is wrong? Am I to understand that no more changes are expected in these processes? Can someone modify the code in such a way that the process is visible (along with the percentage)? After string for (uint64_t i = 1; i < GSTEP; i++) { insert if(i%1000000==0){ time_t tt = time(NULL); tim = localtime(&tt); printf("%d:%d:%d Loop generate %zu from %zu, %g%% \n", tim->tm_hour, tim->tm_min, tim->tm_sec, i, GSTEP, (double)(i/(GSTEP/100))); }
showed percentage at generated array. Where 1000000 each showed. May changed. After string for (uint64_t i = skip; i < g_max; i++) { Insert if(i%10000000==0){ time_t tt = time(NULL); tim = localtime(&tt); uint64_t real_i = i - skip; uint64_t real_diff = g_max - skip; printf("%d:%d:%d Search in %zu from start %zu end %zu, real_i:%zu \t \t real_diff:%zu \tPercent %g%% \n", tim->tm_hour, tim->tm_min, tim->tm_sec, i, skip, g_max, real_i, real_diff, (double)(real_i/(real_diff/100))); }
showed percentage each 10000000 try searched.
|
|
|
Somthing wrong in algoritms Added show debug outputs. ./break-short-low-mem-2 Check bit = 90 only, pubkey is: 035c38bd9ae4b10e8a250857006f3cfd98ab15a6196d9f4dfd25bc7ecc77d788d5 Build Hash, MEM size = 12GB 2:51:13 Start generate 1000000 from 536870912, 0% 2:51:19 Start generate 2000000 from 536870912, 0% 2:51:25 Start generate 3000000 from 536870912, 0% 2:51:30 Start generate 4000000 from 536870912, 0% 2:51:34 Start generate 5000000 from 536870912, 0% 2:51:39 Start generate 6000000 from 536870912, 1% 2:51:43 Start generate 7000000 from 536870912, 1% ...... .......... ...... 3:25:14 Start generate 529000000 from 536870912, 98% 3:25:18 Start generate 530000000 from 536870912, 98% 3:25:22 Start generate 531000000 from 536870912, 98% 3:25:26 Start generate 532000000 from 536870912, 99% 3:25:30 Start generate 533000000 from 536870912, 99% 3:25:34 Start generate 534000000 from 536870912, 99% 3:25:38 Start generate 535000000 from 536870912, 99% 3:25:42 Start generate 536000000 from 536870912, 99% Search bits = 90 Search Keys.... from 20000000000000000000000 to 3ffffffffffffffffffffff 3:26:14 Search in 576460752310000000 from start 576460752303423488 end 1152921504606846976, real_i:6576512 i3:6585646 real_diff:576460752303423488 percent 0% 3:26:57 Search in 576460752320000000 from start 576460752303423488 end 1152921504606846976, real_i:16576512 i3:16586748 real_diff:576460752303423488 percent 0% 3:27:41 Search in 576460752330000000 from start 576460752303423488 end 1152921504606846976, real_i:26576512 i3:26585539 real_diff:576460752303423488 percent 0% 576460752330000000 1 Count 536870912. Percent 0% 3:28:25 Search in 576460752340000000 from start 576460752303423488 end 1152921504606846976, real_i:36576512 i3:36588420 real_diff:576460752303423488 percent 0% 576460752340000000 1 Count 536870912. Percent 0% 3:29:8 Search in 576460752350000000 from start 576460752303423488 end 1152921504606846976, real_i:46576512 i3:46589427 real_diff:576460752303423488 percent 0% 576460752350000000 1 Count 536870912. Percent 0% 3:29:51 Search in 576460752360000000 from start 576460752303423488 end 1152921504606846976, real_i:56576512 i3:56588769 real_diff:576460752303423488 percent 0% 576460752360000000 1 Count 536870912. Percent 0% 3:30:35 Search in 576460752370000000 from start 576460752303423488 end 1152921504606846976, real_i:66576512 i3:66591219 real_diff:576460752303423488 percent 0% 576460752370000000 1 Count 536870912. Percent 0% 576460752370000000 2 Count 536870912. Percent 0% 3:31:19 Search in 576460752380000000 from start 576460752303423488 end 1152921504606846976, real_i:76576512 i3:76596094 real_diff:576460752303423488 percent 0% 576460752380000000 1 Count 536870912. Percent 0% 3:32:2 Search in 576460752390000000 from start 576460752303423488 end 1152921504606846976, real_i:86576512 i3:86588708 real_diff:576460752303423488 percent 0% 576460752390000000 1 Count 536870912. Percent 0% 3:32:45 Search in 576460752400000000 from start 576460752303423488 end 1152921504606846976, real_i:96576512 i3:96583765 real_diff:576460752303423488 percent 0% 576460752400000000 1 Count 536870912. Percent 0% 576460752400000000 2 Count 536870912. Percent 0% 576460752400000000 3 Count 536870912. Percent 0% 3:33:29 Search in 576460752410000000 from start 576460752303423488 end 1152921504606846976, real_i:106576512 i3:106577746 real_diff:576460752303423488 percent 0% ........ ........................................................ ........ 576460760310000000 1 Count 536870912. Percent 0% 576460760310000000 2 Count 536870912. Percent 0% 13:20:11 Search in 576460760320000000 from start 576460752303423488 end 1152921504606846976, real_i:8016576512 i3:8016708349 real_diff:576460752303423488 percent 0% 576460760320000000 1 Count 536870912. Percent 0% 13:21:6 Search in 576460760330000000 from start 576460752303423488 end 1152921504606846976, real_i:8026576512 i3:8026710610 real_diff:576460752303423488 percent 0% 13:21:57 Search in 576460760340000000 from start 576460752303423488 end 1152921504606846976, real_i:8036576512 i3:8036710758 real_diff:576460752303423488 percent 0% 576460760340000000 1 Count 536870912. Percent 0% 13:22:46 Search in 576460760350000000 from start 576460752303423488 end 1152921504606846976, real_i:8046576512 i3:8046712472 real_diff:576460752303423488 percent 0% 13:23:33 Search in 576460760360000000 from start 576460752303423488 end 1152921504606846976, real_i:8056576512 i3:8056715636 real_diff:576460752303423488 percent 0% 576460760360000000 1 Count 536870912. Percent 0% 13:24:22 Search in 576460760370000000 from start 576460752303423488 end 1152921504606846976, real_i:8066576512 i3:8066714095 real_diff:576460752303423488 percent 0%
10 hours and still 0% from 576460752303423488 to 1152921504606846976 This is real speead? Previos algoritm fast checked in generated arrays. But algoritm not searched in block printf("Search Keys.... from %lx%016lx to %lx%016lx\n",start_hi,start_lo, end_hi,end_lo); printf("Start i from %zu to %zu\n",skip, g_max); uint64_t i3 = 0; for (uint64_t i = skip; i < g_max; i++) { if(i%10000000==0){ time_t tt = time(NULL); tim = localtime(&tt); uint64_t real_i = i - skip; uint64_t real_diff = g_max - skip; printf("%d:%d:%d Search in %zu from start %zu end %zu, real_i:%zu \t i3:%zu \t real_diff:%zu \tpercent %g%% \n", tim->tm_hour, tim->tm_min, tim->tm_sec, i, skip, g_max, real_i, i3, real_diff, (double)(real_i/(real_diff/100))); } ....... ........... ....... secp256k1_gej_add_ge_var(&pt, &pt, &ptgstep, NULL); }
if CHECK_BITS biggest at 95. Example ./break-short-low-mem-2 Check bit = 100 only, pubkey is: 03d2063d40402f030d4cc71331468827aa41a8a09bd6fd801ba77fb64f8e67e617 Build Hash, MEM size = 1GB 13:31:35 Start generate 1000000 from 67108864, 1% 13:31:39 Start generate 2000000 from 67108864, 2% 13:31:44 Start generate 3000000 from 67108864, 4% ................................. 13:36:10 Start generate 66000000 from 67108864, 98% 13:36:15 Start generate 67000000 from 67108864, 99% Search bits = 100 Search Keys.... from 00000000000000000 to ffffffffffffffffffffffffffffffff Start i from 0 to 0 END!!!!!!!!!!!
----------------- Start i from 0 to 0----------------- uint64_t skip; uint64_t g_max; skip = (uint64_t)0x1 << skip_bits; g_max = ((uint64_t)0x1 << shift_gmax)* (uint64_t)(GSTEP); ...... printf("Start i from %zu to %zu\n",skip, g_max); [b]for (uint64_t i = skip; i < g_max; i++) {[/b]
----------------- May be nead used not 64, and 128 or long long long in skip and g_max?
|
|
|
define MEM_SIZE 31
Segmentation fault
your PC memory is not enough try: #define MEM_SIZE 30 64 (62.8)GB and plus 8GB swap.
|
|
|
define MEM_SIZE 31
Segmentation fault
|
|
|
Даже если подберут каким-то образом ключи, ведь все нужно зайти и проверить какие ключи рабочие, это тоже большой объем работы
Куда заходить? Что проверять?
|
|
|
Могу с 10-ок схем придумать. 1. Контракт, который отправляет средства назад в увеличенном виде, но только работает с определенными адресами, которые занесены в список при создании контракта. То есть отправляешь с своего кошеля, который внесен в белый список в контракте, 1 гивей, получаешь 1 эфир, отправляешь 2, получаешь два, отправляешь 333, отправляет остаток, а если отправить с этого кошеля 444 гивея, то кошель будет исключен из белого списка. И типа ограничение не больше 10 эфира в день. Хакеру нужно разобрать байт код, узнать алгоритм работы, узнать адреса кошельков, потом подобрать приватный ключ для какого-то. После чего он сможет получить не больше 10 эфира, а ты как хозяин увидишь движение по контракту и удалишь спаленный кошелек из белого списка.
2. 1 улучшенная. Список кошельков в контракте хранится в хэшированном виде, ну допустим раз 5-10 кесаком. При переводе на контракт, контракт видит кто перевел, прогоняет нужно кол-во раз хэши, и сравнивает с текущими, а дальше по алгоритму. Хакеру кроме разбора алгоритма, нужно будет ещё и подобрать адрес кошелька с которого нужно отправлять, а потом подобрать приватный к нему. Но тут желательно не больше раза использовать 1 принимающий кошелек, иначе он засветится в транзакции.
3. Используя подпись сообщения и белые листы.
4. Передача скрипту несколько хэшей от разных частей строки, которая по разным факторам (текущий блок +2-2) и другим не может повторятся.
Плюс ещё можно проверять наличие транзакции с определенными параметрами, на определенном адресе.
В общем если покумекать, то можно всякое придумать.
Ещё раз повторюсь. Текст контракта можно не разглашать, и в блокчайне он хранится в виде байткода. И декодировать его обратно в тот же солид, достаточно трудно.
ПыСы. Кому схемки понравились, давайте доната :-) 0x50e2be57338a538c15ea6901e5B8450FD9e4E585
|
|
|
Хранить в маленьких суммах проблематично. Так как много будет уходить на транзакционные расходы если надо будет потратить, да и разбить тоже нужно потратить денежку. Кстати если говорить за эфир, то тут возможно защитить по другому. Через контракт. К примеру создать контракт, без возможности управления хозяином, загнать туда сумму. А отдавал бы он сумму по 10-20-30 (милиону) ключей, которые могут быть множественно хэшированны через разные функции в цикле.
|
|
|
An interesting situation. The numbers 65, 70, 75, 80, 85 were transferred to different multi-addresses 3 ...., and no further movement. If there was one person. That would merge on one address, and probably would use these funds. And so some strange movement.
65 to 3GVSoQar7WnVMFjchpkNkh9UwkJbbdeCwM and stop 70 to 3MpeFYTuwfrxSnUXNmTnY3XTgvhPp5k7vF and stop 75 to 3HrUTaDiyKaGMyVycK8fynRGpAPV64AtV7 and stop 80 to 39vbryGKfcpuch6RLWa97BqG3rKFQQWJh7 and stop 85 to 3Qpip6a2oYgbrcomVpeaUZ4PVXsGVshuec and stop
In BCH 65 to qrvyzatwha3v3rjjtrx52qv8fe9kppcxcsfj2l6u7x and stop 70 to qqhqyz2lk0vg54x496cluhsxllz5kzjx45uy2lk8nj and stop 75 to qpwpa9twauk93ytd9rk6cgnutmgag6jldqfe7rkqy0 and stop 80 to qrwze4p5tg70jm00vvea797czsyhmw87qvwezya0ys and to qpzhkgrq5evgpsqczah9u32f7qx4ggw2ru2wuxj2ra and stop 85 to qz9tf4gmk869jv959lnyuhx5hevuj0kdxq6u8zrccs and stop
|
|
|
..... 80 ----------------------------- Unknown Private Key spent ----------------------------- 1BCf6rHUW6m3iH2ptsvnjgLruAiPQQepLe ..... 85 ---------- Unknown Private Key spent 0.00001 BTC from 0.85001 BTC ------------ 1Kh22PvXERd2xpTQk3ur6pPEqFeckCJfAr ..... 90 ---------- Unknown Private Key spent 0.00001 BTC from 0.90001 BTC ------------ 1L12FHH2FHjvTviyanuiFVfmzCy46RRATU ..... 95 ---------- Unknown Private Key spent 0.00001 BTC from 0.95001 BTC ------------ 19eVSDuizydXxhohGh8Ki9WY9KsHdSwoQC ..... 100 --------- Unknown Private Key spent 0.00001 BTC from 1.00001 BTC ------------ 1KCgMv8fo2TPBpddVi9jqmMmcne9uSNJ5F ..... 105 --------- Unknown Private Key spent 0.00001 BTC from 1.05001 BTC ------------ 1CMjscKB3QW7SDyQ4c3C3DEUHiHRhiZVib ..... 110 --------- Unknown Private Key spent 0.00001 BTC from 1.10001 BTC ------------ 12JzYkkN76xkwvcPT6AWKZtGX6w2LAgsJg ..... 115 --------- Unknown Private Key spent 0.00001 BTC from 1.15001 BTC ------------ 1NLbHuJebVwUZ1XqDjsAyfTRUPwDQbemfv ..... 120 --------- Unknown Private Key spent 0.00001 BTC from 1.20001 BTC ------------ 17s2b9ksz5y7abUm92cHwG8jEPCzK3dLnT ..... 125 --------- Unknown Private Key spent 0.00001 BTC from 1.25001 BTC ------------ 1PXAyUB8ZoH3WD8n5zoAthYjN15yN5CVq5 ..... 130 --------- Unknown Private Key spent 0.00001 BTC from 1.30001 BTC ------------ 1Fo65aKq8s8iquMt6weF1rku1moWVEd5Ua ..... 135 --------- Unknown Private Key spent 0.00001 BTC from 1.35001 BTC ------------ 16RGFo6hjq9ym6Pj7N5H7L1NR1rVPJyw2v ..... 140 --------- Unknown Private Key spent 0.00001 BTC from 1.40001 BTC ------------ 1QKBaU6WAeycb3DbKbLBkX7vJiaS8r42Xo ..... 145 --------- Unknown Private Key spent 0.00001 BTC from 1.45001 BTC ------------ 19GpszRNUej5yYqxXoLnbZWKew3KdVLkXg ..... 150 --------- Unknown Private Key spent 0.00001 BTC from 1.50001 BTC ------------ 1MUJSJYtGPVGkBCTqGspnxyHahpt5Te8jy ..... 155 --------- Unknown Private Key spent 0.00001 BTC from 1.55001 BTC ------------ 1AoeP37TmHdFh8uN72fu9AqgtLrUwcv2wJ ..... 160 --------- Unknown Private Key spent 0.00001 BTC from 1.60001 BTC ------------ 1NBC8uXJy1GiJ6drkiZa1WuKn51ps7EPTv
|
|
|
I try description algorim. But I do not understand a few moments. int main(int argc, char **argv) { secp256k1_context *ctx = secp256k1_context_create(SECP256K1_CONTEXT_NONE);
int next = 0;//Initial varibale next for cicl search in publick kes //Convert publik keys from raw to eckey format. Nothing intresested. for (int i = 0; i < NUMPUBKEYS; i++) { if (!secp256k1_eckey_pubkey_parse(&pubkeys[i], rawpubkeys[i], 33)) { printf("Unparsable pubkey %2d\n", i); return -1; } }
printf("Build Hash\n"); secp256k1_gej pt;//Init variable pt secp256k1_gej_set_ge(&pt, &secp256k1_ge_const_g);//?????? //Start cicle from 1 to GSTEP (1<<25 or other count bits). With step one. for (size_t i = 1; i < GSTEP; i++) { /*if(i%1000000==0){ printf("Generate %zu from %2d \n", i, GSTEP); }*/ secp256k1_fe x,zinv;//Init variable z and zinv secp256k1_fe_storage xst;//Init variable xst secp256k1_fe_inv_var(&zinv, &pt.z);//????????? Maybe inverted variable. But zinv or pt.z? secp256k1_fe_sqr(&zinv, &zinv);//Sqr from who? Sqr zinv from zinv? secp256k1_fe_mul(&x, &pt.x, &zinv);//Multiple x pt.x and zinv. But who changes? secp256k1_fe_to_storage(&xst, &x);//Return hash data to xst from x . xst this array from 8 part of hashes. uint32_t entry = xst.n[0] & (HASH_SIZE-1);//In entry getted last (25-1 or other setted count bit) bit from xst.n[0] (first part from hash) while (table[entry].exponent != 0) {//Cicle run if in table with key entry already setted data. entry = (entry + (xst.n[1] | 1)) & (HASH_SIZE - 1);//Changed entry. In current xst.n[1] setted last bit to 1 plus add current entry. From this value get last 25-1 or other setted bits. }//This is algortim searned free row in table with changed key by algoritm in up. table[entry].exponent = i;//Set in table with key entry to subkey exponent varuibale i (currently pozition in main for) table[entry].x = xst.n[2];//Set in table with key entry to subkey x, xst.n[2] (part of hash from storage) //------------ //I try inserte here searched this hash in curently public keys. Algoritm founded, but maksimal found 25 or other setted bit, no more! Logical is true. //------------ secp256k1_gej_add_ge_var(&pt, &pt, &secp256k1_ge_const_g, NULL);//???????????? } //End generated main table //But undestord. Variable i not used for generated hashes. Who is used aka privatkey?
printf("Search Keys\n"); secp256k1_ge ptgstep;//Init variable ptgstep secp256k1_gej_neg(&pt, &pt);//Negativation pt ????? pt from previos step? secp256k1_gej_double_var(&pt, &pt, NULL);//Double pt ??? secp256k1_ge_set_gej(&ptgstep, &pt);//???? secp256k1_gej_set_infinity(&pt);//???? //In up init variable from main cicl. //Start cicl i from 0 (previos cilck start from 1). To 2*GSTEP (double gstep). With step 1. for (size_t i = 0; i < 2*GSTEP; i++) { //Start cicl j from next (dinamic variable for exclude founded keys on begin array). To NUMPUBKEYS (coun publick keys). With step 1. for (int j = next; j < NUMPUBKEYS; j++) { secp256k1_gej diff;//Init variable diff secp256k1_fe x,zinv;//Init variable x and zinv secp256k1_fe_storage xst;//Init variable xst secp256k1_gej_add_ge_var(&diff, &pt, &pubkeys[j], NULL);//????? May be added variable diff, pt and pubkeys[j] (currently publick key) secp256k1_fe_inv_var(&zinv, &diff.z);//??????Maybe inverted variable. But zinv or pt.z? secp256k1_fe_sqr(&zinv, &zinv);//Sqr from who? Sqr zinv from zinv? secp256k1_fe_mul(&x, &diff.x, &zinv);//Multiple x pt.x and zinv. But who changes? secp256k1_fe_to_storage(&xst, &x);//Return hash data to xst from x . xst this array from 8 part of hashes. uint32_t entry = xst.n[0] & (HASH_SIZE-1);//In entry getted last (25-1 or other setted count bit) bit from xst.n[0] (first part from hash) //----------------- //I try showed this entry for each publcik addr. And with each new cycle, this value was different for the same public key. Why? //----------------- while (table[entry].exponent != 0) {//Cicl run if in table with key entry present data. if (table[entry].x == (uint32_t) xst.n[2]) {//If table[entry].x (hash part 2 generated in in prevos loop) equal xst.n[2] (hash part 2 from currently publik key) run block down uint64_t key = (uint64_t) i * (uint64_t) (2 * GSTEP);//Generate varibale key. i * (2*GSTEP) . !!!!!!!!!!! Do not understand the logic. !!!!!!!!!! //show founded key printf("Found private key %2d: %16lx or %16lx\n", j + 1, key - table[entry].exponent, key + table[entry].exponent); next++;//Add in variable next +1; Exclude this publick key from next searched. if (next == NUMPUBKEYS)//if next equal NUMPUBKEYS, found ded last key, programm is stop return 0; } entry = (entry + (xst.n[1] | 1)) & (HASH_SIZE - 1);//Changed entry. In current xst.n[1] setted last bit to 1 plus add current entry. From this value get last 25-1 or other setted bits. } if (j == next)///????????? In cycl each firt loop this is true, break? not searched other public keys. break; } secp256k1_gej_add_ge_var(&pt, &pt, &ptgstep, NULL);//?????????? Choto gdeto kakto } return 0; }
|
|
|
Each transaction with step 5 address (5 bits). .... 0.60 0.65 0.70 .... Interested!
|
|
|
|