Кодировщик и декодер Bech32 / Bech32m

Посмотрите, что внутри строки bc1q, bc1p, ltc1, lnurl1 или npub1, либо соберите её из witness-программы или сырых байт. Определяет bech32 или bech32m и проверяет контрольную сумму.

Определяет bech32 или bech32m, показывает человекочитаемую часть, 5-битные данные, сырые байты, а для адресов bc1 / tb1 / ltc1 — версию и программу SegWit witness.

Вычисляется в вашем браузере на JavaScript. Адреса никогда не загружаются на сервер и не сохраняются.

Что такое bech32-кодировщик / декодер?

Bech32-кодировщик / декодер преобразует сырые байты в строковый формат BIP-173 и обратно: человекочитаемая часть (bc, ltc, lnurl, npub), разделитель 1, полезные данные в виде 5-битных групп в 32-символьном алфавите и 6-символьная контрольная сумма BCH. Bech32m (BIP-350) — тот же формат с другой константой контрольной суммы, обязательный для SegWit версии 1 и выше (Taproot bc1p…).

Наглядный пример

Witness-программа 751e76e8199196d454941c45d1b3a323f1433bd6 с версией 0 и hrp bc кодируется в bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4 — эталонный адрес из BIP-173. При декодировании получаем версию 0, 20-байтную программу и кодировку bech32. Та же программа с версией 1 потребовала бы bech32m и начиналась бы с bc1p.

Где встречается bech32

Bech32, bech32m и Base58Check

КодировкаКонтрольная суммаОбнаружение ошибокТипичное применение
bech32 (BIP-173)6 символов, константа 1гарантировано до 4 замен в 90 символахbc1q SegWit v0, LNURL, Lightning-инвойсы, npub
bech32m (BIP-350)6 символов, константа 0x2bc830a3то же, плюс исправлена уязвимость к вставке перед конечной pbc1p Taproot, SegWit v1 и новее
Base58Check4 байта двойного SHA-256вероятностное, без гарантииBitcoin 1… и 3…, Tron T…, XRP

Типичные ошибки

Проверить полный Bitcoin-адрес, включая устаревшие форматы Base58, можно в валидаторе Bitcoin-адресов.

Часто задаваемые вопросы

Что такое bech32?

Кодировка, определённая в BIP-173 для SegWit-адресов Bitcoin: человекочитаемая часть, разделитель 1 и данные в 32-символьном алфавите с 6-символьной контрольной суммой BCH, обнаруживающей до 4 ошибок. Она нечувствительна к регистру и в верхнем регистре удобна для QR-кодов.

В чём разница между bech32 и bech32m?

Bech32m (BIP-350) меняет константу контрольной суммы с 1 на 0x2bc830a3, чтобы устранить уязвимость bech32, когда последний символ — p. SegWit версии 0 (bc1q) остаётся на bech32; версия 1 Taproot и новее (bc1p) используют bech32m. Декодер пробует оба варианта.

Почему данные не переводятся в целые байты?

Bech32 переносит 5-битные группы. SegWit-адрес содержит версию witness в одной группе, за которой идёт программа, поэтому сырые данные не выровнены по байтам; инструмент показывает версию и программу отдельно. В других применениях, таких как LNURL и npub, кодируются целые байты с дополнением.

Можно ли декодировать LNURL и ключи Nostr?

Да. lnurl1… декодируется в текст URL; npub1… и nsec1… — в 32-байтные ключи. Никогда и нигде не вставляйте nsec или любой другой приватный ключ, в том числе здесь.

Какова максимальная длина строки bech32?

BIP-173 ограничивает адреса 90 символами, чтобы сохранялась гарантия обнаружения 4 ошибок. Lightning-инвойсы и LNURL намеренно игнорируют этот предел, поскольку несут гораздо больше данных; контрольная сумма по-прежнему работает, просто с более слабыми гарантиями для очень длинных строк.

Как получить SegWit-адрес из публичного ключа?

Хешируйте сжатый публичный ключ через SHA-256, затем RIPEMD-160, чтобы получить 20-байтную программу, выберите версию witness 0 и hrp bc. Для Taproot используйте 32-байтный x-only выходной ключ с версией 1. Эта страница выполняет шаг кодирования; хеширование ключа выходит за её рамки.