p2pkh против p2pk, сохраняющий открытый ключ закрытым

Я только что начал изучать биткойн-программирование с помощью книги Джимми Сонга « Программирование биткойнов» . Джимми говорит, что некоторые из преимуществ p2pkh по сравнению с p2pk включают в себя:

  1. меньший ScriptPubKey

  2. держать свой открытый ключ в секрете

Я полностью согласен с первым преимуществом, но у меня есть небольшие проблемы со вторым преимуществом.

Джимми объясняет, что если бы ECDSA был взломан, можно было бы украсть биткойн у другого лица, потому что они могли бы найти свой открытый ключ в ScriptPubKey (если они использовали p2pk) и создать действительную подпись.

У меня такой вопрос: если все, что мы делаем, — это перенос открытого ключа из ScriptPubKey в ScriptSig, какую безопасность это дает нам, если ScriptSig также доступен? Если бы я потратил UTXO, который был сделан для моего хэша открытого ключа, мой открытый ключ был бы общедоступным. Разве злоумышленник, взломавший ECDSA, не мог продолжать искать UTXO ScriptPubKey с моим хешем, скопировать мой открытый ключ из предыдущей транзакции, сгенерировать подпись и украсть мой биткойн? Мне кажется, что мой открытый ключ является закрытым, пока я ничего не трачу.

Конечно, я знаю, что что-то упускаю :) Любая помощь приветствуется.

Вы правы, публичный ключ раскрывается только после того, как вы проводите с адреса, до этого виден только хэш публичного ключа. Это одна из причин, по которой вам не следует повторно использовать один и тот же адрес, просто создавайте новый адрес каждый раз, когда вы хотите получить монеты, и каждый раз отправляйте сдачу на новый адрес.

Ответы (1)

Биткойн-адреса и открытый ключ в идеале должны использоваться только один раз. Таким образом, ваше время раскрытия открытого ключа в P2PKH — это время между моментом совершения траты и ее подтверждением. Для P2PK открытый ключ всегда всем известен. Между ними есть значительная разница.

Попался, получатель любой транзакции должен передавать свой открытый ключ плательщику перед каждой транзакцией? Кажется хлопотным, если между ними много мелких транзакций...
Их адрес, да, не публичный ключ.
Я думаю, что это преимущество сохранения секретности публичного ключа в лучшем случае очень незначительное, а чаще иллюзия. Почти все интересное, кроме простых платежей (multisig, Lightning и т. д.), связано с передачей ваших открытых ключей не совсем доверенным сторонам. Безопасность Биткойна зависит от того, что ECDSA не поддается взлому даже при раскрытии открытых ключей; насколько я понимаю, «пабки только на короткое время выставлены напоказ, это преимущество» - это карго-культ.
Я не согласен. Это хорошее случайное свойство адресов, которые в лучшем случае не используются повторно, а не что-то конкретное.
Верно; конечно, хранение открытого ключа скрытым дольше никогда не является потерей, и потенциально есть некоторые случаи, когда это может принести небольшую пользу. Однако из-за того, что об этом говорят в некоторых местах, это кажется гораздо более важным, чем оно есть на самом деле.