Розмір блоку: що потрібно знати про майбутні зміни в протоколі bitcoin

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

Що трапилося?

Для початку позначимо деякі ключові моменти:

  1. Сьогодні Майнер добувають в середньому один блок кожні 10 хвилин;
  2. В кожному блоці може зберігатися максимум 1 Мб даних;
  3. Таке обмеження закладено в код біткойнов, але пропускна здатність мережі цим не обмежується;
  4. В блок розміром 1 Мб можна вмістити дані приблизно про 3-5 тисячах простих транзакцій (між двома гаманцями з невеликою кількістю входів і виходів), тобто мережа в даний момент пропускає в середньому 7 транзакцій в секунду. Для сьогоднішнього кількості користувачів це не критично, але для майбутнього масового використання дуже мало;
  5. Кількість транзакцій, які вміщуються в один блок, скорочується, по-перше, за рахунок багатоадресних транзакцій - наприклад, розсилка пулами винагороди Майнер. А по-друге, за рахунок того, що деякі компанії використовують ланцюжок блоків біткойнов для передачі даних або підтримки реєстру (компанія Factom, проект Counterparty, біржа Nasdaq).Саме про такий нефінансовому застосуванні ланцюжка блоків останнім часом стільки розмов.

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

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

Також варто відзначити, що деякі користувачі при перекладі біткойнов навмисне збільшують розмір винагороди Майнер, щоб їх транзакція була пріоритетною для підтвердження, тобто підтвердження звичайних транзакцій може відбуватися вже в другому, третьому і так далі блоках, а значить займати за часом 20, 30 і навіть більше хвилин (а іноді і пару годин). Звичайно, розробляються різні програмні рішення, щоб при оплаті біткойнов вам не доводилося стояти по півгодини на касі в очікуванні підтвердження, але технічно все саме так, як описано вище, і з ростом масштабів використання біткойнов такі затримки будуть траплятися все частіше і частіше.

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

Навіщо було обмежуватися всього 1 мегабайтом?

У 2010 році про біткойнов написали на популярному айтішной сайті Slashdot. org, завдяки чому на ледь з'явилася технологію звернуло увагу безліч користувачів. Однак серед них виявилися і не самі добропорядні, і мережа біткойнов початку піддаватися численним атакам. Творець біткойнов Сатоши Накамото і інші розробники із товариства швидко на це зреагували і внесли кілька поправок до протоколу, щоб зробити його більш стійким. Однією з цих поправок якраз стало рішення встановити межу розміру блоку в 1 Мб.

Гевін Андресен так описує ті події:

У 2010 році, коли про біткойнов вперше написав Slashdot і курс біткойнов почав рости, Сатоши застосував кілька швидких рішень для захисту від різного роду DOS-атак. Одним з них стало зменшення граничного розміру блоку до одного мегабайта.

До цього обмеження не було, але в дійсності розмір блоку не міг перевищувати 32 Мб - максимального розміру повідомлення в протоколі p2p. З самого початку передбачалося, що межа розміру блоку потрібно буде підвищувати, коли для обробки всього обсягу транзакцій буде необхідність у великих блоках.

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

У той час обсяг транзакцій був дуже малий і вважалося, що 1 Мб вистачить як для захисту мережі, так і для резервного простору для майбутнього зростання обсягів транзакцій, перш ніж масштаби мережі будуть збільшені.Проте, до недавнього часу розробники відкладали питання масштабування. Якщо для традиційного фінансового ПО відсутність глобальних змін швидше може бути плюсом, то у випадку з біткойнов - по-справжньому стримує його потенціал.

Один з провідних розробників Майк Херн опублікував лист від Сатоши кінця 2010 року, в якому він міркував про розмір блоку.

Ось його фрагмент:

Розмір можна буде знову збільшити, коли ми наблизимося до лімітів і будемо впевнені, що все працює як треба. Зрештою, коли з'явиться багато софта, розмір всього ланцюжка блоків не буде грати особливу роль.

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

Збільшуємо розмір блоку. Як бути?

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

Спочатку Гевін Андресен запропонував таке рішення, яке вимагало б хардфока лише один раз - з автоматичним збільшенням розміру блоку в задані тимчасові інтервали. Однак, його пропозиція була зустрінута шквалом критики як від інших розробників, так і від багатьох учасників спільноти, в наслідок чого він погодився на компромісне тимчасове рішення.

Зараз він пропонує збільшити розмір блоку до 20 Мб в якості тимчасового заходу, щоб дати розробникам більше часу для пошуку остаточного рішення. Проте, і така пропозиція була зустрінута критично деякими розробниками і біржами, зокрема китайськими BTCChina і Huobi. Частина з них вже згодні на менш значне збільшення максимального розміру блоку - можливо до 8, а не 20 Мб.

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

Також не забувайте, що для Майнер більш вигідні маленькі блоки, так як вони швидше поширюються в мережі, а значить, у Майнера (пулу) буде більше шансів стати тим, хто "добуде" блок і отримає винагороду. Тому, швидше за все, Майнер також будуть пропонувати власні розміри блоку або модифікувати власні клієнти Bitcoin, з урахуванням співвідношення своїх ризиків і прибутків.

Чи потрібно починати панікувати?

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

Джерело


08.06. 2015