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

Трансакции

ScriptPubKey

ScriptPubKey в биткойн (bitcoin) е заключващият код на изход от трансакция. Вижте често срещаните шаблони, техните размери и как всеки от тях се отключва.

От Dimitar Zurnov · Обновено на 4 ноември 2026
Адаптирано от Learn Me a Bitcoin на Greg Walker.

ScriptPubKey е заключващият код на изход от трансакция. Той задава условието, което трябва да се изпълни, за да се похарчи изходът, обикновено като се покаже подпис за определен публичен ключ. Записва се като байтове на Script, макар че много съвременни заключвания са къси фиксирани модели, а не цели програми. Името идва от първоначалния код. Повечето хора го разбират по-лесно като заключването на изхода.

Повечето ScriptPubKey са един от няколко стандартни шаблона. Портфейлите обикновено ги показват като адреси, които са четим запис на хеша или ключа на заключването.

Кои са често срещаните шаблони?

Списъкът по-долу обхваща стандартните заключвания, които срещате най-често. Всеки е фиксиран модел, така че типът му се познава по първите байтове и по дължината.

Често срещани шаблони на scriptPubKey: всеки е фиксиран модел, така че първите байтове и дължината му го определят. P2PK 21 <33-байтов ключ> ac 35 байта P2PKH 76a914 <20 байта> 88ac 25 байта P2SH a914 <20 байта> 87 23 байта P2WPKH 0014 <20 байта> 22 байта P2WSH 0020 <32 байта> 34 байта P2TR 5120 <32 байта> 34 байта OP_RETURN 6a <push на данни> не се харчи
Размерите са на целия ScriptPubKey в байтове, без полето за размер преди него.
  • P2PK заключва към публичен ключ. Това е 21, после 33-байтов компресиран ключ, после ac, което е OP_CHECKSIG. Ранните coinbase изходи го използват.
  • P2PKH заключва към хеша на публичен ключ: 76a914, 20-байтовият хеш на публичния ключ, 88ac. Дължината е 25 байта.
  • P2SH заключва към хеша на скрипт: a914, 20-байтов хеш на скрипта, 87. Дължината е 23 байта.
  • P2WPKH е segwit версията на P2PKH: 0014, после 20-байтов хеш на ключа. Дължината е 22 байта.
  • P2WSH е segwit версията на P2SH: 0020, после 32-байтов хеш на скрипта. Дължината е 34 байта.
  • P2TR заключва към модифициран (tweaked) Taproot ключ: 5120, после 32-байтов ключ. Дължината е 34 байта.
  • OP_RETURN отбелязва данни, които никога не могат да се похарчат: 6a, след което push на данни. Нодовете ограничават колко от тях препращат според настройките на своята политика.

Как изглежда скриптът на P2PKH?

P2PKH заключването е най-познатото. Ето ScriptPubKey на изход 1 от трансакция 0b6461de422c46a221db99608fcbe0326e4f2325ebf2a47c9faf660ed61ee6a4:

76a91455ae51684c43435da751ac8d2173b2652eb6410588ac

Прочетено на части: 76 е OP_DUP, a9 е OP_HASH160, 14 е push от 20 байта, после самият хеш, после 88 е OP_EQUALVERIFY, а ac е OP_CHECKSIG. За да се похарчи, ScriptSig трябва да даде публичен ключ, който се хешира до тази стойност. Трябва да даде и подпис, направен с този ключ. Страницата за ScriptSig показва това отключване.

P2PKH заключването е 25 байта. Полето за размер преди него е 19.

Как изглежда segwit заключване?

Segwit заключването е фиксиран модел, а не скрипт, който се изпълнява. Изход 0 на трансакция 4b5c918e95b98843a8340a6bb2dd61b4eee73ea632db85fb9a7eb538fd355588 е P2WPKH заключване: 0014af267b26ef0ebd333b80dac1546f7db5d048d027. Има байт за версия 00, push от 20 байта и хеша на ключа. Данните за отключване са в witness, а не в ScriptSig. Witness данните се броят за по-малко при изчисляване на размера, така че харченето на segwit изход струва по-малко на байт данни за отключване, отколкото на legacy изход.

P2TR заключване, като 5120f3778defe5173a9bf7169575116224f961c03c725c0e98b8da8f15df29194b80, е модифициран публичен ключ, който обвързва незадължителни скриптове. Отключва се също във witness и е 34 байта.

Кои заключвания са стандартни?

Нодовете препращат само стандартните шаблони. Собствен скрипт може още да бъде изкопан, но повечето нодове няма да го препратят. Например заключването 6e935888945287 (OP_2DUP OP_ADD OP_8 OP_EQUALVERIFY OP_SUB OP_2 OP_EQUAL) работи като малка загадка. Двете числа, които го отключват, трябва да дават сбор 8, а разликата им да е 2. Трансакция ab149362ea4e119d2bc5211b35083c23ec41842af6bbc2ff3c5f1e55941199cc плаща към него. Отключва го само OP_5, после OP_3.

За да използват такова заключване безопасно, повечето хора го обвиват в P2SH или P2WSH заключване. Тогава изходът съдържа само хеш, а целият скрипт се разкрива, когато някой го похарчи.

Какво е изход OP_RETURN?

Изход OP_RETURN е неподлежащ на похарчване умишлено. Той държи данни, например ASCII текста hello world, който в пълен вид е 6a0b68656c6c6f20776f726c64. 0b е дължината, 11 байта. Нодовете го третират като доказуемо неподлежащ на похарчване, така че могат да го премахнат от UTXO множеството. Колко данни ще препрати нодът е настройка на политиката, -datacarriersize в Bitcoin Core, а стойността ѝ по подразбиране се е променяла между версиите. Затова проверявайте бележките към изданието на вашия нод.

Следващата страница, witness, разглежда данните за отключване, които segwit входовете носят извън ScriptSig.

Източници

В този раздел: Трансакции

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

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