Легкі клієнти
Запуск повного вузла — це найбільш бездовірчий, приватний, децентралізований та цензуростійкий спосіб взаємодії з Етеріумом. З повним вузлом ви зберігаєте власну копію блокчейну, до якої можете миттєво звертатися із запитами, і отримуєте прямий доступ до однорангової мережі Етеріуму. Однак запуск повного вузла вимагає значного обсягу оперативної пам'яті, дискового простору та ресурсів процесора. Це означає, що не кожен має можливість запустити власний вузол. У дорожній карті Етеріуму є кілька рішень цієї проблеми, зокрема безстановість, але до їх реалізації ще кілька років. Короткострокове рішення полягає в тому, щоб пожертвувати деякими перевагами запуску повного вузла заради значного підвищення продуктивності, що дозволить вузлам працювати з дуже низькими вимогами до обладнання. Вузли, які йдуть на такий компроміс, відомі як легкі вузли.
Що таке легкий клієнт
Легкий вузол — це вузол, на якому працює програмне забезпечення легкого клієнта. Замість того, щоб зберігати локальні копії даних блокчейну та незалежно перевіряти всі зміни, вони запитують необхідні дані у певного провайдера. Провайдером може бути пряме підключення до повного вузла або централізований RPC-сервер. Потім дані перевіряються легким вузлом, що дозволяє йому йти в ногу з вершиною ланцюга. Легкий вузол обробляє лише заголовки блоків, лише зрідка завантажуючи фактичний вміст блоку. Вузли можуть відрізнятися за своєю «легкістю» залежно від комбінацій програмного забезпечення легких і повних клієнтів, які вони запускають. Наприклад, найлегшою конфігурацією буде запуск легкого клієнта виконання та легкого клієнта консенсусу. Також імовірно, що багато вузлів оберуть запуск легких клієнтів консенсусу з повними клієнтами виконання, або навпаки.
Як працюють легкі клієнти?
Коли Етеріум почав використовувати механізм консенсусу на основі доказу частки (PoS), була запроваджена нова інфраструктура спеціально для підтримки легких клієнтів. Вона працює шляхом випадкового вибору підмножини з 512 валідаторів кожні 1,1 дня, які діють як комітет синхронізації. Комітет синхронізації підписує заголовок останніх блоків. Кожен заголовок блоку містить агрегований підпис валідаторів у комітеті синхронізації та «бітове поле», яке показує, які валідатори підписали, а які ні. Кожен заголовок також містить список валідаторів, які, як очікується, братимуть участь у підписанні наступного блоку. Це означає, що легкий клієнт може швидко побачити, що комітет синхронізації підписав отримані ним дані, а також перевірити, чи є комітет синхронізації справжнім, порівнявши отриманий комітет з тим, який він очікував побачити згідно з попереднім блоком. Таким чином, легкий клієнт може продовжувати оновлювати свої знання про останній блок Етеріуму без фактичного завантаження самого блоку, а лише його заголовка, який містить зведену інформацію.
На рівні виконання не існує єдиної специфікації для легкого клієнта виконання. Можливості легкого клієнта виконання можуть варіюватися від «легкого режиму» повного клієнта виконання, який має всю функціональність EVM та мережі повного вузла, але перевіряє лише заголовки блоків без завантаження пов'язаних даних, до більш урізаного клієнта, який значною мірою покладається на пересилання запитів до RPC-провайдера для взаємодії з Етеріумом.
Чому легкі клієнти важливі?
Легкі клієнти важливі, оскільки вони дозволяють користувачам перевіряти вхідні дані, а не сліпо довіряти тому, що їхній постачальник даних є правильним і чесним, використовуючи при цьому лише крихітну частку обчислювальних ресурсів повного вузла. Дані, які отримують легкі клієнти, можна перевірити за заголовками блоків, які, як їм відомо, були підписані щонайменше 2/3 випадкового набору з 512 валідаторів Етеріуму. Це дуже вагомий доказ того, що дані є правильними.
Легкий клієнт використовує лише крихітну кількість обчислювальної потужності, оперативної пам'яті та дискового простору, тому його можна запустити на мобільному телефоні, вбудувати в застосунок або як частину браузера. Легкі клієнти — це спосіб зробити доступ до Етеріуму з мінімізованою довірою таким же безперешкодним, як і довіра до стороннього провайдера.
Розглянемо простий приклад. Уявіть, що ви хочете перевірити баланс свого акаунта. Для цього вам потрібно зробити запит до вузла Етеріуму. Цей вузол перевірить свою локальну копію стану Етеріуму на наявність вашого балансу і поверне його вам. Якщо у вас немає прямого доступу до вузла, існують централізовані оператори, які надають ці дані як послугу. Ви можете надіслати їм запит, вони перевірять свій вузол і надішлють вам результат. Проблема полягає в тому, що вам доводиться довіряти провайдеру в тому, що він надає вам правильну інформацію. Ви ніколи не можете бути впевнені, що інформація є правильною, якщо не можете перевірити її самостійно.
Легкий клієнт вирішує цю проблему. Ви все ще запитуєте дані у якогось зовнішнього провайдера, але коли ви отримуєте дані назад, вони супроводжуються доказом, який ваш легкий вузол може перевірити за допомогою інформації, отриманої в заголовку блоку. Це означає, що Етеріум перевіряє правильність ваших даних замість якогось довіреного оператора.
Які інновації уможливлюють легкі клієнти?
Основна перевага легких клієнтів полягає в тому, що вони дозволяють більшій кількості людей отримувати незалежний доступ до Етеріуму з незначними вимогами до обладнання та мінімальною залежністю від третіх сторін. Це добре для користувачів, оскільки вони можуть перевіряти власні дані, і це добре для мережі, оскільки збільшує кількість та різноманітність вузлів, які перевіряють ланцюг.
Можливість запускати вузли Етеріуму на пристроях з дуже малим обсягом пам'яті та обчислювальної потужності є одним з головних напрямків інновацій, які відкривають легкі клієнти. Тоді як сьогодні вузли Етеріуму вимагають багато обчислювальних ресурсів, легкі клієнти можуть бути вбудовані в браузери, працювати на мобільних телефонах і, можливо, навіть на менших пристроях, таких як смартгодинники. Це означає, що гаманці Етеріуму з вбудованими клієнтами можуть працювати на мобільному телефоні. Це означає, що мобільні гаманці можуть бути набагато більш децентралізованими, оскільки їм не доведеться довіряти централізованим постачальникам даних.
Розширенням цього є підтримка пристроїв Інтернету речей (IoT). Легкий клієнт може бути використаний для швидкого доведення права власності на певний баланс токенів або NFT з усіма гарантіями безпеки, що надаються комітетами синхронізації, ініціюючи певну дію в мережі IoT. Уявіть собі сервіс прокату велосипедів (opens in a new tab), який використовує застосунок із вбудованим легким клієнтом для швидкої перевірки того, що ви володієте NFT сервісу прокату, і якщо так, розблоковує велосипед, щоб ви могли поїхати на ньому!
Ролапи Етеріуму також виграють від легких клієнтів. Однією з великих проблем для ролапів були хакерські атаки на мости, які дозволяють переказувати кошти з головної мережі Ethereum до ролапу. Однією з вразливостей є оракули, які ролапи використовують для виявлення того, що користувач вніс депозит у міст. Якщо оракул надає неправильні дані, він може обдурити ролап, змусивши його думати, що був депозит у міст, і помилково вивільнити кошти. Легкий клієнт, вбудований у ролап, може бути використаний для захисту від скомпрометованих оракулів, оскільки депозит у міст може супроводжуватися доказом, який може бути перевірений ролапом перед вивільненням будь-яких токенів. Ця ж концепція може бути застосована і до інших міжланцюгових мостів.
Легкі клієнти також можуть бути використані для оновлення гаманців Етеріуму. Замість того, щоб довіряти даним, наданим RPC-провайдером, ваш гаманець міг би безпосередньо перевіряти дані, що вам надаються, використовуючи вбудований легкий клієнт. Це додало б безпеки вашому гаманцю. Якщо ваш RPC-провайдер виявиться нечесним і надасть вам неправильні дані, вбудований легкий клієнт зможе повідомити вам про це!
Який поточний стан розробки легких клієнтів?
У розробці знаходиться кілька легких клієнтів, включаючи легкі клієнти виконання, консенсусу та комбіновані легкі клієнти виконання/консенсусу. Ось реалізації легких клієнтів, про які нам відомо на момент написання цієї сторінки:
- Лодстар (opens in a new tab): легкий клієнт консенсусу на TypeScript
- Helios (opens in a new tab): комбінований легкий клієнт виконання та консенсусу на Rust
- Geth (opens in a new tab): легкий режим для клієнта виконання (у розробці) на Go
- Німбус (opens in a new tab): легкий клієнт консенсусу на Nim
Наскільки нам відомо, жоден з них ще не вважається готовим до використання у виробничому середовищі.
Також ведеться велика робота над покращенням способів доступу легких клієнтів до даних Етеріуму. Наразі легкі клієнти покладаються на RPC-запити до повних вузлів з використанням моделі клієнт/сервер, але в майбутньому дані можна буде запитувати більш децентралізованим способом за допомогою спеціальної мережі, такої як Портал Нетворк (opens in a new tab), яка зможе надавати дані легким клієнтам за допомогою однорангового протоколу пліток.
Інші пункти дорожньої карти, такі як дерева Веркла та безстановість, з часом зрівняють гарантії безпеки легких клієнтів з гарантіями повних клієнтів.
Додаткова література
- Жолт Фельфоді (Zsolt Felfodhi) про легкі клієнти Geth (opens in a new tab)
- Етан Кісслінг (Etan Kissling) про мережу легких клієнтів (opens in a new tab)
- Етан Кісслінг (Etan Kissling) про легкі клієнти після Злиття (opens in a new tab)
- Пайпер Мерріам (Piper Merriam): Звивистий шлях до функціональних легких клієнтів (opens in a new tab)