Чи небезпечна наявність кількох реалізацій Біткоїна?

Чи небезпечна наявність кількох реалізацій Біткоїна?

Якими є наслідки наявності кількох реалізацій протоколу Біткоїна? Чи переважують позитивні сторони потенційні помилки та інші проблеми?

Баги, які нещодавно призвели до того, що багато вузлів LND перестали синхронізуватися з блокчейном Біткоїна, ймовірно, були викликані альтернативною реалізацією.

Можливо, ви запитаєте: «Хто використовує щось крім Bitcoin Core?» Можливо, ви не знали про існування інших реалізацій Біткоїна. Можливо ви не впевнені, що взагалі означає інша реалізація.

Bitcoin Core починав як програмне забезпечення, яке Сатоші Накамото написав на C++ та випустив у світ. На сьогодні він продовжує оновлюватися. Альтернативна реалізація – це програмне забезпечення, яке робить те саме, що й Bitcoin Core – застосовує ті ж правила консенсусу – але воно написане по-іншому, найчастіше іншою мовою кодування.

Як альтернативна реалізація зламала вузли у мережі Lightning?

Одна з основних версій вузла Lightning Network (LND) заснована на альтернативній реалізації Біткоїна під назвою btcd. Коли розробник створив дуже велику мультипідписну транзакцію, btcd не сприйняв її як дійсну, оскільки вона містила надто багато даних-свідків. Інші реалізації Біткоїна – найбільш важлива з них, Bitcoin Core – не мали такого обмеження на дані свідків транзакцій Taproot і, отже, вважали транзакцію та блок, що містить її, дійсними.

В результаті майнери продовжували додавати нові блоки в ланцюжок, тому що вони не використовували btcd, і відповідно до їх правил все було в порядку, але вузли LND Lightning не могли розпізнати жоден з цих нових блоків, тому що вони були побудовані поверх блоку, який містив ту транзакцію, яку вони вважали недійсною.

Коли помилка повторилася 1 листопада, постраждали не лише вузли LND. Деякі екземпляри electrs (реалізація внутрішнього сервера для Electrum Wallet) також не змогли досягти консенсусу з рештою ланцюжка. У той час як вузли LND були виключені з консенсусу через аналогічну проблему в btcd, реалізація Біткоїна, написана на Rust, призвела до відставання вузлів electrs, у тому числі й деяких дуже помітних серверів, керованих mempool.space.

Обмеження на розмір даних-свідків існує для запобігання DoS-атакам і також є частиною Bitcoin Core (хоча Core має більший ліміт для транзакцій Taproot). Схоже, що дві інші реалізації, які не синхронізувалися, мали код, який підтримує менший ліміт.

Дуже невеликі відмінності у реалізаціях можуть призвести до відсутності консенсусу.

Наявність кількох реалізацій Біткоїна небезпечна

Сатоші не подобалася ідея множинних реалізацій Біткоїна. «Я не вірю, що друга сумісна реалізація Біткоїна коли-небудь буде гарною ідеєю». Причина, яку він назвав, полягала в наступному: «Більша частина проєктування залежить від того, що всі вузли отримують абсолютно ідентичні результати в синхронному режимі, тому друга реалізація становитиме загрозу для мережі».

Подумаєш, загроза.

Ви, напевно, чули, що ланцюжок із найбільшою кількістю доказів роботи є справжнім ланцюжком. Коли два різних майнери знаходять блок одночасно, ланцюжок розділяється, та інші майнери починають використовувати блок, про який вони дізнаються першим.

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

Оскільки середній час між блоками в Біткоїні становить 10 хвилин, цілком імовірно, що вся мережа дізнається про цей новий блок до того, як один з них буде доданий до сторони поділу, яка програла, і ланцюжок з найбільшою роботою виграє.

«Вузли слідуватимуть валідному ланцюжку з найбільшою роботою… Ключове слово тут валідному. Якщо вузол отримує блок, який вважає недійсним, немає значення, скільки роботи зроблено над цим блоком, вузол не прийме цей ланцюжок». - Ендрю Чоу

Ключове слово «дійсний». Загроза проявляється, коли майнер знаходить блок, який деякі інші майнери та вузли вважають недійсним. Майнери, які вважають, що він дійсний, спробують побудувати нові блоки у цьому ланцюжку. Майнери, які вважають, що він недійсний, спробують збудувати останній дійсний блок, про який вони знають. Результат: наявність двох ланцюжків і неможливо дізнатися, який із них істинний.

Як таке взагалі могло статися?

Що ж, як ми бачили у випадку з недавнім багом з вузлами LND, якщо в одній реалізації Біткоїна є помилка, якої немає в інших реалізаціях, це може призвести до відсутності консенсусу щодо того, чи блок є дійсним.

Біткоїн не має механізму для виправлення цього. Спільнота поза протоколом має вирішити, що буде далі. Звучить дуже неприємно.

Настільки, що розробник Біткоїна Пітер Тодд сказав, що інші реалізації мають відповідати Bitcoin Core помилка за помилкою.

Ось і все: кілька реалізацій небезпечні!

Які є інші реалізації протоколу Біткоїна та чому вони існують?

По-перше, багато хто використовує Bitcoin Core.

Люк Дашжр бачить близько 43 000 вузлів, 98% з яких працюють з Bitcoin Core, а такий собі Coin Dance бачить близько 15 000 вузлів, 96% з яких працюють з Bitcoin Core. Отже, схоже, що зараз дуже мало людей використовують альтернативні реалізації.

