Типы биткоин-адресов
Cover

Сравнение типов биткоин-адресов

8 марта 2023 г.

В этой статье рассматриваются методы получения биткоина ончейн, которые были внедрены в протокол по мере его развития.

Перевод работы Тома Хонзика подготовлен Тони⚡️. Поддержать проект.

Если вы активно используете Биткоин, то наверняка замечали множество различных видов адресов. Возможно, вы сталкивались с аббревиатурами, обозначающими разные способы расходования монет. Эти способы оплаты начинаются с символов “P2” (от англ. “pay to” - “заплатить на”), например P2PKH или P2WSH. Сегодня мы рассмотрим все методы получения биткоина ончейн, которые были внедрены в протокол по мере его развития, и объясним некоторые существенные различия, которые делают каждый метод уникальным.

Сравнительная таблица доступна здесь.

P2PK #

Отправка на публичный ключ (Pay-to-Public-Key) – это метод передачи биткоина, который не предполагает указания адреса. P2PK был первым типом, который Сатоши внедрил для передачи монет. Как следует из названия, биткоин отправляется непосредственно на публичный ключ получателя. Первая передача биткоина, когда Сатоши Накамото отправил монеты Хэлу Финни в блоке номер 170, была проведена с использованием P2PK.

P2PK больше не используется, поскольку это более дорогой, менее приватный и не самый безопасный способ передачи биткоина.

Интересные факты

Первое появлениеБлок 0 - 3 января 2009 г.
Пример получателя04678afdb0fe5548271967f…384df7ba0b8d578a4c702b6bf11d5
Текущий объем хранящихся монет~ 1.7 млн BTC или 9%
СтатусУстаревший

P2PKH #

Отправка на хеш публичного ключа (Pay-to-Public-Key-Hash) была доступна с самого начала существования Биткоина. Этот вид транзакции впервые был осуществлён в блокчейне менее чем через две недели после создания генезис-блока. P2PKH предлагает ряд усовершенствований по сравнению с P2PK, в частности, использует адрес вместо самого публичного ключа. Плюс адресов состоит в том, что они содержат контрольную сумму, которая помогает избежать опечаток и потери биткоинов.

Адреса P2PKH обычно состоят из 34 или 33 символов (но теоретически могут состоять и из 26 символов) и кодируются в формате Base58. Они начинаются с префикса 1 и на связанных с ними ключах в настоящее время хранится 43% добытых биткоинов. По этому параметру P2PKH обходит любой другой тип расходования монет.

Создание P2PKH-адреса предполагает хеширование публичного ключа через функции SHA-256 и RIPEMD-160. Это сокращает объем данных, что, в свою очередь, позволяет экономить место в блоке и снижает транзакционные комиссии. Это также обеспечивает дополнительную защиту приватного ключа от обнаружения злоумышленниками, помимо использования эллиптической кривой secp256k1, которая уже считается неприступной.

Интересные факты

Первое появлениеБлок 728 - 16 января 2009 г.
Префикс1
Пример получателя12higDjoCCNXSA95xZMWUdPvXNmkAduhWv
КодировкаBase58
Количество символов26 - 34
Текущее предложение~ 8.3 млн BTC или 43%
СтатусПопулярность падает

P2MS #

Отправка на кошелек с мультиподписью (Pay-to-Multisig) - это простой тип транзакций, который был актуален только в течение короткого времени и никогда не использовался для хранения более 100 биткоинов одновременно. Тем не менее, P2MS является частью истории Биткоина.

P2MS был введен в качестве стандартного скрипта (сценария расходования) в начале 2012 года в соответствии с BIP11. Однако этот тип транзакций страдал от тех же проблем, что и P2PK, - раскрывал открытые ключи, так как для получения монет использовались ключи, а не адреса. Кроме того, он ограничивал количество публичных ключей в мультисиг-кворуме тремя. В течение нескольких месяцев P2MS заменили альтернативным методом получения биткоина в мультисиг-схеме под названием P2SH.

Интересные факты

Первое появлениеБлок 164467 - 29 января 2012 г.
Пример получателяНесколько публичных ключей, как в P2PK
Текущее предложение~ 43 BTC или 0.0002%
СтатусУстаревший

P2SH #

