Значение префикса подписи (v) и восстановление открытого ключа
Как упоминалось в разделе "Структура транзакции", сообщение транзакции не включает поле "от". Это связано с тем, что открытый ключ отправителя может быть вычислен непосредственно из подписи ECDSA. Как только у вас есть открытый ключ, вы можете легко вычислить адрес. Процесс восстановления открытого ключа подписанта называется восстановлением открытого ключа.
Учитывая значения r и s, которые были вычислены в математике ECDSA, мы можем вычислить два возможных открытых ключа.
Сначала мы вычисляем две точки эллиптической кривой, R и R', из значения x координаты r, которое содержится в подписи. Точек две, потому что эллиптическая кривая симметрична относительно оси x, так что для любого значения x есть два возможных значения, которые соответствуют кривой, по одному с каждой стороны оси x.
Из r мы также вычисляем r-1, который является мультипликативной обратной величиной r.
Наконец, мы вычисляем z, который является n младшими битами хэша сообщения, где n - порядок эллиптической кривой.
Два возможных открытых ключа: K1 = r-1 (sR - zG) и: K2 = r-1 (sR' - zG) где: K1 и K2 - это два варианта открытого ключа подписанта. r-1 - это мультипликативная обратная величина значения r подписи. s - значение подписи. R и R' - это два варианта эфемерного открытого ключа Q. z - это n младших битов хэша сообщения. G - точка генератора эллиптической кривой.
Чтобы сделать работу более эффективной, подпись транзакции включает префиксное значение v, которое сообщает нам, какое из двух возможных значений R является эфемерным открытым ключом. Если v четное, то R - правильное значение. Если v нечетное, то это R'. Таким образом, нам нужно вычислить только одно значение для R и только одно значение для K.