Відмова від відповідальності
Ця стаття була перекладена з її оригінальної мови для вашої зручності. Незважаючи на наше прагнення до точності, можуть бути дрібні помилки або різниця в трактуванні. Для найбільш точного та достовірного представлення, будь ласка, зверніться до оригінальної публікації, доступної за посиланням. Ми цінуємо ваше розуміння і заохочуємо вас звернутися до оригінального джерела за детальною інформацією.
Це частина I багатосерійного циклу від Fuel Labs, яка охоплює теми, пов’язані з масштабованістю та виконанням на Ethereum. Мета цього циклу надати всебічне розуміння проблем, пов’язаних із підвищенням продуктивності та потужності Ethereum, а також поточних рішень, які роблять його більш ефективним і масштабованим для широкого впровадження.
Архітектура Ethereum складається з кількох рівнів, кожен з яких відіграє вирішальну роль у роботі мережі. Серед цих рівнів особливо важливим є рівень виконання. Обробка транзакцій, виконання смарт-контрактів і підтримка узгодженого та безпечного стану виконуються саме на рівні виконання. Однак цей рівень часто є вузьким місцем, яке обмежує загальну продуктивність і масштабованість мережі Ethereum.
Виконання на Ethereum
Виконання стосується обчислень, необхідних для виконання транзакцій і зміни стану в блокчейні. Це обчислення часто передбачає перевірку транзакцій шляхом перевірки їх підписів і балансу токенів, а також виконання логіки в мережі, необхідної для оновлення стану. Зміни стану відбуваються, коли повні ноди оновлюють свою копію реєстру, щоб відобразити нові перекази токенів, оновлення коду смарт-контракту та зміни даних в сховищі.
Основні функції рівня виконання включають:
Обробка транзакцій: Перевірка та виконання транзакцій, надісланих користувачами.
Виконання смарт-контрактів: Запуск коду смарт-контрактів, які є самовиконуваними контрактами, де умови угоди записуються безпосередньо в код.
Управління станом: підтримка стану блокчейну, включаючи баланси на рахунках, стани смарт-контрактів та інші важливі дані. Управління станом Ethereum є особливо складним через його складне дерево станів, але інновації, такі як Verkle trees , які оптимізують зберігання стану, забезпечуючи менші та ефективніші докази даних, знаходяться в розробці для вирішення цієї проблеми. Тим часом інші блокчейни, такі як Solana, попри відсутність глобального дерева станів , також стикаються з проблемами управління станом.
Метою масштабованості є підвищення продуктивності шляхом збільшення швидкості транзакцій (більш швидке досягнення фінальності) і пропускної здатності транзакцій (більша кількість транзакцій за секунду). Люди часто думають про продуктивність у термінах TPS або транзакцій за секунду. Насправді масштабованість означає кількість обчислень за секунду, яку може обробляти блокчейн, оскільки транзакції можуть відрізнятися за складністю та вимогами до ресурсів. Ethereum використовує «газ» для вимірювання обчислень, необхідних для виконання транзакцій і смарт-контрактів. Проблема масштабування рівня виконання полягає в збільшенні кількості обчислень за секунду без істотного підвищення вимог до апаратного забезпечення для окремих повних нод, які перевіряють транзакції в блоках. Ефективне вирішення цієї проблеми має вирішальне значення для підвищення пропускної здатності та продуктивності блокчейн мереж.
Як транзакції обробляються та перевіряються
Щоб повністю зрозуміти, чому масштабованість потрібно розглядати з точки зору обчислень, важливо уважніше розглянути, як транзакції обробляються в Ethereum. Коли користувач ініціює транзакцію в Ethereum, транзакція проходить кілька етапів, перш ніж завершиться. Ось спрощений огляд цього процесу:
-
Ініціювання транзакції: Зовнішній обліковий запис (EOA) або власник смарт-контракту ініціює транзакцію, створюючи підписаний JSON-RPC запит. Цей запит містить такі деталі, як: адреса одержувача, кількість Ефіру (якщо є), який потрібно передати, дані, які потрібно включити (якщо передбачається взаємодія з контрактом), ліміт газу та інші параметри транзакції.
-
Перевірка цифрового підпису: Ноди в мережі Ethereum спочатку перевіряють цифровий підпис транзакції, щоб підтвердити її автентичність і переконатися, що її не було підроблено під час передачі.
-
Перевірка Nonce: Мережа перевіряє nonce облікового запису відправника, щоб переконатися, що транзакція є послідовною, і запобігає повторним атакам. Nonce збільшується з кожною транзакцією, надісланою з облікового запису.
-
Розрахунок газу: Газ є одиницею виміру обчислювальних зусиль, необхідних для виконання транзакцій і смарт-контрактів. Транзакція вказує ліміт газу, який є максимальною кількістю газу, яку відправник готовий використати для цієї транзакції. Комісії за газ сплачуються в ефірі та покривають вартість обчислень і зберігання в мережі Ethereum.
-
Передача транзакції: Після перевірки транзакція передається всім нодам в Ethereum peer-to-peer мережу. Ноди отримують транзакцію і починають процес включення її в блок для перевірки.
-
Створення блоку: Валідатори в механізмі Proof of Stake (PoS) перевіряють і пропонують новий блок, що містить пакети підтверджених транзакцій, включаючи найактуальнішу.
-
Валідація блоків: Інші ноди також перевіряють правильність транзакцій, перевіряють підписи, підтверджують доступні кошти та гарантують відсутність подвійних витрат.
-
Оновлення стану: Коли блок дійсний, кожена нода оновлює свою локальну копію блокчейну Ethereum новими змінами стану від транзакцій у цьому блоці. Це означає оновлення балансів рахунків, зберігання контрактів та інших важливих даних. Ethereum зберігає глобальне дерево Merkle, яке консолідує всі дані стану, організовуючи їх в ієрархічну структуру, де стан кожного блоку хешується та зв’язується, що зрештою призводить до єдиного кореневого хешу. Це дає нам єдиний акуратний корінь стану, який дозволяє легким нодам перевіряти цілісність конкретних транзакцій або частин даних без необхідності завантажувати весь блокчейн.
-
Підтвердження транзакції: Коли транзакцію включено в блок і цей блок додано до блокчейну, транзакція вважається підтвердженою. Підтвердження вказує на те, що транзакція є незворотною та була прийнята мережею Ethereum.
-
Остаточне виконання та взаємодія з контрактом: Для транзакцій, які взаємодіють зі смарт-контрактами, код контракту виконується відповідно до вхідних даних, наданих у транзакції. Це виконання може передбачати оновлення внутрішніх змінних стану контракту, випромінювання подій або ініціювання подальших транзакцій.
-
Звіт транзакції: Створюється звіт транзакції, яку можна перевірити, щоб підтвердити такі деталі, як кількість використаного газу, номер блоку, у який була включена транзакція, і будь-які інші дані, створені під час виконання контракту.
Вузьке місце виконання
Хоча рівень виконання є центральним для функціонування Ethereum, він також є суттєвим вузьким місцем для кількості обчислень, які Ethereum може виконувати в будь-який момент часу. Доступність даних (DA) була критичною проблемою, але такі рішення, як EIP-4844, який представив тимчасові «блоби» даних, які набагато дешевше зберігати, ніж звичайні транзакції Ethereum, значною мірою пом’якшили ці проблеми. Покращуючи розподіл даних і зберігання поза мережею, такі інновації, як EIP-4844, перенесли фокус на рівень виконання як основну перешкоду для масштабованості Ethereum.
Кілька факторів, які сприяють вузькому місцю виконання в Ethereum.
Вузькі місця затримки
Затримка — це часовий проміжок від моменту подання транзакції до її підтвердження та включення в блокчейн. Висока затримка може призвести до повільнішого підтвердження транзакцій, довших часів очікування для користувачів і затримок у виконанні смарт-контрактів. Основні вузькі місця затримки включають:
Час блокування та затримка підтвердження: Середній час блокування Ethereum, який зараз становить близько 12 секунд, забезпечує мінімальну затримку для підтвердження транзакцій. Якщо транзакція включена в наступний блок, середній час очікування становить приблизно половину часу блокування, або 6 секунд. Якщо обсяг транзакцій низький, затримка може збільшитися, оскільки транзакції довше чекають на включення в блок.
Синхронізація блокчейну (консенсус): Вузли в мережі Ethereum повинні досягти консенсусу щодо дійсності кожного блоку. Цей процес може викликати затримку, оскільки ноди перевіряють транзакції, перевіряють блоки та синхронізуються зі станом мережі. Змінність часу поширення блоку також сприяє затримці.
Вузькі місця пропускної здатності
Безпосередньо пропускна здатність – це здатність мережі ефективно обробляти й обробляти великі обсяги транзакцій протягом заданого періоду часу. Більша пропускна здатність означає, що мережа може обробляти більше транзакцій за секунду. Вузькі місця пропускної здатності включають:
Однопотокове виконання: Віртуальна машина Ethereum (EVM) обробляє транзакції по черзі в однопотоковий спосіб. Це означає, що транзакції не можна виконувати паралельно, обмежуючи кількість, яку можна обробити одночасно.
Марнотратне виконання: EVM використовує 256-бітні слова та підхід на основі стека замість регістрів. Такий вибір конструкції призводить до неефективного використання обчислювальних ресурсів, збільшення часу та енергії, необхідних для виконання контрактів.
Управління станом: Ethereum підтримує велику, глибоко вкладене дерево стану з 256 рівнями. Кожного разу, коли оновлюється пара "ключ-значення", до бази даних необхідно внести 256 оновлень. Цей обширний процес оновлення значно уповільнює мережу.
Накладні витрати на вимірювання газу: Хоча вимірювання газу призначене для запобігання надмірного використанню ресурсів і проблеми зупинки, відстеження кожної операції додає значні накладні витрати. Ці накладні витрати сприяють уповільненню обробки транзакцій.
Обмеження потужності нод: Ethereum ноди мають практичні обмеження на обробку та емність зберігання. Коли вимоги до обробки транзакцій перевищують ці обмеження, вузли намагаються не відставати, що призводить до затримок у перевірці та розповсюдженні блоків.
Зростання стану: Зі збільшенням кількості транзакцій зростає і стан блокчейну. Таке збільшення потребує більше пам’яті та робить перевірку валідності стану та доступ більш трудомісткими, що ще більше сповільнює роботу мережі.
Вплив вузького місця виконання на масштабованість
Проблеми з продуктивністю, що виникають на рівні виконання, проявляються в різних місцяї, впливаючи як на масштабованість мережі, так і на користувацький досвід. Ось кілька прикладів:
-
Перевантаження мережі: У періоди високого попиту, наприклад проведення популярних TGE або NFT роздач, кількість транзакцій може дуже сильно навантажити мережу, що призведе до перевантаження. Це призводить до довшого часу підтвердження та більш високої комісії, оскільки користувачі змагаються за обробку своїх транзакцій.
-
Висока комісія за газ: Коли мережа перевантажена, комісія за газ може різко зрости, через що для користувачів буде надзвичайно дорого виконувати навіть прості транзакції. Це обмежує доступність і зручність використання мережі.
-
Проблеми з масштабованістю: Обмежена пропускна здатність EVM перешкоджає здатності Ethereum ефективно масштабуватися. Оскільки кількість користувачів і децентралізованих додатків(dApps) зростає, мережа намагається впоратися зі збільшеним навантаженням без значного зниження продуктивності.
Вплив на зручність використання та адаптацію
Вузьке місце виконання має відчутний вплив як на кінцевих користувачів, так і на розробників, суттєво впливаючи на ширшу екосистему Ethereum.
Як вузькі місця у виконанні впливають на кінцевих користувачів і розробників
Високі збори за газ у часи пік роблять користувачам дорого взаємодію з мережею, будь то надсилання ETH, участь у протоколах DeFi або мінт NFT. Перевантаження мережі може призвести до затримки підтвердження транзакцій, викликаючи розчарування та незручності для користувачів, які очікують взаємодії в реальному часі. Ці високі витрати та затримки знижують загальне враження використання мережі, стримуючи потенційних користувачів і обмежуючи зростання екосистеми.
З точки зору розробника, необхідність оптимізувати смарт-контракти для мінімізації споживання газу ускладнює процес розробки та додає часу. Їм також потрібно боротися з оптимізацією інфраструктури, часто через сторонніх постачальників, таких як нод сервіси (наприклад, Infura). Це може бути ще більшою перешкодою, ніж лише оптимізація смарт-контрактів. Створення масштабованих dApps на Ethereum ще більше ускладнюється через обмежену пропускну здатність мережі, що часто вимагає від розробників впровадження рішень поза мережею або методів масштабування рівня 2 для кращої продуктивності.
Відомі події перевантаження мережі
Бум CryptoKitties NFT наприкінці 2017 року став ключовим моментом, який продемонстрував, наскільки мережа може стати перевантаженою. Зростання транзакцій від користувачів, які розводять та торгують віртуальними котами, призвело до значних затримок у мережі. На піку свого розвитку CryptoKitties відповідав за майже 16% усіх транзакцій у мережі Ethereum, через що деякі транзакції затримувалися на години або навіть дні. Відповідно до статті Coindesk, в один момент було близько 30 000 транзакцій, які застрягли та чекали на обробку.
Літо DeFi 2020 року стало ще одним періодом значного перевантаження мережі. Швидке впровадження dApps, таких як Uniswap і Compound, призвело до значного зростання активності в мережі. Ці фактори, серед іншого, призвели до високого попиту на мережевий простір і, як наслідок, різкого зростання плати за газ, коли тисячі ETH щодня витрачалися на транзакційні витрати.
Бум NFT з 2021 по 2022 роки ще більше підкреслив проблеми масштабованості Ethereum. Відомі NFT роздачі та аукціони, як-от запуск Otherside NFT компанією Yuga Labs, залучили тисячі учасників, що призвело до шаленого зростання плати за газ. Середня плата за газ у день монетного двору Otherside перевищила 400$ за транзакцію.
Реальні наслідки
Крім нішевої діяльності, як-от торгівля NFT і спекуляції DeFi, високі витрати та затримки також можуть підірвати досвід роботи з dApps, зменшуючи залучення та утримання. Декілька блокчейн-проектів були змушені або перейти на інші блокчейни, або взагалі закритися . Наприклад, UniLogin, яка мала на меті спростити вхід користувачів у додатки на основі ETH — критично важливу функцію для широкого впровадження — довелося припинити роботу, оскільки підвищення тарифів на газ робило його фінансово нежиттєздатним, іноді коштуючи понад 130$ за реєстрацію. Крім того, Publish0x, платформа, де користувачі можуть заробляти криптовалюту за створення та читання вмісту, була змушена відкласти виплати та перейти на щомісячну виплату через високі витрати. Для того, щоб Ethereum міг ефективно масштабуватися до реальних застосунків у сфері фінансів, управлінні мереж поставок і децентралізованіої ідентифікації, він повинен вирішити ці проблеми масштабованості, щоб підтримати більш широке впровадження.
Заключні думки
Реальні наслідки вузьких місць у виконанні мають далекосяжні наслідки, що впливають як на користувачів, так і на розробників. Високі тарифи на газ, перевантаження мережі та обмеження масштабованості перешкоджають зростанню та зручності використання екосистеми Ethereum. Вирішення цих проблем вимагає інновацій та вдосконалення рівня виконання.
У частині II ми розглянемо важливість інновацій на рівні виконання для майбутнього Ethereum. Ми детально розглянемо поточні обмеження EVM, потенційні рішення і переваги виходу за рамки традиційної моделі виконання.
Рекомендована література:
评论 (0)