|
|
Опубликовано 2025-10-17 09:01:55
|
|
|
|

Base58, Base58Check, Bech32 и Bech32m — это широко используемые форматы кодирования в блокчейн-технологиях, в основном для улучшения читаемости, снижения ошибок и обеспечения целостности данных. Эти четыре кода имеют свои преимущества в обеспечении безопасности, совместимости и возможностей коррекции ошибок, и являются важными краеугольными камнями современных блокчейн-адресных систем.
Base58
«Base58» — это метод кодирования, изобретённый Сатоши Накамото, адаптированный из известного метода кодирования «Base64». Набор символов Base64 включает: все цифры, заглавные и строчные буквы, а также два символа («+» и «/»); Всего 64 символа. Сатоши Накамото убрал число 0, заглавные буквы I и O, строчные буквы l и символ, и он стал Base58.
Набор символов: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Base58Check
По сравнению с Base58, кодирование Base58Check содержит только одно вычисление контрольной суммы больше. Как показано ниже:
Base58Check решает проблемы подверженности ошибкам, трудности для распознавания и неверифицированности в традиционных методах кодирования, обеспечивая безопасный, компактный, удобный для человека и обнаруженный ошибки метод представления ключевых данных в блокчейне (таких как адреса и приватные ключи). Хотя сейчас его постепенно заменяют более продвинутые Bech32/Bech32m (для адресов SegVit), он сыграл ключевую роль в ранней экосистеме Биткоина.
Bech32
«Bech32» — это метод кодирования, определённый BIP 0173, авторами которого были Питер Вуилле и Грег Максвелл. Однако это кодирование также имеет свои корни: «Bech» относится к «BCH» — циклическому алгоритму кодирования ошибок, изобретённому тремя математиками в 1959 и 1960 годах соответственно (название BCH происходит от имён этих трёх математиков). «32» означает, что набор символов метода кодирования содержит всего 32 символа: строчные буквы и цифры, исключая цифры «1», буквы «b», «i» и «o».
В начале BIP 0173 авторы указывают на нежелательные аспекты Base58:
- Base58 использует как крупные, так и мелкие английские буквы, что позволяет его данные отображаться в QR-коды не в меньшем режиме «числового алфавита», а только в более крупном режиме «байтовых данных».
- Использование как корпуса, так и чехла также затрудняет транскрибирование, набор текста и чтение на клавиатуре телефона.
- Контрольная сумма требовала двух последовательных операций SHA256, которые были медленными и не позволяли найти неправильное место.
- Большинство локализируемых методов кодирования ошибок работают только если размер набора символов равен простой степени, а 58 не является простой степенью.
- Base58 сложнее декодировать и медленнее декодировать.
В результате новый подход Bech32 использует только строчные буквы и цифры; При необходимости, например, при рисовании QR-кода, эти буквы можно заменить заглавными для более компактного изображения. Меньшие QR-коды, поскольку адреса Bech32 являются единственными, их можно кодировать как QR-коды в буквенно-цифровом режиме. Это значит, что вы можете создать более компактный QR-код, потому что Base58 требует заглавных и строчных букв (то есть нельзя использовать буквенно-цифровой режим), а Bech32 — нет. Как показано ниже:
Как видите, несмотря на адрес Bech32Содержит больше символов, но возможность использовать буквенно-цифровые шаблоны означает, что QR-коды в целом используют меньше данных。
В то же время Bech32 обладает способностью находить ошибки: он может не только обнаружить ошибку копирования, но и указать, какие биты вы скопировали неправильно (эта способность находить ошибки значительно превосходит Base58).
На самом деле, алгоритм BCH также имеет функцию «коррекции ошибок»: он может не только указывать, какие биты вы скопировали неправильно, но и какие символы они должны использовать. Однако авторы BIP 0173 обнаружили его внутренние опасности: с одной стороны, усиление коррекции ошибок ослабляет способность их обнаружить; С другой стороны, если пользователь слишком сильно доверяет возможностям программы по исправлению ошибок, оно может исправить ошибочные данные, введённые пользователем, в «действительный, но бесполезенный» фрагмент данных — хотя они действительны как фрагмент закодированного BCH; Однако возможно, что восстановленный скрипт биткоина не находится под контролем получателя или даже кого-либо ещё. Это чрезвычайно опасно. Поэтому BIP 0173 предупреждает: «Помимо напоминания пользователям, какие биты могли быть скопированы неправильно, программное обеспечение не должно реализовывать возможности коррекции ошибок (давать предложения по исправлению).» ”
Кроме того, Bech32 следует шаблону, встречающемуся в кодировании Base58:
1. Данные Bech32 начинаются с абзаца «data with meaning (hrp)», аналогичного префиксу в Base58, который может указывать, какой именно тип данных это имеет. HRP может использовать гораздо больше 32 персонажей; Bech32 также использует число «1» как разделитель, чтобы отделить HRP от данных, которые фактически подлежат декодированию. Помимо Биткоина, существует множество других проектов, которые также приняли Bech32; HRP используется для различения данных от различных элементов. Вот список зарегистрированных HRP, который очень интересен (но только интересен). 2. Bech32 также разработала контрольную сумму, занимающую последние 6 символов закодированных данных.
Bech32m
«Bech32m» — это метод кодирования, определённый BIP 0350. Связь:Вход по гиперссылке виден.Он был предложен потому, что разработчики обнаружили уязвимость в кодировании Bech32:
Если последний символ — «p», вставка или удаление любого числа «q» перед этим символом не приведёт к ошибке контрольной суммы (данные всё равно будут считаться действительными), тогдаМеханизм контрольной суммы полностью теряет свою функциюЗаканчивать.
Если не добавить стандартизированный биткоин-скрипт, эту проблему можно легко решить: и адрес P2WPKH, и адрес P2WSH имеют определённую длину, просто добавьте проверку длины. Однако, учитывая, что в будущем мы также добавим новые стандартизированные скрипты, длина адреса может измениться, поэтому необходимо решить эту проблему.
Bech32m решает эту проблему, изменив параметр в генераторе контрольной суммы Bech32.
В настоящее время Bech32m используется только для кодирования адресов скриптов «P2TR», добавленных с обновлением «Taproot». В будущем он может использоваться в кодировании адресов других стандартизированных скриптов.
Ссылка:
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден. |
Предыдущий:tiktok, Douyin захватывают пакет и уничтожают скрипт Frida, который может найти местоположение патча файла SOСледующий:Введение в типы адресов биткоина: Legacy, Nested SegWit, Native SegWit и Taproot
|