вступ
Масштабованість у широкому сенсі означає здатність системи розвиватися, щоб задовольнити зростаючий попит. В обчислювальній техніці ви можете підвищити продуктивність свого комп’ютера, оновивши його апаратне забезпечення, щоб швидше виконувати певні завдання. Коли ми говоримо про масштабованість блокчейнів, ми маємо на увазі збільшення їхньої здатності обробляти більше транзакцій.
Такі протоколи, як Bitcoin, мають багато сильних сторін, але масштабованість не є однією з них. Якби біткойн запускався в централізованій базі даних, адміністратору було б відносно легко збільшити швидкість і пропускну здатність. Але ціннісні пропозиції біткойна (тобто опір цензурі) вимагають, щоб багато учасників синхронізували копію блокчейну.
Проблема масштабованості блокчейна
Запуск біткойн-вузла відносно дешевий, і навіть прості пристрої можуть це зробити. Але оскільки тисячі вузлів повинні підтримувати актуальність один одного, існують певні обмеження щодо їхньої потужності.
Встановлено обмеження на кількість транзакцій, які можна обробити в ланцюжку, щоб не дозволити базі даних збільшитися до громіздких розмірів. Якщо він занадто швидко стане занадто великим, вузли не зможуть встигати. Крім того, якщо блоки занадто великі, їх не можна швидко ретранслювати по мережі.
У результаті ми опиняємось у дечому вузькому місці. Блокчейн можна розглядати як потяг, який відправляється через задані проміжки часу. Кількість місць у кожному вагоні обмежена, і щоб отримати квиток, мандрівники повинні зробити ставку, щоб гарантувати місце. Якщо всі намагатимуться сісти на поїзд одночасно, ціна буде високою. Подібним чином мережа, забита транзакціями, що очікують на розгляд, вимагатиме від користувачів сплачувати вищі комісії, щоб своєчасно побачити їхню транзакцію.
Одним із рішень було б зробити вагони більшими. Це означало б більше місць, більшу пропускну спроможність і нижчі ціни на квитки. Але немає жодної гарантії, що місця просто не заповняться, як колись. Вагони не можна постійно розширювати, так само як блоки або ліміти блокового газу не можуть нескінченно масштабуватися. Останнє робить дорожчим для вузлів залишатися в мережі, оскільки їм знадобиться дорожче обладнання, щоб підтримувати синхронізацію.
Творець Ethereum Віталік Бутерін створив трилему масштабованості, щоб описати проблему, з якою стикаються блокчейни. Він теоретизує, що протоколи повинні робити компроміси між масштабованістю, безпекою та децентралізацією. Вони дещо суперечать одне одному – якщо забагато зосередитися на двох властивостях, третя буде поганою.
З цієї причини багато хто розглядає масштабованість як щось, чого можна досягти поза ланцюгом, тоді як безпека та децентралізація повинні бути максимально збільшені в самому блокчейні.
Що таке рішення для масштабування поза мережею?
Масштабування поза ланцюгом стосується підходів, які дозволяють виконувати транзакції без роздування блокчейну. Протоколи, які підключаються до ланцюга, дозволяють користувачам надсилати й отримувати кошти, при цьому транзакції не з’являються в основному ланцюзі. Ми зануримося в два найбільш помітні досягнення на цьому фронті: сайдчейни та платіжні канали.
Вступ до сайдчейнів
Що таке сайдчейн?
Сайдчейн — це окремий блокчейн. Однак це не окрема платформа, оскільки вона певним чином прив’язана до основного ланцюга. Головний ланцюг і бічний ланцюг взаємодіють, тобто активи можуть вільно перетікати від одного до іншого.
Існує кілька способів забезпечити перенесення коштів. У деяких випадках активи переміщуються з основного ланцюга шляхом розміщення на спеціальній адресі. Насправді їх не надсилають – вони натомість заблоковані на адресу, а відповідна сума видається на сайдчейні. Більш простий (хоча й централізований варіант) — це відправити кошти зберігачу, який обмінює депозит на кошти в сайдчейні.
Як працює сайдчейн?
Припустимо, що наша подруга Аліса має п’ять біткойнів. Вона хоче обміняти їх на п’ять еквівалентних одиниць у сайдчейні біткойнів – назвемо їх сайдкойнами. Сайдчейн, про який йде мова, використовує двосторонню прив’язку, тобто користувачі можуть передавати свої активи з основного ланцюга в сайдчейн і навпаки.
Пам’ятайте, що сайдчейн – це окремий блокчейн. Отже, він матиме різні блоки, вузли та механізми перевірки. Щоб отримати свої сайдкойни, Аліса надсилає свої п’ять біткойнів на іншу адресу. Воно може належати комусь, хто потім отримає на її сайдчейн-адресу п’ять сайдкойнів, коли отримає біткойни. Крім того, він може мати певну мінімізовану настройку довіри, де сайдкойни автоматично зараховуються після того, як програмне забезпечення виявляє платіж.
Зараз Аліса перетворила свої монети на сайдкойни, але вона завжди може змінити процес, щоб повернути свої біткойни. Тепер, коли вона увійшла в сайдчейн, вона може вільно здійснювати транзакції в цьому окремому блокчейні. Вона може надсилати сайдкойни або отримувати їх від інших, як і в основному ланцюжку.
Вона могла б, наприклад, заплатити Бобу один сайдкойн за толстовку Binance. Коли вона захоче повернутися до біткойна, вона може надіслати чотири сайдкойни, що залишилися, на спеціальну адресу. Після підтвердження транзакції чотири біткойни будуть розблоковані та доставлені на адресу, яку вона контролює в основному ланцюзі.
Чому використовуються сайдчейни?
Ви можете задатися питанням, у чому сенс цього. Чому Аліса просто не використовує блокчейн Bitcoin?
Відповідь полягає в тому, що сайдчейн може бути здатний на те, чого не може зробити біткойн. Блокчейни — це ретельно розроблені системи компромісів. Хоча біткойн є найбезпечнішою та децентралізованою криптовалютою, вона не найкраща з точки зору пропускної здатності. Хоча транзакції з біткойнами є швидшими за звичайні методи, вони все ще відносно повільні порівняно з іншими системами блокчейну. Блоки видобуваються кожні десять хвилин, і комісії можуть значно зростати, коли мережа перевантажена.
Слід визнати, що, ймовірно, немає потреби в такому рівні безпеки для невеликих повсякденних платежів. Якщо Аліса платить за каву, вона не буде чекати підтвердження транзакції. Вона тримала б чергу, і її напій був би холодним, коли його передали.
Сайдчейни не пов’язані однаковими правилами. Насправді їм навіть не потрібно використовувати підтвердження роботи, щоб працювати. Ви можете використовувати будь-який механізм консенсусу, довіряти єдиному валідатору або налаштовувати будь-яку кількість параметрів. Ви можете додавати оновлення, яких немає в основному ланцюзі, створювати більші блоки та здійснювати швидкі розрахунки.
Цікаво, що бічні ланцюги можуть навіть мати критичні помилки, не впливаючи на базовий ланцюг. Це дозволяє використовувати їх як платформи для експериментів і розгортання функцій, які в іншому випадку вимагали б консенсусу більшості користувачів мережі.
За умови, що користувачі задоволені компромісами, сайдчейни можуть стати невід’ємним кроком до ефективного масштабування. Немає вимоги до основних вузлів ланцюга зберігати кожну транзакцію з бічного ланцюга. Аліса могла увійти в сайдчейн за допомогою однієї транзакції біткойн, виконати сотні транзакцій сайдкойнів, а потім вийти з сайдчейну. Що стосується блокчейну біткойнів, вона виконала лише два – один для входу та один для виходу.
Плазма Ethereum схожа, але має деякі серйозні відмінності. Докладніше про це: Що таке Ethereum Plasma?
Знайомство з платіжними каналами
Що таке платіжний канал?
Платіжні канали служать тій самій меті, що й сайдчейни щодо масштабованості, але вони принципово відрізняються. Як і бічні ланцюги, вони відштовхують транзакції від основного ланцюга, щоб запобігти роздуттю блокчейна. Однак, на відміну від сайдчейнів, для їх функціонування не потрібен окремий блокчейн.
Платіжний канал використовує смарт-контракт, щоб дозволити користувачам здійснювати транзакції, не публікуючи свої транзакції в блокчейні. Це робиться за допомогою програмно-примусової угоди між двома учасниками.
Як працює платіжний канал?
У таких моделях, як популярна Lightning Network, дві сторони спочатку вносять монети на адресу, якою вони володіють спільно. Це адреса з кількома підписами, яка потребує двох підписів, щоб витратити кошти. Отже, якби Аліса та Боб створили таку адресу, кошти можна було б вивести лише за згодою обох.
Скажімо, кожен з них вносить по 10 BTC на адресу, яка зараз містить 20 BTC. Їм було б легко вести баланс, який би починався з того, що Аліса і Боб мають по 10 BTC. Якби Аліса захотіла дати Бобу монету, вони могли б оновити її, щоб читати, що Аліса має 9 BTC, Боб має 11 BTC. Їм не доведеться публікувати в блокчейні, оскільки вони продовжують оновлювати ці баланси.
Коли прийде час, припустимо, що Аліса має 5 BTC, а Боб має 15 BTC. Потім вони можуть створити транзакцію, яка надсилає ці баланси на адреси, що належать сторонам, підписати її та транслювати.
Аліса та Боб могли записати на свій баланс десять, сто чи тисячу операцій. Але що стосується блокчейну, вони виконали лише дві операції в ланцюжку: одну для початкової транзакції фінансування та іншу для перерозподілу балансів після їх завершення. Окрім цих двох, усі інші транзакції є безкоштовними та майже миттєвими, оскільки вони відбуваються поза мережею. Майнеру не потрібно платити комісію та не потрібно чекати підтвердження блокування.
Звичайно, наведений вище приклад вимагає співпраці обох сторін, що не є ідеальною ситуацією для незнайомців. Однак можна використовувати спеціальні механізми, щоб покарати будь-яку спробу обману, щоб сторони могли безпечно взаємодіяти одна з одною без довіри.
Маршрутизація платежів
Очевидно, платіжні канали зручні для двох сторін, які очікують великого обсягу транзакцій. Але стає краще. Мережа цих каналів може бути деталізована, що означає, що Аліса може заплатити стороні, до якої вона не має прямого зв’язку. Якщо у Боба є відкритий канал із Керол, Аліса може заплатити їй за умови достатньої ємності. Вона перекине кошти на сторону Боба, а той, у свою чергу, направить їх на сторону Керол. Якщо Керол пов’язана з іншим учасником, Деном, можна зробити те саме.
Така мережа перетворюється на розподілену топологію, де кожен підключається до кількох однорангових мереж. Часто буде кілька маршрутів до пункту призначення, і користувачі зможуть вибрати найефективніший.
Закриття думок
Ми обговорили два підходи до масштабованості, які дозволяють здійснювати транзакції без навантаження на базовий блокчейн. І сайдчейн, і технологія платіжних каналів ще мають бути зрілими, але вони все частіше використовуються користувачами, які хочуть обійти недоліки транзакцій базового рівня.
З плином часу все більше користувачів приєднуються до мережі, тому важливо підтримувати децентралізацію. Цього можна досягти лише шляхом встановлення обмежень на зростання блокчейну, щоб нові вузли могли легко приєднуватися. Прихильники рішень масштабованості поза ланцюгом вважають, що з часом основний ланцюг буде використовуватися лише для розрахунків за транзакціями з високою вартістю або для прив’язки до/з бічних ланцюгів і відкриття/закриття каналів.