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

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

P2PK

P2PK биткойн (bitcoin) заключва изход към суров публичен ключ, а един подпис го отключва. Вижте hex записа, стека и реални примери.

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

P2PK, съкращение от pay to public key (плащане към публичен ключ), е най-простото заключване в биткойн (bitcoin). Той заключва изхода директно към публичен ключ. Всеки, който може да направи валиден подпис със съответния частен ключ, може да похарчи монетите. P2PK е остарял тип от първите години на биткойн и днес е рядък.

Как изглежда заключващият скрипт на P2PK?

P2PK заключване: изтласква се 65-байтов публичен ключ, после OP_CHECKSIG. Заключващият скрипт на P2PK поставя в стека следващите 65 байта 41 публичен ключ, некомпресиран, 65 байта 04946420…2dc03da8 OP_CHECKSIG, проверява подпис ac 67 байта: 1 + 65 + 1. 33-байтовият ключ дава 35.
Ключът на картинката е съкратен. Целият скрипт е в hex записа по-долу.

Заключващият скрипт (scriptPubKey) се състои от два опкода около един публичен ключ. 41 поставя в стека следващите 65 байта, които са некомпресиран публичен ключ, а ac е OP_CHECKSIG. Целият заключващ скрипт е 67 байта:

41049464205950188c29d377eebca6535e0f3699ce4069ecd77ffebfbd0bcf95e3c134cb7d2742d800a12df41413a09ef87a80516353a2f0a280547bb5512dc03da8ac

Изход 1 на 1db6251a9afce7025a2061a19e63c700dffc3bec368bd1883decfac353357a9d използва това заключване. Компресираният публичен ключ е 33 байта, така че същото заключване с компресиран ключ е 35 байта: 21, ключът и после ac.

Как се харчи изход P2PK?

Отключващият скрипт (scriptSig) е един елемент, подписът:

483045022100c219a522e65ca8500ebe05a70d5a49d840ccc15f2afa4ee9df783f06b2a322310220489a46c37feb33f52c586da25c70113b8eea41216440eb84771cb67a67fdb68c01

48 поставя в стека следващите 72 байта. Подписът е в DER формат, а последният му байт, 01, е sighash типът SIGHASH_ALL. Този байт показва кои части от трансакцията подписът покрива. Харчещият не показва публичен ключ, защото заключването вече го съдържа. Вход 0 на e827a366ad4fc9a305e0901fe1eefc7e9fb8d70655a079877cf1ead0c3618ec0 е харчене от този вид.

Как работи P2PK скриптът?

Отключване на P2PK в стека: подписът и ключът се срещат при OP_CHECKSIG, който оставя OP_1. Стъпки за отключване на P2PK scriptSig поставя подписа в стека sig scriptPubKey поставя публичния ключ sig pubkey OP_CHECKSIG вади двата и ги проверява (празно) валидно: остава само OP_1 OP_1 Остава един ненулев елемент: харченето е валидно.
Схемата се попълва по една стъпка наведнъж и се чете по същия начин и когато е неподвижна.

Двете части се изпълняват една след друга, а стекът пренася подписа от едната към другата:

  1. Отключващият скрипт поставя подписа в стека.
  2. Заключващият скрипт поставя публичния ключ.
  3. OP_CHECKSIG взима двата елемента от стека и проверява подписа спрямо ключа.
  4. Ако подписът е валиден, OP_CHECKSIG поставя OP_1. Ако не е, поставя празен елемент (невярно, същото като OP_0) и скриптът се проваля.

Когато OP_1 е единственият елемент, който остава, скриптът е валиден и монетите могат да се движат.

Кои P2PK изходи можете да проверите в нашия explorer?

Защо P2PK е рядък днес?

Ранните майнъри са получавали наградите си в P2PK изходи. P2PK се среща главно в coinbase трансакциите на първите блокове. Причината не е известна. Най-вероятното обяснение е, че майнърът не е имал нужда от адреси, така че по-простото заключване му е стигало.

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

Има ли P2PK изходът адрес?

Не. P2PK изходът няма официален адрес. Някои explorer-и все пак показват такъв. Те вземат HASH160 на публичния ключ и го кодират като P2PKH адрес. За изхода на генезис блока този адрес е 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa. Това е адресът, който същият ключ би имал като P2PKH заключване. Адресът е полезен за търсене, но самият P2PK изход няма собствен адрес.

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

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

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