Запуск обов’язкової сигналізації 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 може висвітлити тонкі вектори загроз і особливості консенсусу, допомагаючи проєктам створювати безпечні, інтероперабельні блокчейн-додатки, які враховують зміни протоколу і вплив майнерів на мережу.