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

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

P2PKH

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

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

P2PKH, съкращение от pay to public key hash (плащане към хеш на публичен ключ), е заключването зад класическия адрес на биткойн (bitcoin), онзи, който започва с 1. Изходът не се заключва към самия публичен ключ, а към HASH160 на ключа. За да харчите монети, показвате целия публичен ключ и подпис, направен със съответния частен ключ. P2PKH е остарял тип. SegWit вариантът P2WPKH работи по същия начин и днес е обичайният избор за нови плащания.

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

P2PKH заключване: копира се ключът, хешира се, проверява се хешът, после се проверява подписът. Заключващият скрипт на P2PKH OP_DUP: копира най-горния елемент 76 OP_HASH160: хешира копието, 20 байта a9 поставя в стека следващите 20 байта 14 хешът на публичния ключ 55ae5168…2eb64105 OP_EQUALVERIFY: проверява съвпадението 88 OP_CHECKSIG: проверява подписа ac 25 байта: 1 + 1 + 1 + 20 + 1 + 1.
Всеки ред е един елемент от скрипта. Хешът на публичния ключ е частта, която се различава от едно заключване към друго.

Заключващият скрипт (scriptPubKey) държи хеша на публичния ключ между фиксиран набор опкодове. Целият скрипт е 25 байта:

76a91455ae51684c43435da751ac8d2173b2652eb6410588ac

76 е OP_DUP, а a9 е OP_HASH160. 14 поставя в стека следващите 20 байта, които са хешът. 88 е OP_EQUALVERIFY, а ac е OP_CHECKSIG. Изход 1 на 0b6461de422c46a221db99608fcbe0326e4f2325ebf2a47c9faf660ed61ee6a4 има такова заключване.

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

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

483045022100c233c3a8a510e03ad18b0a24694ef00c78101bfd5ac075b8c1037952ce26e91e02205aa5f8f88f29bb4ad5808ebc12abfd26bd791256f367b04c6d955f01f28a7724012103f0609c81a45f8cab67fc2d050c21b1acd3d37c7acfd54041be6601ab4cef4f31

48 поставя в стека 72-байтовия подпис, а 21 поставя 33-байтовия публичен ключ, който започва с 03, защото е компресиран. Вход 0 на 40e331b67c0fe7750bb3b1943b378bf702dce86124dc12fa5980f975db7ec930 е харчене от този вид.

Ключът може да е компресиран (33 байта) или некомпресиран (65 байта). Важно е той да се хешира до стойността в заключването. Компресиран ключ не дава същия хеш като некомпресиран, и обратно.

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

Първо се изпълнява отключващият скрипт, после заключващият. Общата страница за скрипта показва с анимация как се сменя стекът на всяка стъпка. Накратко:

  1. Отключващият скрипт поставя в стека подписа, а после публичния ключ.
  2. OP_DUP копира публичния ключ.
  3. OP_HASH160 хешира копието.
  4. Заключването поставя в стека 20-байтовия хеш от изхода.
  5. OP_EQUALVERIFY проверява дали двата хеша съвпадат и после премахва и двата. Ако се различават, скриптът се проваля.
  6. OP_CHECKSIG проверява подписа спрямо публичния ключ и оставя OP_1, ако подписът е валиден.

Стъпка 5 е допълнителната работа в сравнение с P2PK. Тя доказва, че ключът, показан при харченето, се хешира до ключа, към който изходът е бил заключен.

Какъв адрес има P2PKH?

P2PKH има адрес. Той е Base58Check кодирането на хеша на публичния ключ, с едно-байтов префикс отпред: 00 в основната мрежа (mainnet) и 6f в тестовата мрежа (testnet). Адресите в основната мрежа започват с 1, а тези в тестовата с m или n.

Как публичният ключ става P2PKH адрес: хеширане, после префикс и контролна сума, после Base58 кодиране. От публичен ключ до адрес публичен ключ, некомпресиран, 65 байта 04283338ffd784c1…4d8cde20 HASH160 хеш на публичния ключ, 20 байта bc73550c1612ee81155d29254217cbd60084a6d1 контролна сума префикс, хеш и контролна сума 00bc73550c1612ee81155d29254217cbd6 0084a6d1691c58b9 Base58 кодиране адрес, който започва с 1 1JBSCVF6VM6QjFZyTnbpLjoCJTQEqVbepG
Примерът е от некомпресиран публичен ключ. Адресът е за илюстрация, така че не изпращайте монети към него.

Примерът използва некомпресиран публичен ключ, който започва с 04283338. Неговият HASH160 е bc73550c1612ee81155d29254217cbd60084a6d1. Към префикса и хеша се добавя 4-байтова контролна сума: първите четири байта от двойния SHA-256 на всичко до нея. Base58 кодирането дава адреса 1JBSCVF6VM6QjFZyTnbpLjoCJTQEqVbepG.

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

Защо P2PKH хешира публичния ключ?

Хешът прави адреса по-къс. Ако кодирате компресиран публичен ключ в Base58, адресът е с 51 знака. Хеширането на ключа първо дава адрес с 34 знака, който се копира и споделя по-лесно. Хешът също пази публичния ключ скрит, докато монетите не се харчат. Контролната сума помага да се улови грешка при писане.

До около 2016 г. повечето портфейли са плащали към адреси с P2PKH заключвания. Изпращането към адрес, който започва с 1, и днес създава това заключване.

Кои P2PKH трансакции можете да проверите в нашия explorer?

Следващата страница, P2MS, разглежда заключванията, които изискват няколко подписа. За другите типове адреси вижте страницата за адреси.

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

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

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