Какой сценарий выкупа используется в основном кошельке биткойн при создании адреса?

Я пытаюсь сгенерировать адрес 38DGj87axzmQiZeAd1w1y5FEmuu5a7pfBaв своем кошельке с биткойнами с кодом.

Сначала я выгружаю приватный ключ из адреса, потом вычисляю адрес из приватного ключа. Поскольку адрес представляет собой начальную форму m, которая относится к типу биткойн-адреса P2SH . А адрес P2SH строится как

base58-encode: [one-byte version][20-byte hash][4-byte checksum]

Здесь я не знаю, какой скрипт использовался для расчета [20-byte hash]в основном кошельке биткойнов?

Ответы (2)

Вы можете использовать команду getaddressinfoRPC в последней версии биткойн-ядра, чтобы получить сценарий в шестнадцатеричном кодировании для этого адреса. Но обратите внимание: поскольку вы смогли получить закрытый ключ, я предполагаю, что это адрес SegWit, обернутый P2SH, что означает, что сценарий представляет собой просто OP_0код операции, за которым следует хеш160 открытого ключа, соответствующего этому закрытому ключу.

Я использую биткойн-ядро 0.16.0 последней версии. Но когда я использую, getaddressinfoя получаю «Метод не найден»
О, извините, я думал, что он попал в 0.16, похоже, он все еще находится только в ветке master dev. В этом случае вам, возможно, придется создать скрипт самостоятельно, используя упомянутый мной подход OP_0 + hash160, дополнительную информацию см. здесь: bitcoincore.org/en/segwit_wallet_dev/…
Используйте validateaddressвместо этого (части validateaddress, которые предоставляют адресную информацию, перемещены в новую getaddressinfoкоманду для следующей основной версии, 0.17).
@AndrewChow выводит ли validateaddress сценарий? Я не был уверен, так ли это, или это была новая функциональность
@MeshCollider Это так. RPC был просто разделен на две части в мастере, но никаких новых функций добавлено не было.

(Для дополнительной информации):

Это P2SH-P2WPKH(плата за свидетельство хэша открытого ключа, завернутого в хеш оплаты за сценарий). Чтобы создать этот адрес для основной сети:

  1. Создать свидетеля PKH:

PKH = OP_0 0x14 RIPEMD160(SHA256(compressed public key))
0x14это количество байтов

  1. Создать P2SH:

BASE58CHECK(0x05 PKH)
0x05это P2SHпрефикс основной сети