Я только что начал изучать биткойн-программирование с помощью книги Джимми Сонга « Программирование биткойнов» . Джимми говорит, что некоторые из преимуществ p2pkh по сравнению с p2pk включают в себя:
меньший ScriptPubKey
держать свой открытый ключ в секрете
Я полностью согласен с первым преимуществом, но у меня есть небольшие проблемы со вторым преимуществом.
Джимми объясняет, что если бы ECDSA был взломан, можно было бы украсть биткойн у другого лица, потому что они могли бы найти свой открытый ключ в ScriptPubKey (если они использовали p2pk) и создать действительную подпись.
У меня такой вопрос: если все, что мы делаем, — это перенос открытого ключа из ScriptPubKey в ScriptSig, какую безопасность это дает нам, если ScriptSig также доступен? Если бы я потратил UTXO, который был сделан для моего хэша открытого ключа, мой открытый ключ был бы общедоступным. Разве злоумышленник, взломавший ECDSA, не мог продолжать искать UTXO ScriptPubKey с моим хешем, скопировать мой открытый ключ из предыдущей транзакции, сгенерировать подпись и украсть мой биткойн? Мне кажется, что мой открытый ключ является закрытым, пока я ничего не трачу.
Конечно, я знаю, что что-то упускаю :) Любая помощь приветствуется.
Биткойн-адреса и открытый ключ в идеале должны использоваться только один раз. Таким образом, ваше время раскрытия открытого ключа в P2PKH — это время между моментом совершения траты и ее подтверждением. Для P2PK открытый ключ всегда всем известен. Между ними есть значительная разница.
Майк Д