Оплата на хеш скрипта (Pay-to-Script-Hash) была введена в виде софтфорка в соответствии с BIP 16 1 апреля 2012 г. Как и большинство форков, история его появления очень интересна. P2SH во многом схож с P2PKH. Основное отличие заключается в том, что адрес создается путем хеширования скрипта погашения, а не публичного ключа. 

Скрипт погашения является закодированной инструкцией, которая определяет, как полученные на адрес P2SH монеты, могут быть потрачены в будущем. Здесь может быть множество вариантов, включая несколько различных публичных ключей. Детали скрипта определяет получатель, а не отправитель. Инструкции по расходованию средств не публикуются до тех пор, пока биткоины не будут потрачены.

Хотя опытные пользователи могут создавать сложные скрипты, наиболее часто P2SH используется для создания адресов Nested SegWit (о них речь пойдет ниже) и мультисиг-кошельков. Например, скрипт может включать три публичных ключа и указывать, что подписи любых двух из трех указанных приватных ключей могут расходовать биткоин. Таким образом создается мультисиг-адрес 2-из-3.

Длина P2SH-адресов составляет ровно 34 символа, и они начинаются с префикса 3, как это предусмотрено BIP 13. До софтфорка, состоявшегося 1 апреля, несколько разработчиков отправляли транзакции, экспериментируя с этим префиксом. Первая из подобных транзакций содержится в блоке 170052.

Интересные факты

Первое появлениеБлок 174717 - 7 апреля 2012 г.
Префикс3
Пример получателя342ftSRCvFHfCeFFBuz4xwbeqnDw6BGUey
Текущее предложение~ 4,6 млн BTC или 24%
КодировкаBase58
Количество символов34
СтатусПопулярность падает

P2WPKH #

Оплата на свидетельские данные хеша публичного ключа (Pay-to-Witness-Public-Key-Hash) - первый тип адресов, появившийся в Биткоине после софтфорка SegWit в августе 2017 года. История этих событий описана в книге “Война за размер блока”, написанной Джонатаном Биром.

P2WPKH - это SegWit-вариант P2PKH. Выбрав этот тип адреса вместо старых адресов P2PKH вы сэкономите на транзакционных комиссиях.

Адреса SegWit сильно отличаются от устаревших типов адресов (Legacy), поскольку согласно BIP173 они используют кодировку Bech32 вместо Base58. Что особенно важно, в Bech32 отсутствуют заглавные буквы. Адреса P2WPKH можно идентифицировать по префиксу bc1q и длине строки, равной 42 символам.

Интересные факты

Первое появлениеБлок 481824 - 23 августа 2017 г.
Префиксbc1q
Пример получателяbc1q34aq5drpuwy3wgl9lhup9892qp6svr8ldzyy7c
КодировкаBech32
Количество символов42
Текущее предложение~ 3,8 млн BTC или 20%
СтатусПопулярность растет

P2WSH #

Оплата на свидетельские данные хеша скрипта (Pay-to-Witness-Script-Hash) - это SegWit-вариант P2SH. Основное преимущество P2WSH перед P2SH заключается в том, что он позволяет снизить комиссию за транзакции, а основная причина использования хеша скрипта вместо хеша публичного ключа заключается в возможности использования схем мультисиг.

Как и P2WPKH, адрес P2WSH начинается с префикса bc1q. Однако его строка содержит больше символов - ровно 62. В отличие от рассмотренных до сих пор типов адресов, адреса P2WSH создаются только с использованием функции хеширования SHA-256, не прибегая к RIPEMD-160. Обход хеширования через RIPEMD-160 обусловил увеличение количества символов; это было сделано, чтобы обеспечить дополнительную защиту от (хоть и весьма тонкой и крайне маловероятной) атаки на схемы мультисиг.

Интересные факты

Первое появлениеБлок 481824 - 23 августа 2017 г.
Префиксbc1q
Пример получателяbc1qeklep85ntjz4605drds6aww9u0qr46qzrv5xswd35uhjuj8ahfcqgf6hak
КодировкаBech32
Количество символов62
Текущее предложение~ 0.8M BTC или 4%
СтатусПопулярность растет

Nested SegWit (P2SH-P2WPKH и P2SH-P2WSH) #

