кодирование | декодирование | сжатие

> bech32 | segwit | bc1 <

// Bech32 — кодирование адресов Bitcoin SegWit с проверкой ошибок

[SEGWIT]

Адреса Bitcoin

Родной формат для адресов Bitcoin SegWit, начинающихся с bc1.

[ERROR-DETECTION]

Улучшенное обнаружение ошибок

Лучше обнаруживает и локализует ошибки, чем формат Base58Check.

[CASE-INSENSITIVE]

Удобно для QR‑кодов

Использование только строчных символов делает QR‑коды компактнее и удобнее для сканирования.

>> технические детали

Как работает Bech32:

Bech32 использует алфавит из 32 символов (без легко путаемых символов) и код BCH для обнаружения ошибок. Адрес состоит из читаемой части (HRP), разделителя 1, данных и шестисимвольной контрольной суммы.

Структура:

bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4 bc = HRP (основная сеть Bitcoin) 1 = разделитель qw508d = данные (группы по 5 бит) kv8f3t4 = контрольная сумма (последние 6 символов)

Зачем использовать Bech32:

  • >Адреса Bitcoin SegWit
  • >Счета Lightning Network
  • >Адреса криптовалют
  • >Устойчивое к ошибкам кодирование
  • >Оптимизация для QR‑кодов

>> ответы на частые вопросы

Что такое Bech32?

Bech32 — это формат base32 с контрольной суммой, используемый преимущественно для адресов Bitcoin SegWit. Он был разработан как более надёжная замена старым форматам адресов с улучшенным обнаружением ошибок.

В чём разница между Bech32 и Bech32m?

Bech32m — улучшенная версия, исправляющая слабое место исходного алгоритма контрольной суммы Bech32. Она применяется для адресов Taproot (bc1p), тогда как обычные SegWit‑адреса используют Bech32.

Почему адреса Bech32 записываются строчными буквами?

Строчные адреса формируют более компактные QR‑коды и их легче набирать вручную. Формат не чувствителен к регистру, но по соглашению используется нижний регистр для единообразия.

Что такое HRP?

HRP (Human Readable Part) задаёт тип адреса и сеть. Типичные примеры: bc для основной сети Bitcoin, tb для тестовой сети, ltc для Litecoin.

// Краткий справочник

valueСимвол
0 8 16 24q g s c
1 9 17 25p f 3 e
2 10 18 26z 2 j 6
3 11 19 27r t n m
4 12 20 28y v 5 u
5 13 21 299 d 4 a
6 14 22 30x w k 7
7 15 23 318 0 h l

// Примеры кода

Charset    qpzry9x8gf2tvdw0s3jn54khce6mua7l   (32 symbols, no 1 b i o)
Format     <hrp> + "1" + <data> + <6-char checksum>   (max 90 chars)
HRP        bc (Bitcoin) | tb (testnet) | ltc (Litecoin) | lnbc (Lightning)
Checksum   Bech32 constant 1  (BIP-173)  |  Bech32m constant 0x2bc830a3  (BIP-350)
Example    bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4

>> Другие вопросы

В: Чем Bech32 отличается от Bech32m?

О: Формат и набор символов одинаковы, но константа контрольной суммы разная: у Bech32 (BIP-173) это 1, у Bech32m (BIP-350) — 0x2bc830a3. Bech32m используется для SegWit v1 и выше, то есть Taproot (bc1p…), Bech32 — для v0 (bc1q…).

В: Почему в алфавите Bech32 нет 1, b, i и o?

О: В 32 символах qpzry9x8gf2tvdw0s3jn54khce6mua7l исключены похожие знаки: 1 служит разделителем, а b, i, o похожи на 6, 1 и 0. Код допустим только в нижнем или только в верхнем регистре.

В: Насколько хорошо контрольная сумма Bech32 находит ошибки?

О: 6 контрольных символов основаны на коде BCH. Они гарантированно обнаруживают любую ошибку до 4 символов и находят опечатки намного лучше, чем Base58Check. Длина ограничена 90 символами.

Другие языки