Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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» перед цим символом не призведе до помилки контрольної суми (дані все одно вважатимуться дійсними), тодіМеханізм контрольної суми повністю втрачає свою функціюЗакінчити.

Якщо не додати стандартизований Bitcoin-скрипт, цю проблему можна легко вирішити: і P2WPKH, і P2WSH мають певну довжину, просто додайте перевірку довжини. Однак, враховуючи, що в майбутньому ми також додаватимемо нові стандартизовані скрипти, довжина адреси може змінитися, тому цю проблему необхідно вирішити.

Bech32m вирішує цю проблему, змінюючи параметр у генераторі контрольної суми Bech32.

Наразі Bech32m використовується лише для кодування адрес скриптів "P2TR", які додаються з оновленням "Taproot". У майбутньому його можуть використовувати в кодуванні адрес інших стандартизованих скриптів.

Посилання:

Вхід за гіперпосиланням видно.
Вхід за гіперпосиланням видно.
Вхід за гіперпосиланням видно.




Попередній:tiktok, Douyin захоплює пакет і знищує скрипт Frida, який може знайти місцезнаходження патча файлу SO
Наступний:Вступ до типів адрес Bitcoin Legacy, вкладений SegWit, Native SegWit та Taproot
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com