Guys come on, seeing a few things like puzzle 66, sha256 double, base58 in your scripts is a turn off.🤣
For how long you are going to stick with finding addresses? I believe I have said this before, you don't need to go beyond rmd160 check, just generate public key, do a sha256 and a rmd160 then compare with rmd160 of puzzle, when you convert rmd160 to address, you are doing the following which is unnecessary : adding network byte + sha256d + taking checksum + adding checksum + encoding to base58. So 5 extra steps, 5 useless operations per key.
You can condense the code into a one-liner to calculate the RIPEMD-160 hash from a decimal private key as follows:
import sys, random, hashlib, ecdsa
while True:
dec = random.randint(36893488147419103231, 73786976294838206463)
h160 = hashlib.new('ripemd160', hashlib.sha256(ecdsa.SigningKey.from_string((b'\x00' * 32)[:-len(dec.to_bytes((dec.bit_length() + 7) // 8, 'big'))] + dec.to_bytes((dec.bit_length() + 7) // 8, 'big'), curve=ecdsa.SECP256k1).get_verifying_key().to_string("compressed")).digest()).digest()
message = "\r{}".format(h160.hex());messages = [];messages.append(message);output = "\033[01;33m" + ''.join(messages) + "\r";sys.stdout.write(output);sys.stdout.flush()
if h160.hex()=='20d45a6a762535700ce9e0b216e31994335db8a5':print(dec);break
But this means absolutely nothing in terms of shortening the task.
5, 50, 500, even 1000 Mkeys means nothing realistically.
We need much, much, much more speed
