Feb. 7th, 2021

Про биткоин тут хоть кому-то интересно?

Вот как они это делают?

Есть такая транзакция https://www.blockchain.com/btc/tx/f226be68718d94363302cf670aaaabc0f41a6bc81e60bd65f91f7d4067fae212

Она примечательна тем, что в ней сигнатура {r,s} = {0x101, 0x101}

во-первых, это маленькие числа. Во-вторых, они равны. И в третьих - они подходят к публичному ключу.

И кроме того, в транзакции тратится 3 выхода, при этом третий выход - не тот, что первые два. У него другой публичный ключ - но при этом у него та же сигнатура!
Ладно, с этим моментом я еще могу понять дело в том, что при рассчете сигнатуры берется только х-координата, а в каждой х-координате две точки, - положительная и отрицательная (x,y) и (x,-y). Две разных точки - один х.
А раз одинаковый х, то и сигнатура подписи будет одинакова.

Вопрос в том, что они нашли такое k, которое при умножении точки R=k*G дает маленькое R.x
Это явно каое-то криптографическое кунг-фу. Я тоже так хочу уметь.

Ссылка для тех, кто забыл/незнал, как эта сигнатура считается - https://cryptobook.nakov.com/digital-signatures/ecdsa-sign-verify-messages

АПДЕЙТ: похоже, что я знаю. Никакого кунг-фу нет, тут просто все считается заранее.

1. Задаем r,s те, которые мы хотим. И берем точку R'=(r, y). Координату игрек считаем по формулам отсюда https://bitcointalk.org/index.php?topic=644919.msg7205689#msg7205689

2. Дальше, когда у нас есть сообщение, которое надо "подписать", то мы вычисляем его h как двойной sha56

3. И в итоге получается формула с одним неизвестным. И это неизвестное - это публичный ключ!

R' = (h/s) * G + (r/s) * pubKey

тут умножение * - это умножение точки на число, а знак + это сложение точек эллиптической кривой. А (h/s) и (r/s) - это будут какие-то числа.

Отсюда вычисляется публичный ключ. А зная публичный ключ мы знаем кошелек. Отправляем на этот кошелек биткоины. И потом когда мы будем снимать биткоины с этого кошелька, то будет сигнатура с нашими r, s

ps. И все бы хорошо тут, но только h нашей транзакции зависит от предыдущего хеша транзакции. Пока у нас его нет - мы не можем посчитать кошелек, с которого потом биткоины снимать будем. Хм.... Все равно не сходится. Непонимаю.

August 2025

S M T W T F S
     12
34 567 89
10111213141516
17181920212223
24252627282930
31      

Style Credit

Expand Cut Tags

No cut tags