Вопрос такой, вот биткоин создает используя ecdsa, приватный и публичный ключ.
После чего публичный ключ хешируется и является адресом.
тогда, как нода проверяет подпись сообщения, ей же нужен публичный ключ, а у нас только хеш от ключа?
В двух словах: при трате биткойнов с адреса в транзакцию записывается и подпись, и публичный ключ
Сперва проверяется что публичный ключ соответствует адресу (своему хэшу), а потом проверяется, что
подпись сообщения сделана именно нужным приватным ключом.
Вот я вам примерчик могу показать, чтоб сразу понятно было.
Берем простенькую транзакцию
https://blockchain.info/tx/c46e908dd1b48d718c6bb9457da7099e7c32b13f59362ed3dfc348ea809d4644?show_adv=trueТам внизу расшифровка входов и выходов
Длинная строчка 304402202fbc6ad846593b57... - это подпись
Длинная строчка 04561db13f22e2c51c09507f3... - это публичный ключ адреса 1AF4s8Rte...
Бонус: вообще-то публичный ключ можно воссоздать по подписи сообщения. Но это ресурсоемкая операция,
не факт, что Сатоши про нее знал, поэтому в исходном биткойне это не предусмотрено, а разработчики
впоследствии решили что скорость работы важнее, чем экономия байтов на диске. Можете погуглить на эту тему
"ecdsa recover public key"