ScriptSig
ScriptSig в биткойн (bitcoin) е кодът за отключване на вход от стара трансакция. Вижте какво съдържа при P2PKH, P2SH и coinbase.
От Dimitar Zurnov · Обновено на 4 ноември 2026
Адаптирано от Learn Me a Bitcoin на Greg Walker.
ScriptSig е кодът за отключване на вход от стара (legacy) трансакция. Той съдържа данните, които доказват, че можете да похарчите по-ранен изход: обикновено подпис и публичен ключ, записани като данни за push в Script. Изходът, който ScriptSig отключва, има ScriptPubKey, заключването. ScriptSig е ключът, а двете трябва да съвпаднат, за да се похарчи изходът.
SegWit е преместил данните за отключване на по-новите заключвания от ScriptSig във witness. Днес ScriptSig се използва за старите заключвания и за външния слой на P2SH.
Кои заключвания се отключват с ScriptSig?
Старите заключвания се отключват с ScriptSig:
- P2PK, заключване към публичен ключ, отключвано с един подпис.
- P2PKH, заключване към хеш на публичен ключ, отключвано с подпис и публичен ключ.
- P2MS, мултиподписно заключване без обвивка, отключвано с нужния брой подписи.
- P2SH, заключване към хеш на скрипт, отключвано с входните данни на скрипта и после със самия скрипт.
По-новите заключвания, като P2WPKH и P2WSH, се отключват от witness. Нативният segwit вход, който ги отключва, оставя ScriptSig празен, така че полето за размер е 00.
Как изглежда ScriptSig на P2PKH?
ScriptSig на P2PKH има два push: подписа и публичния ключ. Ето ScriptSig от трансакция 40e331b67c0fe7750bb3b1943b378bf702dce86124dc12fa5980f975db7ec930, вход 0:
483045022100c233c3a8a510e03ad18b0a24694ef00c78101bfd5ac075b8c1037952ce26e91e02205aa5f8f88f29bb4ad5808ebc12abfd26bd791256f367b04c6d955f01f28a772401 2103f0609c81a45f8cab67fc2d050c21b1acd3d37c7acfd54041be6601ab4cef4f31
Прочетете го на части:
48е push от 72 байта, после самият подпис. Последният байт,01, е типът sighash, който показва, че подписът покрива всички изходи.21е push от 33 байта: компресираният публичен ключ03f0609c…4cef4f31.
Общо са 107 байта, което е размерът 6b преди него във входа. Заключването на изхода съдържа хеша на този публичен ключ. Скриптът първо проверява, че ключът съвпада с този хеш. После проверява, че подписът е валиден за ключа. Страницата за подписа обяснява втората проверка.
Какво съдържа ScriptSig на P2SH?
ScriptSig на P2SH съдържа повече от един вид данни. Последният му push е целият скрипт, наречен redeem script. Всеки push преди него са входните данни, които изпълняват този скрипт. Изходът съдържа само хеша на redeem script, така че целият скрипт се разкрива тук, когато изходът бъде похарчен.
Много P2SH изходи обвиват мултиподписен скрипт, затова ScriptSig често започва с OP_0. Това е известна особеност на оригиналния мултиподписен опкод, който изважда от стека един елемент повече. Тя е безвредна, затова мултиподписните ScriptSig започват с нула.
Какво има в ScriptSig на coinbase?
Трансакцията coinbase, първата във всеки блок, не харчи по-ранен изход. Нейният ScriptSig са свободни данни, които майнърът избира. Единственото правило е дължина от 2 до 100 байта. Майнърите ги ползват, за да сложат съобщение, да се идентифицират като пул или да носят допълнителни данни за nonce.
От блок 227,931 нататък BIP 34 изисква ScriptSig на coinbase да започва с височината на блока. Coinbase трансакцията в генезис блока е класическият пример за свободни данни: ScriptSig-ът му носи заглавие от вестника от 3 януари 2009 г. Подобен текст се среща и в много по-късни coinbase трансакции.
Защо се казва ScriptSig?
Името идва от първоначалния код, където променливата се е наричала scriptSig. Полето е замислено за подписа, който отключва изход, и името остана, въпреки че днес съдържа и други данни. Мислете за него като за кода за отключване на входа.
Следващата страница, Sequence, разглежда последното поле на всеки вход: настройката, която управлява окончателността, replace-by-fee (RBF) и относителното заключване.
Източници
- Bitcoin Core: script, за опкодите и правилата за push
- BIP 34: Block v2, height in coinbase
В този раздел: Трансакции
Целият курс „Биткойн от нулата“
Нещо не изглежда наред? Кажете ни