Akito S. M. Hosana
Jr. Member
Offline
Activity: 420
Merit: 8
|
 |
March 13, 2025, 07:01:12 AM |
|
I see you're started with the modification. Just to let you know in advance, I don't use #include "p2pkh_decoder.h" or p2pkh_decoder. Using them costs around 10-15 Mkeys/s in performance. Comparing HASH160 directly is much faster than decoding to a P2PKH address and then comparing. Additionally, it will be even slower if the comparison is based on the decoded address.
So, the fastest way would be to compare public addresses directly without any hashing? And from Cyclone, we get Kangaroolone. 😄
|
|
|
|
|
|
nomachine
|
 |
March 13, 2025, 07:16:26 AM Last edit: March 13, 2025, 07:59:16 AM by nomachine |
|
I see you're started with the modification. Just to let you know in advance, I don't use #include "p2pkh_decoder.h" or p2pkh_decoder. Using them costs around 10-15 Mkeys/s in performance. Comparing HASH160 directly is much faster than decoding to a P2PKH address and then comparing. Additionally, it will be even slower if the comparison is based on the decoded address.
So, the fastest way would be to compare public addresses directly without any hashing? Yes, if the script is almost the same, then it compares the first or last 4 bytes of the public key, similar to this: dividing the batch into 512 keys, SIMD, etc. And it runs on my processor at over 300Mkeys/s.
|
BTC: bc1qdwnxr7s08xwelpjy3cc52rrxg63xsmagv50fa8
|
|
|
Bram24732
Member

Offline
Activity: 322
Merit: 28
|
 |
March 13, 2025, 08:55:10 AM |
|
You intend to throw a coin 100 times. You have 50 tails after 90 throws. Do you have more wins if you throw the last 10 now or if you wait 10 minutes ?
Your methods are assuming waiting 10 min gives better odds.
|
I solved 67 and 68 using custom software distributing the load across ~25k GPUs. 4090 stocks speeds : ~8.1Bkeys/sec. Don’t challenge me technically if you know shit about fuck, I’ll ignore you. Same goes if all you can do is LLM reply.
|
|
|
|
kTimesG
|
 |
March 13, 2025, 09:33:44 AM |
|
You intend to throw a coin 100 times. You have 50 tails after 90 throws. Do you have more wins if you throw the last 10 now or if you wait 10 minutes ?
Your methods are assuming waiting 10 min gives better odds.
You take 100 people to throw the coin. You put some tag on each of them, but to make it fun you use numbers from 1 to 100. You invite them one by one, based on their number tag, to publish their result, but if they got a tail, you skip the next person and add them to a waiting list. After you've got more tails than expected, you start going through the waiting list. Efficiency 
|
Off the grid, training pigeons to broadcast signed messages.
|
|
|
Bram24732
Member

Offline
Activity: 322
Merit: 28
|
 |
March 13, 2025, 11:32:50 AM |
|
You intend to throw a coin 100 times. You have 50 tails after 90 throws. Do you have more wins if you throw the last 10 now or if you wait 10 minutes ?
Your methods are assuming waiting 10 min gives better odds.
You take 100 people to throw the coin. You put some tag on each of them, but to make it fun you use numbers from 1 to 100. You invite them one by one, based on their number tag, to publish their result, but if they got a tail, you skip the next person and add them to a waiting list. After you've got more tails than expected, you start going through the waiting list. Efficiency  Love those extra steps
|
I solved 67 and 68 using custom software distributing the load across ~25k GPUs. 4090 stocks speeds : ~8.1Bkeys/sec. Don’t challenge me technically if you know shit about fuck, I’ll ignore you. Same goes if all you can do is LLM reply.
|
|
|
tmar777
Newbie
Offline
Activity: 33
Merit: 0
|
 |
March 13, 2025, 03:51:57 PM |
|
Can someone please explain all these "methods" of finding the prefixes? Is it only me who believes that this is nonsense? I have read so many posts here and still I can't understand why you have chosen this path?
|
|
|
|
|
dastic
Jr. Member
Offline
Activity: 35
Merit: 1
|
 |
March 13, 2025, 04:13:09 PM |
|
Can someone please explain all these "methods" of finding the prefixes? Is it only me who believes that this is nonsense? I have read so many posts here and still I can't understand why you have chosen this path?
It makes no sense, it just feels nice when you find it.... but the result is the same as random scanning.
|
|
|
|
|
damiankopacz87
Newbie
Offline
Activity: 16
Merit: 0
|
 |