Nested SegWit (также известный как Wrapped SegWit) технически не является отдельным типом адресов. Тем не менее, это уникальный способ использования ранее рассмотренных вариантов, принесший в свое время значительную пользу биткоин-сообществу.

Когда произошел софтфорк SegWit, не все биткоин-узлы, программное обеспечение и сервисы сразу же обновились для поддержки новых типов адресов Native SegWit - P2WPKH и P2WSH. Только узлы, обновившие свое ПО, могли отправлять монеты на эти адреса. Это означало, что те, кто хотел иметь возможность получать биткоины от любого участника сети (в том числе и от тех, кто не обновился), пока не могли использовать кошелек Native SegWit. Однако, поскольку SegWit предлагал более низкие комиссии за транзакции, многие стремилось начать его использовать.

Хитрым решением стало использование транзакций P2SH. Организации, еще не внедрившие SegWit, могли отправлять биткоины на адреса P2SH, которые, как уже говорилось выше, создаются с помощью скрипта погашения, содержащего инструкции по дальнейшему расходованию монет. Как оказалось, эти инструкции могут включать в себя новую модель расходования SegWit, предоставляя пользователям возможность снизить комиссии. Поэтому P2SH-адреса, использующие этот трюк, стали называться Nested SegWit и сыграли значительную роль в процессе принятия этого обновления.

Внешне адреса Nested SegWit неотличимы от других P2SH-адресов, поэтому количество биткоинов, хранящихся этим способом, неизвестен. Кроме того, поскольку все современные инструменты для работы с Биткоином теперь могут отправлять их непосредственно на адреса Native SegWit, веских причин для использования Nested SegWit больше нет.

Интересные факты

Первое появлениеНеизвестно
Префикс3
Пример получателяТот же, что и у P2SH
КодировкаBase58
Количество символов62
Текущее предложениеНеизвестно (подмножество P2SH)
СтатусУстаревший

P2TR #

Оплата на Тапрут-адрес (Pay-to-Taproot) - это самый новый тип адресов, который стал доступен благодаря софтфорку Taproot в ноябре 2021 года. На момент написания статьи уровень распространения P2TR остается довольно низким. Некоторые программные продукты и сервисы, использующие Биткоин, всё еще работают над его внедрением. Со списком ПО и бизнесов, поддерживаюх Taproot, можно ознакомиться здесь.

В то время как P2WPKH и P2WSH известны как SegWit V0, P2TR считается SegWit V1. Примечательно, что в P2TR используется алгоритм цифровой подписи Шнорра в отличие от более ранних типов расходования биткоина, полагающихся на формат ECDSA. Подписи Шнорра обладают рядом преимуществ, включая дополнительное снижение транзакционных комиссий и улучшение приватности.

Говоря о приватности, благодаря объединению ключей и подписей Шнорра мультисиг-адреса неотличимы от адресов с одной подписью, а условия расходования средств для P2TR-адреса никогда не раскрываются публично. Создатель адреса может даже включить в него несколько настраиваемых скриптов погашения для последующей траты монет.

Адреса P2TR состоят из 62 символов и используют кодировку Bech32m - несколько модифицированную версию Bech32, описанную в BIP 350. Адреса P2TR можно идентифицировать по уникальному префиксу bc1p.

Интересные факты

Первое появлениеБлок 709632 - 13 ноября 2021 г.
Префиксbc1p
Пример получателяbc1pxwww0ct9ue7e8tdnlmug5m2tamfn7q06sahstg39ys4c9f3340qqxrdu9k
КодировкаBech32m
Количество символов62
BTC на адресах~ 0,02M BTC или 0.1%
СтатусПопулярность растет

Сравнительная таблица #

ТипПервое появлениеBTC на адресахИспользованиеКодировкаПрефиксСимволы
P2PKянв 20099% (1.7M)Устарел---
P2PKHянв 200943% (8.3M)СпадBase58126 - 34
P2MSянв 2012НезначительноУстарел--
P2SHапр 201224% (4.6M)СпадBase58334
P2WPKHавг 201720% (3.8M)РостBech32bc1q42
P2WSHавг 20174% (0.8M)РостBech32bc1q62
P2TRноя 20210.1% (0.02M)РостBech32mbc1p62

Connect to our relay to leave a comment. Details.
Подключитесь к нашему релею, чтобы оставить комментарий. Подробнее.