# Кризис масштабируемости Ethereum: уровень исполнения

By [Fuel Labs — Russian Blog](https://paragraph.com/@fuel-labs-russian-blog) · 2024-07-18

---

> **Отказ от ответственности**
> 
> Эта статья была переведена с ее оригинального языка для вашего удобства. Несмотря на стремление к точности, могут быть небольшие ошибки или различия в толковании. Для наиболее точного и достоверного представления, пожалуйста, обратитесь к оригинальной [**публикации**](https://fuel.mirror.xyz/uQxyb1o_Gu4oBSyT1ULuqRu7ffmIXuZtx9ux8ndFMXs), доступной по ссылке. Мы ценим ваше понимание и рекомендуем обращаться к оригинальному источнику за подробной информацией.

_Это Часть I многосерийного цикла от Fuel Labs, посвященного вопросам масштабируемости и выполнения на Ethereum. Этот цикл направлен на предоставление всестороннего понимания проблем, связанных с повышением производительности и емкости Ethereum, а также рассмотрение текущих решений, направленных на повышение его эффективности и масштабируемости для широкого применения._

Архитектура Ethereum включает в себя несколько уровней, каждый из которых играет важную роль в работе сети. Среди этих уровней особенно значим уровень выполнения. Обработка транзакций, выполнение смарт-контрактов и поддержание согласованного и безопасного состояния происходят именно на уровне выполнения. Однако этот уровень часто является узким местом, ограничивающим общую производительность и масштабируемость сети Ethereum.

Выполнение на Ethereum
----------------------

Выполнение относится к вычислениям, необходимым для выполнения транзакций и внесения изменений в состояние блокчейна. Эти вычисления часто включают в себя проверку транзакций путем проверки их подписей и балансов токенов, а также выполнение логики на блокчейне, необходимой для обновления состояния. Изменения состояния происходят, когда полные ноды обновляют свою копию реестра, чтобы отразить новые переводы токенов, обновления кода смарт-контрактов и изменения в хранении данных.

![](https://storage.googleapis.com/papyrus_images/4f2d035497718a6fda20d4576c9385aa154f6a3def64e6112e939023d69ca518.png)

Основные функции уровня выполнения включают:

**Обработка транзакций**: Проверка и выполнение транзакций, отправленных пользователями.

**Выполнение смарт-контрактов**: Запуск кода смарт-контрактов, которые являются самовыполняющимися контрактами, где условия соглашения напрямую прописаны в коде.

**Управление состоянием**: Поддержание состояния блокчейна, включая балансы аккаунтов, состояния смарт-контрактов и другие важные данные. Управление состоянием в Ethereum особенно сложно из-за его сложного дерева состояний, но для решения этой проблемы разрабатываются инновации, такие как [Verkle trees](https://ethereum.org/en/roadmap/verkle-trees/), которые оптимизируют хранение состояния, позволяя использовать меньшие и более эффективные доказательства данных. В то же время, другие блокчейны, такие как Solana, [несмотря на отсутствие глобального дерева состояний](https://arxiv.org/html/2405.08882v1#:~:text=On%20the%20contrary%2C%20the%20Solana%20blockchain%20does%20not%20maintain%20a%20committed%20global%20state%20tree.), также сталкиваются с проблемами управления состоянием.

Цель масштабируемости заключается в повышении производительности за счет увеличения скорости обработки транзакций (быстрая финализация) и пропускной способности транзакций (большее количество транзакций в секунду). Люди часто думают о производительности в терминах TPS, или транзакций в секунду. В действительности, масштабируемость относится к количеству вычислений в секунду, которые блокчейн может обработать, так как транзакции могут различаться по сложности и требованиям к ресурсам. Ethereum использует "газ" для измерения вычислений, необходимых для выполнения транзакций и смарт-контрактов. Задача масштабирования уровня выполнения заключается в увеличении количества вычислений в секунду без значительного повышения требований к аппаратному обеспечению для отдельных полных нод, которые проверяют транзакции в блоках. Эффективное решение этой проблемы имеет решающее значение для повышения пропускной способности и производительности блокчейн-сетей.

Как обрабатываются и проверяются транзакции
-------------------------------------------

![](https://storage.googleapis.com/papyrus_images/8954a2dc196f0973c620ec66838e59ef12e75789e1e4b5e05b15ce8eb86e02e7.png)

Чтобы полностью понять, почему масштабируемость необходимо рассматривать с точки зрения вычислений, важно более подробно рассмотреть, как обрабатываются транзакции на Ethereum. Когда пользователь инициирует транзакцию в Ethereum, она проходит через несколько этапов, прежде чем будет завершена. Вот упрощенный обзор этого процесса:

1.  **Инициация транзакции**: Внешне управляемый аккаунт (EOA) или владелец смарт-контракта инициирует транзакцию, создавая подписанный JSON-RPC запрос. Этот запрос включает такие детали, как адрес получателя, количество Эфира (если необходимо), данные для взаимодействия с контрактом, лимит газа и другие параметры транзакции.
    
2.  **Проверка цифровой подписи**: Ноды в сети Ethereum сначала проверяют цифровую подпись транзакции, чтобы подтвердить ее подлинность и убедиться, что она не была изменена во время передачи.
    
3.  **Проверка nonce**: Сеть проверяет nonce (одноразовое число) аккаунта отправителя, чтобы убедиться, что транзакция идет по порядку и предотвратить атаки воспроизведения. Nonce увеличивается с каждой отправленной транзакцией.
    
4.  **Расчет газа**: Газ — это единица измерения вычислительных усилий, необходимых для выполнения транзакций и смарт-контрактов. Транзакция указывает лимит газа, который является максимальным количеством газа, которое отправитель готов использовать для этой транзакции. Плата за газ выплачивается в Эфире и покрывает стоимость вычислений и хранения в сети Ethereum.
    
5.  **Трансляция транзакции**: После валидации транзакция транслируется на все ноды в Ethereum peer-to-peer сети. Ноды получают транзакцию и начинают процесс включения ее в блок для проверки.
    
6.  **Создание блока**: Валидаторы в механизме консенсуса Proof of Stake (PoS) Ethereum проверяют и предлагают новый блок, включающий партии проверенных транзакций, включая самую недавно инициированную.
    
7.  **Валидация блока**: Другие ноды также проверяют правильность транзакций, проверяя подписи, подтверждая наличие средств и обеспечивая отсутствие двойного расходования.
    
8.  **Обновление состояния**: Когда блок признан действительным, каждая нода обновляет свою локальную копию блокчейна Ethereum новыми изменениями состояния из транзакций в этом блоке. Это означает обновление балансов аккаунтов, хранения контрактов и других важных данных. Ethereum поддерживает глобальное дерево Меркли, которое консолидирует все данные состояния, организуя их в иерархическую структуру, где состояние каждого блока хэшируется и связывается, что в конечном итоге приводит к единому корневому хэшу. Это обеспечивает единый корень состояния, позволяющий легким нодам проверять целостность конкретных транзакций или данных без необходимости загружать весь блокчейн.
    
9.  **Подтверждение транзакции**: После включения транзакции в блок и добавления этого блока в блокчейн транзакция считается подтвержденной. Подтверждение указывает на то, что транзакция необратима и принята сетью Ethereum.
    
10.  **Окончательное выполнение и взаимодействие с контрактом**: Для транзакций, взаимодействующих со смарт-контрактами, код контракта выполняется в соответствии с входными данными, предоставленными в транзакции. Это выполнение может включать обновление внутренних переменных состояния контракта, эмиссию событий или инициирование дополнительных транзакций.
    
11.  **Квитанция транзакции**: Генерируется квитанция транзакции, которую можно проверить, чтобы подтвердить такие детали, как количество использованного газа, номер блока, в который была включена транзакция, и любые другие данные, созданные во время выполнения контракта.
    

Узкое место исполнения
----------------------

Хотя уровень исполнения является центральным для функциональности Ethereum, он также представляет собой значительное узкое место для количества вычислений, которые Ethereum может обрабатывать в любой момент времени. Доступность данных (DA) была критической проблемой, но такие решения, как EIP-4844, которые ввели временные "блоб-данные", намного дешевле для хранения, чем обычные транзакции Ethereum, в значительной степени смягчили эти проблемы. Улучшая распределение данных и их хранение вне цепи, такие инновации, как EIP-4844, сместили акцент на уровень выполнения как на основное препятствие для масштабируемости Ethereum.

[https://x.com/WestieCapital/status/1770853327527444483](https://x.com/WestieCapital/status/1770853327527444483)

Несколько факторов способствуют возникновению узкого места выполнения в Ethereum.

### Узкие места задержки

Задержка — это время от отправки транзакции до её подтверждения и включения в блокчейн. Высокая задержка может приводить к медленным подтверждениям транзакций, длительному ожиданию для пользователей и задержкам в выполнении смарт-контрактов. Основные узкие места задержки включают:

**Время блока и задержка подтверждения**: Среднее время блока в Ethereum, в настоящее время около 12 секунд, устанавливает минимальную задержку для подтверждения транзакций. Если транзакция включается в следующий блок, среднее время ожидания составляет примерно половину времени блока, или 6 секунд. При высоком объеме транзакций задержка может увеличиваться, так как транзакции дольше ждут включения в блок.

**Синхронизация блокчейна (консенсус)**: Ноды в сети Ethereum должны достигнуть консенсуса о валидности каждого блока. Этот процесс может приводить к задержке, так как ноды проверяют транзакции, валидируют блоки и синхронизируются с состоянием сети. Различное время распространения блоков также вносит вклад в задержку.

### Узкие места пропускной способности

Пропускная способность сети напрямую связана с её способностью эффективно обрабатывать и обрабатывать большие объемы транзакций в заданный промежуток времени. Более высокая пропускная способность означает, что сеть может обрабатывать больше транзакций в секунду. Узкие места пропускной способности включают:

**Однопотоковое выполнение**: Виртуальная машина Ethereum (EVM) обрабатывает транзакции по одной в однопоточном режиме. Это означает, что транзакции не могут выполняться параллельно, что ограничивает количество транзакций, которые могут быть обработаны одновременно.

**Неэффективное выполнение**: EVM использует 256-битные слова и стековый подход вместо регистров. Этот выбор дизайна приводит к неэффективному использованию вычислительных ресурсов, увеличивая время и энергию, необходимые для выполнения контрактов.

**Управление состоянием**: Ethereum поддерживает большое, глубоко вложенное дерево состояний с 256 уровнями. Каждый раз, когда обновляется пара "ключ-значение", необходимо сделать 256 обновлений в базе данных. Этот обширный процесс обновления значительно замедляет работу сети.

**Накладные расходы на измерение газа**: В то время как измерение газа предназначено для предотвращения чрезмерного использования ресурсов и избежания проблемы остановки, отслеживание каждой операции добавляет значительные накладные расходы. Эти накладные расходы способствуют более медленной обработке транзакций.

**Ограничения по мощности нод**: Ноды Ethereum имеют практические ограничения на свои вычислительные и хранилищные возможности. Когда потребности в обработке транзакций превышают эти ограничения, ноды не справляются с нагрузкой, что приводит к задержкам в проверке и распространении блоков.

**Рост состояния**: С увеличением числа транзакций увеличивается и состояние блокчейна. Этот рост требует большего объема хранения и делает проверку и доступ к состоянию более времязатратными, что дополнительно замедляет работу сети.

Влияние узкого места выполнения на масштабируемость
---------------------------------------------------

Проблемы с производительностью, возникающие из-за уровня исполнения, проявляются по-разному, влияя как на масштабируемость сети, так и на пользовательский опыт. Вот несколько примеров:

*   **Загруженность сети**: В периоды высокого спроса, такие как популярные TGE или выпуск NFT, количество транзакций может перегрузить сеть, что приводит к перегрузке. Это приводит к более длительному времени подтверждения и повышенным комиссиям за газ, так как пользователи соревнуются за обработку своих транзакций.
    
*   **Высокие комиссии за газ**: Когда сеть перегружена, комиссии за газ могут резко вырасти, делая даже простые транзакции непомерно дорогими для пользователей. Это ограничивает доступность и удобство использования сети.
    
*   **Проблемы с масштабируемостью**: Ограниченная пропускная способность EVM (Ethereum Virtual Machine) препятствует эффективному масштабированию Ethereum. По мере роста числа пользователей и децентрализованных приложений (dApps), сеть испытывает трудности с поддержанием увеличенной нагрузки без значительного ухудшения производительности.
    

Влияние на удобство использования и принятие технологий
-------------------------------------------------------

Узкое место на уровне исполнения оказывает ощутимое влияние как на конечных пользователей, так и на разработчиков, существенно влияя на всю экосистему Ethereum.

### Как узкие места на уровне выполнения влияют на конечных пользователей и разработчиков

Высокие комиссии за газ в периоды пиковых нагрузок делают взаимодействие с сетью дорогостоящим для пользователей, будь то отправка ETH, участие в DeFi протоколах или выпуск NFT. Загруженность сети может привести к задержкам подтверждения транзакций, что вызывает разочарование и неудобства у пользователей, ожидающих взаимодействия в реальном времени. Эти высокие расходы и задержки снижают общее впечатление использования сети, отпугивают потенциальных пользователей и ограничивают рост экосистемы.

С точки зрения разработчиков, необходимость оптимизации смарт-контрактов для минимизации использования газа добавляет сложности и времени к процессу разработки. Им также приходится сталкиваться с оптимизацией инфраструктуры, часто через сторонних поставщиков, таких как нод сервисы (например, Infura). Это может быть еще более серьезной проблемой, чем просто оптимизация смарт-контрактов. Создание масштабируемых децентрализованных приложений (dApps) на Ethereum усложняется ограниченной пропускной способностью сети, часто требуя от разработчиков внедрения решений вне сети или технологий масштабирования второго уровня для повышения производительности.

**Значимые события, связанные с загруженностью сети**

Безумие вокруг NFT CryptoKitties в конце 2017 года стало поворотным моментом, продемонстрировавшим, насколько загруженной может стать сеть. Всплеск транзакций от пользователей, занимающихся разведением и торговлей виртуальными котами, привел к значительным задержкам в сети. В разгар ажиотажа CryptoKitties было причиной [почти 16%](https://themerkle.com/cryptokitties-is-clogging-the-ethereum-network/#:~:text=accounting%20for%20over%2016%25%20of%C2%A0all%20Ethereum%20transactions) всех транзакций в сети Ethereum, что приводило к задержкам некоторых транзакций на часы или даже дни. Согласно [статье на Coindesk](https://www.coindesk.com/markets/2017/12/07/cat-fight-ethereum-users-clash-over-cryptokitties/), в какой-то момент было около 30 000 транзакций, которые застряли и ждали обработки.

![CryptoKitties вызвали беспрецедентный скачок комиссий за газ в сети Ethereum, который затем поддерживался последующим бумом игр с заработком (P2E). Источник: Glassnode](https://storage.googleapis.com/papyrus_images/892e677a3ab97cb3b24725c273d8ec5e3cd4046269d95ef33e270357108705bb.png)

CryptoKitties вызвали беспрецедентный скачок комиссий за газ в сети Ethereum, который затем поддерживался последующим бумом игр с заработком (P2E). Источник: Glassnode

Лето DeFi в 2020 году стало очередным периодом значительной загруженности сети. Быстрое принятие децентрализованных приложений (dApps) таких как Uniswap и Compound привело к значительному увеличению активности в сети. Эти факторы, наряду с другими, вызвали высокий спрос на пространство в цепочке и, как следствие, резкий рост комиссий за газ, при этом ежедневно тратилось тысячи ETH на транзакционные издержки.

Бум NFT в период с 2021 по 2022 годы еще больше подчеркнул проблемы масштабируемости Ethereum. Высокопрофильные запуски и аукционы NFT, такие как запуск Otherside от Yuga Labs, привлекли тысячи участников, что привело к резкому росту комиссий за газ. Средняя комиссия за газ в день выпуска Otherside [превысила $400 за транзакцию](https://qz.com/2161193/bored-ape-yacht-clubs-nfts-cost-181-million-in-gas-fees#:~:text=On%20May%201%2C%20it%20shot%20up%20to%20%24453%20across%20the%20entire%20network.).

### Реальные Последствия

Помимо нишевых видов деятельности, таких как торговля NFT и спекуляции на DeFi, высокие затраты и задержки могут также подрывать пользовательский опыт dApps, снижая вовлеченность и удержание пользователей. [Несколько блокчейн-проектов были вынуждены либо мигрировать на другие блокчейны, либо полностью прекратить свою деятельность](https://www.forexcrunch.com/blog/2020/09/22/cryptocurrency-projects-jumping-off-the-ethereum-ship-due-to-high-transaction-fees/). Например, UniLogin, который стремился упростить вход пользователей в приложения на базе Ethereum — критическая функция для массового принятия, — был вынужден прекратить свою деятельность из-за того, что растущие комиссии за газ сделали его финансово нежизнеспособным, достигая временами более $130 за регистрацию. Кроме того, платформа Publish0x, на которой пользователи могут зарабатывать криптовалюту за создание и чтение контента, была вынуждена задерживать выплаты и перейти на ежемесячное распределение из-за высоких затрат. Для того чтобы Ethereum эффективно масштабировался для реальных приложений в таких областях, как финансы, управление цепочками поставок и децентрализованная идентификация, необходимо решить проблемы масштабируемости, чтобы поддержать более широкое принятие.

Заключительные Мысли
--------------------

Реальные последствия узких мест на уровне выполнения очень значительны, затрагивая как пользователей, так и разработчиков. Высокие комиссии за газ, загруженность сети и ограничения масштабируемости препятствуют росту и удобству использования экосистемы Ethereum. Решение этих проблем требует инноваций и улучшений уровня выполнения.

В Части II мы рассмотрим важность инноваций в уровне выполнения для будущего Ethereum. Мы внимательно изучим текущие ограничения EVM, потенциальные решения и преимущества перехода за рамки традиционной модели выполнения.

Рекомендуемая литература:

*   [Пояснение: Проблемы масштабируемости Ethereum и нарастающая критика](https://tokenist.com/explained-ethereums-scalability-problems-and-growing-backlash/)
    
*   [Понимание Reth (Rust Ethereum)](https://blastapi.io/blog/understanding-reth-rust-ethereum)
    
*   [Узкие места выполнения и лимиты газа](https://x.com/keoneHD/status/1772399862778065006?t=4Gus_CMyztN0yj5ssBoObg&s=19)

---

*Originally published on [Fuel Labs — Russian Blog](https://paragraph.com/@fuel-labs-russian-blog/ethereum)*
