Bitcoin Forum
April 26, 2026, 11:50:35 PM *
News: Latest Bitcoin Core release: 30.2 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 ... 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 [426] 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 ... 654 »
  Print  
Author Topic: Bitcoin puzzle transaction ~32 BTC prize to who solves it  (Read 381409 times)
Denevron
Newbie
*
Offline Offline

Activity: 121
Merit: 0


View Profile
April 02, 2025, 12:48:27 PM
 #8501

yes, I see, half of this will have to be rewritten  Cheesy

You have two options: either rewrite the whole thing from scratch, or implement the entire existing SECP256K1 in AVX2 (the GPU version is a whole different story).   Grin

I won't have anything to test the GPU version with, since I have a card from the reds, not the greens, and the greens (CUDA) are better in this regard  Grin
tmar777
Newbie
*
Offline Offline

Activity: 33
Merit: 0


View Profile
April 02, 2025, 01:52:20 PM
 #8502

OK, I have to finally admit it.

I had it wrong with the way I was viewing things. I had some spare time (I don't do fishing yet) so I played around with the possibility that maybe, just maybe, prefixes might indeed be useful to accelerate the brute-force.

I can't believe how ashamed I feel, inside out, after managing to speed up a plain old scan search by 800% on average, by using prefixes as a good hint to stop all the GPU instances currently running and reset all the offsets and ranges based on the new informations.

So now my baby is purring out results at an astonishing speed, check this out. If you don't trust that my cracking grid spits out correct keys, you can check them one by one. I'm gonna let you figure out just how many hashes are usually needed to find a 32-bit minimum prefix match, but boy, look at that bad ass speed!!!

https://www.talkimg.com/images/2025/04/01/lcG9b.gif

To apologize for my fuck-up, I'm gonna share a few nice results I managed to grab recently, feel free to use them as you wish!

Code:
0xc4cf15366c5d3e412 1MVDYgVaSeWVxvT8vVRkujyHHoboXcUm6 0372222bf4e46bc20bb3d591f4350f4ccc5ae740040f948d0cce00cb5aef1c96ef
0xa59fc4663314c8c13 1MVDYgVaSCGMAW6FeE9jJJbrv2877Qh4C 035a1a8b0f903340a2e80df22b733e81d0f97c4252739879079d68803371cf72b7
0xa7cf01ad011bf227a 1MVDYgVaTTjBZ4ZPCJv4UYWYSt6792kds 025df7a3396982755ee35189402dda5aaf532c5bbd30f6e584486565929390b3e2
0x8f549725db946b1b8 1MVDYgVa89Q7rBWZaXcTf1UVPJ9BwDCX8 02c8befe745333183bb1ec263134f788fb768f6202053568f65c9c1506a17030e4
0x9468c372a5ce48cd5 1MVDYgVaDCnqjuvMjDSfS1nURGMR8cmuf 03d2a7ad2697e57153d31e4437830df14958dbe52b2dd89674c7e9a5cdf44b7763
0xa6e64129243ee31dc 1MVDYgVaCH57TSAQwoWMqX9Ztz8iNkpzW 0284e277b768a2a0e6d32ba9714ec4fe7d626a80d748c8ff457827f021235682d9
0xb1575cd28d49e82fb 1MVDYgVa7ZsJYQ8SFaXMSfoFJJgtgTtRY 02f03c02369c57339aaed65e1fb691ec3e6ff2bc1e80b15dddaf8e017d6f2761cb
0xc4e3650fd1b15ac18 1MVDYgVaHi8Q8rDmFYxkUkRq9vZpx5fE2 02fa68270c520d74351183b369b09001294f3b9796f1dfae78af15c28a70cb0436
0x8c7450c9a20a70e8d 1MVDYgVa3WmZ7XQK9PvzTBp6GvX96vdhy 03c535511fb1bf74b8433a626734446d8e68509e077b5ca08d09eb01060d1fb6ea
0x98ed1dd57d11bdcc4 1MVDYgVa34juD8zJFk88379qUjXju4ekQ 039a9caa2bb588fedcdfb6c44856f4e73d3044101b37f4cda51e48417ae49fe567
0xe7a0def14aea45067 1MVDYgVZvxTgAhh499DjDcG9YRaSdrAqD 036d6132ccf2e0fdef4bf35e595083930ce2e59fbfd04ad45e172c7994ec131f4e
0xe7c83c2c99506fc88 1MVDYgVa2qshGvVjSTi9MwkSHL1iUm2bU 030aa97b1220ee84638da8f4de8a93a77186f9d0cf54c5091aa39108360aed5770
0xea306846e30c25532 1MVDYgVa2soVBDM8U7vz2PS5Bwwsyvrfm 0320f88f4db86ad51678ee34cc7edf4f33f07b6059499d4eecb7636fdcfd7cedb4
0xf68a81d6a691ec69a 1MVDYgVa5UZv1JpqTMg3bi3oMM9CGJ8D2 03fda232afac8f6c9c79e428fbea4f69d390d33565716e3e0c9f2663709ff4fd24
0x9292254947908c82c 1MVDYgVaX8s2T7LS7Z9jHtHp3VW4d8dFS 037f4d46b12147ca48496a3ccba5a4a1984e67c3fefc4076472722412b2ec6a0a7
0x9ec5992003a4dadc6 1MVDYgVaaysSySK4bbDTKDkX5bsF8VojK 03fdf0c21b3272960296190a9ed54d5cf8e610de7fa24b777b2d1896199f25aa3c
0xa1d1d432e5556bab8 1MVDYgVawZkXLui2q5bH5wfPch1c4sdbn 03e7666c3bf6f535006a4d5cd1029eb5056176f80a11ec7b5f3509bde018e85283
0xaae90eb0cccb66062 1MVDYgVafTYPwaMyoratNAKSoxqWHGNGW 02a440bd241721eadfae0adfc39cc5f01a7961496e9911f17d13e7efb1f047f359
0xb45e67b553064938d 1MVDYgVaa6EGxVvwSnpbxQo3tJukg1uvb 03df9139f5820da4f3c23816d51417da7fc7a08d2b041c8931dd05c26348dcca16
0xc1715aa75c9addff4 1MVDYgVaaKfVGv1sSsfszDjwv77ciwK2C 02bacfd7ace256c8fef2f44fe1d9e9d1e0163e4fb5730eec7613213a0e9577e024
0xc5a3ea3ae2fb3f2e0 1MVDYgVaWC9o4SGj9yr4p17CH7QQSQnmR 029b6833144031ed7e27e3e01ac5adb893cf736ed4a47c9c64c00e6edb6c908fbb
0xcc74ef889d8fb4df8 1MVDYgVanb37tvZL7eXLhit7v9TYuB6Qd 034401be05aaaaf37790aa9f0cb28f8fb2c6be86962c9bad286bcd075c130244ab
0xd4b5b95d9059b0b6a 1MVDYgVb4dqSk9horLK28Yp9CLJgsFhyp 03e39346f8ec02ea5d7d1d15eab91b4fcd751c9c8c18b1ba039cf089a7c32a1769
0xdd48d47cad650d43f 1MVDYgVaeGi2w6xMy519XmjzjFBHbu11D 034994afee63f045733415827d62c4ac821b765bd0eaef6a3a446a478d2d1ea013
0xebf74596a5782a3f3 1MVDYgVb985cANsV7MGUtoYmquC6HogNK 022da6acacc2bf7884dca91b1d535a32799c51cdb7935eae5528a796a834000110
0x80f9a22915619799e 1MVDYgVbczqnMaRQXaXPHKYxGaWKR2VSB 027a32f73fd72476a37ad99513a0aa4994244df5dd97ef4307f39e028ed210d973
0x8286daab06e728065 1MVDYgVcVb59KJCp5D7toEQw91xVoZEk7 027e9d74c0230e30154523e586c78463e7269088913f85e0b76e8f8afb571a43cf
0x830a6dc8e7b186ef4 1MVDYgVbttrNR2iepzfYNvSWVXjzKm3ab 039743581b5a91c059d238b12c4f6175e8fffd12b015832ef71a22ca117d31864e
0x856808a6e195d6ee0 1MVDYgVcLfodUcRARmu3MJdGoBNb2G7QP 0205d67026caef7c016079ce06b98ef3e8bc21440445c557cd8c78c605d736be6c
0x8834d28549e657a6b 1MVDYgVbMndK6gonHeSv8KN4hJKZivtFi 02e86eb277b13a0ef3af813b3cfe977bcca40eaa9f9f0194c96b0ee2e8060e3fcb
0x8b8788ee35ab6f688 1MVDYgVceaSaWk4igpMBBDdXAu2NhPmFX 023b418523b3f8f03b4e4fee46a123ed501ee3e09605f37d0f77678e5cf52dc6ff
0x8d6c43786e61ca0f0 1MVDYgVcWwJ4g6Ru5iRSamGrW9RcuRRCP 020239984c4ff3aca947ddfbb8578eb38db6b4ad8c95f244aabeedf9ee354241ca
0x8f165aab5ef06ad88 1MVDYgVbizW2eYrMVF1x31XedFHNkpsy3 03254ef919d0faa4e32f346410c213c34d9aa600b383e7f72b6e71b4a5f370ee28
0x9a113c6c3562cb270 1MVDYgVbH35pfnuxAaw1QMypNfBrAw5h6 03909b672b3ced7a23a57612d4c13e7c054d4b7eaf76d4037c86f8738b07217f05
0x9c499b345e951c47b 1MVDYgVcaXHFuyNfSGCndHyxfnX1FQ7da 02803c366fc2762596dd2d9850d2d0f904eb306c51f7218306905da648d054ee68
0x9cebd9be1e8635286 1MVDYgVbvJfWvuvcHxGJrmUerPhE4SDro 03a24b1b62952342acef9f2a3d441a24e48e2a159bd9c9767f3b48cb9aaeef55a1
0xa082bf833dd4c729d 1MVDYgVbxhHJSWbFPmpRLBARecQkCULXi 03815a9cf5dc7de202cfd8c9ea0c4063f79dfb89e7780e97f0444a96eced6fe74e
0xa3511b31aa3c7f8a5 1MVDYgVcKYEoNovpX53wWsZZ44cKSvEnG 02788bcf6d9ae17b54e2a7eada5f5f9f0addfbf7d5290d11046cfcdbd582d8bb1c
0xa63215a737a6c13e6 1MVDYgVc6KrA1GensbpNG78ruFtFHi3Y4 02add55320bd62949d5ec2996b3d7e6e82227867ee3af5b3759ca4fdb699c16665
0xa7a74438ca8603bc7 1MVDYgVbczLHJFQyjWH2CCpoTkjdg6He8 02ee6d5228700b1d3c436c28c509f42c85a94cef5d1df8ceb4cb0b199046b71614
0xaf2cf75aaf7d2cfe4 1MVDYgVcJKCkCboRWSuNwdPf8jW4qW3Jq 020a249ab92368fb166be1a77415916b4b324238cd2cb8f2a6ea9521dd306036d1
0xb175e5d7b5149348e 1MVDYgVcGruUyjSyH7Ct5c7S9dgLk3dhh 0306a1b8a294dbfb66b8f634623278daf89df43065bfb01c3264cb0dd9ca012360
0xb2054f604e6fe93e5 1MVDYgVcZw3jnuMQVrgBnVr1capW3QLyo 03d61fc6547389a4ba5b2dc5409cd9ae56247b685b932aaf796f72b81f7af27af0
0xb3f858dfe2c3abc32 1MVDYgVbaNnRKk4866xubVCQthZHNMucR 024291bb32c33666a7fbf6a577d67bb26f54b61b39f2134cb8fe23a0cb20029135
0xb66df5467aa2f5c89 1MVDYgVbeuM7fxzwT6DwbBeEetBwZHnay 03755b0ccab1973d2355eae5095a6006e108560b5dd823903dbdfe672f5f66b07c
0xb8108f1c949edf349 1MVDYgVcNS5rwbw6Ae9P87GBrSUwYNe59 034099eb475e157e01fda361460c44879f2042b24605529c46c96d0303fe75808c
0xb958b8feb47fc3344 1MVDYgVc3jQwGFmXRqE8Brcnt162agbeu 03cf85ea9de786c828d46603491d0d10e1e5624224f737b530657ad27e88a5c439
0xbff333ada94e53a57 1MVDYgVbQVwMuZZ7Fk55mzN9aPVv3HkAE 027103fc06daa9a7ba536353506e560275e45c3d211bccc03cec593fd851bd4daf
0xc251183d8a7cca7a5 1MVDYgVbNrnHEejxuN8E4ACPSV9z9QQj2 038ab193e66457c09257838e2af39a5094b7fc6abd5d6e19b31872fe1b597227b5
0xc2e7c6fd21e66e389 1MVDYgVcZfSJkZ6id2mceBkV7cGXkKqTk 032a6113d7b44a15e46a59843023564471768ca676f02d2e7218f8b976d9da40a8
0xc44afc2001582cd79 1MVDYgVbSHGvy6mdtrQDfh2UoQSyYG9oK 02c3e9d2842fdc53c274b12cb4c9bd1ba0960a341adf4ae76fe2641ce55aa5f618
0xccc7129a330cf2b54 1MVDYgVbbAtBJA7bw8DHj7FUToUU22zZ8 032d5866e989321533d1d8a50296199860a5d1e798568f65336d698892f6a25b48
0xd05c6446a36f37ec7 1MVDYgVbgjPUrteB3ifNLLHepREf1Lfye 039536215bb7ee81ae278c369bd8458289c69df948db918e4c81ae2cfd0721fbb5
0xd173007057baea098 1MVDYgVbbhTssLoUCE1AXWPnFXnquoKzE 02f2933969f86a5841d3a7ac42ba5032d9b31d13096b7e1a8235bf92f3778bec76
0xd9b49644827b2a5d0 1MVDYgVbgA1fkKNECFuTjms4ZJv8JZRcu 025bd8fbbd1b6e9fe530f4c33335358a4c1ab07d77c79d9ba75a65923f097ad41a
0xde34dae79f4c7b982 1MVDYgVcKDLrcgB9WSmb4z3ifmDhiSPiP 02d13c2fec303aed19f586246d73c567db1967307ae580fc778e8bb574e879f50f
0xe59da4cd15b851643 1MVDYgVbF5RLm7sRYk6Epeqj2NwwE9g1P 02bd84576f7c4eb9acedc1ba26f47a8d374b2ff09bba18416faab7ef0cfb5721c6
0xe76651e59864e8ffd 1MVDYgVcTnxhgWxmjdzJCr4o2bTFfWEqo 021f269ae7f3bedc8223e2abb2c66defe76f70448d4052039564d3f20e6cd3aa4e
0xedb056f19b3b7e978 1MVDYgVbMKv6FWAoqU1UmRpPMiDYLpTZK 0290b437276ccd7361b79af0219526f892d345db15b91ce2edf4ade83e2b8e71ff
0xeef3d5de8f60848aa 1MVDYgVc7L3DpYSDcNudjdAXXn7fR45He 02584494f02759351078e8b6efd65ef50264d5b363e053aba6fd177a1236bba189
0xef03db9594d46948d 1MVDYgVbdBLfdiEK1mGy6xXPTfauSzTWg 0271eace4829ea972516eb3f4d3c59a2ad78531b994d8f320b8c8c57e5045fbf73
0xf2f5d60eda10e663b 1MVDYgVbNjRsQbLXQBK4o1BeuZtYyPVWH 026fd6bcaea1558618c38865971d088774c74d3eee1130c52f09df8365b7e31217
0xf68a76a1a957e717e 1MVDYgVcLJFT935gCXxMd4qzZUNGLD7BD 03cfabfdcc89b1c242b860e1023154be7c74d40a85bcfbc612e71882219626d266
0xf7aa3c2801c4622fe 1MVDYgVbGn8hAwUqjv9ZoRRjiB32odVmK 03f04749db897868f0257e1196581d58dd04a880f0a22dc7de955d5743c87b2d31
0xf7c1e9abfde5064ed 1MVDYgVc3hZPHSoxi4C7d8iBQZU8HgiAT 02b30a7b233b3630989dfb9dfb112024b182a451622d5daf9e48682c3996fe237c
0xfbce787b31400e3cd 1MVDYgVbgmHjzXLoTunHtBwqNWKTna8PL 03a5ffe4a8df77dd6afe16e5b7314ed33c64e8897538fceacf7a9f571833874586
0xfe9057e046e196507 1MVDYgVcDS1m8CA2YPkNmNZQq9c8t9f1q 03ae326fb4b2ec9dd7c0915b1add7cb179964e2457661f4b17017ad1f2c3b4b93c
0xff420fc4fe6aa1203 1MVDYgVcGpfkqV7iQXDZb6b55XUVunS5w 03f13e24b4e57de088972d4f9cbd3ca20be80c4e501d561278e70fb0e1b2b375b2
0x88b3e0b282f83009e 1MVDYgVesrxeMuyEHb7zxW3Nb3KjqbfyJ 029824b2d17445069bf9ea7fdb221871cbf4d5069bacc50865e64b4abe4b2a949e
0x8ad59bb29c80889ef 1MVDYgVfM2BvwiofJmYPqL5T5XM7kHWhM 03bb9075fab9e1c28e25e13dd9ded85f22eb4ae2ee883ce331e2182d6c95fa5001
0x8e86c364e15b88007 1MVDYgVcpNBXMhwDW8xgtDQ657NcRNXWM 02e2e6d3ff30c09a8a237b38faaa44b0952ec316df6078cff7a6ef614d1839c94d
0x9103f91ff55f4952f 1MVDYgVfLc65da7jfMyEtuWjDkpiRkN6a 02c0a826f58c00453aca375fbd8d8fbf14931a471a456dc240252db35bb4a54b2d
0x91ab23bdc6bcb328c 1MVDYgVf9X8h4gBMAW2viqGtCPN4Gfmr5 02ed86c4404ce74e42d51de34bcbec1f2b127b8f5141cb789a591fef4b40ce6c91
0x96217b861e12b9b96 1MVDYgVeHQUG1xnGLLRxxaWRqiVx7dtsR 034e97834e9c111136850c6be561b7699be6c17e4a1d8e8b15b158a1eb2f913927
0x975a8968afa93141c 1MVDYgVejxoD691FhZkqwLNsXr3HY6avJ 0204e53e5acf48770a435f1e2d0256f9a8d601cd5094d114778943ab7c4301f1a1
0x977964d6f60cbf2d9 1MVDYgVeC1LEcpdfyVYLhYGC8TPv4VHLV 0331ef8a350a2f20dbdc5c9865e2c1768570002986b4c019496c155c1fa8495b0b
0x996239a0da4cb78a8 1MVDYgVeNZHw9uKhohqfJcJxsXte1dRPG 0241e8d4f4f6b31c31697bf629b2a6f1e291eb34f64b63f2b336085cb1d329e842
0x9d5e6590c5f78ddba 1MVDYgVdadL4qMR1hLyyBa4j8fSM6XkMT 021ae1c43beffefb7e478ec8a2a836b4fb906c7e9ecaf895cd81209a10b54d405c
0x9ff9be752cdfa2884 1MVDYgVdRVv8Ur1dmTpTYdukoTLiraWEo 03df2947a14fbf5564b6e0d6a62680a4248d1788f129d11627f0256fc38ad6e75f
0xa40f0213ddd965953 1MVDYgVebshZjmkWveyyho1sHdpb7USwT 03ac8a1d88ef0c64748fda3026bffc0dbcdd1ca7ed478897ead019eaa492753963
0xa68ecf0c25de252fa 1MVDYgVe12BZLd6MGMRRj7NvwEBsqWebs 02691283c48cc6596c765e72f2c20644f2e3029af89bd0ee6061c84f8015980ec7
0xa8d65f7191dd7cdf9 1MVDYgVeTXvxqG11yTSqyFgtv1rj1D8mT 027e903254caf038a9f8721f13fe42233f267e18133394c324fca95f000646308d
0xab4cac702f0c684e2 1MVDYgVdNQJDutD82NjnD9FJPAFE8guF6 020f223ccfe720f8eb62a869924dc7d3b0ee5d63e80bf86cbb24794aeacd7e688d
0xb0031e137c7b1ff41 1MVDYgVdGYyCpCJFifrbgpqTMEYuteqaH 02d45d1fca587f39c086e32b3e657ae58df5b06437a2cda79c66509106d86f72bb
0xb58061c36fa6cf575 1MVDYgVdjy5S3fTjUHX1s22p22vzpNStm 02a380f59310e64a976452e01c46ac290386a75c7a6a991918ac6874edf2f291e3
0xb8444d33a3e90c4b1 1MVDYgVeEgyAMGB1YuGFQR2qx8Qa6pvgt 03678802cba2fd295ea4462ed3fa223f1bae68b0ba5ce1d5ab7bfa59bd0a090ccc
0xbeb19a4daa70f9a54 1MVDYgVdw2MEbxZMQ3dhtSvL3D2oV8BaJ 03efee90fc03b215ff99412da65b0bc0c4fc70c78eff517cd550c007a6a59d00c4
0xc511c38570914087c 1MVDYgVfMrPwCs3LknHLB3U2mjxtWqW48 023149928889168c4ed1e2229ace1b21b5597b4ed4e1e853bee5d4222d3e987d97
0xc5e006698355486cb 1MVDYgVeiCmNE29eh6MmpmExEcXY7eud8 026fe5da0b489869b92886b7fcb42377dc3025a383b54cd89a818ce04529b63874
0xc7bc8515d67c43583 1MVDYgVf9NzyUA73pURaJdYqwmH21kj8Q 03e1d9fc8f75c782fe218cfb6f356113ebc107ea3cc66ef76b3b0c608b68c6ab0d
0xcabdfaa08f2b4955b 1MVDYgVd9iurd9VaRScV1QWPWkj1mTnwh 03bc014236158a450adce0e88f83dbd7d8a97decd21fe7eeb8a4c7b46f409bd53b
0xd4614e77972dd6143 1MVDYgVfTSEs49AFFUNq6EzVzu1Wb5QhB 0373e3ccb526a3dad4540044ba3555ef498f646e530f8f0d78223d77ffab9a8198
0xd6019f357ffaacb54 1MVDYgVds11pn5Z43NYBfpkGG6V2jAWpB 021e58051d89e0ed871f0a1aaa505373ecc31d43a42ee168210a02e246dfeefc24
0xd9c90b9aadd3e0d8d 1MVDYgVdbNLwHuDWSBXP2vbEx3XnqvrUe 0229484889768d3d4ef89c623d6adeed29442c94dfaff85322c67a429d1c882123
0xdaf8d0f952dc74197 1MVDYgVeYoCFXKE2yLaheoUqqcwdYTKhB 02ba45511a67af6eb2c5b098535425f5721376d10419524762190fd43a15c43ca1
0xdcc6a7d71026def78 1MVDYgVfYMC38QzPuq3pzsS7Z1LHGx5qE 03d9529aea733d3e2d2ed6dedcacb8e82382a0a9037f8521f0fd1181a9a88d1433
0xdd536a767df5c5b74 1MVDYgVe3iSXRqFjXmrCT1DyHJrSZWUDj 029d276ca9bebe25198cf152917e17fd99d9e7e605dd4953e401567ad18c022a17
0xdea515860ae23ad0a 1MVDYgVcsDpz5UoYStrFuWUZbS2FnR9oU 0336345c8359e65c72da464ccf4577b8a535ff4d221fdd846055b2af7c317ad69c
0xdf1cde6807737aecb 1MVDYgVfKYNgjcN2Bj6beC1NyukssuTAm 03e03c34047e1f87b78431bbd3637130facc0ad7b935a0ecfc7e9dd524bcd57973
0xe0c3cef16d85eb043 1MVDYgVcgMxmYSiDXjjzA7utJ82rCDmHY 02a97ca2c620bec36478be7ba97b1157c0a95da7176217af08f0bafa13c1c3e405

... 220k more


But now I have another problem: I have so many prefixes, that computing the next ranges to scan takes a longer time than actually scanning the ranges. This mad spiral requires some GPUs to do the computation of the offsets for the GPU computation (of the offsets of the next GPU computation, because too many prefixes...), what do you think??

I'm gonna start swapping some sweet ranges soon with ya guys, tune up your telegrams if you've got your match-9 or longer address prefixes nicely lined up!


kTimesG
nomachine
bibilgin
Bram24732

I have read in the forum about this method with prefixes but still I cannot understand how on earth can be faster than bruteforcing.
Given the following Hash functions, the avalanche effect, how can this work?
Can any (or better all of you) give a concise answer to the rest of us to understand the following?

1. how can it be faster than brute-forcing?
2. what is the mathematical explanation of this?
3. if using '-f/--flips: Override default flip count' or the default, as long as it is not 1, then doesn't it miss some hashes?

Please give a full explanation in one post each to have it here for anybody who is trying to learn.
Thanks
Denevron
Newbie
*
Offline Offline

Activity: 121
Merit: 0


View Profile
April 02, 2025, 02:08:13 PM
 #8503

OK, I have to finally admit it.

I had it wrong with the way I was viewing things. I had some spare time (I don't do fishing yet) so I played around with the possibility that maybe, just maybe, prefixes might indeed be useful to accelerate the brute-force.

I can't believe how ashamed I feel, inside out, after managing to speed up a plain old scan search by 800% on average, by using prefixes as a good hint to stop all the GPU instances currently running and reset all the offsets and ranges based on the new informations.

So now my baby is purring out results at an astonishing speed, check this out. If you don't trust that my cracking grid spits out correct keys, you can check them one by one. I'm gonna let you figure out just how many hashes are usually needed to find a 32-bit minimum prefix match, but boy, look at that bad ass speed!!!

https://www.talkimg.com/images/2025/04/01/lcG9b.gif

To apologize for my fuck-up, I'm gonna share a few nice results I managed to grab recently, feel free to use them as you wish!

Code:
0xc4cf15366c5d3e412 1MVDYgVaSeWVxvT8vVRkujyHHoboXcUm6 0372222bf4e46bc20bb3d591f4350f4ccc5ae740040f948d0cce00cb5aef1c96ef
0xa59fc4663314c8c13 1MVDYgVaSCGMAW6FeE9jJJbrv2877Qh4C 035a1a8b0f903340a2e80df22b733e81d0f97c4252739879079d68803371cf72b7
0xa7cf01ad011bf227a 1MVDYgVaTTjBZ4ZPCJv4UYWYSt6792kds 025df7a3396982755ee35189402dda5aaf532c5bbd30f6e584486565929390b3e2
0x8f549725db946b1b8 1MVDYgVa89Q7rBWZaXcTf1UVPJ9BwDCX8 02c8befe745333183bb1ec263134f788fb768f6202053568f65c9c1506a17030e4
0x9468c372a5ce48cd5 1MVDYgVaDCnqjuvMjDSfS1nURGMR8cmuf 03d2a7ad2697e57153d31e4437830df14958dbe52b2dd89674c7e9a5cdf44b7763
0xa6e64129243ee31dc 1MVDYgVaCH57TSAQwoWMqX9Ztz8iNkpzW 0284e277b768a2a0e6d32ba9714ec4fe7d626a80d748c8ff457827f021235682d9
0xb1575cd28d49e82fb 1MVDYgVa7ZsJYQ8SFaXMSfoFJJgtgTtRY 02f03c02369c57339aaed65e1fb691ec3e6ff2bc1e80b15dddaf8e017d6f2761cb
0xc4e3650fd1b15ac18 1MVDYgVaHi8Q8rDmFYxkUkRq9vZpx5fE2 02fa68270c520d74351183b369b09001294f3b9796f1dfae78af15c28a70cb0436
0x8c7450c9a20a70e8d 1MVDYgVa3WmZ7XQK9PvzTBp6GvX96vdhy 03c535511fb1bf74b8433a626734446d8e68509e077b5ca08d09eb01060d1fb6ea
0x98ed1dd57d11bdcc4 1MVDYgVa34juD8zJFk88379qUjXju4ekQ 039a9caa2bb588fedcdfb6c44856f4e73d3044101b37f4cda51e48417ae49fe567
0xe7a0def14aea45067 1MVDYgVZvxTgAhh499DjDcG9YRaSdrAqD 036d6132ccf2e0fdef4bf35e595083930ce2e59fbfd04ad45e172c7994ec131f4e
0xe7c83c2c99506fc88 1MVDYgVa2qshGvVjSTi9MwkSHL1iUm2bU 030aa97b1220ee84638da8f4de8a93a77186f9d0cf54c5091aa39108360aed5770
0xea306846e30c25532 1MVDYgVa2soVBDM8U7vz2PS5Bwwsyvrfm 0320f88f4db86ad51678ee34cc7edf4f33f07b6059499d4eecb7636fdcfd7cedb4
0xf68a81d6a691ec69a 1MVDYgVa5UZv1JpqTMg3bi3oMM9CGJ8D2 03fda232afac8f6c9c79e428fbea4f69d390d33565716e3e0c9f2663709ff4fd24
0x9292254947908c82c 1MVDYgVaX8s2T7LS7Z9jHtHp3VW4d8dFS 037f4d46b12147ca48496a3ccba5a4a1984e67c3fefc4076472722412b2ec6a0a7
0x9ec5992003a4dadc6 1MVDYgVaaysSySK4bbDTKDkX5bsF8VojK 03fdf0c21b3272960296190a9ed54d5cf8e610de7fa24b777b2d1896199f25aa3c
0xa1d1d432e5556bab8 1MVDYgVawZkXLui2q5bH5wfPch1c4sdbn 03e7666c3bf6f535006a4d5cd1029eb5056176f80a11ec7b5f3509bde018e85283
0xaae90eb0cccb66062 1MVDYgVafTYPwaMyoratNAKSoxqWHGNGW 02a440bd241721eadfae0adfc39cc5f01a7961496e9911f17d13e7efb1f047f359
0xb45e67b553064938d 1MVDYgVaa6EGxVvwSnpbxQo3tJukg1uvb 03df9139f5820da4f3c23816d51417da7fc7a08d2b041c8931dd05c26348dcca16
0xc1715aa75c9addff4 1MVDYgVaaKfVGv1sSsfszDjwv77ciwK2C 02bacfd7ace256c8fef2f44fe1d9e9d1e0163e4fb5730eec7613213a0e9577e024
0xc5a3ea3ae2fb3f2e0 1MVDYgVaWC9o4SGj9yr4p17CH7QQSQnmR 029b6833144031ed7e27e3e01ac5adb893cf736ed4a47c9c64c00e6edb6c908fbb
0xcc74ef889d8fb4df8 1MVDYgVanb37tvZL7eXLhit7v9TYuB6Qd 034401be05aaaaf37790aa9f0cb28f8fb2c6be86962c9bad286bcd075c130244ab
0xd4b5b95d9059b0b6a 1MVDYgVb4dqSk9horLK28Yp9CLJgsFhyp 03e39346f8ec02ea5d7d1d15eab91b4fcd751c9c8c18b1ba039cf089a7c32a1769
0xdd48d47cad650d43f 1MVDYgVaeGi2w6xMy519XmjzjFBHbu11D 034994afee63f045733415827d62c4ac821b765bd0eaef6a3a446a478d2d1ea013
0xebf74596a5782a3f3 1MVDYgVb985cANsV7MGUtoYmquC6HogNK 022da6acacc2bf7884dca91b1d535a32799c51cdb7935eae5528a796a834000110
0x80f9a22915619799e 1MVDYgVbczqnMaRQXaXPHKYxGaWKR2VSB 027a32f73fd72476a37ad99513a0aa4994244df5dd97ef4307f39e028ed210d973
0x8286daab06e728065 1MVDYgVcVb59KJCp5D7toEQw91xVoZEk7 027e9d74c0230e30154523e586c78463e7269088913f85e0b76e8f8afb571a43cf
0x830a6dc8e7b186ef4 1MVDYgVbttrNR2iepzfYNvSWVXjzKm3ab 039743581b5a91c059d238b12c4f6175e8fffd12b015832ef71a22ca117d31864e
0x856808a6e195d6ee0 1MVDYgVcLfodUcRARmu3MJdGoBNb2G7QP 0205d67026caef7c016079ce06b98ef3e8bc21440445c557cd8c78c605d736be6c
0x8834d28549e657a6b 1MVDYgVbMndK6gonHeSv8KN4hJKZivtFi 02e86eb277b13a0ef3af813b3cfe977bcca40eaa9f9f0194c96b0ee2e8060e3fcb
0x8b8788ee35ab6f688 1MVDYgVceaSaWk4igpMBBDdXAu2NhPmFX 023b418523b3f8f03b4e4fee46a123ed501ee3e09605f37d0f77678e5cf52dc6ff
0x8d6c43786e61ca0f0 1MVDYgVcWwJ4g6Ru5iRSamGrW9RcuRRCP 020239984c4ff3aca947ddfbb8578eb38db6b4ad8c95f244aabeedf9ee354241ca
0x8f165aab5ef06ad88 1MVDYgVbizW2eYrMVF1x31XedFHNkpsy3 03254ef919d0faa4e32f346410c213c34d9aa600b383e7f72b6e71b4a5f370ee28
0x9a113c6c3562cb270 1MVDYgVbH35pfnuxAaw1QMypNfBrAw5h6 03909b672b3ced7a23a57612d4c13e7c054d4b7eaf76d4037c86f8738b07217f05
0x9c499b345e951c47b 1MVDYgVcaXHFuyNfSGCndHyxfnX1FQ7da 02803c366fc2762596dd2d9850d2d0f904eb306c51f7218306905da648d054ee68
0x9cebd9be1e8635286 1MVDYgVbvJfWvuvcHxGJrmUerPhE4SDro 03a24b1b62952342acef9f2a3d441a24e48e2a159bd9c9767f3b48cb9aaeef55a1
0xa082bf833dd4c729d 1MVDYgVbxhHJSWbFPmpRLBARecQkCULXi 03815a9cf5dc7de202cfd8c9ea0c4063f79dfb89e7780e97f0444a96eced6fe74e
0xa3511b31aa3c7f8a5 1MVDYgVcKYEoNovpX53wWsZZ44cKSvEnG 02788bcf6d9ae17b54e2a7eada5f5f9f0addfbf7d5290d11046cfcdbd582d8bb1c
0xa63215a737a6c13e6 1MVDYgVc6KrA1GensbpNG78ruFtFHi3Y4 02add55320bd62949d5ec2996b3d7e6e82227867ee3af5b3759ca4fdb699c16665
0xa7a74438ca8603bc7 1MVDYgVbczLHJFQyjWH2CCpoTkjdg6He8 02ee6d5228700b1d3c436c28c509f42c85a94cef5d1df8ceb4cb0b199046b71614
0xaf2cf75aaf7d2cfe4 1MVDYgVcJKCkCboRWSuNwdPf8jW4qW3Jq 020a249ab92368fb166be1a77415916b4b324238cd2cb8f2a6ea9521dd306036d1
0xb175e5d7b5149348e 1MVDYgVcGruUyjSyH7Ct5c7S9dgLk3dhh 0306a1b8a294dbfb66b8f634623278daf89df43065bfb01c3264cb0dd9ca012360
0xb2054f604e6fe93e5 1MVDYgVcZw3jnuMQVrgBnVr1capW3QLyo 03d61fc6547389a4ba5b2dc5409cd9ae56247b685b932aaf796f72b81f7af27af0
0xb3f858dfe2c3abc32 1MVDYgVbaNnRKk4866xubVCQthZHNMucR 024291bb32c33666a7fbf6a577d67bb26f54b61b39f2134cb8fe23a0cb20029135
0xb66df5467aa2f5c89 1MVDYgVbeuM7fxzwT6DwbBeEetBwZHnay 03755b0ccab1973d2355eae5095a6006e108560b5dd823903dbdfe672f5f66b07c
0xb8108f1c949edf349 1MVDYgVcNS5rwbw6Ae9P87GBrSUwYNe59 034099eb475e157e01fda361460c44879f2042b24605529c46c96d0303fe75808c
0xb958b8feb47fc3344 1MVDYgVc3jQwGFmXRqE8Brcnt162agbeu 03cf85ea9de786c828d46603491d0d10e1e5624224f737b530657ad27e88a5c439
0xbff333ada94e53a57 1MVDYgVbQVwMuZZ7Fk55mzN9aPVv3HkAE 027103fc06daa9a7ba536353506e560275e45c3d211bccc03cec593fd851bd4daf
0xc251183d8a7cca7a5 1MVDYgVbNrnHEejxuN8E4ACPSV9z9QQj2 038ab193e66457c09257838e2af39a5094b7fc6abd5d6e19b31872fe1b597227b5
0xc2e7c6fd21e66e389 1MVDYgVcZfSJkZ6id2mceBkV7cGXkKqTk 032a6113d7b44a15e46a59843023564471768ca676f02d2e7218f8b976d9da40a8
0xc44afc2001582cd79 1MVDYgVbSHGvy6mdtrQDfh2UoQSyYG9oK 02c3e9d2842fdc53c274b12cb4c9bd1ba0960a341adf4ae76fe2641ce55aa5f618
0xccc7129a330cf2b54 1MVDYgVbbAtBJA7bw8DHj7FUToUU22zZ8 032d5866e989321533d1d8a50296199860a5d1e798568f65336d698892f6a25b48
0xd05c6446a36f37ec7 1MVDYgVbgjPUrteB3ifNLLHepREf1Lfye 039536215bb7ee81ae278c369bd8458289c69df948db918e4c81ae2cfd0721fbb5
0xd173007057baea098 1MVDYgVbbhTssLoUCE1AXWPnFXnquoKzE 02f2933969f86a5841d3a7ac42ba5032d9b31d13096b7e1a8235bf92f3778bec76
0xd9b49644827b2a5d0 1MVDYgVbgA1fkKNECFuTjms4ZJv8JZRcu 025bd8fbbd1b6e9fe530f4c33335358a4c1ab07d77c79d9ba75a65923f097ad41a
0xde34dae79f4c7b982 1MVDYgVcKDLrcgB9WSmb4z3ifmDhiSPiP 02d13c2fec303aed19f586246d73c567db1967307ae580fc778e8bb574e879f50f
0xe59da4cd15b851643 1MVDYgVbF5RLm7sRYk6Epeqj2NwwE9g1P 02bd84576f7c4eb9acedc1ba26f47a8d374b2ff09bba18416faab7ef0cfb5721c6
0xe76651e59864e8ffd 1MVDYgVcTnxhgWxmjdzJCr4o2bTFfWEqo 021f269ae7f3bedc8223e2abb2c66defe76f70448d4052039564d3f20e6cd3aa4e
0xedb056f19b3b7e978 1MVDYgVbMKv6FWAoqU1UmRpPMiDYLpTZK 0290b437276ccd7361b79af0219526f892d345db15b91ce2edf4ade83e2b8e71ff
0xeef3d5de8f60848aa 1MVDYgVc7L3DpYSDcNudjdAXXn7fR45He 02584494f02759351078e8b6efd65ef50264d5b363e053aba6fd177a1236bba189
0xef03db9594d46948d 1MVDYgVbdBLfdiEK1mGy6xXPTfauSzTWg 0271eace4829ea972516eb3f4d3c59a2ad78531b994d8f320b8c8c57e5045fbf73
0xf2f5d60eda10e663b 1MVDYgVbNjRsQbLXQBK4o1BeuZtYyPVWH 026fd6bcaea1558618c38865971d088774c74d3eee1130c52f09df8365b7e31217
0xf68a76a1a957e717e 1MVDYgVcLJFT935gCXxMd4qzZUNGLD7BD 03cfabfdcc89b1c242b860e1023154be7c74d40a85bcfbc612e71882219626d266
0xf7aa3c2801c4622fe 1MVDYgVbGn8hAwUqjv9ZoRRjiB32odVmK 03f04749db897868f0257e1196581d58dd04a880f0a22dc7de955d5743c87b2d31
0xf7c1e9abfde5064ed 1MVDYgVc3hZPHSoxi4C7d8iBQZU8HgiAT 02b30a7b233b3630989dfb9dfb112024b182a451622d5daf9e48682c3996fe237c
0xfbce787b31400e3cd 1MVDYgVbgmHjzXLoTunHtBwqNWKTna8PL 03a5ffe4a8df77dd6afe16e5b7314ed33c64e8897538fceacf7a9f571833874586
0xfe9057e046e196507 1MVDYgVcDS1m8CA2YPkNmNZQq9c8t9f1q 03ae326fb4b2ec9dd7c0915b1add7cb179964e2457661f4b17017ad1f2c3b4b93c
0xff420fc4fe6aa1203 1MVDYgVcGpfkqV7iQXDZb6b55XUVunS5w 03f13e24b4e57de088972d4f9cbd3ca20be80c4e501d561278e70fb0e1b2b375b2
0x88b3e0b282f83009e 1MVDYgVesrxeMuyEHb7zxW3Nb3KjqbfyJ 029824b2d17445069bf9ea7fdb221871cbf4d5069bacc50865e64b4abe4b2a949e
0x8ad59bb29c80889ef 1MVDYgVfM2BvwiofJmYPqL5T5XM7kHWhM 03bb9075fab9e1c28e25e13dd9ded85f22eb4ae2ee883ce331e2182d6c95fa5001
0x8e86c364e15b88007 1MVDYgVcpNBXMhwDW8xgtDQ657NcRNXWM 02e2e6d3ff30c09a8a237b38faaa44b0952ec316df6078cff7a6ef614d1839c94d
0x9103f91ff55f4952f 1MVDYgVfLc65da7jfMyEtuWjDkpiRkN6a 02c0a826f58c00453aca375fbd8d8fbf14931a471a456dc240252db35bb4a54b2d
0x91ab23bdc6bcb328c 1MVDYgVf9X8h4gBMAW2viqGtCPN4Gfmr5 02ed86c4404ce74e42d51de34bcbec1f2b127b8f5141cb789a591fef4b40ce6c91
0x96217b861e12b9b96 1MVDYgVeHQUG1xnGLLRxxaWRqiVx7dtsR 034e97834e9c111136850c6be561b7699be6c17e4a1d8e8b15b158a1eb2f913927
0x975a8968afa93141c 1MVDYgVejxoD691FhZkqwLNsXr3HY6avJ 0204e53e5acf48770a435f1e2d0256f9a8d601cd5094d114778943ab7c4301f1a1
0x977964d6f60cbf2d9 1MVDYgVeC1LEcpdfyVYLhYGC8TPv4VHLV 0331ef8a350a2f20dbdc5c9865e2c1768570002986b4c019496c155c1fa8495b0b
0x996239a0da4cb78a8 1MVDYgVeNZHw9uKhohqfJcJxsXte1dRPG 0241e8d4f4f6b31c31697bf629b2a6f1e291eb34f64b63f2b336085cb1d329e842
0x9d5e6590c5f78ddba 1MVDYgVdadL4qMR1hLyyBa4j8fSM6XkMT 021ae1c43beffefb7e478ec8a2a836b4fb906c7e9ecaf895cd81209a10b54d405c
0x9ff9be752cdfa2884 1MVDYgVdRVv8Ur1dmTpTYdukoTLiraWEo 03df2947a14fbf5564b6e0d6a62680a4248d1788f129d11627f0256fc38ad6e75f
0xa40f0213ddd965953 1MVDYgVebshZjmkWveyyho1sHdpb7USwT 03ac8a1d88ef0c64748fda3026bffc0dbcdd1ca7ed478897ead019eaa492753963
0xa68ecf0c25de252fa 1MVDYgVe12BZLd6MGMRRj7NvwEBsqWebs 02691283c48cc6596c765e72f2c20644f2e3029af89bd0ee6061c84f8015980ec7
0xa8d65f7191dd7cdf9 1MVDYgVeTXvxqG11yTSqyFgtv1rj1D8mT 027e903254caf038a9f8721f13fe42233f267e18133394c324fca95f000646308d
0xab4cac702f0c684e2 1MVDYgVdNQJDutD82NjnD9FJPAFE8guF6 020f223ccfe720f8eb62a869924dc7d3b0ee5d63e80bf86cbb24794aeacd7e688d
0xb0031e137c7b1ff41 1MVDYgVdGYyCpCJFifrbgpqTMEYuteqaH 02d45d1fca587f39c086e32b3e657ae58df5b06437a2cda79c66509106d86f72bb
0xb58061c36fa6cf575 1MVDYgVdjy5S3fTjUHX1s22p22vzpNStm 02a380f59310e64a976452e01c46ac290386a75c7a6a991918ac6874edf2f291e3
0xb8444d33a3e90c4b1 1MVDYgVeEgyAMGB1YuGFQR2qx8Qa6pvgt 03678802cba2fd295ea4462ed3fa223f1bae68b0ba5ce1d5ab7bfa59bd0a090ccc
0xbeb19a4daa70f9a54 1MVDYgVdw2MEbxZMQ3dhtSvL3D2oV8BaJ 03efee90fc03b215ff99412da65b0bc0c4fc70c78eff517cd550c007a6a59d00c4
0xc511c38570914087c 1MVDYgVfMrPwCs3LknHLB3U2mjxtWqW48 023149928889168c4ed1e2229ace1b21b5597b4ed4e1e853bee5d4222d3e987d97
0xc5e006698355486cb 1MVDYgVeiCmNE29eh6MmpmExEcXY7eud8 026fe5da0b489869b92886b7fcb42377dc3025a383b54cd89a818ce04529b63874
0xc7bc8515d67c43583 1MVDYgVf9NzyUA73pURaJdYqwmH21kj8Q 03e1d9fc8f75c782fe218cfb6f356113ebc107ea3cc66ef76b3b0c608b68c6ab0d
0xcabdfaa08f2b4955b 1MVDYgVd9iurd9VaRScV1QWPWkj1mTnwh 03bc014236158a450adce0e88f83dbd7d8a97decd21fe7eeb8a4c7b46f409bd53b
0xd4614e77972dd6143 1MVDYgVfTSEs49AFFUNq6EzVzu1Wb5QhB 0373e3ccb526a3dad4540044ba3555ef498f646e530f8f0d78223d77ffab9a8198
0xd6019f357ffaacb54 1MVDYgVds11pn5Z43NYBfpkGG6V2jAWpB 021e58051d89e0ed871f0a1aaa505373ecc31d43a42ee168210a02e246dfeefc24
0xd9c90b9aadd3e0d8d 1MVDYgVdbNLwHuDWSBXP2vbEx3XnqvrUe 0229484889768d3d4ef89c623d6adeed29442c94dfaff85322c67a429d1c882123
0xdaf8d0f952dc74197 1MVDYgVeYoCFXKE2yLaheoUqqcwdYTKhB 02ba45511a67af6eb2c5b098535425f5721376d10419524762190fd43a15c43ca1
0xdcc6a7d71026def78 1MVDYgVfYMC38QzPuq3pzsS7Z1LHGx5qE 03d9529aea733d3e2d2ed6dedcacb8e82382a0a9037f8521f0fd1181a9a88d1433
0xdd536a767df5c5b74 1MVDYgVe3iSXRqFjXmrCT1DyHJrSZWUDj 029d276ca9bebe25198cf152917e17fd99d9e7e605dd4953e401567ad18c022a17
0xdea515860ae23ad0a 1MVDYgVcsDpz5UoYStrFuWUZbS2FnR9oU 0336345c8359e65c72da464ccf4577b8a535ff4d221fdd846055b2af7c317ad69c
0xdf1cde6807737aecb 1MVDYgVfKYNgjcN2Bj6beC1NyukssuTAm 03e03c34047e1f87b78431bbd3637130facc0ad7b935a0ecfc7e9dd524bcd57973
0xe0c3cef16d85eb043 1MVDYgVcgMxmYSiDXjjzA7utJ82rCDmHY 02a97ca2c620bec36478be7ba97b1157c0a95da7176217af08f0bafa13c1c3e405

... 220k more


But now I have another problem: I have so many prefixes, that computing the next ranges to scan takes a longer time than actually scanning the ranges. This mad spiral requires some GPUs to do the computation of the offsets for the GPU computation (of the offsets of the next GPU computation, because too many prefixes...), what do you think??

I'm gonna start swapping some sweet ranges soon with ya guys, tune up your telegrams if you've got your match-9 or longer address prefixes nicely lined up!


kTimesG
nomachine
bibilgin
Bram24732

I have read in the forum about this method with prefixes but still I cannot understand how on earth can be faster than bruteforcing.
Given the following Hash functions, the avalanche effect, how can this work?
Can any (or better all of you) give a concise answer to the rest of us to understand the following?

1. how can it be faster than brute-forcing?
2. what is the mathematical explanation of this?
3. if using '-f/--flips: Override default flip count' or the default, as long as it is not 1, then doesn't it miss some hashes?

Please give a full explanation in one post each to have it here for anybody who is trying to learn.
Thanks

3 - because you only mutate certain bits in one key, so you get fewer combinations. They are certainly large, but less than the full range of all keys
WanderingPhilospher
Sr. Member
****
Offline Offline

Activity: 1498
Merit: 286

Shooters Shoot...


View Profile
April 02, 2025, 02:57:14 PM
 #8504

OK, I have to finally admit it.

I had it wrong with the way I was viewing things. I had some spare time (I don't do fishing yet) so I played around with the possibility that maybe, just maybe, prefixes might indeed be useful to accelerate the brute-force.

I can't believe how ashamed I feel, inside out, after managing to speed up a plain old scan search by 800% on average, by using prefixes as a good hint to stop all the GPU instances currently running and reset all the offsets and ranges based on the new informations.

So now my baby is purring out results at an astonishing speed, check this out. If you don't trust that my cracking grid spits out correct keys, you can check them one by one. I'm gonna let you figure out just how many hashes are usually needed to find a 32-bit minimum prefix match, but boy, look at that bad ass speed!!!

To apologize for my fuck-up, I'm gonna share a few nice results I managed to grab recently, feel free to use them as you wish!


But now I have another problem: I have so many prefixes, that computing the next ranges to scan takes a longer time than actually scanning the ranges. This mad spiral requires some GPUs to do the computation of the offsets for the GPU computation (of the offsets of the next GPU computation, because too many prefixes...), what do you think??

I'm gonna start swapping some sweet ranges soon with ya guys, tune up your telegrams if you've got your match-9 or longer address prefixes nicely lined up!


I can't tell if someone hacked kTimesG's account or if it was a sort of April fools joke lol.
Especially this part "(of the offsets of the next GPU computation, because too many prefixes...)"

IMO, way overthinking it, if this was a for real post lol.

32-bit minimum prefix match...I have probably 3 million of these but quit collecting them and went to a minimum of 40+ bits. I probably have 200k of those. But I am not running, stopping, recalculating, and all that jazz. All of mine plug into a db, with padding (your "offset") and now I am just searching the "gaps", the keys in between, 100% range search.

It'll be interesting to see how close I was to solving, once we know the private key. So somebody needs to hurry up and find the private key so I can see lol. Hurry up Bram lol!
kTimesG
Full Member
***
Offline Offline

Activity: 812
Merit: 248


View Profile
April 02, 2025, 03:04:03 PM
Last edit: April 02, 2025, 03:17:29 PM by kTimesG
 #8505

To apologize for my fuck-up, I'm gonna share a few nice results I managed to grab recently, feel free to use them as you wish!

32-bit minimum prefix match...I have probably 3 million of these but quit collecting them and went to a minimum of 40+ bits. I probably have 200k of those.

Did you add my findings to your DB? They're all 40+ bits.

I have around 10.000 more of those if you need them!

Code:
40 0x8945871cde632c82e 1MVDYgVtgKg8BHg1kSZso4PJrzaDadYWS
40 0xd84f9b12d27300031 1MVDYgW6mEQF8YPpH3RNdJZa5L6S5qmMc
40 0x900511e32b93584d8 1MVDYgWC7KKQhcC5ewVryrCsjiQpXLU24
40 0xc8406eee11943f3c5 1MVDYgVz5TcQXURjqD7eCgHccHp5NhjxB
40 0xb618be4c6005579a5 1MVDYgWBq4pqW2wE9mdRqoGD2D2MX1WmD
40 0xb3ff98caf2505fd64 1MVDYgWFGijjUMaYDuUsx9PcQVVmCwrjR
43 0x9d5e6590c5f78ddba 1MVDYgVdadL4qMR1hLyyBa4j8fSM6XkMT
41 0xfa09ba4c9cd0c140f 1MVDYgVp69YQst1zXBXEWuNRHpKd4YadM
42 0xccfb162bae8ed4684 1MVDYgVYsYbvjLK1M3LanNeosn6BM5dtz
40 0xcb3cdc0accdd6ec97 1MVDYgVzL35X9bb9kbjFkTtduEBhFQjJN
40 0xb30dc61c76037cc63 1MVDYgW74Lz695pW3rY5Jvzu1AjMivrcz
40 0x809390bb1e30d04b3 1MVDYgW49DoEMK9Q4JLxZwqafay37TawS
40 0x8a49cf7ece77370c4 1MVDYgVx3ZxMuo2xdSJE4pUqHGicNLSZp
40 0xab041162e76245bc1 1MVDYgVxjKJkrjL5KTvn3eQMp9tJVgTdR
40 0xec6b4046e9cb410de 1MVDYgWCiKJ7bZLHs62pNHV23GP1tcJgJ
41 0xdd7ab27b50c3e17cc 1MVDYgVgxihE9B45uq1ZU4ZoPPyE9CFbV
41 0xf216d5fa580f84c5d 1MVDYgVg2CrboMuvyoFFfbo87hSF3KZQc
40 0xe0e1b2b5bd9b7a0b7 1MVDYgWD89oe5cHzkQE7cCy9EX4eD2HE8
42 0xbf12c2ad15f3a6fc0 1MVDYgVUm1qKVi1mWK2LjqHECCM2eMeC4
40 0xbac7585ed9f4ac4d1 1MVDYgWFp151bpC6xqrWtnW7VVnorHukz
41 0x9b314b8e18f7f46e9 1MVDYgViqRfisoVwxbMBfvkFaTsgbcjgB
40 0xc07e32083cd947f75 1MVDYgW7LWAnnfY37A8RKJiDqxqtsd3LA
40 0xcf77172dff662ec65 1MVDYgVx3SVBtTRfEKMf7tmzieHAZFnLQ
41 0xf425d5a8bdccdf86b 1MVDYgVnJ4YJUFGQ8BshWuQJuT5pToaTn
40 0xb1f9bd77b209aa9d4 1MVDYgW3XcuT2DiDquQ5feC4oDq7oS4b7
40 0x9e9448ad01044d95e 1MVDYgVstHXRc95vssaksD7TVfsQM5oqs
42 0xbe0553c665fd07c21 1MVDYgVXrujTnW52YuNGvpeWADGiGzLks
40 0xb58b69dfcff9f898e 1MVDYgW4jQh35sQxynxy6HKrGGcQNuGna
41 0x81feb4e6ae68aa7c6 1MVDYgVsJfseYhDvETNruWNC2taKm7Zir
41 0xd912d7c58d46e8734 1MVDYgVpcf6Jni6FY7HJvYgY9seVpcQKi
40 0xe81cd8243adf4513e 1MVDYgW65ZnsWw1v6h7Xktveuj49Dq4C8
40 0xaf9ad785daca2a149 1MVDYgWEVynxBLriReQ8Rg5GPEFVW4wtj
43 0xdcc6a7d71026def78 1MVDYgVfYMC38QzPuq3pzsS7Z1LHGx5qE
42 0xc2778c522bbe5b156 1MVDYgVWjavrKTE2pFJHY5hzqkEu8VCaF
40 0xd6812681af6e66947 1MVDYgVzssHXNU5Q8AJpRAPQGd9QumdXF
40 0xdcdaae479b3f78301 1MVDYgVvhiPcbNwd5uj8GcSsRhsnE4J4z
41 0xf21d47fa485f2d15a 1MVDYgVpJTrXUAWYJrQeUJqLTTQevfyLo
42 0x93c8ff24dc7c4eed1 1MVDYgVTuPTNKJeiXkWbfvgWFXZybuXJV
40 0xeef3d5de6ec0f66c8 1MVDYgW8CM8SJ7YPZ1ye6g7bWjht2h9Dy
41 0xb7876eb59c130265e 1MVDYgViYfU2VUkPWyw2erUdDsnzpqGxD
41 0x93299043d8002e272 1MVDYgVnVKgqVQgHg9LKLVYg5JdDjkfrG
40 0xc87a9a028940672d9 1MVDYgWBfMKsHwypQLUvyBPGT2KKzfRJC
40 0xc0b6ce099bf859540 1MVDYgW4ctiRbXe7ANMszNQnV4g884PQA
40 0xf2f5de9cf28767479 1MVDYgWFoMiTscpyyFfVeXR1miYqcLUgT
40 0xbb36717d44ddc097c 1MVDYgW3qXZ1gzzH4SXojdB3spCjJN7Gg
41 0x800d64b7664270339 1MVDYgVj5wDcA5g1TsJeHCUEPVAJ2bdVB
41 0xb93d5fbd614e80849 1MVDYgVivasCaJBEub3g4omSbLZkXxsRE
41 0xfce4785aed243baea 1MVDYgVmvwXGKDdRejukkrossudosAiX3
40 0xbddf80b522ba92092 1MVDYgWCuSVQMm1Nj5uszNMbHwuuXS3sW
41 0xac7c2ab0bb1ead0c7 1MVDYgVkmdh2KzKYfY24QTComqPdsRgaU
41 0x92ccbe0ff7a27b7b5 1MVDYgVpuFFVMNdesbLfPWVEBoBQ9h8SS
40 0xf70cd00b1e68761c7 1MVDYgWFHQrwJdUVXo29S37twaWWzNZZf
41 0xb9d98fd9999ab1e6a 1MVDYgVq9nJepPyXzEfNBamfmNzFXidP7
41 0xa17a07614b50ad615 1MVDYgVjLop5UXHrD5QCVqy7ehujqBgcL
40 0xcd0cbaa050b781bf0 1MVDYgW8Qv98PEhxmWHhTdnEERyYFhLt9
40 0xf9a95461b11c3c678 1MVDYgWBoRX6HU1RVKcBLfhVFBc95vK8x
41 0xd44de6881e700aaa4 1MVDYgVquzp5zUQqJqbDPTaaAKt17eEk3
40 0xcae501bcc75c2f596 1MVDYgW2Cd5bjzcCwxEGpJhcEfpbumJ2B
40 0xb33c6a5970076b540 1MVDYgVtAoqJZ1CSWGgfcHhJpasHdrEkZ
41 0xd9c37b43c23192d81 1MVDYgVmQRL69aJyEDJWFv11DM8Gis4wH
40 0x89019d39009a064d7 1MVDYgVzwTBWy4g4DF3ttGoM7bNT2xQuK
41 0xef552d3b546c124ae 1MVDYgVmujHoaSzF9drDir4H2QRygZf1x
40 0x9f2939082912f7dd9 1MVDYgWDh4QRNkefJGZ2nCWh2gMdgrrC5
40 0xc84f3bc6a305e57bf 1MVDYgW1aYuP9zWTvztFF9E2VxPViWES6
41 0xf711cd5eaef56ba48 1MVDYgVpqTFu4yH2rTHyrabkdsKLhHWXa
41 0xc68988445a542c8b2 1MVDYgVqZtnr2cw2gENW6G7bbNGR3VVSD
40 0x9506171bec10aa204 1MVDYgVzQy9o4PAgxXvSHqhRFKGjJ689E
42 0xe231fd0d6867457c2 1MVDYgVUe7rAe8ZBJZJzwmswV5mY4vrYV
43 0xf8356c63d67fe8457 1MVDYgVdKjDh64UFbQ4FQ35RJ3QteMDRA
40 0xd73b453553392a07b 1MVDYgWAT6r5B2w7Jvivno4xYL17HKRio
41 0xca4f15772e363d668 1MVDYgVi9Ai9ukDq1LCjXbsejxnBt2qk4
40 0xc47bfc1a065a27ba2 1MVDYgWBqMUSRsmf11scGKcjeEPCujFx9
40 0xc54a84e498962e6ff 1MVDYgWAn7Z8ytqwSZBCrb39PdSsvdn2G
41 0xe4b45a536d479a30c 1MVDYgVketoEHo92NrXUMdzLCgFzSb3nD
41 0x8081ca54ea7140d5a 1MVDYgVjuUNJ7KWLMWe7jcFnobnYmxHNa
40 0xc5772de1e1ffbdb6a 1MVDYgW4H2qYQZxfUbedC39J23uv8TRCp
41 0x97607d8c5f81bb83f 1MVDYgVgUYGsaYMZJk74QJw713HKupNwm
40 0xf5bf081d5587ed777 1MVDYgW6wAhqnfotxjbE13SaD3yYPXQ33
40 0xb0ff50f74b404bfb9 1MVDYgW7rtisNx97nmbZiSBcvSvcHENzR
40 0xbc7e3269ced26db1e 1MVDYgW543FKCXwWPBEdNvmx4193dehwp
40 0xf446a350d350c4f9a 1MVDYgVwWgRRnzK1uPo1bNtww8YLhQSji
40 0xac3c3822748188b57 1MVDYgW5Cj1LVAoXMw9aLCqGtKxMMqRDq
41 0xed21eb3ca1c62824e 1MVDYgVrZoxQvD4ZNWvXX6JxgzMRAxoH3
40 0x92b23c3909088d4cf 1MVDYgWDsC1SES78U3oxsfVyZy6dwDuXk
43 0xe0c3cef16d85eb043 1MVDYgVcgMxmYSiDXjjzA7utJ82rCDmHY
40 0x8b7aa08db8592e181 1MVDYgWDfi7qivaNfGV3K7WZgqBzJrfy2
40 0xbf67a7ed13ec0c0cf 1MVDYgWFC2rCa8nyDuNvLYxPZwriWGDZJ
40 0xb81a24791fbb669d6 1MVDYgVznXXZzpRkz9zCgqM5bxwmWeFUE
40 0xa2bb5e49338090cda 1MVDYgWAd4izeoMu3AfQzXdqVaW2tye2m
40 0x8d724affd5f4a2f8c 1MVDYgWFVKmQZpajYvg3b6LbWeGDU25HH
40 0x827cb5bb4097c0915 1MVDYgW5u7oesSmmXUSAnHdc5LMKoKyZc
43 0xe839da69bf8b31926 1MVDYgVdqEti4buZji2qBNwzvGNRRpQcd
40 0xccf054524d6f932c1 1MVDYgVzszuUt1nDYrQMoqH6ZQQVkLjfs
40 0xd84bdf894b66c60f7 1MVDYgW3LMgoWFunahWJJmdZU1jxf2Sdr
42 0xb4b9a0f8f191e4b89 1MVDYgVWjQywxWPVXiy9XKN3uFhjwj56K
40 0xfc9e7e13a7003b2e6 1MVDYgVsZQrfysq3DSeVkD25n6NYx4gka
41 0xa258ff69d0d09d6ee 1MVDYgVm7UMy4giYQhJQgpm59WwmCWhbo
41 0xbff333ad8feda3872 1MVDYgVguWcrTc293NoUn1fHLmdQAP5G7
40 0xf30098a60ab5227b2 1MVDYgW2g7cmE18vUG7MN5k6etvFzbxe4
42 0xc885c1dd8820966ef 1MVDYgVZifT973A8TKp7cUudtHPqpD6UV
40 0xded2e724f179fbf56 1MVDYgW46PQevnogrgSZymo4jG6N91kau
40 0xefccc43727753a4ad 1MVDYgWFadx9pJor3uzjD7CHqWFYV7t56
40 0x8ab2406af72e3e7cb 1MVDYgW4gvbb6GYzFi9rrBNuvASZTiFhd
40 0xc36903b419610d9a4 1MVDYgW1bpvFjGnNdN8eir8AYR1b7ah7e
40 0x8fee05821f43e534b 1MVDYgW4yugxjgjTWQwWXykBthuknCvpf
41 0xb7470bdfa445e3e99 1MVDYgVqaS6X5H3XteTzSA6Evd9WkkVdT
41 0xb86b03d2a81f7c8ab 1MVDYgVrgLDSuQiMUvyTXNo6dGpD95pKj
41 0xc4148ef2804f83c89 1MVDYgVfpdtemvnYwU8BdNojske8UymFK
42 0xd79c41cfbb42ce4c5 1MVDYgVXGDNkH51nAxrrJNF25Vu5okGLy
40 0x812013c69dda1babb 1MVDYgW8VfQ6FEroQPWq1LojdWRXfNvD6
42 0xcac1933b7eb8fdd13 1MVDYgVYerKM2zdcDWGaX851BgHteRpby
40 0xbcc658d139df8bdaf 1MVDYgVy7d7nKvSa3zV2k8WSyHxfmihGm
40 0xfcabfcf7562ce691e 1MVDYgWFhLjjsJdaFaSg1ddMEc9rkJsJm
41 0x9964323d7bf75c349 1MVDYgVgVGDLKE2q1fBc43Fx3C4i7W2f1
40 0xbf83045c59bad48e2 1MVDYgVyHW7aScQXWXVUSRgB4ifzxpjKq
40 0xd9580decd207966d6 1MVDYgWGMnbiQeuoUpooD7ekbgrUemXHZ
40 0xbe91a0633ac424cc0 1MVDYgW2nFKYCfi9qHvxV8k9zgB1sR8pJ
43 0xa8d65f7191dd7cdf9 1MVDYgVeTXvxqG11yTSqyFgtv1rj1D8mT
41 0x9be1bcdb944e2ad08 1MVDYgVsG7eiRrDDjibqeKVk3YkjUS7B1
40 0xb4f317837619f8dbe 1MVDYgWESYVDpW294CPiz8rST5dgvjvFa
41 0x879a7759c7e0c1f60 1MVDYgVqaCDtefk9k6yWjT2vWWGwbk9zs
40 0xfb3f1e9b3987a17b9 1MVDYgWG4tZyGf8d68KCcQ1KmeBRQYGmn
41 0xbbb6421903687b207 1MVDYgVm9a6BeQeteau6Ve2sYJBZYwJ8h
40 0x85b4315dda25f2ae3 1MVDYgW8tMRiZpgXPJHZ61U8rLrnbF1zu
40 0xfa43d5848e93f5e76 1MVDYgVzF2GWiCwyRPAwujh7tSvovVsyk
40 0xe4e774e32602a7ebf 1MVDYgW6gC7GvHdoBY7wM9KZDxuygSHwy
40 0xc4952f531a85f8019 1MVDYgVw1jqgoXjZcd7XFiTP7nFmAhe3N
41 0xd7c16518292ae1681 1MVDYgVnSy4EgiS72oZhXNSgmdnv6jr58
41 0xbb6257acd7d881f9f 1MVDYgVnTmyexnaZQL5QJrSL89N2iN9kc
40 0xa800168093091eba4 1MVDYgVzpCFY9CSQjSzUuGNiuYKcu7W39
40 0xa33fd59f6485d3fad 1MVDYgWGKSURErZxJyihZRRgB31hDThmS
40 0xe0f24dded2285078b 1MVDYgVw6YE4xEcYzYaUsQ9X4cqt3Hex6
40 0xe066cce18f6d7566f 1MVDYgVyye7UDqUoM9ipkVmEQBZfC7o5J
40 0x9b0d57c7fe770908b 1MVDYgW8FbdKn4VEDdQnu7u54zzYdk1DZ
41 0xba419451ab952f305 1MVDYgVpxZCys2UdyNZi8omXc4row8TcM
42 0xa7cbcf651dba11db3 1MVDYgVY9KYygif1BZwJ5jXuTrRkiieX9
42 0x8ea335896968fd8d5 1MVDYgVV45WCAv4BnnocMi9GYJQEMqwn6
40 0xd9dcc03bb51da99ce 1MVDYgW8x5jvdpviD4JfhCr2efwuTvuNB
41 0xdcdaae4713582bed2 1MVDYgVjqqLTuxzspyNM18hHtZSBfGpy1
42 0xaebf459415f591eef 1MVDYgVZ2q5nFkr9wPwbVvYmRZquCRtNz
40 0xa1d8d90ac5b4e0b72 1MVDYgVtYVQnjs2fjTTf8FzMiN3PwkZZS
41 0x8905f5d38bc6a9151 1MVDYgVgBdVLb79LtCcYCwaKRDZo1Ax67
40 0xd0d5348ba20ab40f5 1MVDYgVv28PQXFQw5qVYTaaMuwvzvgtkN
40 0x9fcb51e630ad3363b 1MVDYgVtJHbYjywTMWDcJsd3xD7isg6Ur
40 0xa902ab2321c32360a 1MVDYgVvfvp1xSMvoNBQ5iVP897gr6uEW
40 0xaedc6d93f9ca40fac 1MVDYgVydzzxhVAaH1Tv6Ba2ex6VtXkWo
41 0xa330f5a074070e927 1MVDYgVkGjfn1kFgpkCrHCJ8HJ4XUHCnZ
41 0xde06dd66d0b08bf73 1MVDYgVoFveYR2NqvR2BCiuBxeFUbV4HU
41 0xd34de5cc580102192 1MVDYgVizDjThufXRKCzXNHK61Hnp2BnQ
41 0xc54464a4af2655ec6 1MVDYgVkjHWcLf8eHvumbJUK9GPUXCiQu
40 0xbfff594120eae03d1 1MVDYgWCH4dni9RiBjrBgaQgfa2PuccjW
40 0xd9f27cddf5dad1fdb 1MVDYgVx7ZRW8XTgDfhM7fU3vzD14KPSW
41 0xeaf6699492acbf315 1MVDYgVmMkePpxFC1c2dGCwMXc1rX6aVD
40 0xdef824d17a7e6dbdf 1MVDYgWFvV1TkScx9d554139YR9jP4gmq
40 0xd55dcb04d330e8f6b 1MVDYgWAptMVE4dxcLLAb6nnak8dZggum
40 0xfe32af0582738f6e1 1MVDYgWDYkrtXW88wsoAxEPxEXxX7Zp3v
41 0x8081ca5499c2d37d1 1MVDYgVnnWzEhcrC8UR1cUopfupPyENQ9
41 0xbbb42eb0fd1045424 1MVDYgVg6dbr3trnyya6Sxxs2XDVNb7Q9
40 0xc5caeae4c5001406e 1MVDYgWFEEv662LoEvksnLp3gKigtNNcW
40 0xa1896dda0ae8f185b 1MVDYgWF7MJjKvL2BLTaBvPU3JYqPVqa7
40 0xaf2291f170475ef26 1MVDYgW7kaCEdh6d4ufYh3QDdj9Yx8zF3
40 0xb7876eb5e2fcc704d 1MVDYgVvJYeEUsRH2HnjrTKGpdPf7Qqdg
41 0x9f45dbeafd981591b 1MVDYgVmsFwENrE5NdxM4HKLzvaLnYD86
40 0xa7efd038a1941a76f 1MVDYgVstQpbAKAjwqUCVVm7idgEuijXw
40 0xaa77b26db0756a125 1MVDYgW4dLBCELTRJgn2aD432FJjtxZTN
42 0xce846f0fb12e6da25 1MVDYgVWb1k28t5CwgMwZ9wyxfHSqnD26
40 0x873f2210fa7569381 1MVDYgWGJUZY6D9rDau9pugG8Vmnv5uSG
41 0xab8dc4637b7f1ba32 1MVDYgVrPXd5vMZJeFX56MBRr45fHXaRb
40 0xaedfddc807356f52b 1MVDYgVzYR7YFRoV9ZGGzH7zS6e6LGmko
41 0xba419451cb9afa116 1MVDYgVp5YpwKzdjMPAQVGctGqX1uxSpN
40 0xc7b2749ea51b3aacd 1MVDYgW8jyuo6iQZ9DsHavE7gK23jRK3Q
40 0xcdafb4f98cf89391a 1MVDYgVzjSMVYDXHSVHLrHaLLbJjgDRx1
43 0xab4cac702f0c684e2 1MVDYgVdNQJDutD82NjnD9FJPAFE8guF6
40 0x842db149eb42bc488 1MVDYgWFAWGrTFoWnrXcaH9osRLtkinVf
40 0xe64b66f785120c42f 1MVDYgVuAS3gCiRscKy4snToLyxR3GZe2
41 0xe791a7f998e3a03fa 1MVDYgVmFF3aaaiiXNiTqCyAXJKXFcR6x
43 0xfbbb3c9cb3ffb5f43 1MVDYgVf8AtX4V7VLUMxsUgxp9ExiYuup
43 0x996239a0da4cb78a8 1MVDYgVeNZHw9uKhohqfJcJxsXte1dRPG
41 0x9a88e17bbe39eb4b0 1MVDYgVoBAKjhUcWHmqQVVhbxHFKncex6
42 0xb07aa94cec9754c73 1MVDYgVYDtgcVUdKh95LRCyPdyCnkfuzG
41 0x8f7fb16a7ec2611b4 1MVDYgViudc957CQ2LGLxRD2bjdksFWc3
40 0xf34183bb3ccda5391 1MVDYgW2KsRe2CYuyFLjYxb574XEpVgT1
42 0xbb655362347715ec7 1MVDYgVYP3mVV2fhEReYcmtq1eoSU5o9J
40 0xf41e90b63f878e32e 1MVDYgVxKqy6Cq9HpbrYgo63yYSqjpeNV
40 0xe0445b89b7d7a4df7 1MVDYgVsRc1ifMFsuRVCqg8pfrRmsiDe9
43 0x91ab23bdc6bcb328c 1MVDYgVf9X8h4gBMAW2viqGtCPN4Gfmr5
40 0xa08d163082c778439 1MVDYgVvyKgN5YKWQUuq61ADvrV11J9uP
41 0xd763ef3e5f174c29a 1MVDYgVp4deoLLEVLcqTHVMWtanyMbYRZ
41 0xaaaae848f3656a5b6 1MVDYgVjMr8cTb5J7iEjPmDgetarocqrJ
40 0xa628d75b78e644124 1MVDYgVv22M4DdwVfErzcFWvnqX3bqdrC
40 0xfecf319535c384c05 1MVDYgW7qrLfZKGikUbZpk7yAH45qzWyf
40 0xf438a8aba6387a386 1MVDYgWA76uX7YQDTNdtQp1UFWSNMS2bc
41 0xfcf57cb2a87a1f513 1MVDYgVkzWXtxQRfo3E4UcqrijAgCn7iC
41 0xc66c3327b647ad39b 1MVDYgVhXZXRQLo3zBTRJA9nnETgYm97t
43 0xf21db01eb75e820de 1MVDYgVdtYGQoLWnT2zKYdiEsrDnjoAJJ
40 0xd89c110a6eb9e597b 1MVDYgW9w9L4KVCv8TZueD3UGMKSKGPTq
40 0xce46479c94b6f54f3 1MVDYgVycdm98MJobZnHxiorh6pyMu23T
43 0xf22da07ab13ad4d84 1MVDYgVf3DA7vwjCwSVMfmCNmKqUWVmG7
41 0xe4427d11a12a0ce9e 1MVDYgVmeh9yX57nsoAZNv5nriFgrFrWg
41 0x8d55ba69bed32295f 1MVDYgVnR9PxVpQoJy3H1dj9T6DnxfZSs
41 0xa1896ddaf338742e8 1MVDYgVgEY2E7Cy6FDqSBapEf9CAXNB7y
41 0x88b06ca4ada4bb499 1MVDYgVjagEfqZJdGQ7UwWQnakY43v18n
40 0xe1e9896f1bb6653d6 1MVDYgWDtwynMm5LFhC79WUQo9ZfVrkWz
40 0x99fd1ab83161ab686 1MVDYgW9C7k1S5TnXkAgUttmtc7RKF63J
42 0xfb08c78267c0fbd47 1MVDYgVXVmvzSSLLs5GMB5KzC9snbPZhL
40 0xd92f47a4e94bf5ac5 1MVDYgWD1VoeAFRkQ3Tzj3HqtniJjCWNW
40 0x800d3d144a76828cb 1MVDYgWCgerTkFvFr96V6BvtiY4B5BtVR
43 0xd6019f357ffaacb54 1MVDYgVds11pn5Z43NYBfpkGG6V2jAWpB
42 0xde06d2ac95819df6a 1MVDYgVWCxmALCnbTq1FZhWp4kBCuRLGT
40 0xe93b85dd817c6bd97 1MVDYgWAqcWoYjAxYSXwvQan5fpzx4ajV
40 0xa63f2c76acfb00512 1MVDYgVuc56vJcxWLTyHnwCiK8GdW7woG
42 0xe94042b0336dfb3ed 1MVDYgVYyEbXfxg8nkxuaHN77kyXGujPp
42 0xf3df958c1d8a82d85 1MVDYgVW4gg2Paaet4wRMexFy6kGtC2x4
41 0xebedb25c433c88cfc 1MVDYgVnXftkfGgkWsb1J7R4XPGUm3Zok
41 0xd20035d0c170e53dc 1MVDYgVmNRRotmJLu3QUYFFiTkMvVrHTz
40 0xf0e392b251f81bb68 1MVDYgVyNkfp35MePUo68obktDbYdYgoT
40 0x90feb9f569755dc13 1MVDYgW8X6yhcuzC15DVfMTqe62EqX8yh
41 0xe4775050d39839fdc 1MVDYgVrey4XGEgMsJ9oz6UUP7qL1uCiV
42 0xcf3b2c25c9dba991b 1MVDYgVWAhdYExtGMLVsxSXbLS8GhaZjv
40 0xa49ae2e0a72cf74bc 1MVDYgWG3V6aQTRQDFjqGeyoL6rPyrLkj
41 0xd6ea7086123f248c4 1MVDYgVgufrBZvg21pYR3tjd1EcFj6nUc
40 0xc4ea417818de1b7f7 1MVDYgW4idgVtP1CMM3fZDw14FNwyi3zM
40 0xcf1dd7152f56eccfb 1MVDYgWEnhkqt46hA29Sgtsp4SLwWSbJ7
40 0xc9d9e175257757115 1MVDYgWErKyQHpkXokCCgf7XtokTXT2bA
42 0xd202d58fbb8765a1f 1MVDYgVXShGYPtmaiqzNsdSepBEReJCqz
41 0x9b19242465f7adf30 1MVDYgVjqettfn22qDUwejLPRnoKajR4Z
41 0xbebefd1bc8c9db1d6 1MVDYgVjfGBxmdHotR8n3sX18MAbs6K3b
40 0xb4c63638f801ee761 1MVDYgVvvYg56J8RNVmvL5yVb32j7j5oQ
41 0xb8b61c63159c89007 1MVDYgVrZx1AhxoCHhkxnvGr9z5V2PptU
40 0x8662cfd746cf92f9e 1MVDYgW4ish3XEC9CWC2FX6ctDwWynoQk
40 0xbd7e5573280efe6a1 1MVDYgWDinoCFEmNdsYSNgGWNeZpX8gKD
40 0xd5b554bc4466d97dd 1MVDYgWAiu37f2rrRLycKrPfMxKW2rjfm
41 0xfd3f23e70153d8499 1MVDYgVkHBHZQpGgiVgokbryZMTvJLWWP
41 0xf9a23eadaf8c3b0ac 1MVDYgVr14KCBzib4ZeoVQG6JvEqMYKWA
41 0xf7700887fb326ed67 1MVDYgVrvN9NdwuotoFbCRXbe3v6EoWqB
41 0xde0330470845656cf 1MVDYgVntLQ1tjiUMqQHcwJguBn13Y15o
40 0x8f7e230acfdb642a3 1MVDYgWDp1FyAdycv7WZ4LVe77Pn4Q67S
40 0xc22370fe0c37674fc 1MVDYgW1ud7N6oasoabL85ny9UjfPDzpE
40 0xcec3e471eb018e8ee 1MVDYgW1FvK5F4mC3XbWRcZ9VM4asoe9t
41 0xda1f7574b0ca89d4b 1MVDYgVpArdkNgW2SdsZYfj4XN14upciW
43 0xdf1cde6807737aecb 1MVDYgVfKYNgjcN2Bj6beC1NyukssuTAm
40 0xba4c70e9762f18b53 1MVDYgVwkkxUr256f9oDBrpYuDDGnAki9
40 0xdc4140cd155f9a032 1MVDYgWEcKmhJQGeBPQoTTbsnT5bbMuBS
41 0xd1fe5a96468648c7f 1MVDYgVkcuZ6q1BDLV1RMXdsnhZD9XQGY
43 0xf8aad48f44bf8edf1 1MVDYgVdgHbA8eayGSPSnNphKaQSFCUGc
41 0xc33f6f47ece5d02d1 1MVDYgVgszdKd6FCBRiBUoBRAUH7xdfXB
42 0x950588daf11b4e98e 1MVDYgVVvoQAmyxJnL4kXu4omGS16zBHq
42 0xd31175ebe2279f30e 1MVDYgVZ1boVvyus74gZsC4Z7CK4abKmc
40 0xc7225f8e77e3ad2d6 1MVDYgWAvwsgd25FSKSwGQEdEhSuHDJDx
40 0xe12b2e0e4a9d1b46a 1MVDYgWGa5rBxNzwYF4eDK1shEre9RR1K
40 0xf253af91857a09d7a 1MVDYgW1bpPEBD7L48VyGbEmCMrWW617i
41 0x9c4b16067c5b4967b 1MVDYgVoTXsd6Y8vSNVqEv3h5p81qU9Cv
42 0xc4ea7d3cafec8d5c6 1MVDYgVXJojktEPUuPJDbWQ9gL7Emtv2M
42 0xae29a77d2b1d40efc 1MVDYgVXFGZyzuWzM8rhVnLWYmDJ1UApE
40 0xe5caba21be7ddad80 1MVDYgW3hMqaYNzqfbHZzZ1XUSbBaX73M
40 0xf9d7b9eb33f8b1bc5 1MVDYgWEUsFmu5bhmszTLgBNaPQ5rbg1s
41 0xe617ad12d8e1b0fcb 1MVDYgVopKJHcyz2tnnCcRe6Q9o5cx2nE
41 0xf23347e27b2970ad0 1MVDYgVjMvc52Ug9gV1LN2i13bLiKcFDT
41 0xa6edb9a43e567a54a 1MVDYgVnHkgLm8NjZuGEX8qYMtCxQVrnk
42 0x9b86d4b0f6cb8b8e3 1MVDYgVVLcVkzT5SXMu3HWRowA1Xu1Qnt
42 0xd7437552ae6a7cdd6 1MVDYgVYX9Cjqy4wcVxB1JdJGCGvEG3ho
42 0xdf2ab27b0e34bd7b7 1MVDYgVWJ7pXZzUkCnWuKKbX1jY2tkbGs
40 0x9a0d9337c7ee82184 1MVDYgWFuhwwhf6Aa5tDWvYe1tvoc12GJ
41 0xca5b5e449db39253f 1MVDYgVqJkjiuFJWFJQ9ntW4ffmNKQmRx
40 0x94477a5950ace6bda 1MVDYgW11F3Ks9akPFt4RfNPrwQPs6Kee
42 0xc6a0541ccf416b98d 1MVDYgVU9S9UEj7euzqfm2c4zq3uxTVgJ
40 0xd77cee7c37fc8f65f 1MVDYgW1r2zHoDpM2E3X45ootEgspiSmw
40 0xd35ea4b91d54d1071 1MVDYgW2pXHXgjQPmV2e2UGzs6v1UL3VQ
40 0x884e2be2001c70aa4 1MVDYgVzjJJg6pPrBgrpzZu6Y5EqN8xT3
40 0xa1929f9321df5c891 1MVDYgW6FhdMcmn4FVoKgdVgSeAeDbsK1
41 0x8ad9534a4dab2d6a3 1MVDYgVpTbm2kELMLXRdcx9gWzFKzJmyQ
40 0xa90342f14e6a5836a 1MVDYgW3ZMihF65yKJhw2KCKVoQKgBDYQ
43 0xcabdfaa08f2b4955b 1MVDYgVd9iurd9VaRScV1QWPWkj1mTnwh
41 0x84db611d44b5cc07b 1MVDYgVrjf9h2ZzmzrUDTztdj2b8W5vEJ
40 0xe8d42f3f9f7051246 1MVDYgWF2yE1YoGSXjyKJbVBECmbxkrPr
40 0xa820d7454b0a2462d 1MVDYgWEstuGJZtbrdufKHXPgQqN3mdWk
41 0x903e6233472fde6d5 1MVDYgVrVG3a5zukwkcWS3xBHYZoeZynG
41 0xe3bcc14577797a74c 1MVDYgVovqqPabFEJ29Ag1pK68LuSM34s
40 0xdfc10a58021792568 1MVDYgWAewGMSUZE536VGiPD9JFCvi2KL
40 0xeca3a1f5e983914a8 1MVDYgVzNcEdLrtG2KVgTkBEaESxPk5k5
41 0xa902ab23ae204b1f5 1MVDYgVrb4PQL9UbqWJU7xDQK51g6FoFt
42 0x8c5a00f3d87a85274 1MVDYgVVFpBYfAMBcLejLBFuwNVo5DMGw
40 0xd790f8bbe8c74f286 1MVDYgVxcSFxTEYrYbT5hQCcCWkhhGb8F
41 0xbff238b705b248d81 1MVDYgVr8xFAGsr4EkhPb3PTPFcPRFx1h
40 0xf93c91a13cd9ab2e1 1MVDYgW7Y6YZAi3UaKSgphjY9NdabjUt6
40 0xed78f7097e5c269ad 1MVDYgVtsqBfikPWU2PxBtPaFduokHNWP
40 0x9c11af9217896150a 1MVDYgWDDZdGiuggoXWNKg32eLKwUUJnx
40 0x8dfc7264010e22ad5 1MVDYgW6ooUQTeR5ofrrgyohbZEEnXfns
42 0xdc89e28cbeed73ad1 1MVDYgVYtgYbqRk7ttoLteJiXNf3NeyhG
40 0xdf7502c11b6d58f59 1MVDYgW8zK69KWyY4EE4y8BnEMs3B5S52
40 0xb29a3731009cda127 1MVDYgVw3EjNcrwbn1r45aaExKb7Nem52
41 0xc1686391522a208f3 1MVDYgVmw39VANJk7kd9fBXrxhVYatq37
40 0xfa21389943b807a02 1MVDYgVz4kKstCTTS9fq2XCpfHxNEEbEM
40 0xe82030d1f1f3091a2 1MVDYgW6Xoif631fXUxoYnP88wffcsvmh
40 0xdd8be517486017481 1MVDYgW2LVaGb5SSHowukziABomasCtcb
41 0xf6b14207d8f90b1f7 1MVDYgVoABS5UJynMpbgWqzQRCPePkhek
40 0x8eb05062ada03da9b 1MVDYgW3wGkFzj7ESKxiutYzS5m6rhPsB
41 0xacc6897f717a89750 1MVDYgVj7XS7DnqgmxLcgqZ879ar8gx7R
42 0xb1268968b5ad73024 1MVDYgVUyDqEmA9VLGMMLHw7MTRJzH7Q6
41 0x98bb8f78b18dc3dfd 1MVDYgViMnDgFrrRJBrRsZQKoNaxTGXz5
42 0x9a28b39c6d9e2d635 1MVDYgVXyqrGUMowQYSgq1oyzM8YmQPKu
40 0x8268712e3b3de725d 1MVDYgWA6W3vp5fAEoAHubfahZEAYRfLt
40 0xb3b36b25edf8b86a5 1MVDYgVw9xhKKDBcWsArhZ4Vd9NHMNzaC
40 0x97f5efc1ce8cfaa58 1MVDYgW9KVwiqNoTuBiPZSEiL3RfJjn3p
40 0x9d709db7e29e47b40 1MVDYgWGBEaZGC2YN7xMbMYRGNYcKsBSK
40 0xc7871d80a86885351 1MVDYgW8e4y4gqUGVTVu1oUusF4XxDPxb
40 0x9eda63005a581f0e8 1MVDYgWBv4Mw2SbhyCzj6Fyz5LNgBMpYV
42 0xe7488beae95ce225e 1MVDYgVYgYzuDk9ZVC4p9vNey3CjFGpVQ
40 0xf7b986f21e8028622 1MVDYgVx5KtH7Cs6rM5hL8KogruAa8sJD
40 0x8174fa53a3649022a 1MVDYgVthbqpoAAQb2iznrYBE9kF3GgZY
40 0xd9f9aee3ffc5c9a77 1MVDYgWGQsQs7yEtrgDiHgwrFKQ1Ecynt
40 0xcc67f11466a8419b3 1MVDYgVv46Nwpmir2yMzcvzhRb9Nv3jBn
40 0xe2386beeb5a6e5b7b 1MVDYgWBUFHqtFAUa2d53SZRxBs83ttNz
42 0xdf0007749e21fcf31 1MVDYgVU5RaN8nJmc8URSrhGNYfc1SDk1
40 0xc6516add840d48096 1MVDYgW8SwuiyftmTQ1iND8NjEkXK3Do7
42 0xe091e9cd740a7d6bb 1MVDYgVUGj5cz9RH9sYePDbNgVvXTFqzM
40 0xca0c767a858b537df 1MVDYgVu9HyyuXmo2sYLbhS7ARZwkc8nR
41 0xc811a7f400586a8b4 1MVDYgVkce9gXFK4KpoiaUT1uTbM9w1Zp
41 0xb6d6f3c9ac0299573 1MVDYgVqLQ3CDvi5h6t6wBz4MqDPpfCdy
43 0xe5982f1c47144397e 1MVDYgVdyexWB9GGAvK5P4GNA6kHLHqMH
41 0xe569952607cc2db4d 1MVDYgVoCRnVfcMFuL2LcQGhDVMmUNjDf
40 0xb4b217618a395d231 1MVDYgVwps6AGSaW6QmgwnHSJtwBEQE8Q
41 0xe4e774e3832290e14 1MVDYgVh82r9uCW6cW5NEmKYHGQvSJ8L4
40 0xca198b59d6c8289bf 1MVDYgW2JbhT6V7Ft6cmyTairETgQvjfh
42 0xcba17216e90cfcd60 1MVDYgVVh2LG6ENpnnGgPauzcVUZvu9cq
40 0x9492c6c7fef7a9789 1MVDYgW4BQqr4kkkb5YNrwo9Dz3odGU2e
42 0xcfcf65d14d538ff92 1MVDYgVWx9zxRT5uGUZygWD1UmHL2qHg8
42 0xab99b24714eab1f23 1MVDYgVXyYRLJSUxBorUrwCMvehyPuJmN
40 0xb898ac6cd5389034c 1MVDYgWF576bTpxBGfZ2pBcCDrd47tESM
41 0x9f6d456f49ca989be 1MVDYgViNRR7KzhqSx71uXDmfi4tQG9AC
40 0xa14040ba4ffafe2e0 1MVDYgWB6m3EQMDh6jqp28C1NUjzdarDF
40 0xab0a388156ab2ebba 1MVDYgVtpFfvXvqXNNyjMzGSsxrnSkBNM
40 0xacc5c8b1eef8c45e2 1MVDYgW74tkR7NKxHyZj6ws2fW1sG9r1A
40 0xb3f51750557b7da65 1MVDYgW5WY1n5FucQrbwUysjtm3PkasB8
40 0xbbdac1ad7536c2648 1MVDYgW89xDDBNPpajQXMPXzSUNvaJtVb
40 0x892d411ac1f72c99a 1MVDYgW3zBWreRiu93UunEqhnVrgHPSu7
40 0xda341a516659eaeb3 1MVDYgWBLmpxEyhMok2g4PY8C54LbAV3n
40 0xeb92b35e1c61ddfcb 1MVDYgWEFcnSPj1nUhcBZSSLxQCMSYnQD
40 0xf0cd0f21f78695c1b 1MVDYgW9cvWqrxytT146AJ5BqW8KqNgQo
40 0x9e72df7d0cfd7ad7b 1MVDYgWD39cLYDtowsSPUBZqB2vaTgurT
40 0xb977e4b0ae127a472 1MVDYgWESsxvWpQVK72TSawkEgXDxe46x
42 0xd6d3a73e44a86938f 1MVDYgVYUUnEi9FPPN79uFVLissMe5o4d
41 0xd9f2bca5e6d307675 1MVDYgVhuvLegPvceLWaEUvKqTe1qcXVz
40 0xb107c8bea8959db90 1MVDYgWFv5gvbTSwzhgAh794WjYfMt9TH
41 0xf7b6251033693b13d 1MVDYgVmoTbk5vkSA4cHXBW6DtaVf7xJ2
40 0xcd9fca6be4b387ea8 1MVDYgWD89xw6vmxWhnepAnyagPyj344U
40 0xa7ff657a55c5ce927 1MVDYgWFpgcC6uQZMJGazxcmvXzKELz7P
40 0xbb2f5c8699ee353fe 1MVDYgWEvFXEd4D7JzyH9v2sGaPLWFa6X
41 0xce626f795083faed0 1MVDYgVn8t2CBaH8hGaQHA5N3CT8298j8
40 0x918a3adda7e224391 1MVDYgW6KV4XKi8WNjnwEMoueyBxNNhxo
40 0xef0b3c7e0c566f061 1MVDYgW16er26eJzphpAV4p6oShcEuLsn
40 0xfc6c3309714e82625 1MVDYgWAXyedy3Xz4MDiSeuQ5qTe1yPJ6
41 0xb675809c6dfe8543f 1MVDYgVr9GTjPjqqZoMDd1GP5CZHXh3av
40 0xe46f843ed3f14ea83 1MVDYgWBNZ1N3y7i6acy2x7YHfTo8HQJF
42 0xd78c1084cc1913f1c 1MVDYgVUWRtA87YTmoXV1p7ajoQv6cLfY
42 0xb39aae50438cd118c 1MVDYgVUN1gHZXcjqU3JiCXygxps1unGc
42 0xca136ca487afe1b67 1MVDYgVYu56ieSg2j4wTUR4PkYEczGp44
40 0xe958dbea1404a56b8 1MVDYgWCU3Faf9ZJcwTdNzdFX5toTzQsW
40 0x886537ab0ccc8561d 1MVDYgW8emT4T3yYoX4zxybwHkvvfGpfg
40 0xc0bbb17adc8d7376e 1MVDYgW4HWrb3T9iVfMektEnx3vMxK1si
41 0x9821c406b02edbaef 1MVDYgVqtEYohVG1ayZHAPDjBg6pMvyvv
41 0xc70965c3e225f0967 1MVDYgVsDW4J5Du9GMLnQbhKVMmKE2Q6Y
41 0xee2e588892791f584 1MVDYgVmecD5gxmmD6w6bKChY11uxWaqK
41 0xda87fbc4fbb856bf7 1MVDYgVsBPesNmPGra8yRMAtzpwRa8oWh
40 0xe7a14bfcc537dcee8 1MVDYgW6MFhQezY8BE1eZvU5fFz85hmdg
40 0xf043e05cd34ae0c81 1MVDYgVvH7RwJFQd79tA46oXsHzvrB92U
40 0x824dfab4b487563d7 1MVDYgVziXJh1qQoRcGHZE7VPSZ9GYmG5
41 0xa76d257f131468233 1MVDYgVrrh4YG5QQKg8sLr2Hx9KNKKQYa
40 0x9ca23f554f45ec312 1MVDYgWB5qUuUwDX6b7krFV1h5UTRpP63
41 0x95dcb7b75cd1c300c 1MVDYgVqJiDQW15tzaxyhnhgYdG5CRXDy
40 0xfbc07aaaa26a1ddeb 1MVDYgW1rgmF4XQsKciSznERjCE26ZU4g
40 0xed7366dbb2190bda9 1MVDYgWArpKD6LT6zCYga4E5pPoJk2BoD
40 0xa2983f547b8223a4f 1MVDYgWAZUxLUxAWYH8TMdaTVEHMaWYYY
40 0xb5da1a527358e5258 1MVDYgW3juwzTL96Y6T5dQ9NKPjATGX3p
41 0xd337fc7c5d52147ae 1MVDYgVpEF3t4WHWF8oeTfwa25g5zSrGG
40 0x9be889692b2d56cd6 1MVDYgVxuzFCGscRRzqXsQGc2H7hUHmQt
40 0xa9f7863d4d3167367 1MVDYgWCNcoj6mTpn2HJ98TGWgNC8JzJG
41 0xfcfc33afb682560ef 1MVDYgVpxDGKyJCAAqW4fo48CUUqwggco
40 0xa9da0b2db427c6e2a 1MVDYgW8YgwvVnuiQ6r7DMKUyGNthPA85
41 0xeb87517fb4adb4116 1MVDYgVqHzbGiy1CyXyQmKoU2dk38SLAb
40 0x868d9a5b284f10afa 1MVDYgW9wtFMLfY6oEL8f43H1qo6avHhy
40 0xb94a89d78f8ec02c5 1MVDYgW5cnBzYcDWL1Y4aREayGjjDC4fz
41 0x8251b3d6ef0f83207 1MVDYgVpLi7Mc5L39jNtXSvTn9ZuizChf
41 0x9782871189605a7c3 1MVDYgVmtFp45WgFiL5VJVSKWQbrjDqt9
41 0xefb164bdc9d11b45d 1MVDYgVjaVTYxVj3dgh8YWgff5Da2oCTQ
42 0xbbe85b664a2138ba1 1MVDYgVXeGnfasLm7jEJGt1ggYu887hvE
41 0xccf05452d05fcb456 1MVDYgVqX2w7S37snGjHPRFtcdrj3nfdy
42 0xa0e9a85fe13708466 1MVDYgVUCkpvtEEv7RFHZ6ypst9jMQssd
40 0x8c067fc8479c39e47 1MVDYgW8kfxMBhbTJp16FnoidrNmEBqP6
40 0xb68bf3504dbb9d9b8 1MVDYgWFf9u98iXuZLSrHr6nHk2WQUyjo
40 0x91cf99425d01159bd 1MVDYgW4Ur5G5Y9PT8J2pvqpSgBAbcmPR
40 0xfb8b7854c1a7b1b4a 1MVDYgWAgH6vYgz349nU2b7Er3SgS6gtr
40 0x90e31bbd12c385ef7 1MVDYgWAPzE1h9fJqw76ynk7aP5HyeX1D
40 0xe4c2d3130f3d7ddd6 1MVDYgWD1bQfuJHLkx5rdSS59wmQkc98H
40 0x830a6dc8551343f5f 1MVDYgW964pR5LUXJ1KRgL22aXmsb1UCi
41 0xc88c7578a193353db 1MVDYgVoYPenEtQ6p3RsKZDoyr46Qh4G4
41 0xfdf8103da91016f5e 1MVDYgVfwq58o9Aj2RabxYAPa6hTtjdMR
40 0x9027b6e3d24a1d4a9 1MVDYgWBHMybJgTSv5MdKXwTQ1LEgBzLv
43 0xee600286894773d05 1MVDYgVdk2meXB7w6vyYWEFgKzmdvHhVw
40 0xd5cf37ccb3e51477f 1MVDYgWBkoCgrMDrJN64j6Hpp4qQiUoAV
40 0xd5f31388b7b43b80b 1MVDYgVvyjT5qbCn7TvWPJKjRhYE1DJXS
40 0xfead400c375c88de6 1MVDYgVuYLGCGFYXfJYztucPM5BMMKLD7
40 0x8fe75a9ce90ec4576 1MVDYgW3JfnwGEAytuYNdw6BzZaaenjAx
41 0xcc2d44efe8a6c948b 1MVDYgVr44hrVrb1hX6DWJqdMVmzkLnL3
41 0xb59fbd57c6f76f7b2 1MVDYgVgkvd6cDMc4jhbWbeHZawNJmiuh
40 0xb4dbce77acef897d5 1MVDYgW4hXCGMGZfhoF5CvKgYzr73WJP4
42 0xe16e20ccc073090d6 1MVDYgVWFommjDU7fGdir14zxa54s6rWF
41 0x84dfc5be7c9a8d330 1MVDYgVmkY1oxTWqxNjDsSQsNEU7BVFq1
40 0xfc0917d9aa37e8527 1MVDYgWBbBTi3ke7KvdFdYygXQcVfkgNH
40 0x94d77dbf320979620 1MVDYgWBB5j2QMHAaNd8i2ksJkbv7Gm6A
41 0xd98b7e0d0c0336ceb 1MVDYgVnMf2zz6D96RRxnX5659KY2iDqt
41 0xb5a801bf55a4317b1 1MVDYgVnFneeFhsUhYb8463oycoaVmFW8
41 0xca7f17a5e70453332 1MVDYgVrKx3ij5AqaBPVWW5VfmVznFUmv
43 0xfb4a422b16ab11628 1MVDYgVeSnxGepqo3VQqYhPhh2WpYq3oW
43 0x9ff9be752cdfa2884 1MVDYgVdRVv8Ur1dmTpTYdukoTLiraWEo
40 0xbad8f8ef14ac9ac99 1MVDYgW5r3RdsuMoXrHDV37e1G18M1zD1
41 0xe5caba21fc7dff6fa 1MVDYgVrXPXuQq4MJc3nk8jpunQ6BHrm2
40 0x91f66932964226b74 1MVDYgW9oHvbZQedxGtcLqutdn6u9MubJ
40 0xe8e556f40be4ea1ce 1MVDYgVtS5kGtxVoENXN8Miqiz5pGvq6M
43 0x9103f91ff55f4952f 1MVDYgVfLc65da7jfMyEtuWjDkpiRkN6a
40 0xc09343c51a9b43f58 1MVDYgW3BbfDYZYRRkxisGkAYqivWRQgN
40 0xc7bc8515c6ad57e4b 1MVDYgWGNXbjvPkG7cgLWhwqhskASLEgX
40 0xbe13c705d1d640629 1MVDYgWDyfua1VgtpfycynpMsaVUs2rQn
41 0x9d9c61ffe29a5862f 1MVDYgVqhvZ6e11oq26HHpNkqGTCZ1Vqd
43 0x977964d6f60cbf2d9 1MVDYgVeC1LEcpdfyVYLhYGC8TPv4VHLV
41 0x8a4313d09023f4c7e 1MVDYgVn9HMAzaYTaBuWCGGzx8nhjnRdd
40 0xebd443f75e5ee23b7 1MVDYgVwX4SoLTf7NWPwBW3bfPwzfEZdn
42 0xb2af2cfc333d68d7b 1MVDYgVUJg2CXDJNYvBnrm6ePBr6rE4oE
40 0xe41049cf6cde8ab49 1MVDYgVv28P1dLtf6KiDxSQ9U6GNMknjX
40 0x96431aed90f2b865a 1MVDYgWDZoD5QiuzrtW4sBuzEkYZqPNbN
40 0x9619377c21bb7be5f 1MVDYgVsgS37Z2ZAiGZHsKVA6huwGqUms
40 0xeb97f404f8dddb29c 1MVDYgWCgDsALUTSHgDkBx8JLemWamQeH
40 0x8443ed7126e626d30 1MVDYgVxsAYn5U1BJdumaZLriXrnoGoVp
40 0x9b4ea26d3222b815e 1MVDYgW9rHzUt5rCfYcQfopkmcmMfY3m3
40 0xb4899b404d349997f 1MVDYgW1modBikMsy41bTLK1rFw1a7cei
40 0xbf67a7edffea88e56 1MVDYgW2oZkUAQFtBHK2jPEo7jaRj8gfj
41 0xac3c3822ecbdc3a15 1MVDYgVh1eoD8Sxi3T7vDRcAM68ohBdG1
40 0x973fc38b8d6a5efd9 1MVDYgVsxF3epfe3tSBwXkhMQCr19V5U1
41 0x9badaddd486d27699 1MVDYgVr7noMy4vmTNgoHoAnKPrAkdE3r
40 0xf4215af773928b8c1 1MVDYgW9JGccfoY6YXd1hGBadYgX6VeKb
43 0xdea515860ae23ad0a 1MVDYgVcsDpz5UoYStrFuWUZbS2FnR9oU
40 0xda6a53bcc8ea7f0d2 1MVDYgW63wcAsSPQaFgGHurGwRsP6Ek3j
41 0xb89daff9684cacce5 1MVDYgVoaEHzxakTXyfUjhEtQdC8PvTGM
41 0xe8189b563311e6313 1MVDYgVkzZqJ1M2oBMTgBmEDiqvYjRb5t
42 0xf630cd3f70e4d9ce2 1MVDYgVVCHCLurJRT4cnBLaQKixwrpUsE
42 0xf09ad488ec82a0739 1MVDYgVUyXc8PwRe6v6ECuhNTmNxqQXCW
40 0xcf6a738c6c6d67369 1MVDYgW3sfoMbP4PXmYQXda28ZkWnVSLo
40 0xbaa230509182d6d99 1MVDYgWDpv75ZCb9FsBsVvFmX8WkphaY4
42 0xbabd4b03530b30507 1MVDYgVV4u1jqzcGNwqtwMCTewT1a2XJp
42 0xb403f44eff85fbeb8 1MVDYgVYcxzzbT1pbMPGDicP5StY7PNh1
41 0xf2f21601f9d1273a7 1MVDYgVpnG9rp1g2REU9BDGUFue2qHAgm
40 0xd3580a689f6cc388b 1MVDYgW3kvqkMGjEYLA1Ykxwvn2Lk6zed
43 0xdd536a767df5c5b74 1MVDYgVe3iSXRqFjXmrCT1DyHJrSZWUDj
40 0xba0b844fd318e6ef7 1MVDYgW2TfRXy7eUKSytK7y2p2R5TEsDP
40 0xc6ef0d68d1405d613 1MVDYgW5rH68SdJXHNWsNr2j6UPy9ESC2
41 0xf955b07936da74057 1MVDYgVm6iWG6c64pZig5DazWXjSBuukx
42 0xbd872dbe98f002c1c 1MVDYgVZe6YBJUYGfJCYqg7DrBXdRWe46
40 0xcbdb951e528008a36 1MVDYgW5DQ2HG5JV7V8ANxB7xWAAZEFhr
41 0xc275f6b1117965d83 1MVDYgVqoeEpF1sm2Ue36ockSAWiFpFxD
41 0x8e37a4bf2a774cd97 1MVDYgVmSR8wa44UJw99F9chKhc3ehLnn
40 0xa1c2ac19272f241d8 1MVDYgVucqCHpf6Ay6Kt518pA54wNs8MH
40 0x8506502e999260948 1MVDYgVtqsRy9jq3o9N7zqE8tv6kj11Ag
43 0xb58061c36fa6cf575 1MVDYgVdjy5S3fTjUHX1s22p22vzpNStm
41 0x88b9bc879630d08b9 1MVDYgVmPqPMnm2DTjahTzS5ZTiHkjxNG
40 0x868315f6cdc6fdfb2 1MVDYgW7mRD8W9EZjwkMFkTQZCn5yHxoU
41 0x9a0c4ed3ada3117ea 1MVDYgVhfPKAfEWEWWT859ahn52XAeaDA
40 0xf737e886e178a5ac0 1MVDYgW2WXz6VeJzCmV535pAZozjP49V8
41 0x9be2af76b655a2826 1MVDYgViWzAQ4R6okKRGupnh5igZQfLYa
40 0x8ef29a5cd0f61f2a5 1MVDYgW3NFy8oj3mSWsxVmCsa9df42iVt
41 0xb5b529df3c8ff4d0b 1MVDYgVqhwFoYBfFm7vuU58v4vV8jdR9t
40 0x9c0f08db29751e2b7 1MVDYgVyrUipFfoEs3Yyuy2ZmZnhqugCo
40 0x862656a25ffb28d51 1MVDYgW2S8Su9LFjjbbfykeXuo7HrkEBD
43 0xd9c90b9aadd3e0d8d 1MVDYgVdbNLwHuDWSBXP2vbEx3XnqvrUe
41 0xd7dd0778767181348 1MVDYgVs7xhVwg4dLvugc7xRTRSZRJjwf
40 0xc37e84bf4d368f1ee 1MVDYgW2jfpkLtHGJeFJx9NbgUY6iPAjm
40 0xc52f2ae1951b74f38 1MVDYgWEGCTcx1zWhjTWx1852wnaeNEhj
42 0xbc514719cbfdf6e96 1MVDYgVYZvNjSyXoQnJAg6K4sAru2ab4e
40 0xd838d8463eaef8fb5 1MVDYgW5ftUTt5vWAza32nzYoLYK2tTzE
41 0xfc8740d3472b70796 1MVDYgVnjAZ7pNWjDhJyfRR1JUooaEmZJ
41 0xf58a3bce39152090c 1MVDYgVjYasCfKJUj6Xgz28kk5GGfKVnB
41 0xf64b1768bbf92e66b 1MVDYgVgCsoH9ZsKZDvwrQwXqta9o5fdb
40 0xbe413b9c81da3584c 1MVDYgVsjp8LdJirTn6SkHquqSW1QrEuY
40 0xbba46be01ddaa3e88 1MVDYgW1cKaCQgnisgd4ZTTPucxCgnUDz
40 0xdf0007745cfbab05d 1MVDYgW1mTvK4GXLcUeia7fUbC4YeSRVa
42 0xdef3553175a6f2c9d 1MVDYgVUq4P1WGhLzA9X2GDtevfQLFdHh
41 0xbc1007daa59b7dc56 1MVDYgVoJgrhAZVEHBCMyjsnFkWmV6Ev5
41 0xc3447fb2ec443e55c 1MVDYgVqh6zHb9CBigJvCbgn2tyzru5FT
40 0xe90c2f7c7d2e2d2d0 1MVDYgW3L4xHjA4DX3x4LZpJ8uqWTmWcf
40 0xae3bd1806b5e35973 1MVDYgW8z6hXHPnYoW9u3JM9oRqr1ZM4y
40 0x84af1895bba6cf7bf 1MVDYgVtn4A27nrW8Rjzfh3t6EETpMZda
42 0xb6cfae7b591307113 1MVDYgVWYokHZJ6aUB7iKJ9kwvm1uBFuJ
40 0xe359e96a7a503b454 1MVDYgW9uiS742XCzFruYQkbZ1oiD9wiy
41 0xf688e27f373d311db 1MVDYgVrSy9DZHvtoUkyecgERWxpbXnt3
40 0x98ea5992779f4d5c7 1MVDYgVxH9P6Wg35fcRY9VtsDhy3RpUi9
40 0xc9b035ace3480b8e4 1MVDYgVtfKsJTzAqyKVsSjnt6gRH99pgr
41 0xaad71c5c3b9df9d03 1MVDYgVozYjfkp6L3tGfmkXuKAG3WxRMC
40 0xd32797a50e7979c89 1MVDYgW4N3ZwtqnqyyyAAqo3rXFoJVJEw
43 0xbeb19a4daa70f9a54 1MVDYgVdw2MEbxZMQ3dhtSvL3D2oV8BaJ
40 0xaf0cef9b8f8dcae51 1MVDYgVuSwWqTZgD1HkaL4Ad7jZkWVdSE
40 0xa299621192968ad72 1MVDYgW4pi3wjKm2FHXP2mTcbC7SUozCY
43 0xf78858e02d6f32b31 1MVDYgVf3dkemXnEAuLqyEzsY8D5FVgCp
41 0x9487513fc76f71e7e 1MVDYgVnsoHMEdD5UkqMjJ4US1SW4HhkH
40 0xeb57f4246386dbc49 1MVDYgWD6573MLgKpxgHNEHNQqg77xDoi
40 0xf4215af7584320f7a 1MVDYgVtVNB2oj5WX7r3xDeb4MoXzZujs
41 0xf0edd4a4d51ae4b33 1MVDYgVpENc14MxpW1zzb6cLfPsDQ7sed
43 0xc5e006698355486cb 1MVDYgVeiCmNE29eh6MmpmExEcXY7eud8
40 0xca56237ced156c5e2 1MVDYgVsRarNE8SDtEGYiGbZai916ZEGM
40 0xe6b5cfc04d1570582 1MVDYgWDbED3ctgCRFRaLxweTi59DwN8r
40 0xfcf57cb2b3ceb287b 1MVDYgW7SmQXkPgkj3k21df7N2tRgE1h7
40 0x9edc0b94af24e01bb 1MVDYgWByjoDXGvHewgCwZaYooA2jHgzh
42 0xa6c35d22f810a992b 1MVDYgVXXo7H8UGZX1N8p1Dznr1Tj8i1D
41 0xc9a2f398ec2edecc1 1MVDYgVqiXy9QjmELNp1HufDoJxjrzEEM
40 0xd8c1c4364832cc106 1MVDYgVxR5AiknaKF56upVhJ7w3tYpvmD
40 0xb7265f1001aa5a4bc 1MVDYgW3LJYvnd37Fp6gNTamoBn1smS9h
40 0x90e4b64a0680dab35 1MVDYgVt4KzvNC9Ye56RPrQTZtTVRdkra
40 0xf647c2368262a4952 1MVDYgW4b7rJ1qq3PFEuDLdvMbDFCv1GD
40 0x9452f120f96867715 1MVDYgWF3TGKmDw9cpJnbAnB4B9q2odoa
40 0x97a693b866c4af5fc 1MVDYgW3835oW9C6upfUWfkyERdFDNotz
41 0x8fa8611e62da67f15 1MVDYgVjgyrXHsfaYHwo2Tdk5tpmEYn9p
40 0xe31af7d75a039949f 1MVDYgVsSHgwtBVheK5n7EbLSZvs6VVf4
40 0xee7e8b378bd52f2a5 1MVDYgWFyNykCxMq2xF3xwp1X7a2pgVVa
42 0x8d154cd2d0cf9f13a 1MVDYgVX67mpPTctE5TKhuKKknLC1xuzu
40 0xc50ba85317b3f5291 1MVDYgW6R3DMLYqMaf9sDA91PVdMGjFPz
40 0xd0f834288fb92d893 1MVDYgWA3Au9zJuCDBBX2HTzcDd8Hx83y
40 0xccbb3e53a4ea71229 1MVDYgW11oE3KYq8JLzR7CfkKr2YHe5D6
40 0xca56237c7c7b7b0d4 1MVDYgWBENqP9fMpuaxQwR6b7LbyRVois
40 0xef74d750a0ec7d390 1MVDYgW8pUzTRBDeqc4yqvftYCY95iN3T
41 0xb6e181a95988f75ff 1MVDYgVjXcCNT5RRntNucQJ6FU8vm6k6g
41 0x8053e339c607bbbf0 1MVDYgVqaS4RZbWYbuvz3o5Ly6d9sSGx1
40 0xa91c4af5110742d1a 1MVDYgVuYDBmeHPPG27yhLDNntjN5qs8H
41 0xe8b427e11956012e4 1MVDYgVft9bWKAc9BWCC2SH4FPAudLp6h
40 0x844fb34f9ef95f583 1MVDYgVvi7ybMSuTB11xtgigzGknrLzRN
41 0xb8035662dbc106192 1MVDYgVj1yMAvhFST9uwia1NtYz2V98Py
40 0xcb84d4010a023448d 1MVDYgW6VVuGDLVWC1DjKSPqv9T5LvnBJ
41 0xbcbef93716787b9e5 1MVDYgVrdxuwYERD4gfYtMgksKbaZAGtc
41 0xd83f28f6052ba34c3 1MVDYgVq5V16EGNccffFWSgRWTmirMAW8
40 0xf329f395be164a3db 1MVDYgWDozQJLt6dRq2YMm5U7C7bGjXyT
40 0xf47fe60d9eb89d5ef 1MVDYgW4SNBzjfaBsNjosR3WXmo86aUQn
40 0xcc2fac7c4f892f0ca 1MVDYgW7swWyQSvJHdNnYLCXpnGCpurbe
40 0xef48ddae690e3bc34 1MVDYgWAKyUf9TJ1Mrfu724G3NJh7Apur
40 0xc3a11d9a398b46b19 1MVDYgWBeUaMKcMVb3oCHm1EsqgRCDbgD
43 0xb0031e137c7b1ff41 1MVDYgVdGYyCpCJFifrbgpqTMEYuteqaH
41 0x97cf1cfa92e5f8f3f 1MVDYgVfyNX2tSSfkCrSwXhDUrNS812bW
40 0xb17dd964643c18d15 1MVDYgW7bwtGuymTsNqy2dD1Fra39igmu
41 0xaa082dd8f0ede034f 1MVDYgVoBeca9p6fyKiizXPWDctW9WJXK
40 0xe62c8667acef7e40c 1MVDYgW6SmT7o6jFsaUYB59CithZxybnJ
40 0x9292123eab250f948 1MVDYgW3aKr8CyQCmVQLWrwePHdHsQR8W
40 0xa0d1ad4be30b15aad 1MVDYgW6x1ZWwJ75NY9NTFLjQZC4mFF8u
40 0xf19ae1cb1e964afe8 1MVDYgW3EzNaSxzGQMQmPqzpC8fWyySsz
40 0x8eb0d9737a50e47af 1MVDYgWG7jW3RhmLZ6k44vXDgw1SknxNG
40 0xa21db52272f36737a 1MVDYgW3uNwhep8bRxqnoyD2jQbQ9JdGk
40 0xcb3cdc0ad651edb91 1MVDYgWEFMAKK1X8cZQm4fra6fPttkfw3
42 0xcef6251cd0b285e01 1MVDYgVXCXxuPkXsG43Qc6TQYkpi92FcH
40 0xd37a67970ba3eacab 1MVDYgWCAWwyeA4wUodATJ5ZSA3TrQ31S
42 0xc75f92ff2d78b2612 1MVDYgVXZZhnExYKoLLN8hjC3xX7ykqiX
40 0xe2f6215a9b5ac0f25 1MVDYgVwzYpE1yWhaxKw64ekffwb3M6Zf
40 0xbf980642a652c2213 1MVDYgWGLWDPkyw7TuRFS3JoMr2Tk5Xxe
40 0xecda3ee2491209284 1MVDYgWA8utxMYZVH9WGUN6dfzJYR8pB4
40 0x94f32d2b2dc147513 1MVDYgWD5ZZJNXd6BKGmd1c6EcoaYqqMM
40 0xfa970351210ce43e8 1MVDYgW1ibSkCPMTYarJZDxqWmAYhc84H
40 0x947e20d3e89f79648 1MVDYgVyxaL9pYPkVCNBL5ed9PyPa8FEQ
40 0xc13e12efeac460f53 1MVDYgVxPmi8qDvVWGU7QmrknmJ297V1G
40 0x97f93c49df221610d 1MVDYgW2g2G9jUbJosExM5iHNaKip5gNj
41 0x876f8f6c03a1f398d 1MVDYgVnm4RukcvAGCc4vEH8Zcd6tSMKg
40 0xdd9285923a310a70f 1MVDYgW4VhUYvgLNxhB1826oGhWLf8SuF
42 0xf38f0c76baa483302 1MVDYgVWYgHGxKSYQ7tSTdkGmoS6HVUBm
40 0xd05bedeae2a627220 1MVDYgVtybpJMngjfgQ8tbvqpKBGK9JpY
42 0xd6abdd71f83702ea1 1MVDYgVU9G5r3ayPjrCmzgDutHvaNJCdb
40 0xbb9bc6fc6db40a71d 1MVDYgW5rbuvubHm3m5DePayCYEs65aLN
40 0xe34c4e3b82c0b5a73 1MVDYgVtt1nGcysqB6L8UP5V4VYqeqoRm
41 0xd4730f51b60d46581 1MVDYgVkLyEnfDCtL7nnmk1ZDkRsm1yKj
40 0xf1118a252387bb0cc 1MVDYgW3TwaPyZpQLWrjpCHQYt2tAnzBv
41 0xa9dc68551dcf1afeb 1MVDYgVpdhbHjFe8iDsmZ9teBwgSVBRyc
40 0x8377de75141efeb35 1MVDYgWG8SHJuCMZ8RYWPt4sJXWMUbbTW
40 0xa98cc7e5dd2a80b47 1MVDYgWE7ikMD47rfEnTFW6TYJ8ZYAtFB
40 0xf348944266674a416 1MVDYgW4JiWYfwhN71gFeNyvqZDbkDrCr
42 0xa16fc63b5a6b67487 1MVDYgVWnWacsctUP5kNUvHaBpyKdjHCj
43 0xdaf8d0f952dc74197 1MVDYgVeYoCFXKE2yLaheoUqqcwdYTKhB
40 0xe6b2028d167579502 1MVDYgVszigUMNmqLfQxt9t3Xf9yZtyT8
40 0x8820ab3dace29fa44 1MVDYgWALP8h6N9i6KEPq2GH91yWDaK6f
41 0x8567eeb478eac9ad2 1MVDYgVmYEZJoKmu2K6wyWbjwtusWE5wS
41 0x93fc77c465f04ff14 1MVDYgVnYzTac4fUQLW3NktpjJQaykCar
42 0xf654926d000246b2d 1MVDYgVWXy5HNiCSyaVQn2oeQMRgcswc5
41 0xa95648edb62850151 1MVDYgVof4EtSDzR2L2cPKq9rr9RdhRTG
40 0x96217b868389b175c 1MVDYgWFW68DZ4tpw5AjXfenTNF6UifKX
43 0xf3ff1cdcb7c5b0e29 1MVDYgVd6aBxH3HAKmz33Vo4FKc1gR42w
41 0xf6d7dd6b41f61f66f 1MVDYgVsJLLVZPxX2nZtL9p5mCdEYXHCG
40 0xd58d78a457140b94e 1MVDYgW2AM7GNP3wD45djYME1PTHpeKEs
41 0xbfcf300c93eaf8ee0 1MVDYgVjVR3bmwo8VnBPQVqteWLPAkJpd
40 0xc9a019a22917d7d27 1MVDYgW94AxrZ4vMLvHYHdX7KArjHou4X
41 0xe1b0b434fa1119859 1MVDYgVnzqQ7CrpemmdMv3Fbaj3gKqNk4
43 0x8e86c364e15b88007 1MVDYgVcpNBXMhwDW8xgtDQ657NcRNXWM
40 0xe561a439aa4613886 1MVDYgWCBaCixi2W2Jr8H7tJMQ4DtuvgY
42 0xc87cdde6aad7c4ab3 1MVDYgVZ9HPuUuMQxvihLRD6mnq4AthEe
40 0xb66f76bced0496c79 1MVDYgW2JZGeshA1S5VaBGxnxX8x7f2mU
40 0xb1beaad455237189b 1MVDYgW9jKovHrAtvYhb275RY8tp8jQNG
42 0xba1e40bc189cedc8a 1MVDYgVZDcz2FoePWEgxgee9fM1ptaReT
40 0xca96cf0ebc27530f4 1MVDYgVvRM2CrVdQQkH4aPQBkqLKxsfn4
40 0x95772534b6a7cae1b 1MVDYgWEG8XMif8WwmsZ8b45EX6BsaKNU
42 0xf9de4fd0913a6c529 1MVDYgVV25SvRqUwB9M2dyn3KkBBQJ6an
40 0x85a6cc68530f1816e 1MVDYgWFowthsFzGipFdzKT3sp5CwACRS
40 0xd199ce82d668c401e 1MVDYgVtoJg7kRjCy6CbDTQ38odYXmiQf
42 0xa02f073c4e03b96b7 1MVDYgVUrx9UGwaDR4gmbMttscZyGjCdf
42 0x84b27b7ad4fa48c02 1MVDYgVXGoXWdsgBN1PvZ91QsFGDUBfeY
40 0x90cfc05c1a13caec1 1MVDYgW8XZFxPc8H4SoixQUj8eubuCVyu
40 0xffa7b3ae7052ec72b 1MVDYgVz5YM7yZcbLgfe8LHJKSJfjxRbK
40 0xa145fc9f9d697e47a 1MVDYgVufS79vsVUy1v9GmyB3aKMaJYpT
40 0xd433c889a46b600c7 1MVDYgW8MpS6EFzWodBc867F4qL4uHQNb
40 0xe6a207c220c053ae2 1MVDYgW63ZPqGoNvyphMF8CdqC7raXF4M
40 0x9389274e93e063e0f 1MVDYgVwxKGAGeAvviCRU5kZkShGopM3C
42 0x9e0b2775c43aa2c03 1MVDYgVWYaak9Vqzn2pd4Yy4h3Nb3Leuw
40 0xb0037ad8150e5a34a 1MVDYgVtPa1C27LuepJM1BSunuukw1oW4
40 0xa5b805c735a0560a1 1MVDYgW2HsrSMarubAGcSTZhNPJv4mEns
43 0xa68ecf0c25de252fa 1MVDYgVe12BZLd6MGMRRj7NvwEBsqWebs
40 0x80f7db846789cc6c9 1MVDYgWGZ6VTBGyeCVxy6YJQA8UNNkcBj
42 0xf1f8a0753a302cb50 1MVDYgVZH35H1XkD3dUmsKf7xAMW8gVwK
42 0xf8f64ce361bde9356 1MVDYgVWnECUynQvBjhp98WPn6phYNHzP
42 0xec8f2a77f3a3d1ad0 1MVDYgVVCn7imubwYzC9qzoAN3RMX5KGb
40 0xfa99498f8ce6bfc5d 1MVDYgW27iroYeP7ZSVcNDnFg6CEPxqGU
40 0xa92bead4d67fdee72 1MVDYgVxQ9mLscaoqB9mFNxP4A63yqS6y
41 0xad9e0119188ab03ad 1MVDYgVfgggCiuVo8XLT3DQnARhGwvWrW
40 0xfafaaeea0f50f6d04 1MVDYgWBtbdACHwY9WiVfkFZHCKgWXyYW
40 0x9820602311b869c3b 1MVDYgWFibph9CCJ5LE3ExoBn4W7bVB6K
40 0xbd0419e51aff3891a 1MVDYgVvDWUdjDtGw442pvpDLqyRSCVkN
41 0xf9da80079bb76fad9 1MVDYgVgW8ciib36crZgazERXX4z6nThg
40 0xb6ed7726f9a5bff67 1MVDYgW1HS1NfrF26HpUcxHjDaea3oydE
40 0x82b50ec3c5fcaaf73 1MVDYgW8if2QZJY1Gi4N2cvtov484YKSR
42 0xed68047dcd88888d8 1MVDYgVU2PMRMFRRW6BpUFD3kTd2Gp6rW
41 0xa275d9925f2376b3f 1MVDYgVrEjA9jz6PoGKiEQ4dMc697bFC5
41 0xb29b13618dfd0ffa1 1MVDYgVnFUhfsZ3o79FriEyPRTxVDTzT2
40 0xaadf9af32dfa5afb7 1MVDYgW9Y46hxJ2FgKuW7sT4yrwFW7GUM
41 0xaf18437eabb4b66e4 1MVDYgVrJwJMNVKeuJYWpGh8NqgXKdwMg
40 0x9e22924710f3ae78a 1MVDYgVxXm1EKZTsRUZzWL6afg79gCeAT
40 0x9101aa76730ca9213 1MVDYgWE8QdVHDbh1TpfRypvQ5jb9xM7K
41 0xece5c83e2a4173d8a 1MVDYgVksES5Wp58VAXQZYaQgtuo7TH9c
40 0xc61a9523b97322e78 1MVDYgW1vfhsYuUU78iqa42SR9XZuPCub
41 0xf140e20cfbed11501 1MVDYgVrjZsmQjNnnt37hL8AfoZux1DgY
43 0x8ad59bb29c80889ef 1MVDYgVfM2BvwiofJmYPqL5T5XM7kHWhM
41 0x90ba42d5141e0cff6 1MVDYgVg3HmNiY8wZSQ75AMmv4zrcirT1
42 0xce8b8d352bab12eb8 1MVDYgVYAT4kWH39GPfQ5S2NEFePU1vM6
41 0x84c9576bcbb4f3975 1MVDYgVndM3YPhym4cTY7HE4W3YcmJtur
40 0x8c3e73065dc034335 1MVDYgW99WthfWbwQ7mnGMsKjmeuPz7gw
41 0xb8b61c634b62cf1dd 1MVDYgVkn6eZv4oaN9Dm8n4BReCQbdQ8z
41 0xc93683bb00820c88b 1MVDYgVnqFL6K89GFPqQXztoJssRNwJaN
42 0x85da11fc84de9c882 1MVDYgVWcwcmSq9pjzdoyacnPfwG4iaXW
40 0xad42a7052b66ce3fd 1MVDYgVunBJrNrHm9CL7cSk8o11HCAh3P
40 0xd7c165188e5a8fe29 1MVDYgWDkZWWBiD6LGKHjdcyTP2Vr85BS
41 0xe5ed7e13b4cfca3e1 1MVDYgVjXRAdsQFMUVK3qLCQoDUBdhdmX
41 0xce537510d3bc3b75d 1MVDYgViFTFL9wjy1H9mMcRBBmFFjVcqA
40 0xde0e092eb4d2058bf 1MVDYgWAyegEXKAJUjjJgmn7YnmwCPDJy
40 0x8957df39c43441ccb 1MVDYgVyzqnAwsQUkZ2JddbS8KkFwsMZJ
40 0x9d72b7d6d49a273c9 1MVDYgW2vf7FGmZbA9ZWhM3vSSg2Cu5Bm
40 0x81f02d07550cb0940 1MVDYgWFK4FxvCSrTm7dWDZ8rvKKLpL2n
40 0x8627a26f82cd6541c 1MVDYgWE8B9sbrZTLo7YU817FV3PTYxWw
43 0x96217b861e12b9b96 1MVDYgVeHQUG1xnGLLRxxaWRqiVx7dtsR
40 0xa30de960be86cbd10 1MVDYgW8PwfK6r1u4BVNdxJJAnVok2iSa
41 0xcfb04e6b3d84dac4b 1MVDYgVgfWS4w5zo7hDFw7yMYKZ6ujmdy
41 0xe7a0a84d4f980111c 1MVDYgViqbJHv8KgbdS7SEgbfbmEvgWox
41 0xfac0fa0f710aaf995 1MVDYgVrAw5SyAV2gxk7JWtqGQ6MLThFD
40 0xd1bc14d17c0d44a4c 1MVDYgWA91s2m4ThWjahzUeSFFkDDQgHx
40 0xae2dff6f2eefb475a 1MVDYgWG6gpNASX5xLmCbxohQXDhzzPWH
40 0xb3d75a8fcb1050f2c 1MVDYgW7gP4kavHFZFe75xbyvmGUq9wJG
41 0xaef3b33f687ce83da 1MVDYgVj3p2eF3az7kWKmvTHGbo1Pd9WM
40 0xe3afdfacb4243cfd1 1MVDYgW3CKorLtBnH7dTYU8KER8LcM1kA
40 0xb492bc0cae2e2a545 1MVDYgVuQWMBRNgqcYiMmyseBcW83t3Aa
40 0xcd17ef077a90673bc 1MVDYgVzxpgEYLBBQjeqYeWgeAc5mHXqr
41 0x9682239e4deb14ab7 1MVDYgVq6Dv994Lh39Bj9E2JQdNxTuJNx
43 0x88b3e0b282f83009e 1MVDYgVesrxeMuyEHb7zxW3Nb3KjqbfyJ
40 0xa2c487b1700be548a 1MVDYgW8NdSozcyn29hNSEj7o71VfPuXj
40 0xa63cce969abd26297 1MVDYgVvcCrqhftgjq9DvkttTUD5g2Wer
41 0x9eb5e77aac6cee7fd 1MVDYgVpZ2hGC1BGGGdfKC9K1aQpM1ndc
40 0xead6533b324bb2233 1MVDYgVsRfKdZ2Tbr9fQ5Egoso5sBcAyS
41 0x85cf285b307e3feae 1MVDYgViHQfoAfe4RYx2sBzwuYnkYxboH
41 0x8e7a1eee687973995 1MVDYgVnsUGBzEUv1DiWFmRoUtscV45eK
42 0xe2f75f2a25aad1867 1MVDYgVWZJkGiFbhNYN7qJtPJtt1NgPgg
41 0xcdb088b76adc4c0a3 1MVDYgVr3GZ3mFCDepCLPXK8ujtHSnad5
40 0xfa43d5840b28809b4 1MVDYgW8fgBGQe5zr22q5VXA32vruSv43
40 0xf9da80076a7dfcd31 1MVDYgWGVQPDkbBGeADMuWLbehiXGN4X4
41 0xcceb32eedde2d5d69 1MVDYgVkXTUkPohv7jmTCi7jHRvNDPm89
41 0x99e6ee1e036d00b89 1MVDYgVo1YMqDkpcXWeu5Dwn4HJUdezxk
41 0xa710ecd7c43b17946 1MVDYgVh4runMdrirsMKvSwJDzgGBHQ4U
40 0xae4260f23fb4a4ad6 1MVDYgVzKn1NMPjexJUWdLovbQ2qTvQ1f
40 0xa04add1dbd5408fa4 1MVDYgWAZzEjGqrC4mjwnmuUoKKTdW2Wk
43 0xb8444d33a3e90c4b1 1MVDYgVeEgyAMGB1YuGFQR2qx8Qa6pvgt
41 0x83b61556dc541534c 1MVDYgVrbHi3NeDaoFCZVLqRpLLtpuHee
41 0xc946448526c5a6983 1MVDYgViZq65G8usANg7uLuxdT5DPsia7
41 0xcb205647f2878725e 1MVDYgVk96F5pNp5w8PozHZiwgWTopMzK
40 0x88f3c81c24484519c 1MVDYgW1xsjkVvG1qSr83HMb4JN9Ee943
42 0x81ccf6a46411bd776 1MVDYgVZB3FaahFeU4UikoKMejeBdT4YS
41 0xddd89dd3a86bd5121 1MVDYgVm4mcbCvaAGuyzh6kPjJoc9uYmY
41 0x8a4f9c54c687140e8 1MVDYgVpb7qCxQniXXcEYP4qdpjtjvCbu
42 0xb8fa1787f9d0c860f 1MVDYgVY7NuhkuMv1YDrq869gePhHFbxx
40 0xbcd215737329cc991 1MVDYgW33MSCqUCzr75Ko9QALcAGxn5se
40 0xd05571821d3370637 1MVDYgW1DSJp8zsrhsejGsZyim4Akdjom
40 0x96d03049ff9ebc232 1MVDYgW4x6EjqrTcEab23aQnGxQDiEWZe
40 0xb1c5fa4334d66aa09 1MVDYgWD7hjtD18KAJBrT4inEA34RbJZd
40 0xbe8ca0ec4b2453344 1MVDYgVxaG9zXJYdVAjHcqBW1CRGticwM
41 0xfe6f602d3fa92b278 1MVDYgVoV8dGENWEeakzuR8o7M2aaPwzo
40 0x9129e2b5455f33d23 1MVDYgWCABXAN3G5fAVpMNvHK24jwnk8r
40 0xc6a4b9f650b6a517f 1MVDYgVuV2QVKXAuKasdhAFVcjieLqGpE
43 0xfd1b17aa0149570f6 1MVDYgVdRn9npyZgNr5rKejU9PucErePu
40 0xa9acbc80515b22117 1MVDYgWDV5exbQ8gXkBF3RzPDGMcdErgJ
40 0x8b558679b646981a4 1MVDYgW1sJHjk6ZhfTgNgSywSXpg2Wv8j
42 0xf41e90b63c354a0a6 1MVDYgVYaTRMhN3MH16Be3XzFYP6jDjPT
40 0xfbf41ba4da06f910b 1MVDYgVzGkU3LqWrBsCtWBmhUEPNwZwLX
40 0x96a35aac0b99581fc 1MVDYgW3jp2skZgLZPc87RZK9TMVR9z5p
41 0xf467dc43dfa37388d 1MVDYgVowyyScD1z8DYHfhE1hxHzusjdg
41 0x81cc894ea13d9e655 1MVDYgVm8URm3Q15NVPMNXPwoHCghwyt7
40 0x89e0f4cac9f19bc76 1MVDYgW2R3n4etXfqS1zz7hkS2BwsedeE
41 0xcff840c7b79eae0b8 1MVDYgVpHhs56keQBcjoGtKJSSCS1YrFe
42 0x9790d17db99ef5227 1MVDYgVZ3zaJSfDfaYEmz23yVPPUS1HXm
40 0x9696d34d0f00389c2 1MVDYgW9nB6fCVJp8FSdrNCJg718eBTYT
40 0xf2fa8e9196e55021c 1MVDYgW2jCvfC4tE1jP7Eu5PAB9uBLo4X
41 0xdb9ded4ef29427df3 1MVDYgVjAH82wTey3yCrLxxhNxWpfGKo3
40 0x87b2339ee7316da37 1MVDYgW52sXc4Jk7EyYZB1PMeJEfNMYTk
41 0xb56fbbe2268c21e98 1MVDYgVr4fDkvzGL9oyjkAvQjjjbhe53b
42 0xf4ce81a140abb7d4e 1MVDYgVW7aiKEBH97uZHvG61xkUnFEF4r
41 0xd61d82d16cb644089 1MVDYgVq8gCb6zu121X66gEFaBMGynddS
40 0xd7b3e65dfeb1ea4b4 1MVDYgWB45dqBjzNaMeys4ELQPBaPNPZw
40 0xe7c977a58662d1201 1MVDYgWB2a5j9iFvQi581fxyjLnft8ymL
40 0x9edc0b9430711d9bb 1MVDYgVytub9mgv61rU1CaewEgX5yyzSx
41 0xcccabf7dc7fd7e4a6 1MVDYgVqT96TkbtSnGzaTN9fjQ6n8GDMQ
41 0x9f64ce17e7a37aaf0 1MVDYgVg8cdeY8Xr7fQaPyStx8KNkVQU2
41 0xf5c1c34e3386b2ef8 1MVDYgVkUxw9TbE7s3uvKomFeuxNzdd2z
41 0xde06d2ac71c9b7e7b 1MVDYgVmcMvtGCmkrXHLTU42qrpE4Eu7d
42 0xdb7589aa8cd428530 1MVDYgVV4xZHcGPAygswt6HLyrZgVozmx
40 0xd948fcb7ebd1a06d6 1MVDYgVzLrZoBVyjfs1cvyaSw2gSQf4GT
40 0xbad9b9d72970f9854 1MVDYgVt7rxXozA8PRWSFWfq1FJugQbA3
43 0x975a8968afa93141c 1MVDYgVejxoD691FhZkqwLNsXr3HY6avJ
42 0xcb8c35467536d0363 1MVDYgVUxuMMdKxDMhRfQQKeH5VxSE72S
42 0xf446a350b8dc2b865 1MVDYgVZ7DenUNGBB2Ed29Q9i4wZB1RWG
40 0x879b7b529f88312cb 1MVDYgVuvgK6FJp6oFVkVCdMazGCSvpRY
42 0xbcce506131953b54f 1MVDYgVZDTMQwqm4ed6Pyj838ZW9Q3ZR1
40 0xd8c7dbfe8ff27cfe2 1MVDYgW5moCsRBHroHsApTUAnGfz9F9qq
40 0xc38a91da427306cca 1MVDYgW9cCTvhCgPT9gMPQwfxNRNSE58D
40 0x9c22dcdf7c712fc03 1MVDYgVt4fmTdjEn5oGrYrMnkPyKgJ7NC
40 0xe69f6b2e52aaff5ec 1MVDYgWCEj5t88Lp8qMHGHzC4QfvYUqs7
42 0xedea7c7041c89bf07 1MVDYgVVCMP1m6Bxbu2rG527vA5dMdTFy
40 0xa48f65a0b882bc41f 1MVDYgW6uFwWAFWDTwMzhQS2MGFWgdXNP
40 0x844fb34fc8be2f8c4 1MVDYgWE5WMGHrM31oyHbicNkBawAp8X1
42 0xe007f1435ccfacd6e 1MVDYgVUmPx6WNpnJjd9rNJyhZo7iWrtb
41 0xe5a1992d25a9bce0e 1MVDYgVjs392DRbKJ2xfrzHi6df6surom
43 0xed225e76ffbd1366c 1MVDYgVe6hGU6pXnCzURUsw73kU4guNu1
40 0xc7d22afe352e40b53 1MVDYgW7fyJsRBR1Z4fsXAWEKhgf3FpEr
40 0x9c88d46fc26231a68 1MVDYgW23fUzV6t7hXTJNjLVpjk7cCC2F
40 0xc336c52264435febf 1MVDYgVzm6a6qSVJV6EEn1yDc5k8q3iFc
43 0xd4614e77972dd6143 1MVDYgVfTSEs49AFFUNq6EzVzu1Wb5QhB
40 0xa4c63555fffe627b8 1MVDYgW3b7ckmV6rztFDLevsRsv6sucvK
40 0x9b59bb85fdc2de5cb 1MVDYgW31CKB2e9byFyCP5oZXDxmXTQa3
40 0x9101b52617f8d0289 1MVDYgW58efFfmJSE7gJdMtstKydLjuNr
40 0xfdf8e645121dffe3a 1MVDYgVzxeFZjZKuhDazztvxuikjbr2SF
40 0xd6d49f3b3332ca297 1MVDYgVvwDHPbdwP2gMG68EYnkbfDbMW1
43 0xe90e9eb7700abd445 1MVDYgVdnFifiCb3hU8s4UM2w8qjuQJHp
40 0xaaaae8481d8b12362 1MVDYgVvAL6YFudMwUMdsE2cEDaVQa77W
41 0xba71dbcc2726da2b2 1MVDYgVnUvaJR5KemXr9CEco1cDdAathw
40 0xfe85994950243bfaa 1MVDYgWE8PHTsX1YoCA6M3534Gm6uCrXy
40 0xcb7cfe8bd079fc312 1MVDYgW2PLZqWDPYAk7QqaeYQdRb4dR6w
42 0xbd3cb00a40d00d31f 1MVDYgVV7WWRE5fjzk5gXWEY1vncX46RP
40 0x99b89ec747427391f 1MVDYgW2bMjhwX7WRnffRLsx48mbfCeoz
40 0xddedd43b97031a8f0 1MVDYgW4sesCERxrAu73XMW5Rgfgjp8Sh
41 0x8a0e72bbaec3f481a 1MVDYgVqTjwAAqtYdcGYSdADK9Mrs7DyT
41 0x8e7ea98f3c1dfe7da 1MVDYgVqShR2Wz3bLpNMY78M7jaMzMmYL
40 0x8157b3999aabc8eb9 1MVDYgVzJKd5ZUHxA4QVPdufT3LzyMZj7
41 0xfc5b15522223037ad 1MVDYgVkqpv3cShbBr1aH7CseYcVj8Kfn
41 0xb659b91e022c1b7da 1MVDYgVjMgVaMLLWgagpoXwDL96WHGGjT
41 0x8768f7c5dce57d5ff 1MVDYgVoSq33N3wuMeHvKMDxfJhKwPhKW
40 0xd2d8963495b68f2e4 1MVDYgWB9YaRVMVmyLWdWZejVTWF2WRUi
41 0xd45340dde510f53ad 1MVDYgVhT5NFt9y7ZR3wuaCpGiqHqZMDv
40 0x8c729803d8bf93e0d 1MVDYgWDs8BbAwzKDCwNgACtZTRwXYxx9
40 0xda47b147364df7a11 1MVDYgVt2uhya5NErNMyDNAScZgrEDiwr
40 0xd73f6f495662ad235 1MVDYgW2Ev5paDnmHMgkn3g6yyCYqBoTV
42 0xdcaff9beec45cb3dc 1MVDYgVU3J4dVzhSdjq5QXFGGGTa6xW19
41 0x877607f18eeca56eb 1MVDYgVrdD7Bw2Ybqnjrtewojcosmdwo2
41 0xc5c09a36e9fc58311 1MVDYgVrF3ZtkFaWnfQLRUDLpHBpUBjWB
41 0xb73ce91b2929dfca7 1MVDYgVjffMHJy7d9dadEec9cRp1A2gFB
41 0xd5a3039e1960caf8b 1MVDYgVrzY7cRbLtPoCd3RRDS91ZRD1sb
41 0xb481a9d19ee02ae7a 1MVDYgVimgtkjNb3M8vtziTnAexeYxFib
40 0xca4a086d25bd4571a 1MVDYgVxfonNWKzXNqz2Vu2CAWcM5DPWX
40 0xb1beaad4a6e6dfbdb 1MVDYgW1ALmaYwS92FvaB8tiKYJbzQzBh
41 0xbd077bb37f4ecfc66 1MVDYgVk4KGvXpJk2gaDdnxzcech9FTRy
40 0x9b6c8979a033e8e45 1MVDYgVzTerNvT6ZX6b31oZRXmmtyt7m6
42 0xcb1595d8ee5224133 1MVDYgVZPUXhZcyghdp4WEiZZtsJg1PF7
41 0x927288a7cca4c6d99 1MVDYgVhtTWySBM6SbEbDoPdSaKh69knT
40 0xb4f060a5788f08ede 1MVDYgVy89uByPi665PVEHLtyiRvhdUyY
40 0x8e86d4c830cd17b84 1MVDYgWDrvwwKPGuk7t3uqGVxDKJ1sp4o
40 0xa7812c17af09f801c 1MVDYgVtjqmLWwXw4P22EqmavJ7yPC8Fp
41 0xdcfb961dc0dc6ffb5 1MVDYgVndxLTL4brzMc7c9JBqgkNsub2k
40 0xe81748454e99f4ea7 1MVDYgVz4D6TgpsCarBkWZzQnQEjy6Ch9
40 0xfbe8b9db7642f685b 1MVDYgWB9YZPqoYifvXmBnYHBmdLXJKGc
41 0xec96a0ef6933d8362 1MVDYgVpgrPWysXjVeoNn5R82TzZyhoE7
42 0xaaaae848192c8a136 1MVDYgVZ3bYUwfspZNRVah6bSBYWYegyt
42 0xe4bf7b787cce21932 1MVDYgVUiTD2nrZYvbkc7sFZonVR1kf6w
40 0xa33fa0ad1b8c306d7 1MVDYgVy663fPHT3Q7XLQkad5nuyn2SeP
40 0xbf92efb294715421a 1MVDYgVsSGSTLDNbrx8JMy82ZJFLDuMgN
40 0xed68d39748b9d50fc 1MVDYgVsPKsMaCUBCQ4gTR1gc5Cois3gp
40 0xe90e9eb7b5ca69e32 1MVDYgW3x3w1L9BdgmEoQ9kMSh6MyT7xn
40 0xeebb785bd50a2ff04 1MVDYgW4BEaAmpEyrsz5KxjVkqfoWwPug
40 0xc60c38a21bfb05362 1MVDYgW1BMVbSZFcHCWcrwt4WHHVEF4wx
40 0xd614136953503dab1 1MVDYgWBbKwuxoDqWF9M6gikaFErdcAJ3
42 0xf8f64ce38ea221abb 1MVDYgVVHFouJiwJPEBBp1Ne1W3MT47TM
41 0xd7a8e29f10f947ee2 1MVDYgVjTSGfZiTMQWPx36fvS967D2H8c
41 0x81d3956ca027bbce2 1MVDYgVrzYUuuZmsnBMhNPVa2ns4ENEyM
40 0x9cf87430a56c6b2b7 1MVDYgW2gWUXsc5UKFUbdV4xQqzWz4cfq
40 0xbe1063aec4b4a0f7f 1MVDYgVuPxUPjYtubvuQEGH22JXQbJEPs
40 0xf88e2316b5639153a 1MVDYgW4x8B1M53AMLUkkC6CsdMSUGS3L
40 0x852fb7edf8633d026 1MVDYgVxNHrRu7cZJWXgh8hWUG5BjKP4Z
41 0x8ad9afd2e751c91f2 1MVDYgVh4KvwRArHFyDn9fJ4CEyuXduDf
40 0xcbd008dd955863a44 1MVDYgVwHrJbjFnvZ8Ju7Fp5t3TMSuCie
41 0xdd9d54cfae3666990 1MVDYgVmg8zPqATErb7593tyMbw9fytx9
40 0xe6c622e01deaa9fbe 1MVDYgW5MfPX2gaaZeUFsJjuxomL5H5kj
40 0xf6ee42a309ba06c89 1MVDYgWDtnKTui7orjqG2wYGcFQAYTHi8
40 0xbfc5f7117a1bed378 1MVDYgVxY6BNY4kkbQDWf9QXNwyvQgopR
40 0xe729c9a62f3329c06 1MVDYgW8hMA2H1inpPnEF2ppZMRp7ofPx
40 0xdc42e3f07762a72ea 1MVDYgW4DLvjnZ39cR2iLYWa4RUhZVV2b
40 0xc5caeae4dacfeedfd 1MVDYgVwHb4kYfxaLNic2y4n1xbrx3rs5
40 0xedab7644a2c9f959f 1MVDYgW6J2kuFztAaRqKjU1Y7jB4UC1mA
40 0xf81a481fecb071598 1MVDYgWEzgoKarD9JFtCkUpKqqnhwtLV2
40 0x95d9e7b36bbb2466c 1MVDYgWGbAVUTmzhcnE8zHWnwaAdgiCgG
40 0xae8ebf2a12c2511ec 1MVDYgWA8dMgHadwgyga585uPZopXCvk5
41 0xa30c52e9af7b712f3 1MVDYgViyY33SMw2uQUoaJYdqvJHWECBE
41 0xbfcb883395fc13fd9 1MVDYgVoqzpwf1oKZFbMtjKivU1UiJvFx
41 0xc096b0fc08ddf8b47 1MVDYgVi17onAFPMPi7aVsrjZFhk34R9G
40 0xe58dbc1b9f7950d67 1MVDYgW8tucymoExDe4pGGVNM5EtbSeBe
40 0xb899e7845cf835e55 1MVDYgWEuYAgCKCjP7CAcdUCdUgGWmxJi
40 0x944ebdb9237767383 1MVDYgVyoRyaNTZPVLeqZmrS4x8z2NFaK
40 0x9040cea588ecd7c20 1MVDYgW682MfNuoFfQmpj2dNCdqRLdRsH
41 0xeac406b1ea472341c 1MVDYgVhGbkbBrEPsdZTef1sHY12y4uaz
40 0x840af6946c9193062 1MVDYgW17Wrfa2f1GX2JB9dUZm77n24w2
41 0x9a52474ab2130a337 1MVDYgVp1EEQxE3p5sk6XmARXXaES36YJ
40 0xa8d2caec70be6ea55 1MVDYgW8QHfpJ2sR5aZMQ4S7VPGiAV7Fq
41 0xcf8963b014af6bf86 1MVDYgVoYuRAarwvkRLSKhuXGBBLYiAUY
42 0x93bfc0fffd8a60821 1MVDYgVVfzL5y5dnydKCEUwh9fr5ArL25
43 0xa40f0213ddd965953 1MVDYgVebshZjmkWveyyho1sHdpb7USwT
42 0xd0ab63f8441901744 1MVDYgVVVUc7XRsyt9RMZrHryweDw6v9c
41 0xffd12859ae5ca9167 1MVDYgVpzoKPoX6EsEbybWrDvQsYfn49Z
40 0xf11a30d3f4f737515 1MVDYgVzypb1nCL2kKJpy96gwSGkwqq7E
40 0x82a3daf69ecbc5c05 1MVDYgWDyeXRv8Hyj5VVfnG3BziUdESRo
40 0xa8e7926136456ead9 1MVDYgWCGZB45CRqcaNN2ujPZB5zzRy2p
40 0x8fb6cbc6f854481eb 1MVDYgWGSQ2nbk48fsyyaDnwp6QgG2zdz
41 0xd2a3a83b6095fbf5c 1MVDYgVpZmRoaW1uf5j6aEZkPj82DSgCH
40 0xa0a59329a9fa53ff7 1MVDYgW5LZ21sougAw68KzeL6KbLHimrs
42 0xa32c61820ecbcaec1 1MVDYgVUGzS7arqQb1e6xDui5d8RJTFGW
40 0xf5a7587ef2a2f8035 1MVDYgW2L2zmrsDpmLQ5e94NTV7ynkCmi
40 0xe7a948a70d713863c 1MVDYgW7ZyYRneF16v4JC4gPtskW8zLB8
40 0x98b71a378a00477ba 1MVDYgW3kipjm8gncepU6jb6rfNDwRhy3
41 0xb381e332823f6b576 1MVDYgVmD3BoxdfSowieVJAk5NRcqrExW
40 0xd58ff4ce0f05a33a3 1MVDYgWAE3dX8U1K6gt1FJG1CYve6kfZe
42 0x940accd3b53f6519b 1MVDYgVY3BNMb4dYEmeJwtHrnfsK3XJpF
40 0xb47e88c6a37176729 1MVDYgWCT2hVCDfZdkhfMQ1YBYR9PLWCZ
43 0xc511c38570914087c 1MVDYgVfMrPwCs3LknHLB3U2mjxtWqW48
42 0x91b47cc854982cd5e 1MVDYgVW4dKbkGTVB3iFkMX6aDKj78DCc
40 0xf0af0cf5467643b9b 1MVDYgVxqe29WthkF7PvWHaGpC8zMqHe7
40 0xe324573f7d1bb2834 1MVDYgW45uvGkWcqo6KMKtL7ajZju77hh
40 0xba02e1f07eb6a8289 1MVDYgVuCQJnxrCHxUYL8kfCoWpqwfmgu
40 0xc69e1de59214e4143 1MVDYgWGbUB6Zw1bpmNA1id7ZvZKT9Qup
43 0xc7bc8515d67c43583 1MVDYgVf9NzyUA73pURaJdYqwmH21kj8Q
40 0xa1a32bafa5f180317 1MVDYgW6bCE1cXPfdngHxVCVg5eYiDFCT
41 0xf3b656bf8062e88d6 1MVDYgVq2uZgz8uwja85WwYqwA18UprWy
40 0xc93167aa17bdbd879 1MVDYgWD1bvjLmgJVUjbx5W5uzTtdM972
41 0xa61aa6e7179f7fd21 1MVDYgVrUyNG9NCM4kGMUoKwPXZfbR5uv
40 0x89c3f3fa27b5309ca 1MVDYgVvmYFUsySm9BdTUzj6Z7LNGgXsY
41 0xdfbcf056b1ee6e3be 1MVDYgVpa46C34vr86Fqrz9fKf4sHgSxK
41 0x998b763851f147b9b 1MVDYgVg5E9s6AfRr8vv6G1BtJ6u1eq65

Off the grid, training pigeons to broadcast signed messages.
WanderingPhilospher
Sr. Member
****
Offline Offline

Activity: 1498
Merit: 286

Shooters Shoot...


View Profile
April 02, 2025, 03:22:16 PM
 #8506

To apologize for my fuck-up, I'm gonna share a few nice results I managed to grab recently, feel free to use them as you wish!

32-bit minimum prefix match...I have probably 3 million of these but quit collecting them and went to a minimum of 40+ bits. I probably have 200k of those.

Did you add my findings to your DB? They're all 40+ bits.

I have around 10.000 more of those if you need them!


Sure, send them on.

I rechecked, I had over 12 million 32 bit matches lol.
kTimesG
Full Member
***
Offline Offline

Activity: 812
Merit: 248


View Profile
April 02, 2025, 03:31:32 PM
 #8507

To apologize for my fuck-up, I'm gonna share a few nice results I managed to grab recently, feel free to use them as you wish!

32-bit minimum prefix match...I have probably 3 million of these but quit collecting them and went to a minimum of 40+ bits. I probably have 200k of those.

Did you add my findings to your DB? They're all 40+ bits.

I have around 10.000 more of those if you need them!


Sure, send them on.

I rechecked, I had over 12 million 32 bit matches lol.

I edited the post, enjoy. Could have added more but reached post limit lol.

But since it's no longer April 1st, I hope you have a way to also remove them from your DB.

Hint: all the private keys and addresses that I posted are valid and in the 68-bit puzzle range.
Another hint: the prefixes match the prefix of the puzzle 68 address.

All good then, right? Smiley

Off the grid, training pigeons to broadcast signed messages.
WanderingPhilospher
Sr. Member
****
Offline Offline

Activity: 1498
Merit: 286

Shooters Shoot...


View Profile
April 02, 2025, 04:56:14 PM
 #8508

To apologize for my fuck-up, I'm gonna share a few nice results I managed to grab recently, feel free to use them as you wish!

32-bit minimum prefix match...I have probably 3 million of these but quit collecting them and went to a minimum of 40+ bits. I probably have 200k of those.

Did you add my findings to your DB? They're all 40+ bits.

I have around 10.000 more of those if you need them!


Sure, send them on.

I rechecked, I had over 12 million 32 bit matches lol.

I edited the post, enjoy. Could have added more but reached post limit lol.

But since it's no longer April 1st, I hope you have a way to also remove them from your DB.

Hint: all the private keys and addresses that I posted are valid and in the 68-bit puzzle range.
Another hint: the prefixes match the prefix of the puzzle 68 address.

All good then, right? Smiley

Lol, right!

I only merge/add about once every 2-3 days now.

If they do not match the h160 leading characters, they would never get added to the db. An auto filter, the round before inserting into db.
But I stopped with the initial phase of finding/collecting matching h160 characters awhile back...just bruteforcing the gaps now.
MrHorse
Newbie
*
Offline Offline

Activity: 6
Merit: 0


View Profile
April 02, 2025, 05:12:14 PM
 #8509

@nomachine:

Current cyclone version from github is not working:

Code:
$ time ./cyclone -b 4 -h f92044c7924e5525c61207972c253c9fc9f086f7 -r 6bd20000000:6bdffffffff -S

================= WORK IN PROGRESS =================
Puzzle/Bits   : 32
Target Hash160: f92044c7924e552...c253c9fc9f086f7
Prefix length : 4 bytes
Mode          : Sequential
CPU Threads   : 20
Mkeys/s       : 29.49
Total Checked : 1769278464
Elapsed Time  : 00:01:00
Start Range   : 6bd20000000
End Range     : 6bdffffffff
Progress      : 47.1 %
Progress Save : 0
================= NO MATCH FOUND =================
No match found in range: 6bd20000000:6bdffffffff
Total Checked : 1886423040
Elapsed Time  : 00:01:03
Speed         : 29.78 Mkeys/s
No match found after processing all ranges.

real    1m3.354s
user    20m53.702s
sys     0m0.200s

March 24th version:
Code:
$ time ./cyclone -h f92044c7924e5525c61207972c253c9fc9f086f7 -r 6bd20000000:6bdffffffff -S

================= WORK IN PROGRESS =================
Puzzle/Bits   : 32
Target Hash160: f92044c7924e5525c61207972c253c9fc9f086f7
Prefix length : 4 bytes
Mode          : Sequential
CPU Threads   : 20
Mkeys/s       : 32.14
Total Checked : 1446412800
Elapsed Time  : 00:00:45
Range         : 6bd20000000:6bdffffffff
Progress      : 38.487911 %
Progress Save : 0
Stride        : 1
================== FOUND MATCH! ====================
Private Key   : 000000000000000000000000000000000000000000000000000006BD3B27C58C
Public Key    : 03CEF3320D5D171EA46330250A559D6EDC1A6D3517B2364E3F96BBAEA71AF11506
Total Checked : 1599620096BAE8EEFCF5E9AA99F531D2B721A03B30CE4052AAB9308DBB477519EF
Elapsed Time  : 00:00:49a925c3b04bd5a32b9bf971e0bb7a2134
Speed         : 29.3744 Mkeys/s5c61207972c253c9fc9f086f7
Matched bytes : f92044c7
real    0m50.113s
user    16m25.983s
sys     0m0.123s


There is also 1 partial match with March 24th version.

Thank you for the effort!
AlanJohnson
Member
**
Offline Offline

Activity: 185
Merit: 11


View Profile
April 02, 2025, 05:21:58 PM
 #8510

@nomachine:

Current cyclone version from github is not working:

Code:
$ time ./cyclone -b 4 -h f92044c7924e5525c61207972c253c9fc9f086f7 -r 6bd20000000:6bdffffffff -S

================= WORK IN PROGRESS =================
Puzzle/Bits   : 32
Target Hash160: f92044c7924e552...c253c9fc9f086f7
Prefix length : 4 bytes
Mode          : Sequential
CPU Threads   : 20
Mkeys/s       : 29.49
Total Checked : 1769278464
Elapsed Time  : 00:01:00
Start Range   : 6bd20000000
End Range     : 6bdffffffff
Progress      : 47.1 %
Progress Save : 0
================= NO MATCH FOUND =================
No match found in range: 6bd20000000:6bdffffffff
Total Checked : 1886423040
Elapsed Time  : 00:01:03
Speed         : 29.78 Mkeys/s
No match found after processing all ranges.

real    1m3.354s
user    20m53.702s
sys     0m0.200s

March 24th version:
Code:
$ time ./cyclone -h f92044c7924e5525c61207972c253c9fc9f086f7 -r 6bd20000000:6bdffffffff -S

================= WORK IN PROGRESS =================
Puzzle/Bits   : 32
Target Hash160: f92044c7924e5525c61207972c253c9fc9f086f7
Prefix length : 4 bytes
Mode          : Sequential
CPU Threads   : 20
Mkeys/s       : 32.14
Total Checked : 1446412800
Elapsed Time  : 00:00:45
Range         : 6bd20000000:6bdffffffff
Progress      : 38.487911 %
Progress Save : 0
Stride        : 1
================== FOUND MATCH! ====================
Private Key   : 000000000000000000000000000000000000000000000000000006BD3B27C58C
Public Key    : 03CEF3320D5D171EA46330250A559D6EDC1A6D3517B2364E3F96BBAEA71AF11506
Total Checked : 1599620096BAE8EEFCF5E9AA99F531D2B721A03B30CE4052AAB9308DBB477519EF
Elapsed Time  : 00:00:49a925c3b04bd5a32b9bf971e0bb7a2134
Speed         : 29.3744 Mkeys/s5c61207972c253c9fc9f086f7
Matched bytes : f92044c7
real    0m50.113s
user    16m25.983s
sys     0m0.123s


There is also 1 partial match with March 24th version.

Thank you for the effort!

What CPU do you have ?   Cause from what i see you have 20 threads and get about 29 Mkeys/s  ...  when i have 20 Mkeys/s  with old 4-core 4-thread i5-3570k.
MrHorse
Newbie
*
Offline Offline

Activity: 6
Merit: 0


View Profile
April 02, 2025, 05:30:38 PM
Last edit: April 02, 2025, 05:41:32 PM by MrHorse
 #8511

What CPU do you have ?   Cause from what i see you have 20 threads and get about 29 Mkeys/s  ...  when i have 20 Mkeys/s  with old 4-core 4-thread i5-3570k.

1x Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz

Base clock for i5-3570k is higher @ 3.40Ghz; i5-3570k doesn't have AVX2, only AVX
Denevron
Newbie
*
Offline Offline

Activity: 121
Merit: 0


View Profile
April 02, 2025, 05:46:22 PM
 #8512

Random mutagen V6
Yes, it seems to work.

Code:
#include <iostream>
#include <array>
#include <iomanip>
#include <fstream>
#include <sstream>
#include <vector>
#include <thread>
#include <atomic>
#include <chrono>
#include <queue>
#include <mutex>
#include <cstring>
#include <unordered_map>
#include <cmath>
#include <immintrin.h>
#include <omp.h>
#include <csignal>
#include <random>
#include <algorithm>
#include <getopt.h>

#ifdef _WIN32
    #include <windows.h>
#endif

// Include the required headers
#include "sha256_avx2.h"
#include "ripemd160_avx2.h"
#include "SECP256K1.h"
#include "Point.h"
#include "Int.h"
#include "IntGroup.h"

using namespace std;

// Forward declaration
class UInt128Dist;

// Cross-platform terminal functions
void initConsole() {
#ifdef _WIN32
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    DWORD mode = 0;
    GetConsoleMode(hConsole, &mode);
    SetConsoleMode(hConsole, mode | ENABLE_VIRTUAL_TERMINAL_PROCESSING);
#endif
}

void clearTerminal() {
#ifdef _WIN32
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD coord = {0, 0};
    DWORD count;
    CONSOLE_SCREEN_BUFFER_INFO csbi;
    GetConsoleScreenBufferInfo(hStdOut, &csbi);
    FillConsoleOutputCharacter(hStdOut, ' ', csbi.dwSize.X * csbi.dwSize.Y, coord, &count);
    SetConsoleCursorPosition(hStdOut, coord);
#else
    std::cout << "\033[2J\033[H";
#endif
    std::cout.flush();
}

void moveCursorTo(int x, int y) {
#ifdef _WIN32
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD coord = {(SHORT)x, (SHORT)y};
    SetConsoleCursorPosition(hStdOut, coord);
#else
    std::cout << "\033[" << y << ";" << x << "H";
#endif
    std::cout.flush();
}

// Configuration defaults
int PUZZLE_NUM = 20;
int WORKERS = omp_get_num_procs();
int FLIP_COUNT = -1; // Will be set based on puzzle number unless overridden
const __uint128_t REPORT_INTERVAL = 10000000;
static constexpr int POINTS_BATCH_SIZE = 256;
static constexpr int HASH_BATCH_SIZE = 8;

// Historical puzzle data (puzzle number: {flip count, target hash, private key decimal})
const unordered_map<int, tuple<int, string, string>> PUZZLE_DATA = {
    {20, {8, "b907c3a2a3b27789dfb509b730dd47703c272868",  "357535"}},
    {21, {9, "29a78213caa9eea824acf08022ab9dfc83414f56",  "863317"}},
    {22, {11, "7ff45303774ef7a52fffd8011981034b258cb86b", "1811764"}},
    {23, {12, "d0a79df189fe1ad5c306cc70497b358415da579e", "3007503"}},
    {24, {9, "0959e80121f36aea13b3bad361c15dac26189e2f",  "5598802"}},
    {25, {12, "2f396b29b27324300d0c59b17c3abc1835bd3dbb", "14428676"}},
    {26, {14, "bfebb73562d4541b32a02ba664d140b5a574792f", "33185509"}},
    {27, {13, "0c7aaf6caa7e5424b63d317f0f8f1f9fa40d5560", "54538862"}},
    {28, {16, "1306b9e4ff56513a476841bac7ba48d69516b1da", "111949941"}},
    {29, {18, "5a416cc9148f4a377b672c8ae5d3287adaafadec", "227634408"}},
    {30, {16, "d39c4704664e1deb76c9331e637564c257d68a08", "400708894"}},
    {31, {13, "d805f6f251f7479ebd853b3d0f4b9b2656d92f1d", "1033162084"}},
    {32, {14, "9e42601eeaedc244e15f17375adb0e2cd08efdc9", "2102388551"}},
    {33, {15, "4e15e5189752d1eaf444dfd6bff399feb0443977", "3093472814"}},
    {34, {16, "f6d67d7983bf70450f295c9cb828daab265f1bfa", "7137437912"}},
    {35, {19, "f6d8ce225ffbdecec170f8298c3fc28ae686df25", "14133072157"}},
    {36, {14, "74b1e012be1521e5d8d75e745a26ced845ea3d37", "20112871792"}},
    {37, {23, "28c30fb11ed1da72e7c4f89c0164756e8a021d",   "42387769980"}},
    {38, {21, "b190e2d40cfdeee2cee072954a2be89e7ba39364", "100251560595"}},
    {39, {23, "0b304f2a79a027270276533fe1ed4eff30910876", "146971536592"}},
    {40, {20, "95a156cd21b4a69de969eb6716864f4c8b82a82a", "323724968937"}},
    {41, {25, "d1562eb37357f9e6fc41cb2359f4d3eda4032329", "1003651412950"}},
    {42, {24, "8efb85f9c5b5db2d55973a04128dc7510075ae23", "1458252205147"}},
    {43, {19, "f92044c7924e5525c61207972c253c9fc9f086f7", "2895374552463"}},
    {44, {24, "80df54e1f612f2fc5bdc05c9d21a83aa8d20791e", "7409811047825"}},
    {45, {21, "f0225bfc68a6e17e87cd8b5e60ae3be18f120753", "15404761757071"}},
    {46, {24, "9a012260d01c5113df66c8a8438c9f7a1e3d5dac", "19996463086597"}},
    {47, {27, "f828005d41b0f4fed4c8dca3b06011072cfb07d4", "51408670348612"}},
    {48, {21, "8661cb56d9df0a61f01328b55af7e56a3fe7a2b2", "119666659114170"}},
    {49, {30, "0d2f533966c6578e1111978ca698f8add7fffdf3", "191206974700443"}},
    {50, {29, "de081b76f840e462fa2cdf360173dfaf4a976a47", "409118905032525"}},
    {51, {25, "ef6419cffd7fad7027994354eb8efae223c2dbe7", "611140496167764"}},
    {52, {27, "36af659edbe94453f6344e920d143f1778653ae7", "2058769515153876"}},
    {53, {26, "2f4870ef54fa4b048c1365d42594cc7d3d269551", "4216495639600700"}},
    {54, {30, "cb66763cf7fde659869ae7f06884d9a0f879a092", "6763683971478124"}},
    {55, {31, "db53d9bbd1f3a83b094eeca7dd970bd85b492fa2", "9974455244496707"}},
    {56, {31, "48214c5969ae9f43f75070cea1e2cb41d5bdcccd", "30045390491869460"}},
    {57, {33, "328660ef43f66abe2653fa178452a5dfc594c2a1", "44218742292676575"}},
    {58, {28, "8c2a6071f89c90c4dab5ab295d7729d1b54ea60f", "138245758910846492"}},
    {59, {30, "b14ed3146f5b2c9bde1703deae9ef33af8110210", "199976667976342049"}},
    {60, {31, "cdf8e5c7503a9d22642e3ecfc87817672787b9c5", "525070384258266191"}},
    {61, {25, "68133e19b2dfb9034edf9830a200cfdf38c90cbd", "1135041350219496382"}},
    {62, {35, "e26646db84b0602f32b34b5a62ca3cae1f91b779", "1425787542618654982"}},
    {63, {34, "ef58afb697b094423ce90721fbb19a359ef7c50e", "3908372542507822062"}},
    {64, {34, "3ee4133d991f52fdf6a25c9834e0745ac74248a4", "8993229949524469768"}},
    {65, {37, "52e763a7ddc1aa4fa811578c491c1bc7fd570137", "17799667357578236628"}},
    {66, {35, "20d45a6a762535700ce9e0b216e31994335db8a5", "30568377312064202855"}},
    {67, {31, "739437bb3dd6d1983e66629c5f08c70e52769371", "46346217550346335726"}},
    {68, {34, "e0b8a2baee1b77fc703455f39d51477451fc8cfc", "132656943602386256302"}}
};

// Global variables
vector<unsigned char> TARGET_HASH160_RAW(20);
string TARGET_HASH160;
Int BASE_KEY;
atomic<bool> stop_event(false);
mutex result_mutex;
queue<tuple<string, __uint128_t, int>> results;

// AVX2 128-bit counter implementation
union AVXCounter {
    __m256i vec;
    uint64_t u64[4];
    __uint128_t u128[2];
    
    AVXCounter() : vec(_mm256_setzero_si256()) {}
    
    AVXCounter(__uint128_t value) {
        store(value);
    }
    
    void increment() {
        // [0] = low 64 bits, [1] = high 64 bits
        __m256i one = _mm256_set_epi64x(0, 0, 0, 1);
        vec = _mm256_add_epi64(vec, one);
        
        // Check for carry
        if (u64[0] == 0) { // If low 64 bits wrapped around
            __m256i carry = _mm256_set_epi64x(0, 0, 1, 0);
            vec = _mm256_add_epi64(vec, carry);
        }
    }
    
    void add(__uint128_t value) {
        __m256i add_val = _mm256_set_epi64x(0, 0, value >> 64, value);
        vec = _mm256_add_epi64(vec, add_val);
        
        // Handle carry
        if (u64[0] < (value & 0xFFFFFFFFFFFFFFFFULL)) {
            __m256i carry = _mm256_set_epi64x(0, 0, 1, 0);
            vec = _mm256_add_epi64(vec, carry);
        }
    }
    
    __uint128_t load() const {
        return (static_cast<__uint128_t>(u64[1]) << 64) | u64[0];
    }
    
    void store(__uint128_t value) {
        u64[0] = static_cast<uint64_t>(value);
        u64[1] = static_cast<uint64_t>(value >> 64);
        u64[2] = 0;
        u64[3] = 0;
    }
    
    bool operator<(const AVXCounter& other) const {
        if (u64[1] != other.u64[1])
            return u64[1] < other.u64[1];
        return u64[0] < other.u64[0];
    }
    
    bool operator>=(const AVXCounter& other) const {
        if (u64[1] != other.u64[1])
            return u64[1] > other.u64[1];
        return u64[0] >= other.u64[0];
    }
    
    static AVXCounter div(const AVXCounter& num, uint64_t denom) {
        // 128-bit division emulation
        __uint128_t n = num.load();
        __uint128_t q = n / denom;
        return AVXCounter(q);
    }
    
    static uint64_t mod(const AVXCounter& num, uint64_t denom) {
        __uint128_t n = num.load();
        return n % denom;
    }
    
    static AVXCounter mul(uint64_t a, uint64_t b) {
        __uint128_t result = static_cast<__uint128_t>(a) * b;
        return AVXCounter(result);
    }
};

static AVXCounter total_checked_avx;
__uint128_t total_combinations = 0;
vector<string> g_threadPrivateKeys;
mutex progress_mutex;

// Performance tracking variables
atomic<uint64_t> globalComparedCount(0);
atomic<uint64_t> localComparedCount(0);
double globalElapsedTime = 0.0;
double mkeysPerSec = 0.0;
chrono::time_point<chrono::high_resolution_clock> tStart;

// Thread random number generation
vector<mt19937_64> threadRNGs;
vector<UInt128Dist> threadDists;

// Custom 128-bit random number distribution
class UInt128Dist {
    mt19937_64 rng;
    uniform_int_distribution<uint64_t> dist;
    
public:
    UInt128Dist(uint64_t min = 0, uint64_t max = UINT64_MAX, uint64_t seed = 0)
        : rng(seed), dist(min, max) {}
    
    void seed(uint64_t s) { rng.seed(s); }
    
    __uint128_t operator()() {
        __uint128_t result = dist(rng);
        result <<= 64;
        result |= dist(rng);
        return result;
    }
    
    __uint128_t operator()(__uint128_t min, __uint128_t max) {
        if (min == max) return min;
        if (min > max) swap(min, max);
        
        __uint128_t range = max - min + 1;
        __uint128_t limit = (__uint128_t(0) - 1) - ((__uint128_t(0) - 1) % range);
        __uint128_t result;
        
        do {
            result = (*this)();
        } while (result >= limit);
        
        return min + (result % range);
    }
};

// Helper functions
static std::string formatElapsedTime(double seconds) {
    int hrs = static_cast<int>(seconds) / 3600;
    int mins = (static_cast<int>(seconds) % 3600) / 60;
    int secs = static_cast<int>(seconds) % 60;
    std::ostringstream oss;
    oss << std::setw(2) << std::setfill('0') << hrs << ":"
        << std::setw(2) << std::setfill('0') << mins << ":"
        << std::setw(2) << std::setfill('0') << secs;
    return oss.str();
}

// Helper function to convert 128-bit numbers to string
static std::string to_string_128(__uint128_t value) {
    if (value == 0) return "0";
    
    char buffer[50];
    char* p = buffer + sizeof(buffer);
    *--p = '\0';
    
    while (value != 0) {
        *--p = "0123456789"[value % 10];
        value /= 10;
    }
    
    return std::string(p);
}

// Signal handler for clean shutdown
void signalHandler(int signum) {
    stop_event.store(true);
    cout << "\nInterrupt received, shutting down...\n";
}

class CombinationGenerator {
    int n, k;
    std::vector<int> current;
    
public:
    CombinationGenerator(int n, int k) : n(n), k(k), current(k) {
        if (k > n) k = n;
        for (int i = 0; i < k; ++i) current[i] = i;
    }

    static __uint128_t combinations_count(int n, int k) {
        if (k > n) return 0;
        if (k * 2 > n) k = n - k;  // Use symmetry
        if (k == 0) return 1;

        __uint128_t result = n;
        for(int i = 2; i <= k; ++i) {
            result *= (n - i + 1);
            result /= i;  // This division is always exact
        }
        return result;
    }

    // AVX2 optimized version that calculates 4 combinations at once
    static __m256i combinations_count_avx(int n, int k) {
        alignas(32) uint64_t counts[4];
        for (int i = 0; i < 4; i++) {
            counts[i] = combinations_count(n + i, k);
        }
        return _mm256_load_si256((__m256i*)counts);
    }

    const std::vector<int>& get() const { return current; }
  
    bool next() {
        int i = k - 1;
        while (i >= 0 && current[i] == n - k + i) --i;
        if (i < 0) return false;
      
        ++current[i];
        for (int j = i + 1; j < k; ++j)
            current[j] = current[j-1] + 1;
        return true;
    }
  
    void unrank(__uint128_t rank) {
        __uint128_t total = combinations_count(n, k);
        if (rank >= total) {
            current.clear();
            return;
        }
        
        current.resize(k);
        __uint128_t remaining_rank = rank;
        int a = n;
        int b = k;
        __uint128_t x = (total - 1) - rank;
        
        for (int i = 0; i < k; i++) {
            a = largest_a_where_comb_a_b_le_x(a, b, x);
            current[i] = (n - 1) - a;
            x -= combinations_count(a, b);
            b--;
        }
    }
  
private:
    int largest_a_where_comb_a_b_le_x(int a, int b, __uint128_t x) const {
        while (a >= b && combinations_count(a, b) > x) {
            a--;
        }
        return a;
    }
};

inline void prepareShaBlock(const uint8_t* dataSrc, __uint128_t dataLen, uint8_t* outBlock) {
    std::fill_n(outBlock, 64, 0);
    std::memcpy(outBlock, dataSrc, dataLen);
    outBlock[dataLen] = 0x80;
    const uint32_t bitLen = (uint32_t)(dataLen * 8);
    outBlock[60] = (uint8_t)((bitLen >> 24) & 0xFF);
    outBlock[61] = (uint8_t)((bitLen >> 16) & 0xFF);
    outBlock[62] = (uint8_t)((bitLen >>  8) & 0xFF);
    outBlock[63] = (uint8_t)( bitLen        & 0xFF);
}

inline void prepareRipemdBlock(const uint8_t* dataSrc, uint8_t* outBlock) {
    std::fill_n(outBlock, 64, 0);
    std::memcpy(outBlock, dataSrc, 32);
    outBlock[32] = 0x80;
    const uint32_t bitLen = 256;
    outBlock[60] = (uint8_t)((bitLen >> 24) & 0xFF);
    outBlock[61] = (uint8_t)((bitLen >> 16) & 0xFF);
    outBlock[62] = (uint8_t)((bitLen >>  8) & 0xFF);
    outBlock[63] = (uint8_t)( bitLen        & 0xFF);
}

static void computeHash160BatchBinSingle(int numKeys,
                                       uint8_t pubKeys[][33],
                                       uint8_t hashResults[][20])
{
    alignas(32) std::array<std::array<uint8_t, 64>, HASH_BATCH_SIZE> shaInputs;
    alignas(32) std::array<std::array<uint8_t, 32>, HASH_BATCH_SIZE> shaOutputs;
    alignas(32) std::array<std::array<uint8_t, 64>, HASH_BATCH_SIZE> ripemdInputs;
    alignas(32) std::array<std::array<uint8_t, 20>, HASH_BATCH_SIZE> ripemdOutputs;

    const __uint128_t totalBatches = (numKeys + (HASH_BATCH_SIZE - 1)) / HASH_BATCH_SIZE;

    for (__uint128_t batch = 0; batch < totalBatches; batch++) {
        const __uint128_t batchCount = std::min<__uint128_t>(HASH_BATCH_SIZE, numKeys - batch * HASH_BATCH_SIZE);

        // Prepare SHA-256 input blocks
        for (__uint128_t i = 0; i < batchCount; i++) {
            prepareShaBlock(pubKeys[batch * HASH_BATCH_SIZE + i], 33, shaInputs[i].data());
        }
        
        if (batchCount < HASH_BATCH_SIZE) {
            static std::array<uint8_t, 64> shaPadding = {};
            prepareShaBlock(pubKeys[0], 33, shaPadding.data());
            for (__uint128_t i = batchCount; i < HASH_BATCH_SIZE; i++) {
                std::memcpy(shaInputs[i].data(), shaPadding.data(), 64);
            }
        }

        const uint8_t* inPtr[HASH_BATCH_SIZE];
        uint8_t* outPtr[HASH_BATCH_SIZE];
        for (int i = 0; i < HASH_BATCH_SIZE; i++) {
            inPtr[i]  = shaInputs[i].data();
            outPtr[i] = shaOutputs[i].data();
        }

        sha256avx2_8B(inPtr[0], inPtr[1], inPtr[2], inPtr[3],
                      inPtr[4], inPtr[5], inPtr[6], inPtr[7],
                      outPtr[0], outPtr[1], outPtr[2], outPtr[3],
                      outPtr[4], outPtr[5], outPtr[6], outPtr[7]);

        for (__uint128_t i = 0; i < batchCount; i++) {
            prepareRipemdBlock(shaOutputs[i].data(), ripemdInputs[i].data());
        }

        if (batchCount < HASH_BATCH_SIZE) {
            static std::array<uint8_t, 64> ripemdPadding = {};
            prepareRipemdBlock(shaOutputs[0].data(), ripemdPadding.data());
            for (__uint128_t i = batchCount; i < HASH_BATCH_SIZE; i++) {
                std::memcpy(ripemdInputs[i].data(), ripemdPadding.data(), 64);
            }
        }

        for (int i = 0; i < HASH_BATCH_SIZE; i++) {
            inPtr[i]  = ripemdInputs[i].data();
            outPtr[i] = ripemdOutputs[i].data();
        }

        ripemd160avx2::ripemd160avx2_32(
            (unsigned char*)inPtr[0], (unsigned char*)inPtr[1],
            (unsigned char*)inPtr[2], (unsigned char*)inPtr[3],
            (unsigned char*)inPtr[4], (unsigned char*)inPtr[5],
            (unsigned char*)inPtr[6], (unsigned char*)inPtr[7],
            outPtr[0], outPtr[1], outPtr[2], outPtr[3],
            outPtr[4], outPtr[5], outPtr[6], outPtr[7]
        );

        for (__uint128_t i = 0; i < batchCount; i++) {
            std::memcpy(hashResults[batch * HASH_BATCH_SIZE + i], ripemdOutputs[i].data(), 20);
        }
    }
}

void worker(Secp256K1* secp, int bit_length, int flip_count, int threadId, UInt128Dist& dist) {
    const int fullBatchSize = 2 * POINTS_BATCH_SIZE;
    uint8_t localPubKeys[HASH_BATCH_SIZE][33];
    uint8_t localHashResults[HASH_BATCH_SIZE][20];
    int pointIndices[HASH_BATCH_SIZE];

    // Precompute target hash for comparison
    __m256i target16 = _mm256_loadu_si256(reinterpret_cast<const __m256i*>(TARGET_HASH160_RAW.data()));
    
    // Precompute points
    vector<Point> plusPoints(POINTS_BATCH_SIZE);
    vector<Point> minusPoints(POINTS_BATCH_SIZE);
    for (int i = 0; i < POINTS_BATCH_SIZE; i++) {
        Int tmp; tmp.SetInt32(i);
        plusPoints[i] = secp->ComputePublicKey(&tmp);
        minusPoints[i] = plusPoints[i];
        minusPoints[i].y.ModNeg();
    }

    // Structure of Arrays
    vector<Int> deltaX(POINTS_BATCH_SIZE);
    IntGroup modGroup(POINTS_BATCH_SIZE);
    vector<Int> pointBatchX(fullBatchSize);
    vector<Int> pointBatchY(fullBatchSize);

    __uint128_t checked = 0;
    while (!stop_event.load() && checked < total_combinations) {
        // Generate random combination index
        __uint128_t rank = dist(0, total_combinations - 1);
        
        CombinationGenerator gen(bit_length, flip_count);
        gen.unrank(rank);

        Int currentKey;
        currentKey.Set(&BASE_KEY);
        
        const vector<int>& flips = gen.get();
        
        // Apply flips
        for (int pos : flips) {
            Int mask;
            mask.SetInt32(1);
            mask.ShiftL(pos);
            
            Int temp;
            temp.Set(&currentKey);
            temp.ShiftR(pos);
            
            if (temp.IsEven()) {
                currentKey.Add(&mask);
            } else {
                currentKey.Sub(&mask);
            }
        }

        // Verify key length
        string keyStr = currentKey.GetBase16();
        keyStr = string(64 - keyStr.length(), '0') + keyStr;

        #pragma omp critical
        {
            g_threadPrivateKeys[threadId] = keyStr;
        }

        // Compute public key and process in batches
        Point startPoint = secp->ComputePublicKey(&currentKey);
        Int startPointX, startPointY, startPointXNeg;
        startPointX.Set(&startPoint.x);
        startPointY.Set(&startPoint.y);
        startPointXNeg.Set(&startPointX);
        startPointXNeg.ModNeg();

        // Compute deltaX values in batches of 4 (optimized)
        for (int i = 0; i < POINTS_BATCH_SIZE; i += 4) {
            deltaX[i].ModSub(&plusPoints[i].x, &startPointX);
            deltaX[i+1].ModSub(&plusPoints[i+1].x, &startPointX);
            deltaX[i+2].ModSub(&plusPoints[i+2].x, &startPointX);
            deltaX[i+3].ModSub(&plusPoints[i+3].x, &startPointX);
        }
        modGroup.Set(deltaX.data());
        modGroup.ModInv();

        // Process plus and minus points in batches
        for (int i = 0; i < POINTS_BATCH_SIZE; i += 4) {
            for (int j = 0; j < 4; j++) {
                // Plus points (0..255)
                Int deltaY; deltaY.ModSub(&plusPoints[i+j].y, &startPointY);
                Int slope; slope.ModMulK1(&deltaY, &deltaX[i+j]);
                Int slopeSq; slopeSq.ModSquareK1(&slope);
                
                pointBatchX[i+j].Set(&startPointXNeg);
                pointBatchX[i+j].ModAdd(&slopeSq);
                pointBatchX[i+j].ModSub(&plusPoints[i+j].x);
                
                Int diffX; diffX.ModSub(&startPointX, &pointBatchX[i+j]);
                diffX.ModMulK1(&slope);
                
                pointBatchY[i+j].Set(&startPointY);
                pointBatchY[i+j].ModNeg();
                pointBatchY[i+j].ModAdd(&diffX);

                // Minus points (256..511)
                deltaY.ModSub(&minusPoints[i+j].y, &startPointY);
                slope.ModMulK1(&deltaY, &deltaX[i+j]);
                slopeSq.ModSquareK1(&slope);
                
                pointBatchX[POINTS_BATCH_SIZE+i+j].Set(&startPointXNeg);
                pointBatchX[POINTS_BATCH_SIZE+i+j].ModAdd(&slopeSq);
                pointBatchX[POINTS_BATCH_SIZE+i+j].ModSub(&minusPoints[i+j].x);
                
                diffX.ModSub(&startPointX, &pointBatchX[POINTS_BATCH_SIZE+i+j]);
                diffX.ModMulK1(&slope);
                
                pointBatchY[POINTS_BATCH_SIZE+i+j].Set(&startPointY);
                pointBatchY[POINTS_BATCH_SIZE+i+j].ModNeg();
                pointBatchY[POINTS_BATCH_SIZE+i+j].ModAdd(&diffX);
            }
        }

        // Process keys in optimized batches
        int localBatchCount = 0;
        for (int i = 0; i < fullBatchSize && localBatchCount < HASH_BATCH_SIZE; i++) {
            Point tempPoint;
            tempPoint.x.Set(&pointBatchX[i]);
            tempPoint.y.Set(&pointBatchY[i]);
            
            // Convert to compressed public key
            localPubKeys[localBatchCount][0] = tempPoint.y.IsEven() ? 0x02 : 0x03;
            for (int j = 0; j < 32; j++) {
                localPubKeys[localBatchCount][1 + j] = pointBatchX[i].GetByte(31 - j);
            }
            pointIndices[localBatchCount] = i;
            localBatchCount++;

            if (localBatchCount == HASH_BATCH_SIZE) {
                computeHash160BatchBinSingle(localBatchCount, localPubKeys, localHashResults);
                localComparedCount += HASH_BATCH_SIZE;

                for (int j = 0; j < HASH_BATCH_SIZE; j++) {
                    // Load candidate hash
                    __m256i cand = _mm256_loadu_si256(reinterpret_cast<const __m256i*>(localHashResults[j]));
                    
                    // Compare first 4 bytes using AVX2
                    __m256i cmp = _mm256_cmpeq_epi8(cand, target16);
                    int mask = _mm256_movemask_epi8(cmp);
                    
                    if ((mask & 0x0F) == 0x0F) {  // First 4 bytes match
                        // Full comparison
                        bool fullMatch = true;
                        for (int k = 0; k < 20; k++) {
                            if (localHashResults[j][k] != TARGET_HASH160_RAW[k]) {
                                fullMatch = false;
                                break;
                            }
                        }

                        if (fullMatch) {
                            auto tEndTime = chrono::high_resolution_clock::now();
                            globalElapsedTime = chrono::duration<double>(tEndTime - tStart).count();
                            mkeysPerSec = (double)(globalComparedCount + localComparedCount) / globalElapsedTime / 1e6;
                            
                            Int foundKey;
                            foundKey.Set(&currentKey);
                            int idx = pointIndices[j];
                            if (idx < POINTS_BATCH_SIZE) {
                                Int offset; offset.SetInt32(idx);
                                foundKey.Add(&offset);
                            } else {
                                Int offset; offset.SetInt32(idx - POINTS_BATCH_SIZE);
                                foundKey.Sub(&offset);
                            }
                            
                            string hexKey = foundKey.GetBase16();
                            hexKey = string(64 - hexKey.length(), '0') + hexKey;
                            
                            lock_guard<mutex> lock(result_mutex);
                            results.push(make_tuple(hexKey, total_checked_avx.load() + checked, flip_count));
                            stop_event.store(true);
                            return;
                        }
                    }
                }
                
                checked += HASH_BATCH_SIZE;

                // Progress reporting
                if (checked % REPORT_INTERVAL == 0) {
                    total_checked_avx.add(REPORT_INTERVAL);
                    __uint128_t current_total = total_checked_avx.load();
                    
                    auto now = chrono::high_resolution_clock::now();
                    globalElapsedTime = chrono::duration<double>(now - tStart).count();
                    
                    globalComparedCount += localComparedCount;
                    localComparedCount = 0;
                    mkeysPerSec = (double)globalComparedCount / globalElapsedTime / 1e6;
                    
                    double progress = min(100.0, (double)current_total / total_combinations * 100.0);
                    
                    lock_guard<mutex> lock(progress_mutex);
                    moveCursorTo(0, 10);
                    cout << "Progress: " << fixed << setprecision(6) << progress << "%\n";
                    cout << "Processed: " << to_string_128(current_total) << "\n";
                    cout << "Speed: " << fixed << setprecision(2) << mkeysPerSec << " Mkeys/s\n";
                    cout << "Elapsed Time: " << formatElapsedTime(globalElapsedTime) << "\n";
                    cout.flush();

                    if (current_total >= total_combinations) {
                        stop_event.store(true);
                        break;
                    }
                }
                localBatchCount = 0;
            }
        }
    }

    // Final check when thread completes its range
    if (!stop_event.load() && total_checked_avx.load() >= total_combinations) {
        stop_event.store(true);
    }
}

void printUsage(const char* programName) {
    cout << "Usage: " << programName << " [options]\n";
    cout << "Options:\n";
    cout << "  -p, --puzzle NUM    Puzzle number to solve (default: 20)\n";
    cout << "  -t, --threads NUM   Number of CPU cores to use (default: all)\n";
    cout << "  -f, --flips NUM     Override default flip count for puzzle\n";
    cout << "  -h, --help          Show this help message\n";
    cout << "\nExample:\n";
    cout << "  " << programName << " -p 38 -t 8 -f 21\n";
}

int main(int argc, char* argv[]) {
    signal(SIGINT, signalHandler);
    
    // Parse command line arguments
    int opt;
    int option_index = 0;
    static struct option long_options[] = {
        {"puzzle", required_argument, 0, 'p'},
        {"threads", required_argument, 0, 't'},
        {"flips", required_argument, 0, 'f'},
        {"help", no_argument, 0, 'h'},
        {0, 0, 0, 0}
    };

    while ((opt = getopt_long(argc, argv, "p:t:f:h", long_options, &option_index)) != -1) {
        if (opt == -1) break;

        switch (opt) {
            case 'p':
                PUZZLE_NUM = atoi(optarg);
                if (PUZZLE_NUM < 20 || PUZZLE_NUM > 68) {
                    cerr << "Error: Puzzle number must be between 20 and 68\n";
                    return 1;
                }
                break;
            case 't':
                WORKERS = atoi(optarg);
                if (WORKERS < 1) {
                    cerr << "Error: Thread count must be at least 1\n";
                    return 1;
                }
                break;
            case 'f':
                FLIP_COUNT = atoi(optarg);
                if (FLIP_COUNT < 1) {
                    cerr << "Error: Flip count must be at least 1\n";
                    return 1;
                }
                break;
            case 'h':
                printUsage(argv[0]);
                return 0;
            default:
                printUsage(argv[0]);
                return 1;
        }
    }

    tStart = chrono::high_resolution_clock::now();

    Secp256K1 secp;
    secp.Init();
    
    auto puzzle_it = PUZZLE_DATA.find(PUZZLE_NUM);
    if (puzzle_it == PUZZLE_DATA.end()) {
        cerr << "Error: Invalid puzzle number\n";
        return 1;
    }
    
    auto [DEFAULT_FLIP_COUNT, TARGET_HASH160_HEX, PRIVATE_KEY_DECIMAL] = puzzle_it->second;
    
    // Use override flip count if provided, otherwise use puzzle default
    if (FLIP_COUNT == -1) {
        FLIP_COUNT = DEFAULT_FLIP_COUNT;
    }
    
    TARGET_HASH160 = TARGET_HASH160_HEX;
    
    // Convert target hash to bytes
    for (__uint128_t i = 0; i < 20; i++) {
        TARGET_HASH160_RAW[i] = stoul(TARGET_HASH160.substr(i * 2, 2), nullptr, 16);
    }
    
    // Set base key from decimal string
    BASE_KEY.SetBase10(const_cast<char*>(PRIVATE_KEY_DECIMAL.c_str()));
    
    // Verify base key
    Int testKey;
    testKey.SetBase10(const_cast<char*>(PRIVATE_KEY_DECIMAL.c_str()));
    if (!testKey.IsEqual(&BASE_KEY)) {
        cerr << "Base key initialization failed!\n";
        return 1;
    }

    if (BASE_KEY.GetBitLength() > PUZZLE_NUM) {
        cerr << "Base key exceeds puzzle bit length!\n";
        return 1;
    }
    
    // Calculate total combinations
    total_combinations = CombinationGenerator::combinations_count(PUZZLE_NUM, FLIP_COUNT);
    
    // Initialize RNGs for each thread
    random_device rd;
    threadRNGs.resize(WORKERS);
    threadDists.resize(WORKERS);
    for (int i = 0; i < WORKERS; i++) {
        threadRNGs[i].seed(rd());
        threadDists[i] = UInt128Dist(0, total_combinations - 1, threadRNGs[i]());
    }

    // Format base key for display
    string paddedKey = BASE_KEY.GetBase16();
    __uint128_t firstNonZero = paddedKey.find_first_not_of('0');
    paddedKey = paddedKey.substr(firstNonZero);
    // Add 0x prefix
    paddedKey = "0x" + paddedKey;

    // Print initial header
    clearTerminal();
    cout << "=======================================\n";
    cout << "== Mutagen Puzzle Solver by Denevron ==\n";
    cout << "=======================================\n";  
    cout << "Starting puzzle: " << PUZZLE_NUM << " (" << PUZZLE_NUM << "-bit)\n";
    cout << "Target HASH160: " << TARGET_HASH160.substr(0, 10) << "..." << TARGET_HASH160.substr(TARGET_HASH160.length()-10) << "\n";
    cout << "Base Key: " << paddedKey << "\n";
    cout << "Flip count: " << FLIP_COUNT << " ";
    if (FLIP_COUNT != DEFAULT_FLIP_COUNT) {
        cout << "(override, default was " << DEFAULT_FLIP_COUNT << ")";
    }
    cout << "\n";
    cout << "Total Flips: " << to_string_128(total_combinations) << "\n";
    cout << "Using: " << WORKERS << " threads\n";
    cout << "\n";

    g_threadPrivateKeys.resize(WORKERS, "0");
    vector<thread> threads;
    
    // Create worker threads with random distributions
    for (int i = 0; i < WORKERS; i++) {
        threads.emplace_back(worker, &secp, PUZZLE_NUM, FLIP_COUNT, i, ref(threadDists[i]));
    }
    
    for (auto& t : threads) {
        if (t.joinable()) {
            t.join();
        }
    }
    
    if (!results.empty()) {
        auto [hex_key, checked, flips] = results.front();
        globalElapsedTime = chrono::duration<double>(chrono::high_resolution_clock::now() - tStart).count();
        mkeysPerSec = (double)globalComparedCount / globalElapsedTime / 1e6;

        string compactHex = hex_key;
        __uint128_t firstNonZero = compactHex.find_first_not_of('0');
        compactHex = "0x" + compactHex.substr(firstNonZero);

        cout << "=======================================\n";
        cout << "=========== SOLUTION FOUND ============\n";
        cout << "=======================================\n";
        cout << "Private key: " << compactHex << "\n";
        cout << "Checked " << to_string_128(checked) << " combinations\n";
        cout << "Bit flips: " << flips << endl;
        cout << "Time: " << fixed << setprecision(2) << globalElapsedTime << " seconds ("
             << formatElapsedTime(globalElapsedTime) << ")\n";
        cout << "Speed: " << fixed << setprecision(2) << mkeysPerSec << " Mkeys/s\n";
        
        // Save solution
        ofstream out("puzzle_" + to_string(PUZZLE_NUM) + "_solution.txt");
        if (out) {
            out << hex_key;
            out.close();
            cout << "Solution saved to puzzle_" << PUZZLE_NUM << "_solution.txt\n";
        } else {
            cerr << "Failed to save solution to file!\n";
        }
    } else {
        __uint128_t final_count = total_checked_avx.load();
        globalElapsedTime = chrono::duration<double>(chrono::high_resolution_clock::now() - tStart).count();
        mkeysPerSec = (double)globalComparedCount / globalElapsedTime / 1e6;
        
        cout << "\n\nNo solution found. Checked " << to_string_128(final_count) << " combinations\n";
        cout << "Time: " << fixed << setprecision(2) << globalElapsedTime << " seconds ("
             << formatElapsedTime(globalElapsedTime) << ")\n";
        cout << "Speed: " << fixed << setprecision(2) << mkeysPerSec << " Mkeys/s\n";
    }
    
    return 0;
}


Random makes sense if you change, say, 8-10 bits (that is, 8, 9, 10), but if you just randomly change, for example, only 8, it loses its meaning, because you will simply get stuck on a large distance.
Dontbeatool2
Newbie
*
Offline Offline

Activity: 5
Merit: 0


View Profile
April 02, 2025, 06:06:04 PM
 #8513

@nomachine:

Current cyclone version from github is not working:

Code:
$ time ./cyclone -b 4 -h f92044c7924e5525c61207972c253c9fc9f086f7 -r 6bd20000000:6bdffffffff -S

================= WORK IN PROGRESS =================
Puzzle/Bits   : 32
Target Hash160: f92044c7924e552...c253c9fc9f086f7
Prefix length : 4 bytes
Mode          : Sequential
CPU Threads   : 20
Mkeys/s       : 29.49
Total Checked : 1769278464
Elapsed Time  : 00:01:00
Start Range   : 6bd20000000
End Range     : 6bdffffffff
Progress      : 47.1 %
Progress Save : 0
================= NO MATCH FOUND =================
No match found in range: 6bd20000000:6bdffffffff
Total Checked : 1886423040
Elapsed Time  : 00:01:03
Speed         : 29.78 Mkeys/s
No match found after processing all ranges.

real    1m3.354s
user    20m53.702s
sys     0m0.200s

March 24th version:
Code:
$ time ./cyclone -h f92044c7924e5525c61207972c253c9fc9f086f7 -r 6bd20000000:6bdffffffff -S

================= WORK IN PROGRESS =================
Puzzle/Bits   : 32
Target Hash160: f92044c7924e5525c61207972c253c9fc9f086f7
Prefix length : 4 bytes
Mode          : Sequential
CPU Threads   : 20
Mkeys/s       : 32.14
Total Checked : 1446412800
Elapsed Time  : 00:00:45
Range         : 6bd20000000:6bdffffffff
Progress      : 38.487911 %
Progress Save : 0
Stride        : 1
================== FOUND MATCH! ====================
Private Key   : 000000000000000000000000000000000000000000000000000006BD3B27C58C
Public Key    : 03CEF3320D5D171EA46330250A559D6EDC1A6D3517B2364E3F96BBAEA71AF11506
Total Checked : 1599620096BAE8EEFCF5E9AA99F531D2B721A03B30CE4052AAB9308DBB477519EF
Elapsed Time  : 00:00:49a925c3b04bd5a32b9bf971e0bb7a2134
Speed         : 29.3744 Mkeys/s5c61207972c253c9fc9f086f7
Matched bytes : f92044c7
real    0m50.113s
user    16m25.983s
sys     0m0.123s


There is also 1 partial match with March 24th version.

Thank you for the effort!

What CPU do you have ?   Cause from what i see you have 20 threads and get about 29 Mkeys/s  ...  when i have 20 Mkeys/s  with old 4-core 4-thread i5-3570k.

I saw you discussing this and there are a couple issues. You do realize you are searching a puzzle and range that was solved. It is possible to get billions of keys per sec on midrange store bought pc. There are way better methods than what you are using. If you are interested in getting involved in the puzzle there are much better ways with much better results even using cpu. To hit billions you need to use a GPU a 3060 or equivalents will hit billion+ per second. If advanced you can get it up to 10 billion with more advanced methods. Look at kangaroo and bitcrack and vanitysearch.
nomachine
Full Member
***
Offline Offline

Activity: 812
Merit: 134



View Profile
April 02, 2025, 06:07:08 PM
 #8514

@nomachine:

Current cyclone version from github is not working

Quote
# ./Cyclone -b 4 -h f92044c7924e5525c61207972c253c9fc9f086f7 -r 6bd20000000:6bdffffffff -S

================= WORK IN PROGRESS =================
Puzzle/Bits   : 32
Target Hash160: f92044c7924e552...c253c9fc9f086f7
Prefix length : 4 bytes
Mode          : Sequential
CPU Threads   : 12
Mkeys/s       : 36.27
Total Checked : 725503488
Elapsed Time  : 00:00:20
Start Range   : 6bd20000000
End Range     : 6bdffffffff
Progress      : 19.3 %
Progress Save : 0
Stride        : 1
================== FOUND MATCH! ====================
Private Key   : 000000000000000000000000000000000000000000000000000006BD3B27C591
Public Key    : 02A631F9BA0F28511614904DF80D7F97A4F43F02249C8909DAC92276CCF0BCDAED
Total Checked : 856310784
Elapsed Time  : 00:00:23
Speed         : 31.1849 Mkeys/s


It works the same here as in the previous version.

Mutagen updated
https://github.com/NoMachine1/Mutagen/commit/3e6791d69b0146864a853e826828ec8b5852872b

BTC: bc1qdwnxr7s08xwelpjy3cc52rrxg63xsmagv50fa8
Akito S. M. Hosana
Jr. Member
*
Offline Offline

Activity: 420
Merit: 8


View Profile
April 02, 2025, 06:12:08 PM
 #8515

I saw you discussing this and there are a couple issues. You do realize you are searching a puzzle and range that was solved.

Who cares? I know pensioners who have been solving the same crosswords for years. They write with a regular pencil and erase with an eraser. The same logic applies here—it's just a way to fill your free time.  Grin
Dontbeatool2
Newbie
*
Offline Offline

Activity: 5
Merit: 0


View Profile
April 02, 2025, 06:16:24 PM
 #8516

I saw you discussing this and there are a couple issues. You do realize you are searching a puzzle and range that was solved.

Who cares? I know pensioners who have been solving the same crosswords for years. They write with a regular pencil and erase with an eraser. The same logic applies here—it's just a way to fill your free time.  Grin
Yes but why not use the best methods. You will be way behind all if not starting off proven ways. The available offer billion per sec. Start there. Some are finding ways to get higher sota+ method. And going through ranges that have been searched and are not part of a current puzzles will find nothing all were scanned. Im just trying to help. Sorry to bother you.
nomachine
Full Member
***
Offline Offline

Activity: 812
Merit: 134



View Profile
April 02, 2025, 06:17:09 PM
 #8517

The same logic applies here—it's just a way to fill your free time.  Grin

It's even better to go fishing. 🎣🐟

P.S. I prefer Sudoku. Grin

BTC: bc1qdwnxr7s08xwelpjy3cc52rrxg63xsmagv50fa8
Desyationer
Jr. Member
*
Offline Offline

Activity: 64
Merit: 2


View Profile
April 02, 2025, 06:21:06 PM
Last edit: April 02, 2025, 06:41:43 PM by Desyationer
 #8518

I compiled the exe, but it seems the program isn't working correctly. The progress goes over 100%, but the test range is not found. I'm getting around 50 45mkeys on the 5800X3D in cuclone and mutogen.

Code:
=======================================
== Mutagen Puzzle Solver by Denevron ==
=======================================
Starting puzzle: 38 (38-bit)
Target HASH160: b190e2d40c...9e7ba39364
Base Key: 0x1757756A93
Flip count: 21
Total Flips: 28781143380
Using: 16 threads

Progress: 1.146584%
Processed: 330000000
Speed: 48.02 Mkeys/s
Elapsed Time: 00:01:04

But it found 20 instantly when run without commands.
Denevron
Newbie
*
Offline Offline

Activity: 121
Merit: 0


View Profile
April 02, 2025, 06:22:46 PM
 #8519

@nomachine:

Current cyclone version from github is not working

Quote
# ./Cyclone -b 4 -h f92044c7924e5525c61207972c253c9fc9f086f7 -r 6bd20000000:6bdffffffff -S

================= WORK IN PROGRESS =================
Puzzle/Bits   : 32
Target Hash160: f92044c7924e552...c253c9fc9f086f7
Prefix length : 4 bytes
Mode          : Sequential
CPU Threads   : 12
Mkeys/s       : 36.27
Total Checked : 725503488
Elapsed Time  : 00:00:20
Start Range   : 6bd20000000
End Range     : 6bdffffffff
Progress      : 19.3 %
Progress Save : 0
Stride        : 1
================== FOUND MATCH! ====================
Private Key   : 000000000000000000000000000000000000000000000000000006BD3B27C591
Public Key    : 02A631F9BA0F28511614904DF80D7F97A4F43F02249C8909DAC92276CCF0BCDAED
Total Checked : 856310784
Elapsed Time  : 00:00:23
Speed         : 31.1849 Mkeys/s


It works the same here as in the previous version.

Mutagen updated
https://github.com/NoMachine1/Mutagen/commit/3e6791d69b0146864a853e826828ec8b5852872b


for a couple of seconds it gave 1000 Mkeys/sec, and then the speed dropped  Grin
MrHorse
Newbie
*
Offline Offline

Activity: 6
Merit: 0


View Profile
April 02, 2025, 06:46:52 PM
 #8520

I saw you discussing this and there are a couple issues. You do realize you are searching a puzzle and range that was solved.

I appreciate the concern. This is how I test the software before it goes onto a large cluster to make sure it is actually working and produces known result. Consider this being a sanity check like 2+2 should produce 4.

It is possible to get billions of keys per sec on midrange store bought pc. There are way better methods than what you are using. If you are interested in getting involved in the puzzle there are much better ways with much better results even using cpu. To hit billions you need to use a GPU a 3060 or equivalents will hit billion+ per second. If advanced you can get it up to 10 billion with more advanced methods. Look at kangaroo and bitcrack and vanitysearch.

I appreciate the concern #2! None of the machines that run the code have the GPUs in them, the hardware is quite old. However, the cluster size is currently 985 systems, each has 2x 2650v4.

Code:
CPU Threads   : 48
Mkeys/s       : 76.83

This is (76.83 * 985) / 1000 = ~75.67 Gkeys/s
Pages: « 1 ... 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 [426] 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 ... 654 »
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!