Итак, открываю bitcoin core. Смотрю пункт меню "Проверить сообщение". Надо ввести адрес, сообщение и подпись.
Подпись имеет длину 88-90 символов, но это base64, получается что в оригинале 64 байта. Правильно, ибо подпись для ECDSA-256 имеет размер 512 бит или 64 байта. Всё сходится. Для того, чтобы проверить подпись надо знать публичный ключ. Bitcoin-адрес это не публичный ключ, это сего лишь специально вычисленный хэш, по этому хешу восстановить публичный ключ невозможно.
Вопрос: откуда программа знает публичный ключ? Как она его проверяет? У меня была гипотеза, что этот ключ она находит в блокчейне, но тут загвоздка: а если этот адрес вообще не фигурирует в блокчейне и не было ни одной транзакции с ним?