Завьялов Илья Николаевич
Завьялов Илья Николаевич личный блог
Вчера в 13:09

Завьялов Илья Николаевич про типы биткоин-адресов.

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


Если вы активно используете Биткоин, то наверняка замечали множество различных видов адресов. Возможно, вы сталкивались с аббревиатурами, обозначающими разные способы расходования монет. Эти способы оплаты начинаются с символов “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%
Статус Популярность растет

0 Комментариев

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн