Привіт!
Це знову “that’s what she said”, ньюзлеттер, який допомагає вам розібратися у світі крипті, а не просто кивати головою, коли хтось згадує про неї на вечірках. Минулого разу ми досліджували блок-експлорери — пошукові системи блокчейну, які дозволяють перевірити все самостійно, але у крипто-стилі (якщо ви пропустили цю статтю, поверніться й прочитайте її, перш ніж переходити до сьогоднішньої теми).
Сьогодні ми обговорюємо невидимих охоронців безпеки блокчейну: хеш-функції та Візантійську відмовостійкість (BFT). Без них блокчейн був би приблизно таким же безпечним, як залишити відчинені вхідні двері з табличкою "пограбуйте мене".
Думайте про них як про імунну систему крипти. Хеш-функції та BFT не отримують стільки уваги, як Bitcoin або NFT, але саме вони виконують важку роботу за кожною транзакцією, яку ви робите.
Більшість людей пропускають вивчення цих речей, бо це звучить технічно й нудно. Це велика помилка, якщо чесно. Розуміння цих основ — це те, що відрізняє туристів від місцевих у крипто-просторі.
Тож давайте розберемо цю тему!
🔐 Cryptography: The Foundation
Перш ніж ми зануримося в хеш-функції та Візантійську відмовостійкість, нам потрібно поговорити про їхню батьківську дисципліну: криптографію.
Криптографія — це наука про захист інформації за допомогою математичних методів, які роблять дані нечитабельними для всіх, крім тих, хто має ключ для їх розшифрування. Саме слово походить від грецького "kryptos" (прихований) і "graphein" (писати) — буквально, приховане письмо.
Люди використовують криптографію тисячі років. Стародавні спартанці використовували пристрій під назвою скитала для шифрування військових повідомлень. Юлій Цезар винайшов шифр Цезаря, зміщуючи літери в алфавіті, щоб приховати свої бойові плани. Під час Другої світової війни німецька машина "Енігма" створювала коди настільки складні, що їх розшифрування змінило хід історії.
Сучасна криптографія інша. Вона базується на настільки складній математиці, що навіть суперкомп'ютери не можуть її розшифрувати за розумний проміжок часу. Ми говоримо про проблеми, на вирішення яких знадобилися б тисячі років.
Технологія блокчейну стоїть на плечах сучасної криптографії. Кожна транзакція, кожна адреса гаманця, кожен блок — все це покладається на криптографічні методи, які перетворюють блокчейн із спільної електронної таблиці на безпечну фінансову систему. Хеш-функції та Візантійська відмовостійкість — це дві з найважливіших концепцій безпеки та консенсусу (обидві значною мірою підтримуються криптографією), які роблять це можливим.
🧠 Hashing
Хешування — це процес взяття будь-якого фрагмента даних — чи то одне слово, ціла книга або складна транзакція — і пропускання його через математичний алгоритм для створення рядка символів фіксованої довжини, який називається хеш.
Думайте про це як про відбиток пальця для даних. Так само як ваш відбиток пальця унікально ідентифікує вас і не може бути використаний у зворотному порядку для відтворення всього вашого тіла, хеш унікально ідентифікує дані, але не може бути використаний для відтворення початкової інформації.
У загальному обчисленні хешування використовується для всього — від безпечного зберігання паролів до швидкого пошуку даних у величезних базах даних. Веб-сайти не зберігають ваш справжній пароль; вони зберігають його хеш. Коли ви входите, вони хешують те, що ви вводите, і порівнюють це зі збереженим хешем. Якщо вони збігаються, ви в системі.
У крипті хешування набуває зовсім нового рівня важливості. Кожна транзакція, яку ви здійснюєте, хешується. Кожен блок у блокчейні містить хеші. Ваша адреса гаманця? Отримана з вашого публічного ключа за допомогою криптографічного хешування. Той ідентифікатор транзакції, який ви вставляєте в блок-експлорер? Це хеш. Вся модель безпеки блокчейну фундаментально залежить від математичних властивостей хеш-функцій.
Геніальність хешування в блокчейні полягає в тому, що воно створює незмінний запис. Змініть навіть один символ у вихідних даних, і хеш стає абсолютно іншим. Це робить втручання негайно очевидним для всіх у мережі.
💡 Hash Function
Хеш-функція — це конкретний математичний алгоритм, який виконує хешування. Це рецепт, який точно повідомляє комп'ютеру, як перетворити вхідні дані у той вихідний хеш фіксованого розміру.
У блокчейні найвідоміша хеш-функція — це SHA-256 (Secure Hash Algorithm 256-bit), яку використовує Bitcoin. Ethereum використовує іншу під назвою Keccak-256. Ось що робить їх особливими: хеш-функція приймає вхідні дані будь-якої довжини й завжди виробляє вихідні дані фіксованої довжини. SHA-256, наприклад, завжди генерує 256-бітний хеш, який зазвичай відображається у вигляді 64 шістнадцяткових символів. Чи хешуєте ви слово "привіт", чи весь текст роману, ви отримуєте рівно 64 символи на виході.
Справжня магія полягає в тому, що ви не можете зробити з цим результатом. Ви можете легко перейти від даних до хешу, але не можете перейти від хешу назад до даних. Це обчислювально неможливо, тобто навіть маючи всю обчислювальну потужність світу, ви не зможете це змінити.
Саме ця властивість робить хеш-функції настільки потужними для блокчейну. Коли майнери змагаються за створення нових блоків, вони, по суті, намагаються знайти вхідні дані, які дають хеш, що відповідає певним критеріям. Вони не можуть працювати у зворотному напрямку від бажаного хешу; вони повинні продовжувати пробувати різні вхідні дані, поки їм не пощастить. Саме це робить блокчейн безпечним і не дозволяє будь-кому просто сфабрикувати дійсні блоки.
👀 Properties of Hash Function
Хеш-функції мають п'ять критичних властивостей, які роблять їх ідеальними для безпеки блокчейну. Це фундаментальні характеристики, які змушують всю систему працювати.
- Детермінованість. Однакові вхідні дані завжди виробляють однаковий результат, кожного разу, на кожному комп'ютері, будь-де у світі. Хешуйте фразу "Hello World", і ви отримаєте той самий результат, незалежно від того, чи робите ви це сьогодні, завтра чи через десять років. Ця передбачуваність має вирішальне значення для перевірки. Будь-хто в мережі може взяти ті самі дані транзакції, пропустити їх через ту саму хеш-функцію і підтвердити, що вони отримують той самий хеш, доводячи, що дані не були змінені.
- Фіксована довжина виходу. Незалежно від того, наскільки великі чи малі вхідні дані, вихідний хеш завжди має однакову фіксовану довжину. Ця стандартизація робить хеші легкими в роботі в базах даних і структурах блоків. Кожен хеш транзакції, кожен хеш блоку, завжди однакового передбачуваного розміру.
- Односторонність. Це суперсила безпеки. Має бути обчислювально неможливо визначити початкові вхідні дані, просто дивлячись на вихідний хеш. Перехід від даних до хешу легкий — миттєвий, насправді. Рухатися у зворотному напрямку практично неможливо. Це захищає деталі транзакцій і гарантує, що ви не можете підробити транзакцію, щоб вона відповідала конкретному хешу. Навіть знаючи хеш і алгоритм, ви не можете працювати у зворотному напрямку.
- Стійкість до колізій. Має бути обчислювально неможливо знайти два різні сети вхідних даних, які виробляють точно такий самий вихідний хеш. Ця властивість робить неможливим для двох різних транзакцій мати однаковий хеш. Якби дві різні транзакції могли виробити однаковий хеш, ви могли б замінити одну на іншу, повністю порушивши цілісність реєстру блокчейну. Сучасні хеш-функції роблять імовірність колізії настільки астрономічно низькою, що вона вважається неможливою для всіх практичних цілей.
- Ефект лавини. Крихітна, незначна зміна у вхідних даних повинна виробити абсолютно інший і непередбачуваний вихідний хеш. Змініть одну цифру в сумі транзакції або одну букву в адресі, і отриманий хеш не матиме жодної схожості з оригіналом. Це робить неможливим для зловмисника вносити зміни в транзакцію без того, щоб це було негайно очевидним для всієї мережі.
Ці п'ять властивостей об'єднуються, щоб створити щось дивовижне: математичну функцію, яка може довести цілісність даних, не розкриваючи самі дані, яка може створювати унікальні ідентифікатори, які не можна підробити, і яка робить втручання негайно помітним. Ось чому хеш-функції є основою безпеки блокчейну.
🥷 Byzantine Fault Tolerance
Візантійська відмовостійкість (BFT) звучить як щось з підручника історії, і насправді це якоюсь мірою так.
Термін походить від "проблеми візантійських генералів", експерименту, вперше запропонованого комп'ютерними вченими Леслі Лампортом, Робертом Шостаком і Маршаллом Пізом у 1982 році. Ось сценарій: уявіть кількох генералів, що командують візантійською армією, оточуючи місто. Щоб досягти успіху, всі вони повинні домовитися про те, чи атакувати, чи відступати. Однак генерали знаходяться в різних місцях і можуть спілкуватися лише через гінців. Деякі з цих гінців можуть бути перехоплені ворожими силами, і що ще гірше, деякі з генералів самі можуть бути зрадниками, які надсилають неправдиву інформацію.
Питання таке: як лояльні генерали досягають консенсусу і координують свою атаку, коли вони не можуть довіряти всім повідомленням або навіть усім генералам? Це не просто стародавня військова головоломка. Це саме та проблема, з якою децентралізовані мережі блокчейну стикаються кожного дня.
У блокчейну візантійські генерали замінюються вузлами — комп'ютерами, які й створюють мережу. Замість того щоб вирішувати, чи атакувати місто, вони вирішують поточний стан блокчейну: які транзакції дійсні, які блоки слід додати, і що говорить офіційний реєстр. І так само як ті візантійські генерали, вузли не можуть повністю довіряти один одному. Деякі можуть зазнавати технічних збоїв. Інші можуть бути активно зловмисними, намагаючись подвійно витратити активи або порушити роботу мережі.
Візантійська відмовостійкість — це здатність децентралізованої мережі досягати консенсусу щодо правильного стану блокчейну, навіть коли деякі вузли несправні, офлайн або активно намагаються саботувати систему. У класичних системах на основі BFT консенсус гарантується, поки менше ніж одна третина учасників є несправними або зловмисними.
Це те, що робить блокчейн можливим. Без BFT один зловмисний вузол міг би ввести неправдиву інформацію і скомпрометувати всю мережу. З BFT мережа може ідентифікувати та відхилити поганих акторів, підтримуючи цілісність спільного реєстру навіть перед обличчям атак або технічних збоїв.
💪 How Does Byzantine Fault Tolerance Work?
Основний принцип Візантійської відмовостійкості простий: мережа не довіряє жодному окремому учаснику. Натомість вона використовує механізми консенсусу, щоб змусити вузли доводити свою чесність через криптографічні методи, економічні стимули або обчислювальну роботу.
Коли вузол хоче додати новий блок транзакцій до блокчейну, він не може просто оголосити: "Гей, я перевірив ці транзакції, повірте мені". Мережа вимагає доказів. Залежно від механізму консенсусу, цей доказ приймає різні форми, але мета завжди одна: зробити економічно або обчислювально неможливим брехати.
Системи BFT покладаються на надлишковість і перевірку. Кілька вузлів незалежно перевіряють ту саму транзакцію. Якщо більшість погоджується, що вона дійсна, вона додається до блокчейну. Якщо вузли повідомляють суперечливу інформацію, мережа слідує за більшістю, припускаючи, що зловмисні або несправні вузли знаходяться в меншості.
Математичний поріг має вирішальне значення: більшість систем BFT вимагають, щоб принаймні дві третини (67%) вузлів були чесними для правильного функціонування мережі. Це означає, що мережа може толерувати до однієї третини вузлів, які є несправними або зловмисними, без зламу. Менше ніж дві третини чесних вузлів, і консенсус стає неможливим.
Геніальність підходу блокчейну до BFT полягає в тому, що він не намагається ідентифікувати та усунути зловмисників. Натомість він робить їхню нечесність неефективною. Навіть якщо існують зловмисні вузли, доки вони є в меншості, їх просто переголосують або їхні шахрайські блоки відхилять. Мережа продовжує працювати безперебійно, обробляючи законні транзакції та автоматично фільтруючи шум.
⛏️ BFT in Proof-of-Work (PoW)
Proof-of-Work, механізм консенсусу, започаткований Bitcoin, вирішує проблему візантійських генералів через обчислювальну силу.
Майнери змагаються за вирішення складних математичних головоломок, знаходячи нонс, який, коли хешується з даними блоку, виробляє хеш, що відповідає певним критеріям. Немає короткого шляху: майнери просто продовжують пробувати різні числа, поки їм не пощастить. Коли хтось знаходить дійсний нонс, вони транслюють блок мережі. Інші вузли перевіряють його миттєво, і якщо правильно, всі приймають блок. Майнер-переможець отримує щойно створену криптовалюту та комісії за транзакції.
Тобто BFT досягається через економічні стимули. Майнери інвестують тисячі в спеціалізоване обладнання та величезні витрати на електроенергію. Якщо вони намагаються обдурити, видобуваючи шахрайські блоки, мережа відхиляє їхню роботу, марнуючи всі ці гроші та енергію даремно. Щоб успішно атакувати мережу, зловмисник повинен контролювати більше ніж 50% загальної потужності майнінгу, що є надзвичайно дорогим на основних блокчейнах.
💰 BFT in Proof-of-Stake (PoS)
Proof-of-Stake використовує інший підхід до Візантійської відмовостійкості, замінюючи обчислювальні головоломки фінансовою заставою.
Валідатори повинні заблокувати (застейкати) значну криптовалюту для участі в консенсусі. В Ethereum це 32 ETH. Мережа випадково вибирає валідаторів для пропонування нових блоків, а інших для перевірки цих пропозицій. Якщо більшість погоджується, що блок дійсний, він додається до ланцюга.
BFT походить від фінансового покарання. Якщо валідатор обманює — подає фальшиві транзакції, голосує за конфліктні блоки або виходить з мережі — мережа скорочує його частку. Він втрачає частину або навіть всю свою заблоковану криптовалюту. Атакувати мережу означає атакувати власні гроші.
PoS досягає BFT зі значно меншою енергією, ніж PoW. Немає обчислювальної гонитви, немає величезних рахунків за електроенергію, немає спеціалізованого обладнання для майнінгу. Валідатори просто запускають вузол і залишаються онлайн. Це робить PoS екологічно чистим і масштабованим.
Компроміс? Валідатори з більшою кількістю заставленої криптовалюти мають більший вплив, що викликає занепокоєння щодо централізації. Системи PoS борються з цим за допомогою випадкового відбору валідаторів, штрафних санкцій та механізмів управління. Проте, якщо принаймні дві третини валідаторів (зважених за часткою) є чесними, мережа досягає консенсусу правильно.
⚡ Importance of BFT
Візантійська відмовостійкість забезпечує цілісність даних. Кожна транзакція перевіряється кількома незалежними вузлами, що дотримуються криптографічних правил. Поки більшість чесні, шахрайські транзакції відхиляються. Це запобігає подвійним витратам, найфундаментальнішій атаці на цифрову валюту.
BFT робить мережу стійкою. Вузли падають, з'єднання обриваються, зловмисні актори атакують, а блокчейн продовжує працювати. Поки достатньо чесних вузлів залишаються онлайн, консенсус продовжується. Ця надлишковість дозволяє взаємодію без довіри. Вам не потрібно знати, хто керує вузлами, або довіряти їхнім намірам. Сама система забезпечує чесну поведінку через криптографію та економіку.
Без BFT криптовалюта була б теоретичною, а не функціональною. Це те, що дозволяє Bitcoin надійно обробляти транзакції, незважаючи на відсутність CEO, служби підтримки клієнтів та центрального сервера. Це те, що дозволяє Ethereum виконувати смарт контракти з упевненістю.
Key Takeaways
- Криптографія — це математична основа блокчейну. Хеш-функції та Візантійська відмовостійкість — це дві з найважливіших концепцій безпеки та консенсусу, які перетворюють блокчейн зі спільної бази даних на безпечну, децентралізовану фінансову систему.
- Хешування створює унікальні цифрові відбитки. Це процес взяття будь-яких даних і створення рядка символів фіксованої довжини (хеш), який унікально ідентифікує ці дані, але не може бути використаний для відтворення оригіналу.
- Хеш-функції — це односторонні математичні алгоритми. Вони є детермінованими (однакові вхідні дані = однакові вихідні дані), генерують вихідні дані фіксованої довжини, стійкі до колізій (два сети вхідних даних не можуть генерувати однаковий хеш), стійкі до преображення (неможливо повернути хеш до вхідних даних) і демонструють лавиноподібний ефект (незначні зміни вхідних даних = повністю інші вихідні дані).
- Хеш-функції захищають блокчейн через незмінність. Кожен блок містить хеш попереднього блоку, створюючи криптографічний ланцюг. Зміна будь-яких історичних даних змінює їхній хеш, розриваючи ланцюг і роблячи втручання негайно очевидним.
- Візантійська відмовостійкість розв'язує проблему консенсусу. Вона дозволяє мережі учасників, які не довіряють один одному, погодитися на єдину версію правди, навіть коли деякі учасники несправні або зловмисні, поки принаймні дві третини чесні.
- Без хеш-функцій і BFT блокчейн не працював би. Це фундаментальні технології, які дозволяють децентралізованим мережам без довіри надійно функціонувати.
Final Thought
Блокчейн працює на довірі до математики. Хеш-функції перетворюють дані відповідно до фіксованих правил, які неможливо обдурити. Візантійська відмовостійкість припускає, що люди спробують обдурити, і будує системи, де брехня коштує дорожче, ніж правда.
Замість того, щоб довіряти людям бути чесними, ми довіряємо коду бути незламним. Замість того, щоб сподіватися, що інституції не обдурять нас, ми будуємо системи, де влада математично розподілена.
Однак ви ніколи не думаєте про хеш-функції або BFT, коли надсилаєте транзакцію. Вони працюють безшумно на задньому плані, перетворюючи мережу незнайомців на щось, що насправді функціонує.
Якщо ви дізналися щось нове сьогодні, поділіться цим. Розкажіть своїй спільноті. Нумо поширювати знання і розвиватися разом.
На цьому все, нормі. Наступного разу ми поговоримо про Ethereum. Готуйтесь 💪
Cookies She Left Behind
Якщо ви хочете глибше зануритися в цю тему, я також рекомендую ознайомитися з наступними матеріалами:
- Byzantine Generals Problem Explained від CoinGecko
- What is a Cryptographic Hashing Function? від Whiteboard Crypto