ГЛАВНАЯ / ИНСТРУКЦИИ / P2WPKH, P2WSH И P2TR: КАК РАЗЛИЧАЮТСЯ WITNESS-ВЫХОДЫ BITCOIN
P2WPKH, P2WSH и P2TR: как различаются witness-выходы Bitcoin
P2WPKH, P2WSH и P2TR часто объединяют словом SegWit, хотя у них разные witness version, длина программы и сценарий траты. P2WPKH связывает выход с хэшем открытого ключа, P2WSH – с хэшем скрипта, P2TR использует Taproot output key и допускает key path или script path. Проверяйте структуру scriptPubKey и требования получателя.
Версия 0 с 20-байтовым witness program фиксирует key hash
Нативный P2WPKH output кодирует witness version 0 и 20-байтовый хэш открытого ключа. При расходовании witness обычно содержит подпись и публичный ключ; проверка удостоверяет, что хэш ключа совпадает с программой, а подпись проходит по правилам этого типа входа.
Выход не хранит саму подпись и обычно не раскрывает публичный ключ до траты. Адрес Bech32 помогает передать реквизит, но тип подтверждают декодированная программа и нужная сеть. Есть также вложенные в P2SH варианты, для которых внешний scriptPubKey выглядит иначе.
- версия witness определена
- длина program прочитана после версии
- P2WSH и P2TR не перепутаны по длине 32 байта
P2WSH коммитит к witnessScript через SHA-256
P2WSH использует witness version 0, но программа длиной 32 байта содержит SHA-256 от witnessScript. При трате последний элемент witness – скрипт, который хэшируют и сравнивают с commitment; остальные элементы дают начальный стек для его исполнения. Так можно применять multisig и другие условия, не помещая полный скрипт в выход.
До расходования виден commitment, а не сам witnessScript. При трате пользователь должен предоставить правильный скрипт и нужные элементы стека; одной строки адреса недостаточно для восстановления политики кошелька. Не трактуйте любую 32-байтовую программу версии 0 как Taproot.
P2TR использует witness version 1 и 32-байтовый output key
Taproot output – native SegWit witness version 1 с 32-байтовой программой, соответствующей выходному ключу. При key-path spend witness обычно несёт подпись для этого ключа; при script-path spend раскрывает tapscript, control block и аргументы выбранной ветви. Output key может коммитить к дереву скриптов, но сам commitment не раскрывает ветви.
Для адресов witness v1 и следующих версий применяется Bech32m согласно BIP350, тогда как версия 0 использует Bech32. Не определяйте тип только по префиксу строки, если доступна возможность декодировать адрес. Также проверьте, что кошелёк получателя поддерживает формат и сеть.
Проверяйте адрес, скрипт и ожидаемый witness отдельно
Сравните версию witness и длину программы. P2WPKH и P2WSH используют v0 с программами по 20 и 32 байта; P2TR использует v1 и 32-байтовый output key. Одна длина не определяет тип: сначала прочитайте witness version.
При подготовке PSBT проверьте witness UTXO, redeemScript, witnessScript, tapleaf и control block, если они нужны подписантам. После подписи декодируйте raw transaction и сопоставьте фактический witness с типом выхода. Комиссии примеров нельзя сравнивать без одинаковых входов, скриптов и числа outputs.
- scriptPubKey соответствует декодированному адресу
- сеть получателя проверена
- PSBT соответствует типу выхода
Частые вопросы
P2WPKH и P2WSH используют одну witness version?
Да. Оба относятся к версии 0, но различаются длиной и назначением программы.
P2TR – разновидность P2WSH?
Нет. P2TR использует witness v1 и output key; скриптовые условия могут быть закоммичены через Taproot tree.
Адрес сразу раскрывает скрипт?
Нет. Кодирование содержит witness version и программу, но не обязательно полную политику траты.
Почему P2TR использует другой адресный checksum?
Для native witness version 1 и выше применяется Bech32m, для v0 – Bech32.
Можно сравнить комиссию только по адресу?
Нет. На размер влияют входы, подписи, скрипт, witness и число выходов.
Чек-лист: p2wpkh, p2wsh и p2tr: как различаются witness-выходы bitcoin
- network и scriptPubKey соответствуют;
- version прочитана до оценки размера program;
- P2WPKH отделён от P2WSH;
- P2TR не принят за witnessScript hash;
- checksum соответствует версии;
- PSBT содержит данные нужного формата;
- финальная транзакция декодирована.
Материал подготовлен редакцией сайта и проверен 5 ноября 2026 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.