Как получить адреса из scriptPubKey в транзакциях segwit?

Я просматриваю необработанные данные о транзакциях и хотел бы иметь возможность собирать адреса (где это возможно).

До сих пор я сделал эту диаграмму, чтобы помочь мне понять, когда можно определить адреса из scriptPubKeyкаждого выхода :

введите описание изображения здесь

Однако, как видите, я не уверен, как мне определить адрес из P2WSH .

Можно ли получить адреса из scriptPubKeyодиночки, или их можно получить только при раскрытии свидетеля, когда выход израсходован? (как показано здесь):

witness:      0 <signature1> <1 <pubkey1> <pubkey2> 2 CHECKMULTISIG>
scriptSig:    (empty)
scriptPubKey: 0 <32-byte-hash>
              (0x0020{32-byte-hash})

РЕДАКТИРОВАТЬ: Кроме того, пожалуйста, дайте мне знать, если вы заметите, что какое-либо сопоставление с моим шаблоном на этой диаграмме неверно (или если мне не хватает каких-либо шаблонов, которые позволяют мне узнать больше адресов).

Придирка: есть контрольная сумма для адреса в P2PK/P2PKH/P2SH. ru.bitcoin.it/wiki/…
Да спасибо. Чтобы пояснить для тех, кто читает это, это должно бытьbase58('00' + hash160 + checksum)

Ответы (2)

В настоящее время не существует собственного формата адресов для выходных данных свидетелей, поэтому ответ для 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 . Однако это можно использовать только в том случае, если программное обеспечение получателя и отправителя поддерживает это.

Все еще продолжается? Я хочу знать последние тенденции. Является ли оболочка P2SH стандартом де-факто? Кажется, бит142 все еще отложен. github.com/bitcoin/bips/blob/master/bip-0142.mediawiki
BIP173 заменяет его. Однако на его внедрение уйдет много времени, поэтому изначально я ожидаю, что SegWit-передачи будут использовать оболочку P2SH.

Я собрал эту картинку с десятью лучшими скриптами PK, которые я нашел где-то на веб-странице... не могу найти ссылку. Я также хотел бы расширить его с помощью выходов segwit. При желании могу поделиться файлом "graphml".

введите описание изображения здесь