March 13, 2025, 04:17:05 PM |
|
Hello,
Is there any program available for bruteforce (as BitCrack) which can be feeded with txt file with list of selected private keys (binary)?
Best Raegards Damian
|
|
|
|
|
dastic
Jr. Member
Offline
Activity: 35
Merit: 1
|
 |
March 13, 2025, 04:22:10 PM |
|
Hello,
Is there any program available for bruteforce (as BitCrack) which can be feeded with txt file with list of selected private keys (binary)?
Best Raegards Damian
you could convert binary keys to hex easily and then run keyhunt
|
|
|
|
|
|
mcdouglasx
|
 |
March 13, 2025, 04:43:20 PM |
|
I'm sharing five probability books for anyone who finds it useful to learn about it. Probability is a beautiful mathematical resource that shows how ignorant some of us can be about things beyond our understanding:
1. "Introduction to Probability" by Dimitri P. Bertsekas and John N. Tsitsiklis 2. "Probability: A Lively Introduction" by Henk Tijms 3. "A First Course in Probability" by Sheldon Ross 4. "Probability and Statistics for Engineers and Scientists" by Ronald E. Walpole, Raymond H. Myers, Sharon L. Myers, and Keying E. Ye 5. "An Introduction to Probability Theory and Its Applications" by William Feller
|
|
|
|
Akito S. M. Hosana
Jr. Member
Offline
Activity: 420
Merit: 8
|
 |
March 13, 2025, 04:52:07 PM |
|
Yes, if the script is almost the same, then it compares the first or last 4 bytes of the public key, similar to this: dividing the batch into 512 keys, SIMD, etc. And it runs on my processor at over 300Mkeys/s.
Any chance you’d be willing to "accidentally" paste that code here? I promise I won’t tell anyone… except my CPU, which is very trustful. 
|
|
|
|
|
damiankopacz87
Newbie
Offline
Activity: 16
Merit: 0
|
 |
March 13, 2025, 05:00:11 PM |
|
you could convert binary keys to hex easily and then run keyhunt
Hmmm, I am not sure if Keyhunt can do that. Just to be clear. I want to check .txt file of eg. 1 000 000 hypothetic 256bit private keys (not consecutive, more like random) against list of addreses. Keyhunt can't do that I think. Best Regards Damian
|
|
|
|
|
zahid888
Member

Online
Activity: 335
Merit: 24
the right steps towards the goal
|
 |
