Какие форматы бывают у биткоин-адресов?
Что такое биткоин-адрес в формате legacy?
Legacy-адрес - это стандартный для сети биткоина адрес, предложенный Сатоши Накамото. Иначе это формат называют P2PKH (Pay To Public Key Hash), поскольку он требует от получателя подпись, вычисленную из приватного ключа, и публичный ключ. Скрипт транзакции выхода с помощью криптографических функций сверяет их с хешем публичного ключа - и в случае совпадения позволяет расходовать средства. Вероятность того, что система примет некорректно введенный адрес составляет 1232, то есть один случай из 4,29 млрд.
Legacy-адрес можно узнать по префиксу 1 (и m или n в тестовой сети). К основным минусам такого адреса относятся чувствительность к регистру при вводе данных, более высокие комиссии за операции, низкая скорость двойного хеширования контрольной суммы, больший вес в QR-кодах и неудобство записи на мобильном устройстве или на бумаге.
Пример legacy-адреса: 1BUrDeWstWetqBFn5Au8m4JFg2xJaKVN4
Из каких частей состоит биткоин-адрес в формате legacy?
Legacy-адреса уникальны, обычно состоят из 26-35 символов и представляют собой 160-битные хэши открытого ключа ECDSA ключевой пары. С появлением SegWit-адресов их стали называть старыми, однако изначально они были достаточно эффективным средством представления locking scripts в более удобном для пользователей виде и уменьшения рисков отправки средств на некорректный адрес.
Стандартный биткоин-адрес состоит из таких частей:
- префикс;
- сгенерированный в результате применения к приватному ключу алгоритмов SHA256 и RIPEMD публичный ключ;
- контрольная сумма.
Почему в биткоин-адресах бывает разное количество знаков?
Если при преобразовании приватного ключа в начале результата появились нули, в строку биткоин-адреса в формате legacy они не включаются, и тогда он сокращается на соответствующее количество знаков. Поэтому биткоин-адрес может состоять не из 34, но теоретически даже из 20 символов.
Как зашифрованы части legacy-адреса?
Все части биткоин-адреса в формате legacy зашифрованы с защитой от опечаток по системе кодирования Base58Check. В основе кода лежит латинский алфавит. Вы никогда не увидите в таком биткоин-адресе символы, которые легко спутать между собой (знаки плюс и минус, косая черта, ноль, прописные буквы "o" и "i", строчная "L"). Согласно системе Base58Check в них применяются только следующие 58 символов:
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Что такое биткоин-адрес в формате P2SH?
P2SH-адреса (Pay to script hash) появились в предложении по улучшению биткоина BIP-0016 в январе 2012 года благодаря главному научному сотруднику Bitcoin Foundation Гэвину Андресену. Они имеют ту же структуру, что и legacy-адреса, но начинаются с цифры 3.
Такие адреса предполагают, что при переводе средств получатель должен иметь скрипт, подходящий к скрипту хеша. Эта особенность позволяет снижать комиссию за перевод биткоинов отправителем, перекладывать комиссионные затраты на получателя и создавать адреса с мультиподписью.
Технология P2SH может разрешить использование средств любым пользователем или, наоборот, запретить для всех. Важно помнить, что биткоин-адреса в формате P2SH поддерживают SegWit, но не являются его нативным решением. Не поддерживающие SegWit криптокошельки могут проводить SegWit-транзакции благодаря механизмам P2WPKH-в-P2SH и P2WSH-в-P2SH.
Пример P2SH-адреса: 3H28N5WuREZ93CNmhWcRcrnykWrMqkhFyWN
Что такое биткоин-адрес в формате SegWit?
Весной 2016 года разработчики Питер Велле и Грег Максвелл в обновлении BIP-0173 предложили новый формат адреса: Bech32 (часто он же называется SegWit-адрес, P2WPKH - Pay to Witness Public Key Hash). Сам протокол SegWit (Segregated Witness, "отделенный свидетель") предполагал сокращение размера блока в сети биткоина за счет удаления из него подписи и был активирован в конце августа 2017 года.
SegWit-адреса начинаются с bc1 (в тестовой сети - с tb), содержат до 90 знаков (чаще - около 42), при этом пишутся либо только в верхнем (для QR-кодов), либо только в нижнем регистре (предпочтительно).
SegWit-адреса состоят из:
- легко читаемой человеком части,
- разделителя (1),
- данных и контрольной суммы.
Если при введении адреса было допущено до четырех ошибок, контрольная сумма, входящая в Bech32-адрес, не сойдется. Благодаря примененному в решении коду Боуза-Чоудхури -Хоквингема (БЧХ-коду) ошибки будут автоматически исправлены.
При записи Bech32-адрес применяются следующие 32 символа:
аcdefghjklmnpqrstucwxyz234567890
Пример Bech32-адреса: bc1uf5tdn87k2uz7r2kl5zrfww362ch3746lq5vse7
Какие плюсы и минусы использования Bech32-адресов?
C новыми адресами QR-коды стали меньше, а защита от ошибки выше. Кроме того, использование биткоин-адресов в формате Bech32 на сегодня для пользователей более выгодно, ведь комиссия за отправку средств с них ниже, а скорость обработки выше. Главный минус Bech32-адресов - их поддерживают не все криптокошельки и сервисы.
Среди первых поддержку таких адресов добавили аппаратные криптокошельки Ledger Nano S, TREZOR и Digital Bitbox, десктоп-криптокошельки Electrum и Armory, мобильные криптокошельки Edge, GreenAddress (для iOS- и Android-устройств), а также Samourai Wallet, Wasabi Wallet, GreenBits и Electrum (для Android-устройств).
Можно ли переводить биткоины с legacy-адреса на SegWit-адрес?
Активация SegWit в сети биткоина была софтфорком - это значит, что новая и предыдущая версии сохранили совместимость. То есть вы можете без проблем переводить средства с legacy-адреса на SegWit-адреса. На уровне блокчейна проблем с разницей в форматах адресов не существует.
На практике сложности возникают, если пользователь хочет перевести средства со своего legacy-адреса, например, созданного на криптобирже, на bc1-адрес, а торговая площадка технически еще не внедрила поддержку нового формата адресов. В таком случае стоит использовать пусть и менее эффективный, чем bc1-, но все же более продвинутый, чем legacy- P2SH-адрес.
В обратном направлении, с bc1-адреса на legacy-адрес, средства должны поступить без проблем.
Какие обозреватели блоков отслеживают bc1-адреса?
Следить за адаптацией биткоин-адресов формата Bech32 удобно на специальной странице в Bitcoin Wiki. На сегодня bc1-адреса парсят и индексируют обозреватели блоков Blockstream.info, Apirone.com, Bitaps.com, Bitupper Explorer, Blockchair, Blockonomics, Blockpath, BTC.com, chaindex и OXT. В то время, как Blockcypher, Insight и Tradeblock не делают ни то, ни другое, а blockchain.info не поддерживает индексирование.