Вступ
Масштабованість відноситься до здатності системи розвиватися відповідно до зростання попиту. У обчислювальних системах ви можете підвищити продуктивність свого обладнання, оновивши його апаратне забезпечення для того, щоб швидше виконувати певні завдання. Коли ми говоримо про масштабованість у блокчейнах, ми маємо на увазі їхню здатність обробляти більшу кількість транзакцій.
Протоколи, такі як біткоїн, мають безліч переваг, але масштабованість не є однією з них. Якби біткоїн запускалися, базуючись на централізованій базі даних, адміністратору було б відносно легко збільшити швидкість операцій і пропускну здатність, але цінні пропозиції біткоїна (тобто стійкість до цензури) вимагають, щоб багато учасників мережі постійно синхронізували копію блокчейн-мережі.
Проблема масштабування блокчейн-мережі
Запустити біткоїн-ноду відносно дешево, це можна зробити навіть на технічно слабких пристроях. Але оскільки тисячі нод повинні бути в курсі про діяльність один одного, існують певні обмеження в їх пропускній здатності.
Обмеження накладаються на кількість транзакцій, які можуть бути оброблені в ланцюзі, все це для того, щоб не дати базі даних швидко збільшитися до гігантських розмірів. Якщо вона стане занадто великою і швидкою, ноди не зможуть оперативно взаємодіяти між собою. Більше того, якщо блоки будуть занадто великими, вони не зможуть швидко ретранслюватися по мережі.
В результаті складається складна ситуація з вузьконаправленим видом рішень. Блокчейн можна розглядати як поїзд, який відправляється за точним розкладом. Кількість місць у кожному вагоні обмежена, і щоб отримати квиток, пасажири повинні зробити певну ставку, щоб забронювати місце. Якщо всі одночасно спробують сісти в поїзд, ціна на місце різко зросте. Точно так же і з мережею, забитою пендинг-транзакціями, в такому випадку від користувачів вимагається платити більш високі комісії, щоб своєчасно додати їх транзакцію в обробку.
Одним з рішень було б збільшити розмір вагонів. Це означало б більше місць, вищу пропускну здатність і знизити ціну на квитки. Але немає жодної гарантії того, що місця не почнуть заповнюватися, також, як це було раніше. Їх не можна постійно розширювати, точно так же, як блоки або межі газу в блоці, які просто не можуть масштабуватися безкінечно. Останнє робить утримання нод ще більш витратним, оскільки їх власникам знадобиться більш дороге обладнання для синхронізації з блокчейном.
Створювач Ethereum Віталік Бутерін придумав трилему масштабованості, щоб описати проблему, з якою стикаються блокчейни. Він теоретизує, що протоколи повинні знайти компроміс між масштабованістю, безпекою та децентралізацією. Ці властивості трохи розходяться один з одним, в той час як в основному фокусуються на двох властивостях, третє залишається без уваги.
З цієї причини багато хто розглядає масштабованість як нещо, що повинно бути досягнуто на оффчейні, тоді як безпека і децентралізація необхідно максимально збільшити на базовому блокчейні.
Що таке оффчейн-масштабування?
Оффчейн-масштабування відноситься до методів, які дозволяють здійснювати транзакції без збільшення кількості блоків у блокчейні. Протоколи, які підключаються до ланцюга, дозволяють користувачам відправляти і отримувати кошти без транзакцій, що з'являються на основній ланцюзі. Ми розглянемо два найбільш відомі рішення в цьому напрямку: сайдчейни і платіжні канали.
Введення в сайдчейни
Що таке сайдчейн?
Сайдчейн, бокова ланцюг (від англ. sidechain) – це окремий блокчейн. Однак це не автономна платформа, оскільки вона має певну прив'язку до основної ланцюги (майнчейну). Майнчейн і сайдчейн є функціонально сумісними, це в свою чергу означає, що активи можуть вільно переміщатися з однієї ланцюги в іншу.
Існує кілька способів забезпечити так зване портування коштів. В деяких випадках активи переміщуються з майнчейна шляхом відправки монет на спеціальну адресу. По факту вони нікуди не відправляються, натомість ці монети блокуються на адресі відправника, і відповідна сума виділяється на сайдчейні. Більш простим (хоча і централізованим варіантом) є відправка валюти учаснику, що відповідає за зберігання і розподіл коштів, завдання якого полягає в тому, щоб обмінювати валюту між ланцюгами.
Як це працює?
Припустимо, що у нашої подруги Аліси є п'ять біткоїнів. Вона хоче обміняти їх на п'ять еквівалентних одиниць на біткоїн-сайдчейні, давайте назвемо їх сайдкоінами. Цільовий сайдчейн використовує двосторонню прив'язку (від англ. two-way peg), це означає, що користувачі можуть переносити свої активи з основної ланцюги в бокову і навпаки.
Пам'ятайте, що сайдчейн або бокова ланцюг - це окремий блокчейн. Таким чином, його блоки, ноди і механізми валідації будуть відрізнятися від основної ланцюги. Щоб отримати сайдкоіни, Аліса відправляла п'ять біткоїнів на іншу адресу. Він може належати комусь, хто потім зарахує на її сайдчейн-адресу п'ять сайдкоінів, як тільки отримає оплату. Як альтернатива, він може мати якусь настройку з мінімальним довірою, при якій сайдкоіни автоматично зараховуються після того, як програмне забезпечення виявляє платіж.

