In all seriousness, how many (sticking to averages of math / the curve) BY8GQbnueY prefixes are in a 66 bit space? I come up with 171. Is that correct or close to what others think / know?
And for the prefix, BY8GQbnue, a little less than 10k inside a 66 bit space?
I think there are more! for BY8GQbnueY, I came up with 425 and for BY8GQbnue, 24688. These results are based on the difficulty that Vanitysearch shows...
^ These are the correct values. Feel free to correct me.
Note: this does not help with anything, the real result is the one obtained after actually traversing the entire desired subset of 2**66 hashes (for example, the sequential target range for Puzzle 67), and counting the observed prefixes. So the deviation between ideal and real result can be magnitudes larger or lower.
Also, it should be a very quick realization that
some prefixes are much more important then others, due to the base change (binary <-> base58).
min = base58.b58decode('1BY8GQbnueY11111111111111111111111').hex()
max = base58.b58decode('1BY8GQbnueYzzzzzzzzzzzzzzzzzzzzzzz').hex()
# Get total possibilities, and remove checksum bytes
n = (int(max, 16) - int(min, 16) + 1) >> 32
# Get AVERAGE count over ANY 66 bits set
n = n / (2**(160 - 66))
print(n)
425.6615266237625
min = base58.b58decode('1BY8GQbnue111111111111111111111111').hex()
max = base58.b58decode('1BY8GQbnuezzzzzzzzzzzzzzzzzzzzzzzz').hex()
# Get total possibilities, and remove checksum bytes
n = (int(max, 16) - int(min, 16) + 1) >> 32
# Get AVERAGE count over ANY 66 bits set
n = n / (2**(160 - 66))
print(n)
24688.368544178225
Agree, it's all hypotheticals AND the real numbers would change based on the specific 66 bit range ran.
I guess my "issue" with the above math, taking the 10 character prefix, as an example:
If you ran this:
min = base58.b58decode('1BY8GQbnueY11111111111111111111111').hex()
max = base58.b58decode('1BY8GQbnueYzzzzzzzzzzzzzzzzzzzzzzz').hex()
for every possible 10 character prefix, from:
min = base58.b58decode('1111111111111111111111111111111111').hex()
max = base58.b58decode('11111111111zzzzzzzzzzzzzzzzzzzzzzz').hex()
through:
min = base58.b58decode('1zzzzzzzzzz11111111111111111111111').hex()
max = base58.b58decode('1zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz').hex()
and each one spits out "425", then that is more than 2.5 times larger than the 66 bit range. 58^10 x 425 / 2^66 = 2.48
I know this is all hypotheticals, but I struggle with the above formula because of how much larger it actually is versus a 66 bit range.
Maybe I will run some smaller, but quicker tests, just to see how close each formula is.