For the really smart people out there...I had read somewhere that a pubkey may have 2 X coordinates, maybe 3 X coordinates, can't really remember.
Each pubkey has only 1 X coordinate and 1 Y coordinate. And only 1 private key.
There are 2 pubkeys that share the same X coordinate (for each valid X coordinate) but they have different Y coordinates:
if A = (X,Y) then B = -A = (X, p-Y)
(p = 2^256 - 2^32 - 2^9 - 2^8 - 2^7 - 2^6 - 2^4 - 1)
There are 3 pubkeys that share the same Y coordinate (for each valid Y coordinate) but they have different X coordinates:
if A = (X,Y) then B = k*A = (beta*X, Y) and C = k*k*A = (beta*beta*X, Y)
(k = 0x5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72
and beta = 0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee)
There are about 2^256 points on secp256k1, (to be precise n = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141) and Fp (the field of the coordinates X e Y) has about the same size;
that means that about 1/3 of the all possible values of Y are valid Y coordinates (are coordinates of a point/pub key) and about 1/2 of all the possible values of X are valid X coordinates.
That's all.
that means that about 1/3 of the all possible values of Y are valid Y coordinates (are coordinates of a point/pub key) and about 1/2 of all the possible values of X are valid X coordinates.
Maybe we can use that as an optimization and go through all the X values, and check that (X
2 + 7) mod p gives a cubed number which would imply a valid Y. This would eliminate half of the search space. Similarly we can go through all the Y values and calculate Y
3 mod p is a square number which implies a valid X and eliminate 2/3s of the search space.
Since the invalid points derived for each X and Y don't overlap, we have already removed 1/2 * 2/3 = 1/3 of the total possible search space like that.
I know its been a month since this was posted, but this couldn't be taking in consideration for kangaroo?