Перейти к содержимому
buybitcoinsmart

Глоссарий / Адреса и ключи

Адрес P2PKH

Другие названия: Pay-to-Public-Key-Hash, Выход P2PKH.

Что такое адрес P2PKH?
P2PKH представляет собой тип выхода, который блокирует монеты на 20-байтовом хеше публичного ключа, поэтому сам ключ остается скрытым до момента, когда вы тратите.

Pay to public key hash представляет собой шаблон скрипта, лежащий в основе каждого адреса, который начинается с 1. Его скрипт блокировки занимает ровно 25 байт и выполняет пять операций, когда монеты перемещаются. Поскольку выход фиксирует отпечаток, а не ключ, неистраченный выход P2PKH не сообщает наблюдателю ничего о публичном ключе за ним.

Как это работает

Выход P2PKH несет один скрипт блокировки, всегда одной и той же формы: OP_DUP OP_HASH160 <хеш из 20 байт> OP_EQUALVERIFY OP_CHECKSIG. Этот хеш из 20 байт является HASH160, то есть RIPEMD-160, примененным к SHA-256 сжатого публичного ключа, и именно так ключ из 33 байт превращается в обязательство из 20 байт.

При трате в scriptSig входа передаются два элемента: подпись, затем публичный ключ. Выполнение идет по порядку. OP_DUP копирует ключ, OP_HASH160 сокращает копию до 20 байт, OP_EQUALVERIFY сравнивает ее с зафиксированным значением и прерывается при расхождении, а OP_CHECKSIG проверяет подпись относительно транзакции. Обе проверки должны пройти; провал любой из них делает недействительной всю транзакцию, а не только этот вход.

Размеры следуют из структуры. Выход P2PKH занимает в блокчейне 34 байта: сумма из 8 байт, длина из 1 байта и скрипт из 25 байт. Вход занимает примерно 148 vbyte, потому что подпись ECDSA в кодировке DER занимает от 71 до 72 байт, сжатый ключ добавляет еще 33, и все это находится вне свидетеля (witness), где каждый байт весит в четыре раза больше.

Где это встречается

Каждый адрес, начинающийся с 1, является адресом P2PKH, что охватывает большинство монет, перемещенных до активации SegWit в блоке 481 824 в августе 2017 года. Обозреватели блоков указывают тип у каждого выхода, поэтому вы можете проверить, на что смотрите, ничего не декодируя.

Деталь, которую стоит запомнить, касается того, когда ваш публичный ключ становится публичным. Пока вы не потратили монеты, в блокчейне хранится только хеш. Первая трата публикует ключ в scriptSig навсегда. Если после этого вы снова используете тот же адрес, любой последующий баланс оказывается за ключом, который уже виден всем, а это снимает слой защиты, который вам ничего не стоил. Это проблема приватности сразу же, и именно поэтому долгая дискуссия о будущих атаках на криптографию эллиптических кривых сосредоточена на повторно используемых и уже потраченных адресах, а не на новых.

На практике: пусть кошелек выдает вам новый адрес для получения на каждый платеж, и пусть сдача также уходит на новый адрес. Современное программное обеспечение делает и то и другое по умолчанию.

Адрес P2PKH vs P2WPKH

P2PKH и P2WPKH фиксируют одно и то же и стоят очень по-разному. Оба блокируют монеты на 20-байтовом HASH160 одного сжатого публичного ключа, и оба открываются одной подписью этого ключа. Различает их то, где записываются данные для разблокировки. P2PKH хранит подпись и ключ в scriptSig, которые считаются по четыре весовые единицы на байт; P2WPKH переносит их в свидетель, где считается одна. Поэтому один и тот же секрет может дать адрес на 1 и адрес bc1q, которые совсем не похожи, хранят монеты независимо друг от друга и различаются более чем вдвое по стоимости их опустошения.

Не путать с

Часто задаваемые вопросы

Совпадает ли адрес P2PKH с устаревшим адресом (legacy)?

На практике да, с одной оговоркой. Каждый адрес P2PKH начинается с 1 и является устаревшим адресом, но слово legacy часто растягивают и на строки Base58, начинающиеся с 3, которые относятся к P2SH, а не к P2PKH.

Когда мой публичный ключ становится виден в блокчейне?

Когда вы впервые тратите с этого адреса. До этого в блокчейне хранится только хеш из 20 байт. После этой траты ключ становится публичным навсегда, и это одна из причин, по которым кошельки выдают вам новый адрес для каждого платежа.

Читайте далее

Связанные термины

Еще в разделе «Адреса и ключи»

Читать эту страницу на английском