В настоящее время у меня есть момент блондинки.
ScriptPubKey предоставляет хешированную версию открытого ключа получателя.
scriptPubKey OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG
Однако, если я даю кому-то свой биткойн-адрес, чтобы отправить мне деньги, как отправитель получит мой открытый ключ, а затем хэширует его? Как pubKeyHash != мой биткойн-адрес
Я, наверное, забыл что-то очень очевидное, но этим утром у меня закружилась голова.
Адреса на самом деле являются просто сокращениями для конкретных скриптов. Стандартный тип адреса (начинающийся с «1» в основной сети) фактически соответствует точному типу сценария, который вы указали выше.
Если вы декодируете такой адрес с помощью base58, вы получите строку байтов вида 0x00 + [20-байтовый хэш] + [4-байтовая контрольная сумма]. Соответствующий скрипт — OP_DUP OP_HASH160 [20-байтовый хеш] OP_EQUALVERIFY OP_CHECKSIG.
Таким образом, ваш адрес действительно содержит хэш открытого ключа.
Отправителю не нужно знать ваш публичный ключ, а только предоставляемый вами биткойн-адрес, который каждый раз может быть разным. Вы используете открытый ключ позже, чтобы выкупить средства и отправить их на другой адрес.
Тим С.