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

Вид: 259|Ответ: 0

Подробное объяснение кодирования блокчейнов Base58, Base58Check, Bech32 и Bech32m

[Скопировать ссылку]
Опубликовано 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
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com