March 13, 2025, 05:09:18 PM |
|
Thanks in Advance  I see you're started with the modification. Just to let you know in advance, I don't use #include "p2pkh_decoder.h" or p2pkh_decoder. Using them costs around 10-15 Mkeys/s in performance. Comparing HASH160 directly is much faster than decoding to a P2PKH address and then comparing. Additionally, it will be even slower if the comparison is based on the decoded address. The --prefix argument is not being used in the script to filter addresses based on a specific prefix. // You need function like this to extract the prefix from a P2PKH address std::string extractPrefix(const std::string& address, size_t prefixLength) { return address.substr(0, prefixLength); }
// Inside the parallel section std::string generatedAddress = P2PKHDecoder::getAddressFromHash160(localHashResults[j]); std::string generatedPrefix = extractPrefix(generatedAddress, prefixFilter.length());
if (generatedPrefix == prefixFilter) { // Prefix matches, now check if the address matches the target __m128i cand16 = _mm_loadu_si128(reinterpret_cast<const __m128i*>(localHashResults[j])); __m128i cmp = _mm_cmpeq_epi8(cand16, target16); if (_mm_movemask_epi8(cmp) == 0xFFFF) { // Checking last 4 bytes (20 - 16) if (!matchFound && std::memcmp(localHashResults[j], targetHash160.data(), 20) == 0) { #pragma omp critical { if (!matchFound) { matchFound = true; auto tEndTime = std::chrono::high_resolution_clock::now(); globalElapsedTime = std::chrono::duration<double>(tEndTime - tStart).count(); mkeysPerSec = (double)(globalComparedCount + localComparedCount) / globalElapsedTime / 1e6;
// Recovering private key Int matchingPrivateKey; matchingPrivateKey.Set(¤tBatchKey); int idx = pointIndices[j]; if (idx < 256) { Int offset; offset.SetInt32(idx); matchingPrivateKey.Add(&offset); } else { Int offset; offset.SetInt32(idx - 256); matchingPrivateKey.Sub(&offset); } foundPrivateKeyHex = padHexTo64(intToHex(matchingPrivateKey)); Point matchedPoint = pointBatch[idx]; foundPublicKeyHex = pointToCompressedHex(matchedPoint); foundWIF = P2PKHDecoder::compute_wif(foundPrivateKeyHex, true); } } #pragma omp cancel parallel } localComparedCount++; } else { localComparedCount++; } } Implementing the stride option is even more challenging in such a complex AVX2 implementation, especially with so many if statements and batch operations. I appreciate the suggestion! But trust me, it's not just a small tweak—it's like trying to upgrade a bicycle into a spaceship. The whole repo needs a serious overhaul just to make it work, and for a beginner like me, that’s like climbing Mount Everest in flip-flops!  Anyway, thanks for the idea!"
|
1BGvwggxfCaHGykKrVXX7fk8GYaLQpeixA
|
|
|
madogss
Newbie
Offline
Activity: 53
Merit: 0
|
 |
March 13, 2025, 05:19:17 PM |
|
you could convert binary keys to hex easily and then run keyhunt
Hmmm, I am not sure if Keyhunt can do that. Just to be clear. I want to check .txt file of eg. 1 000 000 hypothetic 256bit private keys (not consecutive, more like random) against list of addreses. Keyhunt can't do that I think. Best Regards Damian if the list is that small then import secp256k1 as ice
keys = [] addresses = []
with open("keys.txt", 'r') as vf: for line in vf: for word in line.split(): keys.append(word)
with open("addresses.txt", 'r') as vf: for line in vf: for word in line.split(): addresses.append(word)
for i in range(len(addresses)): for k in range(len(keys)): if ice.privatekey_to_address(0, True, keys[k]) == addresses[i]: with open("Found.txt", "w") as file: file.write(f"Found: {keys[k]} Address: {addresses[i]}") file.close() print("FOUND") exit()
|
|
|
|
|
|
nomachine
|
 |
March 13, 2025, 05:36:58 PM Last edit: March 27, 2025, 01:53:20 AM by nomachine |
|
Any chance you’d be willing to "accidentally" paste that code here? I promise I won’t tell anyone… except my CPU, which is very trustful.  https://github.com/NoMachine1/CycloneThis version uses Xoshiro256plus. I have about ~380M keys/s. Almost feels like smoke is coming out of the 7985WX! 
|
BTC: bc1qdwnxr7s08xwelpjy3cc52rrxg63xsmagv50fa8
|
|
|
|
kTimesG
|
 |
March 13, 2025, 06:26:27 PM |
|
This version uses Xoshiro256plus. I have about ~380M keys/s. Almost feels like smoke is coming out of the 7985WX!  Can you explain how is this useful? Does it do H160(pubKey)? If so, what's the power consumption while you're getting those 380 MK/s ? H160/W is more meaningful than some absolute number. For example, 15.5 Mh/watt for a single RTX 4090.
|
Off the grid, training pigeons to broadcast signed messages.
|
|
|
btc11235
Jr. Member
Offline
Activity: 35
Merit: 1
|
 |
March 13, 2025, 06:38:36 PM |
|
git clone https://github.com/Dookoo2/Cyclone.git well, now I have a new project: trying to figure out how I can compile the SECP256K1 & H160 portions of that project into a DLL I can then import into my C# script, in the hopes that it's a lot fast than the lib I'm using now 
|
|
|
|
|
Akito S. M. Hosana
Jr. Member
Offline
Activity: 420
Merit: 8
|
 |
March 13, 2025, 06:48:05 PM Last edit: March 13, 2025, 07:08:24 PM by Akito S. M. Hosana |
|
This version uses Xoshiro256plus. I have about ~380M keys/s. Almost feels like smoke is coming out of the 7985WX!  Thanks ! I have 60Mkeys/s on AMD Ryzen 5 3600  Can you explain how is this useful? Does it do H160(pubKey)?
This is my fault. It only outputs public keys(which is what I asked for). 
|
|
|
|
|
|
kTimesG
|
 |
March 13, 2025, 07:10:35 PM |
|
Can you explain how is this useful? Does it do H160(pubKey)?
This is my fault. It only outputs public keys(what I asked for).  And this helps with what? I see things related to AVX2 and stuff, wasn't this useful for hashing? If you only want public keys, for whatever reason, there are much faster options than that.
|
Off the grid, training pigeons to broadcast signed messages.
|
|
|
Akito S. M. Hosana
Jr. Member
Offline
Activity: 420
Merit: 8
|
 |
March 13, 2025, 07:19:41 PM |
|
And this helps with what? I see things related to AVX2 and stuff, wasn't this useful for hashing?
If you only want public keys, for whatever reason, there are much faster options than that.
You're right. I should have asked him for the fastest version for hashing. The problem is that I don't even know what to do when I have a weak processor. 
|
|
|
|
|
|