Задавались ли вы когда-нибудь вопросом: что значат буквы и цифры, из которых состоит адрес криптовалютного кошелька? Мы воспринимаем причудливую структуру криптоадреса как данность — по аналогии с банковским счётом. Однако, оба типа счетов — не просто набор случайных символов, полученных через рандомайзер.

Если с банком всё достаточно просто — номер скрывает реальные данные о типе пользователя (физ или юрлицо, госорганизация), назначении и валюте счёта, отделении банка и прочем — то криптовалютные счета не содержат никакой персональной информации. О них мы и поговорим в этой статье.

Как образуется адрес криптовалюты: общая информация

Самые популярные криптовалютные адреса создаются по общему принципу:

  • Создаётся закрытый ключ через алгоритм цифровой подписи эллиптической кривой (ECDSA). Закрытый ключ — его ещё называют секретным или личным (private) — представляет собой 256 бит случайной информации;
  • Копия данных закрытого ключа преобразуется в открытый ключ;
  • Открытый ключ (public key) хэшируется — преобразуется в битовую строку фиксированной длины. Так информация зашифровывается, становясь практически недоступной для извлечения;
  • Хэш преобразуется через какой-либо язык кодировки — итоговый адрес содержит номер версии адреса (префикс сети), сам хэш и контрольную сумму для проверки на ошибки.

Поскольку в разных блокчейнах адреса генерируются с небольшими различиями, мы рассмотрим самые три самых популярных метода генерации адресов — для блокчейнов Bitcoin, Ethereum и Litecoin.

Адрес в блокчейне Bitcoin

На декабрь 2021 в блокчейне Биткоин наравне работают три формата криптовалютных адресов — все они имеют итоговую длину от 26 до 35 символов и могут быть представлены в виде QR-кода.

Legacy-адрес

Появляется через скрипты P2PKH (Pay-to-Public-Key-Hash) алгоритма кодирования Base 58. Это — самый первый способ создания биткоин-адресов, на основе которого описаны этапы в предыдущем разделе. Особенности:

  • Открытый ключ хэширутеся последовательно по двум алгоритмам: SHA-256 и RIPEMD-160;
  • Контрольный фрагмент также хэшируется дважды — оба раза по SHA-256;
  • Идентификатор сети — шестнадцатеричное значение 0х00, поэтому итоговые адреса всегда начинаются с 1;
  • При создании адресов не используются ноль (0), буквы «O», прописная «ай» (I) и строчная «эл» (l).

Такие адреса короткие и удобные — пример:

1Kb3Sx1hiSPnXZoJJUWXH3tvufgtmhyFir 

но при их введении обязательно нужно ставить правильный регистр, поскольку буквы разного регистра воспринимаются Base 58 как разные буквы.

P2SH-адрес

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

Единственное отличие P2SH от P2PKH — иной идентификатор сети: 0х05. Из-за другого идентификатора все адреса этого типа начинаются с цифры 3 — пример:

3QVgQ7JNEhgtabfe9ZQBtS36sGEG58DmLt

Остальные особенности идентичны Legacy-адресам.

SegWit-адрес (P2WPKH)

Появился в 2017 году как альтернатива кодировке через Base58 с более высоким уровнем безопасности. SegWit (Pay-to-Witness-Public-Hash) не поддерживается некоторыми старыми кошельками и сервисами из-за серьёзных отличий от двух других — более распространённых — типов адресов:

  • Вместо Base 58 для кодировки используется алгоритм Bech32 — в нём количество допустимых символов ограничено ещё сильнее;
  • Идентификатор сети — bc1;
  • Кодированию подвергаются 2, 3 и 4 фрагмент кода, но не идентификатор, поэтому все адреса начинаются с bc1;
  • Третьим фрагментом кода всегда является цифра 1 — она выступает разделителем между 2 и 4 фрагментами;
  • В адрес зашифровывается контрольная сумма;
  • Регистр не учитывается.

При создании SegWit-адреса не имеет значения регистр — обычно такие адреса унифицируются самостоятельно в строчный формат, пример:

bc1rt6rnd3w2yj82wzkl3fhqq263ch37w6lq5sue7

Адрес в блокчейне Ethereum

Этапы создания ETH-адресов аналогичны BTC-адресам, но с одним серьёзным отличием — иным алгоритмом хэширования.

Открытый код для Ethereum хэшируется через алгоритм keccak-256 и на выходе представляет собой последние 20 байтов хэша с префиксом идентификатора сети «0x» — пример:

0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9

За счёт этого адреса ETH всегда состоят из 42 символов — 40 хэша + 2 идентификатора сети — и также не учитывают регистр.

Одна из главных проблем Ethereum-адресов — идентичность частных адресов пользователей и адресов смарт-контрактов (самоисполняющихся сделок или действий, работающих за счёт встроенных индивидуальных алгоритмов). Из-за этого люди имеют высокий риск отправки средств не на личный счёт пользователя, а на счёт смарт-контракта.

Адрес в блокчейне Litecoin

Поскольку Litecoin — это форк Bitcoin (монета, созданная на основе исходного кода BTC), способы формирования адресов здесь идентичны.

Изначально LTC-адреса создавались только по скрипту P2SH — тогда адреса начинались с цифры 3, пример:

3LpLHam2zqr9abEhjsR7t99g81Bavt3wH7

Однако, из-за совпадения с адресами BTC было принято решение изменить префикс идентификатора — так LTC-адреса стали начинаться с буквы «М», пример:

MT2HaUTzwxhaP6WbqkVThnQ5Shn2zPZEh6

С 2017 Litecoin стал создавать также SegWit-адреса с префиксом «ltc1», пример:

ltc1qv43gel3n5hktgh3tl0rpz3qrt98t0pautaec9f

FAQ о крипто адресах

— Как создать свой криптоадрес?

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

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

Количество символов зависит от объема открытого кода в блокчейне, формата идентификатора сети, способа хэширования кода и кодирования информации.  

— Могут ли по адресу отследить владельца?

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

— Что делать, если ошибся при вводе криптоадреса?

Большинство современных кошельков и бирж не позволяют совершить перевод, если вы вводите несуществующий адрес. Однако, если сервис не проверяет адреса или получившийся адрес оказался активным, то средства уйдут на него без возможности отменить транзакцию. Чтобы избежать подобной проблемы, не вписывайте адреса вручную — копируйте и вставляйте их без ручного ввода и исправления.

— Как проверить, существует криптоадрес или нет?

Можно инициировать отправку средств через сервис, который проверяет адреса на активность, либо воспользоваться разделом Explorer на сайтах, хранящих информацию о транзакциях, например:

Это не единственные сайты, через которые можно делать проверку — при необходимости стоит загуглить другие, вбив в поисковую строку: check *название криптовалюты* address.

Ищите больше постов на тему криптовалюты в Телеграм-канале Покерофф по хэштегу #криптовалюты.