Я просматриваю необработанные данные о транзакциях и хотел бы иметь возможность собирать адреса (где это возможно).
До сих пор я сделал эту диаграмму, чтобы помочь мне понять, когда можно определить адреса из scriptPubKey
каждого выхода :
Однако, как видите, я не уверен, как мне определить адрес из P2WSH .
Можно ли получить адреса из scriptPubKey
одиночки, или их можно получить только при раскрытии свидетеля, когда выход израсходован? (как показано здесь):
witness: 0 <signature1> <1 <pubkey1> <pubkey2> 2 CHECKMULTISIG>
scriptSig: (empty)
scriptPubKey: 0 <32-byte-hash>
(0x0020{32-byte-hash})
РЕДАКТИРОВАТЬ: Кроме того, пожалуйста, дайте мне знать, если вы заметите, что какое-либо сопоставление с моим шаблоном на этой диаграмме неверно (или если мне не хватает каких-либо шаблонов, которые позволяют мне узнать больше адресов).
В настоящее время не существует собственного формата адресов для выходных данных свидетелей, поэтому ответ для P2WPKH и P2WSH прост: вы не можете и не должны. Если вы преобразуете 20-байтовый хэш внутри вывода P2WPKH в 1xxxxxx и покажете результат, люди могут подумать, что это адрес, на который можно отправить больше денег. Однако это приведет к выходу P2PKH, который чистый SegWit-кошелек может не понять.
Однако большинство выходных данных segwit изначально будут использовать оболочку P2SH (что приводит к программам P2SH-P2WPKH или P2SH-P2WSH), которые просто выглядят (и ведут себя как) адреса P2SH.
Новый собственный формат адреса SegWit предлагается в https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki . Однако это можно использовать только в том случае, если программное обеспечение получателя и отправителя поддерживает это.
Ник Оделл
инерша
base58('00' + hash160 + checksum)