Це Частина I багаточастинної серії від Fuel Labs, яка охоплює теми, пов’язані з масштабованістю та виконанням на Ethereum. Ця серія має на меті надати всебічне уявлення про виклики, пов’язані з підвищенням продуктивності та потужності Ethereum, а також про поточні рішення, які працюють над тим, щоб зробити його більш ефективним і масштабованим для широкого впровадження.
Архітектура Ethereum складається з кількох рівнів, кожен з яких відіграє важливу роль в роботі мережі. Серед цих рівнів особливо важливим є рівень виконання. Обробка транзакцій, виконання смарт-контрактів та підтримка послідовного і безпечного стану здійснюються саме на рівні виконання. Проте цей рівень часто є вузьким місцем, яке обмежує загальну продуктивність і масштабованість мережі Ethereum.
Виконання на Ethereum
Виконання стосується обчислень, необхідних для виконання транзакцій та здійснення змін стану на блокчейні. Ці обчислення часто включають перевірку транзакцій шляхом перевірки їх підписів і балансів токенів, а також виконання необхідної логіки на блокчейні для оновлення стану. Зміни стану відбуваються, коли повні вузли оновлюють свою копію реєстру, щоб відобразити нові перекази токенів, оновлення коду смарт-контрактів та зміни у зберіганні даних.
Основні функції рівня виконання включають:
- Обробка транзакцій: Перевірка та виконання транзакцій, надісланих користувачами.
- Виконання смарт-контрактів: Виконання коду смарт-контрактів, які є самовиконуваними контрактами, де умови угоди написані безпосередньо в коді.
- Управління станом: Підтримка стану блокчейну, включаючи баланси рахунків, стани смарт-контрактів та інші важливі дані. Управління станом Ethereum особливо складне через його складне дерево станів, але інновації, такі як деревовидні структури Verkle, які оптимізують зберігання станів шляхом забезпечення менших та більш ефективних доказів даних, працюють над вирішенням цієї проблеми. Тим часом, інші блокчейни, такі як Solana, незважаючи на відсутність глобального дерева станів, також зіткнулися з проблемами управління станом.
Мета масштабованості полягає в підвищенні продуктивності за рахунок збільшення швидкості транзакцій (швидша фіналізація) та пропускної здатності транзакцій (більша кількість транзакцій за секунду). Люди часто сприймають продуктивність у термінах TPS, або транзакцій за секунду. Насправді, масштабованість відноситься до кількості обчислень за секунду, які блокчейн може обробити, оскільки транзакції можуть відрізнятися за складністю та вимогами до ресурсів. Ethereum використовує “газ” для вимірювання обчислень, необхідних для виконання транзакцій і смарт-контрактів. Виклик у масштабуванні рівня виконання полягає у збільшенні кількості обчислень за секунду без значного підвищення вимог до апаратного забезпечення для окремих повних вузлів, які перевіряють транзакції в блоках. Ефективне вирішення цієї проблеми є ключовим для підвищення пропускної здатності та продуктивності блокчейн-мереж.
Як обробляються та перевіряються транзакції
Щоб повністю зрозуміти, чому масштабованість потрібно розглядати з точки зору обчислень, важливо ближче розглянути, як обробляються транзакції на Ethereum. Коли користувач ініціює транзакцію на Ethereum, транзакція проходить кілька етапів перед тим, як бути фіналізованою. Ось спрощений огляд цього процесу:
- Ініціація транзакції: Зовнішній обліковий запис (EOA) або власник смарт-контракту ініціює транзакцію, створюючи підписаний JSON-RPC запит. Цей запит містить деталі, такі як адреса одержувача, сума Ether (якщо є) для передачі, дані для включення (якщо взаємодія з контрактом), ліміт газу та інші параметри транзакції.
- Перевірка цифрового підпису: Вузли в мережі Ethereum спочатку перевіряють цифровий підпис транзакції, щоб підтвердити її автентичність і переконатися, що вона не була змінена під час передачі.
- Перевірка nonce: Мережа перевіряє nonce облікового запису відправника, щоб переконатися, що транзакція є послідовною і запобігти повторним атакам. Nonce збільшується з кожною транзакцією, надісланою з облікового запису.
- Розрахунок газу: Газ є одиницею виміру обчислювальних зусиль і необхідний для виконання транзакцій і смарт-контрактів. Транзакція вказує ліміт газу, який є максимальною кількістю газу, яку відправник готовий використовувати для цієї транзакції. Плата за газ сплачується в Ether і покриває витрати на обчислення та зберігання в мережі Ethereum.
- Розповсюдження транзакцій: Після перевірки транзакція розповсюджується на всі вузли в одноранговій мережі Ethereum. Вузли отримують транзакцію та починають процес включення її в блок для перевірки.
- Створення блоку: Валідатори в механізмі консенсусу Proof of Stake (PoS) Ethereum перевіряють і пропонують новий блок, включаючи партії перевірених транзакцій, включаючи найщойно ініційовану.
- Перевірка блоку: Інші вузли також перевіряють правильність транзакцій, перевіряють підписи, підтверджують наявні кошти та забезпечують відсутність подвійного витрачання.
- Оновлення стану: Коли блок є дійсним, кожен вузол оновлює свою локальну копію блокчейну 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 ще більше ускладнюється обмеженою пропускною здатністю мережі, часто змушуючи розробників реалізовувати рішення поза ланцюгом або методи масштабування другого рівня для кращої продуктивності.
Значні події мережевого перевантаження
Шаленість навколо NFT CryptoKitties наприкінці 2017 року стала переломним моментом, який продемонстрував, наскільки сильно може бути перевантажена мережа. Сплеск транзакцій від користувачів, які розводили та торгували віртуальними котами, призвів до значних затримок у мережі. На своєму піку, CryptoKitties були відповідальні майже за 16% всіх транзакцій у мережі Ethereum, що спричинило затримки деяких транзакцій на години або навіть дні. За даними статті Coindesk, в один момент було близько 30 000 транзакцій, які застрягли та чекали на обробку.
Літо DeFi 2020 року стало ще одним періодом значного перевантаження мережі. Швидке впровадження децентралізованих додатків, таких як 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, потенційні рішення та переваги переходу за межі традиційної моделі виконання.
Рекомендації на читання:
Пояснення: Проблеми масштабованості Ethereum та зростаюче невдоволення