Я новичок в биткойнах, и я пытаюсь понять хеш-код Pay-to-Public-Key-Hash (P2PKH) из книги: Mastering Bitcoin: Unlocking Digital Cryptocurrencies (стр. 127). Я понимаю, что цифровые ключи (которые получены из закрытых ключей) на самом деле не хранятся в сети, а вместо этого хранятся пользователями в кошельке.
Например : Алиса хочет отправить Бобу 1-BTC:
---------------------------------------------------------
| Sender: Hash(alice-public-key) |
| Receiver: Hash(bob-public-key) |
| Amount: 1-BTC |
| Signature: Hash(Encrypt_{alice-private-key}(Message)) |
---------------------------------------------------------
Вопрос :
Итак, как мы можем проверить, что эта транзакция действительна, не имея открытого ключа?
Подпись включает в себя открытый ключ, соответствующий закрытому ключу, с помощью которого была сделана подпись.
Если мы прикрепляем открытый ключ к сообщению, то зачем вообще тратить время на поиск хэша открытого ключа?
Непонятно, что вы подразумеваете под «открытым ключом». О чьем открытом ключе вы говорите? Открытый ключ Боба отсутствует в сообщении.
Мы храним открытые ключи в какой-то централизованной базе данных?
Когда открытый ключ отправляется с подписью, открытый ключ находится в транзакции. Транзакция включается в блок, и этот блок навсегда является частью блокчейна.
Если получатель предоставляет открытый ключ и подтверждает, что транзакция действительна, как другие могут подтвердить, что транзакция была действительной?
Непонятно, что вы имеете в виду под "этим". Чтобы подтвердить транзакцию, вам просто нужно убедиться, что она имеет право требовать средства, на которые она пытается претендовать. Вам все равно, что он делает с этими средствами, просто он имеет право решать, что с ними делать. Так что вам не нужно много знать о получателях — достаточно, чтобы идентифицировать их, когда они приходят за своими средствами. Хэш их открытого ключа делает это.
<SCRIPTSIG>
состоит из подписи "01" (OP_SIGHASHALL) и затем открытого ключа.
Рафаэль Эйнг
Message
это содержится в вашем примере?»