Після того, як Аліса конвертувала свої монети в сайдкоіни, вона в будь-який час може провести процес у зворотному порядку. Тепер, коли вона зайшла в сайдчейн, вона може вільно здійснювати операції в цій ланцюгу. Аліса може відправляти сайдкоіни і отримувати їх від інших користувачів, так само, як і в основній ланцюгу.
Наприклад, вона може заплатити Бобу один сайдкоін за худі Binance. Коли вона захоче повернутися в біткоїн, їй потрібно буде відправити залишкові чотири сайдкоіни на спеціальну адресу. Після підтвердження транзакції чотири біткоїни будуть розблоковані і доставлені на адресу, який вона контролює на основній ланцюгу.
Для чого використовуються сайдчейни?
Ви можете запитати, який в цьому сенс? Чому просто не можна використовувати блокчейн біткоїна?
Відповідь полягає в тому, що сайдчейн здатний на те, що біткоїн зробити не може. Блокчейни – це ретельно продумані системи компромісів. Хоча біткоїн і є найнадійнішою і децентралізованою криптовалютою, він не найкращий з точки зору пропускної здатності. У той час, як біткоїн-транзакції швидші, ніж традиційні, вони все ще відносно повільні в порівнянні з іншими блокчейн-системами. Блоки добуваються кожні десять хвилин, а комісійні збори можуть значно зрости при перевантаженні мережі.
Безумовно, для невеликих повсякденних платежів такий рівень безпеки не потрібен. Якщо Аліса купить каву, то у неї не буде жодного бажання чекати підтвердження транзакції. Вона затримає чергу, і до того ж її напій охолоне до моменту, коли його принесуть.
Сайдчейни не пов'язані між собою однаковим набором правил. По факту, їм навіть не потрібно використовувати алгоритм Proof of Work для свого функціонування. Такі системи можуть використовувати будь-який механізм консенсусу, довіряючи одному валідатору або сформувати певний набір налаштувань з будь-якою кількістю параметрів. Також для них відкривається доступ проводити оновлення, які не існують на основній ланцюзі, створювати більш великі блоки і збільшувати швидкість грошових розрахунків.
Цікавим є той факт, що при виникненні критичних помилок сайдчейни можуть працювати, не зачіпаючи основну ланцюг. Це дозволяє використовувати їх як платформи для проведення різних експериментів і розгортання нових функцій, які в іншому випадку вимагали б консенсусу від більшості учасників мережі.
За умови, що користувачі будуть задоволені компромісами мережі, сайдчейни можуть стати невід'ємним кроком на шляху до ефективного масштабування. Майнчейн-ноди не потрібно зберігати кожну транзакцію з сайдчейна. Аліса може увійти в сайдчейн за допомогою однієї транзакції в мережі біткоїна і виконати сотню різних транзакцій, використовуючи сайдкоіни, а потім вийти з сайдчейна. Тобто в блокчейні біткоїна вона виконає тільки дві транзакції – одну для входу і іншу для виходу.
Ethereum Plasma має схожі риси з подібним рішенням, але між ними є багато відмінностей. Щоб дізнатися подробиці, див. статтю: «Що таке Ethereum Plasma?».
Введення в платіжні канали
Що таке платіжний канал?
Платіжні канали служать для такої ж мети, що і сайдчейни, але вони принципово відрізняються. Подібно сайдчейнам, вони виносять транзакції за рамки основної ланцюги, щоб запобігти роздування блокчейна, але на відміну від сайдчейна, в даному рішенні немає необхідності в окремому блокчейні.
Платіжний канал використовує смарт-контракт, що дозволяє користувачам здійснювати угоди, не публікуючи свої транзакції в блокчейні. Це досягається за допомогою програмної угоди між двома учасниками.
Як це працює?
В таких моделях, як популярна мережа Lightning Network, дві сторони спочатку виробляють депозит монет на адресу, яким вони спільно володіють. Це спеціальний адрес з мультипідписом, в якому витрачання коштів здійснюється тільки за наявності двох підписів. Таким чином, якщо Аліса і Боб створили такий адрес, то кошти можуть бути переведені тільки після згоди двох сторін.
Припустимо, кожен з них вносить по 10 BTC на цільовий адрес, після цього баланс гаманця складе 20 BTC. У блокчейні досить просто розглянути їх початковий баланс, який може підтвердити всім, що у Аліси і Боба по 10 BTC. Якщо Аліса передасть Бобу одну монету, вона може оновити його, щоб зрозуміти - Аліса має 9 BTC, Боб має 11 BTC. Їм не потрібно буде публікувати дані в блокчейні, оскільки загальний баланс на адресі залишиться попереднім.

