Различия между адресами с одинаковым хешем 20B (Hash 160)

Почему один и тот же Hash 160 имеет разный баланс в сети Биткойн?

Хэш 160 это B0D5D1FB94B76B39EE82771027BEFD17131042FA.

В одном случае это адрес 1H825FgspbkznbiGAnAjFjan7dmYFjpsFeс нулевым балансом.

Во втором случае это другой адрес 3Hp2zoBKNW5NsmQhHsqKgMwiGA4FoUj9Q4с ненулевым балансом.

Стараюсь отслеживать на blockchain.infoсайте.

Почему существуют такие различия?

Ответы (1)

Оба адреса P2SH и P2PKH полагаются на HASH160. Разница в сценарии.

В адресе P2SH ( 3Hp2zoBKNW5NsmQhHsqKgMwiGA4FoUj9Q4в вашем примере) сценарий a914 B0D5D1FB94B76B39EE82771027BEFD17131042FA 87(пробелы мои). Это составляет OP_HASH160 OP_PUSH(20) B0D5D1FB94B76B39EE82771027BEFD17131042FA OP_EQUAL. Короче говоря, сеть Биткойн возьмет предоставленный сценарий погашения и данные подписи и сравнит хэш160 этого сценария погашения с тем, что указано в выходных данных адреса.

Для 1H825FgspbkznbiGAnAjFjan7dmYFjpsFe, сценарий 76a914 B0D5D1FB94B76B39EE82771027BEFD17131042FA 88ac(пробелы мои). Это составляет OP_DUP OP_HASH160 OP_PUSH(20) B0D5D1FB94B76B39EE82771027BEFD17131042FA OP_EQUALVERIFY OP_CHECKSIG. По сути, это говорит сети взять предоставленный открытый ключ при трате ввода, дублировать его, хэшировать дубликат, сравнить его и убедиться, что он равен B0D5D1FB94B76B39EE82771027BEFD17131042FA, а затем сверить подпись с исходным открытым ключом (тот, который вы продублировали).

Кошельки и обозреватели будут решать, какой формат адреса отображать, на основе кодов операций в скрипте. Адрес P2SH всегда будет начинаться a914и заканчиваться на 87. P2PKH всегда начинается 76a914и заканчивается на 88ac.

Поскольку хеширование по определению не является взаимно однозначной функцией, существует некоторый закрытый ключ, для которого хэш публичного ключа будет B0D5D1FB94B76B39EE82771027BEFD17131042FA. Однако мне неизвестны какие-либо известные пары закрытый ключ/сценарий выкупа, которые соответствуют одному и тому же HASH160.