If I have a x coordinate without any prefix such as 03 or 02 fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556 will it be possible to compute the correct y coordinate that would be usually generated normally given that private key is smaller that (n - 1) / 2, because public keys after that have same x coordinates but with different y coordinates. If not, can someone explain me how bitcoin public key generation selects the correct y coordinate normally? sorry incase answer was too easy, I am not too knowledgeable about all this stuff.
1 Answer
There is no known relation between the parity of the Y coordinate and any property of the private key (like whether it's in the low or high half).
In BIP340, which defines the Schnorr-based digital signature scheme used in Bitcoin, x-only public keys are used, which just consist of an X coordinate without information about the Y coordinate.
Internally, this scheme treats the Y coordinate as implicitly even (as if there was a 02 in front). This is accomplished by, if the provided signing private key has a corresponding odd Y coordinate, negating the private key (which switches the Y coordinate to even) at signing time.
-
thanks for answering that I tried taking the even keys as correct, and when I try adding the generator point to it, it sometimes goes in the backward direction, is there any way I can generate the next x coordinate from the previous x coordinate without using y coordinate? is it okay to ask questions in comments?– ZetockNov 20 at 0:23
-
If you're going to do point additions, you really need to know both X and Y coordinates. Nov 20 at 1:35