P2SH-P2WPKH
P2SH-P2WPKH, или вложен P2WPKH, обвива SegWit заключване в P2SH изход, чийто адрес започва с 3. Вижте как се харчи и колко струва.
От Dimitar Zurnov · Обновено на 4 ноември 2026
Адаптирано от Learn Me a Bitcoin на Greg Walker.
P2SH-P2WPKH е вложена форма на P2WPKH. Той слага P2WPKH заключване в стария P2SH изход. Адресът затова започва с 3, а не с bc1q, така че по-стари портфейли и борси могат да пращат към него. Когато го харчите, подписът и публичният ключ отиват в witness, така че харченето пак получава SegWit отстъпката за такса.
Вложено значи, че едно заключване стои в друго. Външното заключване е P2SH, а вътрешното е P2WPKH. Харченето минава през две стъпки, затова формата изглежда по-трудна, отколкото е.
Ако портфейлът ви може да праща към bc1q адреси, ползвайте P2WPKH директно. Няма причина да го вкарвате във вложена форма.
Защо е било нужен P2SH-P2WPKH?
SegWit е бил въведен през 2017 г., а много портфейли и борси още не са могли да пращат към bc1q адреси. Можеха да пращат към P2SH адреси. P2SH-P2WPKH позволява на подателите да платят на адрес 3, а получателят пак е можел да похарчи монетите като P2WPKH по-късно. BIP 49 дефинира деривационните пътища за ключовете на портфейлите за тази форма.
Днес повечето портфейли пращат към bc1q адреси, така че P2SH-P2WPKH е най-вече стара форма. Нодовете я приемат като стандартно заключване.
Как изглежда P2SH заключването?
Във веригата изходът изглежда като всеки друг P2SH изход: OP_HASH160, push на 20 байта и OP_EQUAL:
OP_HASH160
OP_PUSHBYTES_20
6d3ed4cf55dc6752a12d3091d436ef8f0f982ff8
OP_EQUAL
Като hex е 23 байта:
a9146d3ed4cf55dc6752a12d3091d436ef8f0f982ff887
Изход 0 на трансакция 021e23df3cdb8b504bec1a3f7a382a83be7518354bac2331076753b5b4755a4e носи това заключване. Трансакцията е била потвърдена в блок 826,281.
20-байтовият хеш е HASH160 на P2WPKH заключване, а не на публичен ключ:
P2WPKH заключване: 001402c8147af586cace7589672191bb1c790e9e9a72
HASH160: 6d3ed4cf55dc6752a12d3091d436ef8f0f982ff8
P2SH частта е това, което прави формата съвместима. Всеки портфейл, който може да плати на адрес 3, може да плати и на този изход. Адресът му е P2SH адрес, направен с Base58Check и префикс 05. Адресът не показва вътрешното заключване, затова от самия адрес не може да се разбере, че е вложен. Формата се вижда едва когато изходът се похарчи.
Какво има в отключващия скрипт?
Отключващият скрипт на харченето съдържа един push на данни: целия P2WPKH заключващ скрипт, който е 22 байта. Push-ът добавя един байт за дължина отпред, така че отключващият скрипт е 23 байта:
16001402c8147af586cace7589672191bb1c790e9e9a72
Първият байт, 16, показва, че следват 22 байта. Тези 22 байта са P2WPKH заключването, 0014 плюс 20-байтовият хеш. Вход 0 на трансакция a55bd4d4ebd319ab2990c356e16cab1eeb52a93c414b869a606dc0add61d725a харчи примерния изход. Трансакцията е била потвърдена в блок 829,574.
Отключващият скрипт не трябва да съдържа нищо друго. Правилата на BIP 141 отхвърлят вложено харчене, което има допълнителен опкод в отключващия скрипт.
Какво има в witness?
Witness на P2SH-P2WPKH харчене е същият като witness на директното P2WPKH харчене. Съдържа подписа и публичния ключ:
02
47
304402201f85ab44217563b4ce9d11e4c7b00dc59dd102099eb250634f4b6906276ba07702206147cc98f29c5fcbad925b5e40fe154f4d429f9569f292f9298f615c4940044501
21
022ae7dd28111380c100301f5e9797383e291234c341d7a242202a6def9069181c
Броят 02 е следван от 71-байтов подпис (47) и 33-байтов компресиран публичен ключ (21). Witness е общо 107 байта. Примерът показва входа 0 на същото харчене. Както при P2WPKH, са позволени само компресирани публични ключове.
Как биткойн проверява харченето?
Биткойн проверява вложеното харчене на две стъпки:
- Взима push-а от отключващия скрипт, хешира го с HASH160 и проверява дали резултатът съвпада с хеша в P2SH заключването.
- Взима witness и проверява вътрешното P2WPKH заключване с него, точно както би проверил директно P2WPKH харчене.
В тази форма отключващият скрипт се превръща от поле за отключване в поле за заключване. Именно това обърква мнозина. Страницата за P2SH-P2WSH ползва същите две стъпки с P2WSH отвътре.
Колко струва?
Witness получава SegWit отстъпката, а отключващият скрипт не. P2SH-P2WPKH харчене затова е между стария P2PKH и директния P2WPKH:
| Отключване | Отключващ скрипт (байта) | Witness (байта) | Общо (байта) | Виртуални байта |
|---|---|---|---|---|
| P2PKH | 107 | 0 | 107 | 107 |
| P2SH-P2WPKH | 23 | 107 | 130 | 49.75 |
| P2WPKH | 0 | 107 | 107 | 26.75 |
Това са типични размери, защото дължината на подписа може да варира с байт-два. Всеки witness байт е 0.25 виртуални байта, така че 107-байтовият witness е 26.75. Добавете 23-байтовия отключващ скрипт и получавате 49.75. Таксите се задават на виртуален байт, така че вложеното харчене струва около половината от P2PKH харченето. Директното P2WPKH харчене струва около една четвърт.
Изходната страна е различна. P2SH изходът е 23 байта, P2WPKH изходът е 22 байта, а P2PKH изходът е 25 байта. Изходите нямат отстъпка от witness, така че разликата в размера се вижда директно. Вижте виртуалния байт и таксата на байт за това как тези размери се превръщат в такса.
Трябва ли да ползвате P2SH-P2WPKH?
Ползвайте го само когато подателят може да плати на адрес 3, но не може да плати на адрес bc1q. Иначе плащайте директно с P2WPKH. Харченето на директен P2WPKH изход струва около два пъти по-малко и пропуска допълнителната стъпка.
Формата е валидна и стандартна, така че нодовете я разпространяват, а майнърите я включват в блокове. По-старите изходи от този вид ще останат във веригата завинаги, затова е полезно да знаете как да го прочетете.
В този раздел: Скриптовият език
Целият курс „Биткойн от нулата“
Нещо не изглежда наред? Кажете ни