Однак, є активні проєкти, які намагаються створювати та підтримувати інші кодові бази, які реалізують протокол Біткоїна. Серед них:

Джеймсон Лопп має чудовий вебсайт з більш вичерпним списком і посиланнями на всі інші реалізації.

Над усіма цими проєктами працюють надзвичайно талановиті розробники, і кожен існує вже понад кілька років. Навіщо вкладати стільки зусиль у те, що здається такою проблемою?

Біткоїн не вимагає дозволів. Будь-який охочий може завантажити ланцюжок; кожен може взаємодіяти з мережею; і ніхто не може завадити Вам написати код або запустити альтернативну реалізацію.

Однак, очевидно, що деякі люди відповідають за внесення змін до бази даних Біткоїна, і процес їхнього вибору видається неформальним. Хоча існує процес внесення пропозицій щодо покращення Біткоїну (BIP) для змін у Bitcoin Core, він також досить неформальний.

Ніщо із цього не є прямою проблемою. Як зазначає Марті Бент, приблизний консенсус може бути сильною стороною. Якщо процес зміни Біткоїна складний і неясний, це означає, що зміни будуть перевірятися ретельніше.

Наступний крок приблизного консенсусу – мати більше однієї популярної реалізації.

Відсутність кількох реалізацій може бути більш небезпечною

Не може бути жодних сумнівів у тому, що бути одним із тих, хто має доступ до Bitcoin Core, вже дуже складно. У світі, де Біткоїн відіграє центральну роль як грошовий інструмент, ця робота стане набагато складнішою. Невелика група розробників може стати надзвичайно важливою ціллю. Принаймні, їхню увагу привернуть для лобіювання різних включень або виключень у наступному релізі програмного забезпечення.

Взяти, наприклад, сферу лобіювання, яка нині існує в політиці. Чи не виникне таке явище серед людей, які мають доступ до єдиної реалізації протоколу Біткоїна?

Їх будуть сприймати як тих, хто має доступ до влади, як і політики. Таким чином, люди атакуватимуть їх, але ці розробники не матимуть захисту держави. Що це за життя таке? Хто добровільно обере таку долю?

Зрештою, глобальна фінансова система є досить важким тягарем для невеликої групи людей, які мають доступ до одного репозиторію GitHub. І може вона не так сильно відрізняється від глобальної фінансової системи, від якої ми намагаємося відійти, де грошове майбутнє людей залежить від рішень кількох керівників центральних банків.

Декілька реалізацій на допомогу!

Наявність та широке використання кількох реалізацій у мережі Біткоїна може пом'якшити цей тиск, ускладнивши зловмиснику зміну протоколу Біткоїна.

Якщо учасники мережі Біткоїна більш рівномірно розподілені між різними реалізаціями, з'являється більше можливостей появи хороших ідей. Пропонувати зміни до Біткоїна або відкидати їх набагато децентралізованіше, якщо все це не робиться в одному таборі.

Очевидно, що використання різних реалізацій Біткоїна збільшує ризик поділу ланцюга. Катастрофічний розкол ланцюга, коли значна частина вузлів і майнерів випадково розгалужується, не піде на користь Біткоїну ​​і точно не піде на користь його ціні. Але це не загрожуватиме природі Біткоїна, яка не потребує дозволу.

Централізоване середовище розробки, у якому кожен розвиває лише Bitcoin Core, може загрожувати відсутністю загальнодоступності. У розмові на цю тему слід звернути увагу на ризики такої сильної залежності від Bitcoin Core, а не зосереджуватися виключно на проблемах, які можуть бути викликані альтернативною реалізацією.

Про цю суперечку є чудова стара стаття Аарона ван Вірдума. Ви також можете прочитати новіший, більш інформативний тред на цю тему.

Це гостьовий пост Білла Скорсбі, власника малого бізнесу, який працює з біткоїнами, та автора кількох посібників із самостійного зберігання біткоїнів. Висловлені погляди є його власними і не обов’язково збігаються з точкою зору BTC Inc. або Bitcoin Magazine.

MICA та майбутнє регулювання біткоїна в Україні MICA та майбутнє регулювання біткоїна в Україні Розроблення та введення в дію фреймворку MiCA відкриває нову сторінку в історії регулювання біткоїна та криптовалют, що значно вплине на їх легальне становище по всьому світу, не обмежуючись виключно країнами Європейської економічної зони. Нові правила принесуть значні зміни, створивши регульований простір, де інтереси споживачів та бізнесу у сфері криптоактивів будуть знаходитися в балансі. Ганна Воєводіна 22 квітня 2024
Як Біткоїн може вплинути на фінансову інклюзивність серед меншин Як Біткоїн може вплинути на фінансову інклюзивність серед меншин Біткоїн був створений для надання людям доступу до фінансових послуг, а не просто для збагачення ранніх користувачів. Кіара Тейлор 21 квітня 2024
Синергетичне майбутнє Біткоїна та Ethereum за межами трайбалізму Синергетичне майбутнє Біткоїна та Ethereum за межами трайбалізму Яким чином Біткоїн та Ethereum можуть доповнювати один одного в довгостроковій перспективі, а не існувати як конкуренти? Ів Ла Роуз 21 квітня 2024