Какие существуют виды Bitcoin-адресов?

Типы биткоин-адресов (Legacy, Script, SegWit, Taproot)

Адреса в сети Bitcoin состоят из буквенно-цифровых символов и необходимы для отправки или получения транзакций. В сети Bitcoin существует несколько адресов, отличающихся по префиксу (символам в начале адреса). Рассмотрим в этой статье, чем отличаются такие адреса и почему возникло несколько видов адресов в одном блокчейне.

Список всех существующих видов адресов в сети Bitcoin:

  • Pay-to-Public-Key (P2PK).
    пример адреса: 04678afdb0fe5548271967f…384df7ba0b8d578a4c702b6bf11d5
  • Pay-to-Public-Key-Hash (P2PKH), известный как Legacy.
    пример адреса: 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2
  • Pay-to-Multisig (P2MS), известный, как Multisig.
    пример адреса: несколько открытых ключей, как в P2PK
  • Pay-to-Script-Hash (P2SH), известный, как Script.
    пример адреса: 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
  • Pay-to-Witness-Public-Key-Hash (P2WPKH), известный, как Segregated Witness или SegWit.
    пример адреса: bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq
  • Pay-to-Witness-Script-Hash (P2WSH), известный, как Script Witness.
    пример адреса: bc1qeklep85ntjz4605drds6aww9u0qr46qzrv5xswd35uhjuj8ahfcqgf6hak
  • Pay-to-Taproot (P2TR), известный, как Bech32m или Taproot.
    пример адреса: bc1p5d7rjq7g6rdk2yhzks9smlaqtedr4dekq08ge8ztwac72sfr9rusxg3297

Можно ли отправлять BTC между адресами разных видов?

На момент публикации, такие типы адресов, как Legacy, Script и Segwit полностью совместимы между собой и могут как отправлять, так и принимать транзакции. Сложнее дело обстоит с адресами Taproot, т.к. большинство кошельков поддерживают отправку, но не имеют функции создания таких адресов, а основная масса криптобирж так и не интегрировали поддержку Taproot-адресов.

Почему возникли разные виды адресов?

Несколько разных видов адресов Bitcoin возникло из-за развития технологии и необходимости размещения различных функций при сохранении совместимости с существующими системами. Каждый вид адреса отличается используемыми технологиями и преимуществами для пользователя — в частности, возможность платить более низкие комиссии за транзакции.

Рассмотрим каждый из видов адресов в отдельности:

P2PK

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

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

P2PKH (Legacy)

Pay-to-Public-Key-Hash (P2PKH) был доступен для использования с самого начала существования блокчейна, и впервые он появился менее чем через две недели после создания блока генезиса. Данный тип адреса имеет ряд усовершенствований по сравнению с P2PK. Такие адреса содержат контрольную сумму, которая помогает предотвратить опечатки и потерю BTC.

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

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

P2MS (Multisig)

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

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

P2SH (Script)

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

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

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

Адреса P2SH состоят ровно из 34 символов и начинаются с префикса «3». До софтфорка несколько транзакций экспериментировали с этим альтернативным префиксом, первая из которых находится в блоке 170 052.

P2WPKH (SegWit)

Pay-to-Witness-Public-Key-Hash (P2WPKH) — это первый из двух типов адресов, появившихся в сети Bitcoin после софтфорка SegWit в августе 2017 года. По сути, P2WPKH — это SegWit-вариант P2PKH, что на базовом уровне означает, что выбор этого типа адреса вместо старых адресов P2PKH поможет вам сэкономить на комиссиях за транзакции при перемещении BTC.

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

P2WSH (Script Witness)

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

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

P2TR (Taproot)

Pay-to-Taproot (P2TR) — это самый новейший тип адресов, который стал доступен благодаря софтфорку Taproot в ноябре 2021 года. На момент публикации уровень распространения P2TR остается довольно низким. Примечательно, что в P2TR используется алгоритм цифровой подписи Шнорра (Schnorr Signature), который отличается от формата ECDSA, используемого в более ранних типах транзакций BTC. Подписи Шнорра имеют ряд преимуществ, включая дополнительное снижение комиссии и повышенную конфиденциальность транзакций.

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

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

Справочная таблица по Bitcoin-адресам

ТипПоявлениеИспользованиеИспользованиеПрефиксСимволы
P2PKЯнварь 2009Устаревший
P2PKHЯнварь 2009УменьшаетсяBase58126 – 34
P2MSЯнварь 2012Устаревший
P2SHАпрель 2012УменьшаетсяBase58334
P2WPKHАвгуст 2017УвеличиваетсяBech32bc1q42
P2WSHАвгуст 2017УвеличиваетсяBech32bc1q62
P2TRНоябрь 2021УвеличиваетсяBech32mbc1p62