Revisting эту тему. При изменении протокола, чтобы позволить операции с неявным восстановлением открытого ключа является целесообразным было бы критическое изменение, поэтому я понимаю, не двигаясь по этому вопросу. Однако нет абсолютно никаких оснований для клиента Bitcoin-ядро требуют адресов при проверке подписи. Публичное может быть извлечены из подписи PubKeyHash, полученной из этого, а затем адреса генерируется из этого.
Можно ли думать о какой-либо причине, почему клиент Bitcoin требует пользователю предоставить адрес (что-то он может и уже делает вычисление)?Я хотел бы добавить интерфейс в основном клиенте для этого раздела не дружественный к пользователю. Проверочной подписи пользователь должен скопировать и вставить три отдельных компонентов в трех различных ящиков (один из которых не имеет смысла). Как насчет единой копии и вставки одного подписанного блока сообщений?
Почему бы не пользователь поставлять сообщение & подпись (предпочтительно в единой закодированной форме (т.е. похожи на PGP подписанного сообщения), а затем клиент проверяет подпись и вычисляет и отображает результаты?
Пример, который ставит все это вместе.
вход
-----НАЧАТЬ Bitcoin помеченное сообщение -----
Это пример подписанного сообщения.
-----НАЧАТЬ Bitcoin ПОДПИСИ -----
HHfUi9n72BxXottUu + AbU4iS0QQLxPtAtuydgRcjc + XoY9Hzw8u6Z + wbzDV + owVLiQR85OwioPcUVJcT + LHjqCE =
-----END Bitcoin SIGNATURE -----
и клиент отвечает либо
Сообщение проверяется, чтобы быть подписаны 1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1Tили
Сообщение не проверено. Пожалуйста, проверьте подписанное сообщение копируется в ней цельность, включая начальные и конечные строки.Brainwallet.org есть что-то подобное и более интуитивный, чем клиент Bitcoin Core. Тем не менее, даже сайт brainwallet добавляет "предупреждение" что не имеет смысла и расплывчатым.
Сообщение проверяется, чтобы быть от 1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T (но адрес не был найден в подписи!)-----НАЧАТЬ Bitcoin помеченное сообщение -----
Это пример подписанного сообщения.
-----НАЧАТЬ Bitcoin ПОДПИСИ -----
HHfUi9n72BxXottUu + AbU4iS0QQLxPtAtuydgRcjc + XoY9Hzw8u6Z + wbzDV + owVLiQR85OwioPcUVJcT + LHjqCE =
-----END Bitcoin SIGNATURE -----
Адрес не найден в подписи? Это плохо? Я должен беспокоиться? Могу ли я быть мошенническим? Для большинства пользователей, желтый цвет осторожности. Ожидаемый результат будет окончательным "УСПЕХ" (И зеленый), но вместо того, чтобы есть это неоднозначный частичный успех. "желтый" ответ бессмысленно, поскольку каждый может добавить адрес после подписи создается, чтобы удалить предупреждение. Так что предупреждает о. Добавление адреса 1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T чуть выше подписи выглядит следующим образом и обеспечивает ожидаемый "хорошо" ответ.
Сообщение проверяется, чтобы быть от 1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T-----НАЧАТЬ Bitcoin помеченное сообщение -----
Это пример подписанного сообщения.
-----НАЧАТЬ Bitcoin ПОДПИСИ -----
1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T
HHfUi9n72BxXottUu + AbU4iS0QQLxPtAtuydgRcjc + XoY9Hzw8u6Z + wbzDV + owVLiQR85OwioPcUVJcT + LHjqCE =
-----END Bitcoin SIGNATURE -----
"осторожность" Ответ только подрывает точку, даже позволяя подписи, которые не включают в себя (ненужный) адрес. Представьте, что вы компания, которая отправляет подписанные сообщения клиентов. Позволяет использовать правило 80/20. Если исключить адрес 80% ваших пользователей поймут "предупреждение" не имеет смысла, однако это означает, что вы собираетесь запутать 20% ваших клиентов, а это означает дополнительные расходы и работы. Так почему бы не просто включить (бессмысленный) адрес, он показывает, как зеленый.
Тем не менее поведение не так плохо, как основной клиент, который отказывается проверять подписи и выдает сообщение об ошибке.