Ризики Reentrancy Attack у фазі сигналізації BIP-110

Article author

Запуск обов’язкової сигналізації BIP-110 при недостатній підтримці майнерів

Bitcoin Improvement Proposal 110 увійшло в фазу обов’язкової сигналізації, починаючи з блоку 961,632. Під час цієї фази вузли, що підтримують BIP-110, почали відхиляти блоки, які не встановлювали версію біт 4. Водночас підтримка майнерами BIP-110 залишається значно нижчою за потрібний поріг активації; майнери сигналізували підтримку лише у 2,53% з 2,016 блоків перед поточним вікном, що суттєво менше за 55%, необхідних для ранньої активації. Такий низький рівень прийняття призвів до тимчасової появи меншості BIP-110 ланцюга, який швидко відстав від домінуючого Bitcoin ланцюга.

BIP-110 пропонує тимчасові обмеження розмірів бітової навантаження та транзакційних виходів у Bitcoin для стримування не грошових даних, таких як інскрипції, які збільшують ресурсні витрати вузлів. Незважаючи на початок обов’язкової сигналізації з блоку 961,632, обмеження транзакцій відповідно до пропозиції набудуть чинності лише з блоку 965,664, за умови достатньої підтримки майнерів.

Технічні обмеження BIP-110 та їх вплив на обсяг даних

BIP-110 передбачає встановлення конкретних лімітів на розмір і типи даних, дозволених у транзакціях Bitcoin, зосереджуючись переважно на контролі зростання не транзакційних даних. Пропонується обмежити більшість нових скриптів виходів до 34 байт, обмежити OP_RETURN виходи до 83 байт, а також накласти ліміт у 256 байт на певні «push» даних і елементи witness.

// Гіпотетичний псевдокод на зразок Solidity, що ілюструє подібну перевірку розміру
function validateOutputScriptSize(bytes memory outputScript) internal pure returns (bool) {
    // Обмеження до 34 байт для більшості нових скриптів
    if (outputScript.length > 34) {
        revert("Output script size exceeds 34 bytes limit");
    }
    return true;
}

function validateOpReturnSize(bytes memory opReturnData) internal pure returns (bool) {
    // Обмеження OP_RETURN даних не більше 83 байт
    if (opReturnData.length > 83) {
        revert("OP_RETURN data exceeds 83 bytes limit");
    }
    return true;
}

Ці обмеження обґрунтовані побоюваннями щодо розростання блокчейну через інскрипції та інші не грошові дані, що підвищують вимоги до зберігання і пропускної здатності операторів повних вузлів. Варто зазначити, що невитрачені транзакційні виходи (UTXO), створені до активації, будуть звільнені від нових обмежень, що пом’якшує негайний вплив на існуючих користувачів і смарт-контракти.

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

Підтримка майнерів і динаміка консенсусу у вікні сигналізації BIP-110

Вікно сигналізації BIP-110 охоплює блоки з 961,632 по 963,647, протягом яких майнери мають сигналізувати про готовність через версію біт 4 для подальшої активації. Дотримання сигналізації є критично важливим, оскільки 55% підтримки майнерів — це визначений поріг для ранньої активації та остаточного застосування.

Параметр Значення Примітки
Початок обов’язкової сигналізації Блок 961,632 Вузли відхиляють блоки без версії біт 4
Кінець вікна сигналізації Блок 963,647 Завершення періоду обов’язкової сигналізації
Початок фази locked-in Блок 963,648 Віхова точка прогресу активації
Запровадження обмежень Блок 965,664 Обмеження розміру транзакції набирають чинності
Підтримка майнерів до сигналізації 2,53% (51 із 2,016 блоків) Значно нижче порогу 55%

Попри встановлені правила обов’язкової сигналізації, низький рівень участі майнерів — лише близько 2,53% попередніх блоків — свідчить про обмежену підтримку і складнощі з мережевим прийняттям. Відповідно, виникла меншість BIP-110 гілки, яка швидко була перегнана головним ланцюгом, що ілюструє складність активації спірних змін без широкого консенсусу.

Суперечки та критика BIP-110 в екосистемі Bitcoin

BIP-110 зазнало суттєвої критики з боку відомих представників Bitcoin-спільноти, зокрема голови Strategy Executive Майкла Сейлора та CEO Blockstream Адама Бека. Критики стверджують, що пропозиція може розділити мережу Bitcoin, змушуючи вузли, які прийняли BIP-110, відхиляти транзакції, законні за чинними правилами, що потенційно призведе до розгалужень ланцюга.

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

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

Запасні плани та стан розробки підтримуючого коду BIP-110

Додатковим розвитком, пов’язаним із BIP-110, став ребазинг коду запасної зміни proof-of-work (PoW) від Bitcoin-розробника Криса Гуїда 1 серпня на основі попередньої роботи підтримувача Bitcoin Knots Люка Дешjr. Ця запасна зміна PoW позиціонується як варіант на випадок, якщо майнери виступлять проти активації BIP-110.

