Почему вы дважды хешируете открытый ключ? Есть ли преимущества для безопасности в абстрагировании от открытого ключа? Это потому, что адрес может представлять несколько вещей? Я что-то упускаю.
Могли бы вы теоретически отправить биткойны напрямую на открытый ключ?
Да, вы могли отправлять биткойны напрямую на открытый ключ: на самом деле, как Pay-to-PubKey (P2PK), так и Pay-to-PubKey-Hash (P2PKH) были представлены в первом выпуске биткойнов. IIRC, P2PK до сих пор иногда используется для транзакций Coinbase.
Транзакции P2PK немного больше для выходов, но значительно меньше для входов.
Одним из преимуществ P2PKH является то, что адреса короче открытых ключей. Это позволяет представлять адреса 34 символами в Base58check .
Если бы существовал стандарт для представления открытых ключей в Base58check, они, вероятно, имели бы 51 символ. Возможно, легче набрать набор символов, состоящий всего из 34 символов, чем тот, который состоит из 51 символа.
Но на самом деле адреса используются потому, что для них есть стандарт, а для открытых ключей его нет. Почему так, я не знаю.
Вся заслуга Питера, который предоставил знания, чтобы исправить мои ошибки. ;)
Также см. этот связанный с этим вопрос: Почему реализация майнера по умолчанию использует pay-to-pubkey?
Как правильно указал @Murch, действительно возможно отправить биткойн либо на открытый ключ, либо на хэш открытого ключа. Первоначальной мотивацией использования хэшей открытых ключей было сокращение размера адреса. Публичные ключи в несжатом виде имеют длину 64 байта, тогда как RIPE-MD выводит 20 байтов (+5 байтов контрольной суммы и версии).
Интересно, что Сатоши не знал, что открытые ключи могут быть сжаты до 32 байтов + 1 бит ( почему Биткойн поддерживает как сжатые, так и несжатые ключи/адреса? ), и поэтому выбрал хэши как способ получения сжатых адресов. Последствия безопасности интересны:
В отличие от открытых ключей, хэш-функции, такие как SHA-256 и RIPE-MD, считаются квантово-устойчивыми. Таким образом, квантовый злоумышленник может эффективно получить закрытый ключ для любого открытого ключа Биткойн, но не для адреса P2PKH. Однако всякий раз, когда транзакция тратится с адреса P2PKH, она раскрывает открытый ключ как часть скрипта.
С другой стороны, общее количество возможных адресов составляет 2 ^ 160, тогда как общее количество открытых ключей составляет примерно 2 ^ 256. Теоретически это означает, что адреса менее защищены от атак грубой силы, чем открытые ключи. Очевидно, что атака полным перебором абсолютно невозможна для любого типа адреса.
английский
ихтквот
английский
l
и что-1
то в этом роде, чтобы потом было легче читатьихтквот
английский
Марч
Дэвид Шварц