Почему один и тот же Hash 160 имеет разный баланс в сети Биткойн?
Хэш 160 это B0D5D1FB94B76B39EE82771027BEFD17131042FA
.
В одном случае это адрес 1H825FgspbkznbiGAnAjFjan7dmYFjpsFe
с нулевым балансом.
Во втором случае это другой адрес 3Hp2zoBKNW5NsmQhHsqKgMwiGA4FoUj9Q4
с ненулевым балансом.
Стараюсь отслеживать на blockchain.info
сайте.
Почему существуют такие различия?
Оба адреса 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.