Однак, може настати момент, коли у Аліси буде 5 BTC, а у Боба 15 BTC. Вони можуть легко створити транзакцію, яка перерахує правильні баланси на їх особисті адреси, після спільного підписання і передачі цієї транзакції в мережу.
Аліса і Боб могли записати на своєму балансі десять, сто або тисячу транзакцій. Але що стосується блокчейна, вони зробили тільки дві транзакції в ланцюгу: одну для початкового депозиту і одну після остаточного перерозподілу коштів між собою. Крім цих двох, всі інші транзакції є безкоштовними і майже миттєвими, оскільки вони відбуваються поза ланцюгом. При цьому Аліса і Боб не платили майнерам і не чекали підтверджень транзакцій у блоках.
Тим не менш, розглянутий вище приклад вимагає кооперації від обох сторін, що не є ідеальною ситуацією для незнайомих людей. Однак за допомогою спеціальних механізмів, будь-які шахрайські дії будуть фіксуватися, а порушник каратися, тому сторони можуть спокійно, а головне безпечно взаємодіяти без довіри один до одного.
Маршрутизація платежів
Очевидно, що платіжні канали є зручними для двох сторін, які хочуть обмінятися великою кількістю угод, але за допомогою маршрутизації платежів їх функції стають ще кращими. Припустимо, що мережа цих каналів може розширюватися, це означає, що Аліса може заплатити стороні, з якою вона не пов'язана безпосередньо. Якщо у Боба відкритий канал з Керол, Аліса може передати їй кошти за умови наявності достатнього обсягу коштів. Для цього, вона передає монети Бобу, який у свою чергу, передасть їх Керол. Якщо Керол підключена до іншого учасника, наприклад Дена, то вона може зробити те ж саме.
Така мережа еволюціонує в розподілену мережеву топологію, яка контактує відразу з кількома пірами. В такій мережі зазвичай буде присутня кілька маршрутів до місця призначення, і користувачі зможуть вибрати найбільш підходящий і ефективний.
Висновок
Ми обговорили два підходи до масштабованості, які дозволяють здійснювати транзакції, не обтяжуючи лежачий в їх основі блокчейн. Як сайдчейни, так і технологія платіжних каналів ще не дозріли, але вони все частіше використовуються користувачами, які хочуть обійти недоліки транзакцій базового рівня.
З часом, і все більше користувачів приєднуються до мережі, вкрай важливо підтримувати її децентралізацію. Це досягається тільки шляхом введення обмежень на зростання блокчейна, щоб нові ноди могли легко приєднуватися. Прихильники оффчейн-рішень масштабованості вважають, що з часом основний блокчейн буде використовуватися тільки для розрахунку великих фінансових угод або для прив'язки вхідних/вихідних сайдчейнів і відкриття/закриття каналів.