// Ілюстративний псевдокод Solidity, що представляє спрощений запасний механізм
contract PoWFallback {
    bool public bip110Rejected;

    function checkPoWChange() external view returns(bool) {
        if (bip110Rejected) {
            // Активувати запасні правила PoW
            return true;
        }
        return false;
    }
}

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


З погляду безпеки, підхід BIP-110 до обмеження розмірів даних транзакцій відповідає найкращим практикам, які спостерігаються в розробці смарт-контрактів, де мінімізація площі атаки і споживання ресурсів є критично важливими. Наш досвід у Soken показує, що суворі обмеження розміру даних можуть зменшити ризики, такі як атаки повторного входу (reentrancy), які експлуатують надмірні або несподівані навантаження. Хоча середовище скриптів Bitcoin суттєво відрізняється від смарт-контрактів Ethereum, принципи обмеження складності даних і примусу консенсусних правил валідації залишаються ключовими.

Порівняння: обмеження даних BIP-110 проти типових обмежень смарт-контрактів

Особливість Обмеження BIP-110 Типові практики смарт-контрактів
Розмір скрипту/виходу Максимум 34 байти для нових скриптів Варіюється; контракти часто обмежують calldata для економії газу
Розмір OP_RETURN даних Максимум 83 байти Зазвичай прямого аналога немає, але розмір подій/логів часто контролюють
Розмір push/witness даних Максимум 256 байт Смарт-контракти обмежують масиви/рядки для запобігання виснаженню газу
Виключення до активації UTXO, створені до активації, звільнені Успадковані контракти зберігають стан; оновлення впливають лише на нові розгортання
Механізм примусу Жорстке відхилення блоків на рівні вузлів Відміна транзакції на рівні контракту у разі порушення

Чіткий акцент BIP-110 на мінімізації неважливих даних відображає подібну філософію безпеки смарт-контрактів, яка спрямована на зменшення потенційних векторів зловживання або виснаження ресурсів.

Роздуми про безпеку: повторний вхід та обмеження розміру даних у блокчейн-протоколах

Хоча BIP-110 безпосередньо не розглядає класичні вразливості повторного входу — типові для програмованих смарт-контрактів, — його обмеження даних опосередковано сприяють безпековому гігієнічному стану, зменшуючи складність і розмір скриптів транзакцій. У складних станозалежних смарт-контрактах атаки повторного входу полягають в тому, що шкідливий контракт викликає функцію назад до завершення оновлення стану, часто зловживаючи множинними змінами в одиничній транзакції.

// Спрощений вразливий шаблон повторного входу
contract VulnerableContract {
    mapping(address => uint256) public balances;

    function withdraw(uint256 amount) external {
        require(balances[msg.sender] >= amount, "Insufficient balance");

        (bool success, ) = msg.sender.call{value: amount}("");
        require(success, "Failed to send Ether");

        balances[msg.sender] -= amount; // Оновлення стану після зовнішнього виклику – вразливо
    }
}

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

// Безпечний шаблон: оновлення стану перед викликом
function withdraw(uint256 amount) external {
    require(balances[msg.sender] >= amount, "Insufficient balance");

    balances[msg.sender] -= amount; // Оновлення стану перед зовнішнім викликом

    (bool success, ) = msg.sender.call{value: amount}("");
    require(success, "Failed to send Ether");
}

Аналогія підкреслює, що обмеження складності даних і раннє оновлення стану є основою для боротьби з повторним входом і суміжними логічними вразливостями в смарт-контрактах, принцип, який підтримують обмеження BIP-110 на рівні протоколу Bitcoin.


Процес активації BIP-110 ілюструє складну взаємодію технічних змін, консенсусу майнерів і прийняття спільнотою в основних блокчейн-протоколах. Спостереження за його прогресом через обов’язкову сигналізацію і незначну підтримку майнерів підкреслює важливість широкої участі для змін, критичних для консенсусу. Обмеження розмірів даних у пропозиції відображають постійні побоювання щодо стійкості блокчейну і ресурсних витрат вузлів — теми, що резонують у безпеці та дизайні смарт-контрактів.

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

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

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

Article author

Часті запитання

Що таке reentrancy attack у блокчейні?

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

Як BIP-110 впливає на вразливості reentrancy?

BIP-110 обмежує розмір даних і виходів транзакцій, що побічно зменшує складні транзакції, які можуть бути використані для reentrancy attack, підвищуючи загальну безпеку смартконтрактів у Bitcoin.

Чому підтримка майнерів важлива для активації BIP-110?

Для активації BIP-110 потрібно щонайменше 55% сигналізації від майнерів; без достатньої підтримки уразливі транзакційні моделі, включно з тими, що сприяють reentrancy, залишаються можливими.

Як розробникам захиститися від вразливостей reentrancy?

Розробники повинні застосовувати патерн checks-effects-interactions, використовувати mutex locks та застосовувати аудити для виявлення й усунення потенційних помилок reentrancy у смартконтрактах.

Який вплив низької підтримки майнерів BIP-110 на безпеку Bitcoin?

Низька підтримка майнерів затримує активацію BIP-110, подовжуючи вразливість до транзакційних атак, таких як reentrancy, та може призвести до розколів ланцюга, впливаючи на надійність мережі.

Чат