Към съдържанието
ДаретеEN

Скриптовият език

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 заключването съдържа хеша на P2WPKH заключване, който отключващият скрипт разкрива, а witness го отключва. Изход: P2SH заключване, 23 байта съдържа HASH160 на вътрешното заключване 6d3ed4cf55dc6752a12d3091 d436ef8f0f982ff8 HASH160 да съвпада Отключващ скрипт: 23 байта дължина 16 (hex): следват 22 байта 001402c8147af586cace7589672191bb 1c790e9e9a72 witness го отключва Witness: 107 байта 02, после подпис от 71 байта после компресиран публичен ключ от 33 байта
Три части: външното P2SH заключване, отключващият скрипт, който разкрива вътрешното заключване, и witness, който го отключва.

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, са позволени само компресирани публични ключове.

Как биткойн проверява харченето?

Биткойн проверява вложеното харчене на две стъпки:

  1. Взима push-а от отключващия скрипт, хешира го с HASH160 и проверява дали резултатът съвпада с хеша в P2SH заключването.
  2. Взима 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 харчене струва около една четвърт.

Виртуални байта за отключване: P2PKH 107, P2SH-P2WPKH 49.75 и P2WPKH 26.75. Цена, виртуални байта Стар P2PKH 107 P2SH-P2WPKH 49.75 P2WPKH 26.75 Всеки witness байт е 0.25 виртуални байта.
Цена за отключване във виртуални байта. По-ниско означава по-евтина такса при същата цена на байт.

Изходната страна е различна. P2SH изходът е 23 байта, P2WPKH изходът е 22 байта, а P2PKH изходът е 25 байта. Изходите нямат отстъпка от witness, така че разликата в размера се вижда директно. Вижте виртуалния байт и таксата на байт за това как тези размери се превръщат в такса.

Трябва ли да ползвате P2SH-P2WPKH?

Ползвайте го само когато подателят може да плати на адрес 3, но не може да плати на адрес bc1q. Иначе плащайте директно с P2WPKH. Харченето на директен P2WPKH изход струва около два пъти по-малко и пропуска допълнителната стъпка.

Формата е валидна и стандартна, така че нодовете я разпространяват, а майнърите я включват в блокове. По-старите изходи от този вид ще останат във веригата завинаги, затова е полезно да знаете как да го прочетете.

В този раздел: Скриптовият език

Целият курс „Биткойн от нулата“

Нещо не изглежда наред? Кажете ни