Подписание ТХ
Для того, чтобы подписать ТХ, мне нужно:
-
Для того, чтобы подписать ТЙ я должен опубликовать <Публичных> знак равно
где G является точкой генератора
и я также должен опубликовать подпись = <сиг> = (R, S)
где s представляет собой случайное число:
генерирует случайное число RN, и вычислить s = RNX как это:
RN * G = (RNX, RNY)
и г является сигнатурный множитель построен с txHash, RNX,
то сценарий подписи
Проверьте ТХ
Если у меня есть вся информация о R, S = RNX, RNY, X, Y, я могу подписать ТХ и проверить его достоверность с моим сценарием
НО в транзакции Bitcoin иногда X и Y заданы: 04 X Y
а иногда только X дается: 02 X или 03 X
также только s = RNX дается и не RNY.
Поэтому для того, чтобы проверить, ТЕ, мне нужно вычислить Y и RNY
Вопрос 1) есть способ сделать это без Y и / или RNY?
Вопрос 2) Существует алгоритм приведен упрощенный найти Y когда
вычисления квадратных корней по модулю р, когда р = 3 (те 4).
Я проверил, что это условие выполнено с р используется в Bitcoin.
Я прав ? Могу ли я использовать этот алгоритм?
если р = 3 (по модулю 4) решение у ^ 2 = х ^ 3 + 4 = а (по модулю р)
имеет вид у = а ^ (к + 1)
Доказательство: если р = 4k + 3, то установить у = а ^ (к + 1) по модулю р, то
у ^ 2 = а ^ (2k + 2) = а ^ (2k + 1), а = а ^ ((р-1) / 2) = а (той р)
по критерию Эйлера. Таким образом, у = а ^ (к + 1) является решением.
Вопрос 3) Есть ли риск столкновения при нахождении Y или RNY?
В простом примере (http://www.royalforkblog.com/2014/09/04/ecc/)
р = 29 и privKey = 7 => 7 * G = (17,9)
Если у меня есть только X = 17 У меня есть 2 варианта для Y: (17,9) или (17,20)
благодаря