Зв'язок між розміром блоку і масштабованість
Серед численних параметрів, що визначають ефективність того чи іншого блокчейну, одну з провідних ролей займає його здатність до . Тобто - до збереження ефективної швидкості роботи при значному збільшенні числа активних користувачів і кількості скоєних транзакцій. І один із способів, який дозволяє краще адаптуватися під підвищення навантаження на мережу - збільшення розміру блоку. Тому ми розглянемо цей момент більш докладно.
Чому розмір блоку такий важливий?
Почнемо, мабуть, з того, що сам термін «блокчейн» перекладається як «ланцюжок блоків». Кожен окремий блок являє собою певний обсяг даних, в якому зберігається інформація про транзакції. З огляду на цей обсяг, а також - на швидкість генерації нових блоків, можна вирахувати, яку кількість транзакцій в секунду (transactions per second - TPS) здатний підтримувати блокчейн. Очевидно, що чим це число вище - тим краще. Тому розробники активно шукають способи підвищити його.
І в контексті використання криптовалюти це особливо актуально. Адже Bitcoin, навіть з усіма рішеннями другого рівня та іншими доповненнями, видає максимум 7 TPS. А Ethereum - до 15. Для порівняння, система грошових переказів Visa генерує до 1700 транзакцій в секунду. Тому для того, щоб почати складати реальну конкуренцію традиційним фінансовим системам, криптовалютні проекти повинні значно підвищити швидкість своєї роботи. Однак просто збільшити розмір блоку - це тимчасове рішення, яке в майбутньому може привести до деяких проблем. На щастя, є й інші варіанти дії, і ми зараз постараємося деякі з них розібрати.
Як саме можуть масштабуватися блокчейни?
Є дві основні категорії вирішення цієї проблеми - всередині ланцюжка і поза нею. І у кожного підходу є свої плюси і мінуси, так що єдиного рішення з приводу того, що ефективніше і перспективніше - немає.
Масштабування всередині ланцюжка. Передбачує зміну роботи самої ланцюжка з метою зробити його більш ефективним. Існують наступні варіанти дії:
- Зменшити обсяг інформації про транзакції. Це дозволяє розміщувати в стандартному блоці більше перекладів. Подібним шляхом пішли в Bitcoin, коли впровадили протокол SegWit. Зменшення довжини транзакції і кількості інформації, що в ній записується, призвело до значного підвищення пропускної здатності.
- Підвищити швидкість генерації блоків. Працює до певної межі, оскільки потрібен певний час для поширення підтверджених даних по мережі. Інакше може вийти неприємна ситуація - більш пізні блоки будуть доходити до користувачів раніше, ніж їх попередники. А це однозначно викличе конфлікт з алгоритмами консенсусу.
- Безшовний зв'язок між різними блокчейнами. Якщо ланцюжки зможуть безпосередньо взаємодіяти один з одним, то кожному з них доведеться обробляти меншу кількість інформації. Але так, необхідно забезпечити на 100 відсотків точну передачу даних між різними блокчейнами. На цьому принципі працює проект Polkadot. За рахунок спільної роботи декількох внутрішніх ланцюжків і смарт-контрактів, можна домогтися досить ефективного масштабування системи.
- Сегментування. Кожна транзакція розбивається на окремі сегменти, які підтверджуються і перевіряються незалежно. Кілька паралельних процесів значно швидше одного послідовного. Даний підхід працює і в PoW, і в PoS. Більш того, саме він ліг в основу Ethereum 2.0, який планує довести свою швидкодію до 100 тисяч TPS. Є, втім, у цього методу і недоліки, в основному - пов'язані з безпекою. Стане набагато простіше отримувати винагороду за «подвійне підтвердження», та й потрібно буде менше ресурсів для забезпечення атаки 51 відсотка.
- Зменшення кількості валідаторів. Чим менше перевіряючих вузлів - тим вище швидкість роботи всієї мережі. Цим шляхом пішли в EOS, обмеживши кількість можливих валідаторів 21 вузлом, які були обрані загальним голосуванням серед всіх держателів токенів. Це дозволило підвищити швидкість до 4 тисяч TPS. Однак менша кількість перевіряючих вузлів означає більшу централізацію мережі, а також - суттєво підвищує ризик зловживання наданими повноваженнями.
- Збільшення розміру блоку. Найбільш, мабуть, простий спосіб. Чим більше блок - тим більше в нього поміщається даних. Але тим складніше його майнити, тому користувачі з великими обчислювальними потужностями отримують перевагу. Цим шляхом розвитку пішли в Bitcoin Cash, послідовно збільшуючи розміри спочатку до 8 МБ, а потім і до 32 МБ. Втім, до нескінченності збільшувати розміри не можна, так що дане рішення - лише тимчасове. Ще й знижує децентралізацію мережі. Що особливо цікаво, якщо врахувати, що середній розмір блоку в даному блокчейні все одно тримається на рівні 1 МБ. Є у цієї ідеї і інші недоліки, але про них трохи пізніше.
Масштабування поза ланцюжка. Це рішення, які дозволяють підвищити продуктивність, не змінюючи спосіб зберігання інформації в основному ланцюжку. Їх ще називають «рішеннями другого рівня». Найбільш ефективними виявилися такі варіанти:
- Класичні «рішення другого рівня». Вперше були використані в Bitcoin у вигляді Lightning Network. Вузли цієї підмережі можуть відкривати канали між собою для здійснення угод безпосередньо. По завершенню процесу, канал закривається, а дані всім скопом кодуються і відправляються в основний блокчейн. Крім того, це дозволяє знизити ціну транзакцій, оскільки не потрібно конкурувати з іншими користувачами. Аналогічне рішення було впроваджено і в Ethereum - Raiden Network. А слідом за ним - і більш загальний блокчейн-продукт Celer Network. Обидва ці проекти не тільки проводять транзакції поза основної мережі, але дозволяють використовувати смарт-контракти. Проблема в тому, що все це знаходиться на стадії розробки, тому технічні помилки все ще можливі.
- Сайдчейни. Це відгалуження від основної ланцюжка, в яких активи можуть переміщатися незалежно. По суті - створення «паралельних шляхів» для потоку транзакцій, що значно знижує навантаження на основою ланцюжок. Вперше цей підхід теж застосували в Bitcoin - у вигляді сайдчейну Liquid. Аналогічне рішення було впроваджено і в Ethereum - Plasma. Істотним його недоліком, втім, є те, що кожний такий бічний ланцюжок контролюється певними вузлами. Яким потрібно довіряти. Але які теоретично можуть зловживати своїми повноваженнями.
Аргументи за і проти простого збільшення розміру блоку
Багато хто вважає, що ключем до більш масового впровадження блокчейна Біткоін лежить виключно в збільшенні розмірів блоку. Оскільки це дозволить не тільки підвищити загальну кількість транзакцій, а й знизити витрати. Тобто мережа стане і швидше, і дешевше. Також ентузіасти «збільшення» роблять упор на те, що як сайдчейни, так і рішення другого рівня, все ще знаходяться на етапі «доведення до розуму» і не готові до масового впровадження.
Але є тут і деякі проблеми. На поточному рівні технічного розвитку, у власників вузлів немає ніяких проблем із завантаженням нових блоків. І не буде, навіть якщо підвищити їх розмір до 32 МБ. Однак якщо цей процес триватиме і розміри збільшаться до гігабайту, почнуться проблеми. Як з пропускною спроможністю мережі інтернет, так і з обсягами пам'яті на комп'ютерах. Тому блкочейн перестане бути мережею для «всіх і кожного», а стане інструментом для «кожного з реально потужним комп'ютером, а ще краще - з сервером або системою серверів». Тобто - посилення централізації.
Також частина проблеми полягає в тому, що зі збільшенням розміру блоку його стає складніше «добувати». Потрібно обробити більше інформації, щоб підібрати хеш. І якщо зараз звичайні користувачі хоч якось можуть конкурувати з майнінг-пулами, то при збільшенні кількості оброблюваної інформації у них не залишиться жодних шансів. Що теж означає більшу централізацію і велику можливість перехоплення управління мережею.
Як йдуть справи з вирішенням проблеми на даний момент?
На момент написання статті, блокчейн Bitcoin не міняв природи використовуваних блоків з початку впровадження протоколу SegWit. Але активно розвивав рішення другого рівня і сайдчейни. Саме вони дозволили використовувати біткоіни для здійснення повсякденних покупок. Що стосується збільшення блоків, то в BitcoinSV пішли ще далі, ніж в Bitcoin Cash, підвищивши їх розмір до 2 ГБ. Це, втім, призвело лише в збільшення вартості обслуговування і регулярної втрати даних.
Ось тільки це не межа. У проекті ILCOIN використовується протокол RIFT, який, за словами його творців, дозволяє створювати блоки до 5 ГБ розмірів і забезпечує TPS на рівні 100 тисяч. Це можливо завдяки тому, що кожна велика одиниця зберігання інформації складається з утворень поменше (всього 25 МБ) які не потрібно видобувати індивідуально, оскільки вони автоматично генеруються «батьківським блоком».
У блокчейні Ethereum розраховують, що з масштабуванням допоможе впоратися новий алгоритм консенсусу, заснований на доказі частки - Casper.
В рамках проекту Cardano була розроблена система Hydra, в рамках якої кожен користувач генерує 10 «голів», кожна з яких працює як самостійний канал, що підвищує пропускну здатність мережі.
Висновки
Незважаючи на значну виконану розробниками роботу, поки що не існує універсального, безпечного і ефективного вирішення проблеми масштабування. Так, всі наведені вище рішення сприяють більш ефективному використанню криптовалюти, але всі вони не ідеальні. Крім того, багато що залежить від індивідуальних особливостей проектів. Так що розробки все ще ведуться.