|
|
Опубліковано 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
|