Биткойн-кошелек Testnet: какой скрипт в хеш-адресах?

Почему кошелек Testnet создает получающие адреса в виде хеш-адресов скриптов ( префикс 2 ) вместо «обычных» адресов с префиксом m/n ? Есть ли какая-то причина безопасности? И какой сценарий он хеширует? Я предполагал из BIP.16 случай с одной подписью:

scriptPubKey: OP_HASH160 [20-байтовый хэш {[pubkey] OP_CHECKSIG}] OP_EQUAL

Но мне не удалось получить тот самый хэш скрипта (разумеется, я знаю приватный ключ). Я попробовал следующие шаги:

$ echo [ 02b6d...открытый ключ...47f89 ] checksig > script

$ bx script-encode < скрипт | бх ша256 | бх рипмд160

046f...fb3

$ echo hash160 [ 046f...fb3 ] равно > script2

$ bx script-encode < script2 | бх ша256 | бх рипмд160 | bx base58check-encode --версия 196

2NxxxexxxxxL

(Я ожидал получить тот же результат, созданный кошельком, но они были другими).

Обратите внимание, что я точно знаю и приватный, и публичный ключи.

Ответы (2)

То, что вы видите, это адрес Segwit, встроенный в P2SH.

Он содержит хэш скрипта OP_0 [20-byte hash160 of compressed pubkey].

Вы можете настроить Bitcoin Core для создания устаревших адресов P2PKH (начинайте с -addresstype=legacy). Вы также можете заставить его создавать адреса Bech32 (BIP173) с помощью -addresstype=bech32, которые OP_0 [20-byte hash160 of compressed pubkey]напрямую представляют скрипт. Их дешевле тратить, но не все программы поддерживают отправку на них.

Благодаря @pieter-wuille, я подтверждаю, что это встроенный адрес Segwit P2SH:

$ echo '0 [a01..pukbKeyHash..e8e]' | bx script-to-address -v  196
2Mu..xxxx..r

Или:

$ echo '0 [a01..pukbKeyHash..e8e]' > script3
$ bx script-encode < script3 | bx sha256 | bx ripemd160 | bx base58check-encode --version 196
2Mu..xxxx..r

Какой именно адрес я искал.