Как ScriptPubKey узнает открытый ключ биткойн-адреса?

В настоящее время у меня есть момент блондинки.

ScriptPubKey предоставляет хешированную версию открытого ключа получателя.

scriptPubKey OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG

Однако, если я даю кому-то свой биткойн-адрес, чтобы отправить мне деньги, как отправитель получит мой открытый ключ, а затем хэширует его? Как pubKeyHash != мой биткойн-адрес

Я, наверное, забыл что-то очень очевидное, но этим утром у меня закружилась голова.

«pubKeyHash != мой биткойн-адрес» Здесь вы ошибаетесь. Адрес содержит хэш открытого ключа, а также номер версии и контрольную сумму.

Ответы (2)

Адреса на самом деле являются просто сокращениями для конкретных скриптов. Стандартный тип адреса (начинающийся с «1» в основной сети) фактически соответствует точному типу сценария, который вы указали выше.

Если вы декодируете такой адрес с помощью base58, вы получите строку байтов вида 0x00 + [20-байтовый хэш] + [4-байтовая контрольная сумма]. Соответствующий скрипт — OP_DUP OP_HASH160 [20-байтовый хеш] OP_EQUALVERIFY OP_CHECKSIG.

Таким образом, ваш адрес действительно содержит хэш открытого ключа.

Я использовал это для теста Lenschulwitz.com/base58 , на случай, если это кому-то поможет .

Отправителю не нужно знать ваш публичный ключ, а только предоставляемый вами биткойн-адрес, который каждый раз может быть разным. Вы используете открытый ключ позже, чтобы выкупить средства и отправить их на другой адрес.

биткойн-адрес является открытым ключом.
Нет, вы путаете биткойн-адрес с открытым ключом. Вы можете создать множество разных биткойн-адресов, используя свой открытый ключ и закрытый ключ. Вам понадобится открытый ключ, чтобы выкупить средства транзакции.