Увеличение числа пользователей и расширение лимита газа привело к «раздуванию» состояния блокчейна Ethereum, что негативно сказывается на работе узлов. Об этом предупредила команда Ethereum Foundation (EF), предложив ряд возможных решений.
Состояние протокола включает в себя все данные, хранящиеся в сети. Этот массив данных должны загружать операторы нод для отслеживания истории транзакций и другой информации, необходимой для проверки блоков.
По мере накопления данных запуск полноценного узла становится более дорогостоящим, ненадежным и менее децентрализованным, уточнили в EF. Разработчики выделили конкретные издержки:
- валидаторам и полным нодам приходится хранить больше информации, что создает дополнительную нагрузку на базу данных;
- поставщикам RPC необходимо постоянно поддерживать доступ к полному состоянию для совершения своевременных запросов, создавая дополнительные расходы на хранение;
- с ростом состояния синхронизация сети становится медленнее и ненадежнее.
«Увеличение лимита газа усиливает рост состояния, поскольку позволяет добавлять большие записи в блок. Другие блокчейны уже сталкиваются с этой проблемой. При увеличении размеров состояния запуск полной ноды становится нереалистичным для обычных пользователей, что приводит к перераспределению внутри нескольких крупных провайдеров», — добавили в EF.
Что делать?
В долгосрочную стратегию развития Ethereum входит концепция отсутствия состояния, которая позволяет валидаторам проверять блоки без необходимости хранить полную историю блокчейна.
Хотя идея снижает нагрузку на валидаторов и обеспечивает более высокую пропускную способность, она также перекладывает ответственность за хранение данных на меньшую, более специализированную группу, подвергая сеть риску централизации.
Команда EF предложила три потенциальных подхода решения проблемы. Первый способ — State Expiry — удаляет неактивные данные, позволяя восстановить их с помощью доказательств при необходимости.
Согласно исследованию, примерно 80% состояния не изменялось и не использовалось более года, однако все узлы по-прежнему хранят его целиком. Разработчики рассматривают два пути:
- Маркировку данных, добавление срока давности и функцию восстановления.
- «Многоэрное» истечение срока, при котором состояние уменьшается каждую эпоху.
State Archive — второй путь. Он создает «горячее» и «холодное» состояние. Первая группа данных останется в быстром доступе, а вторую сохранят отдельно для истории и проверки.
Последний вариант — Partial Statelessness — позволяет узлам хранить только «подмножества» состояния, в то время как кошельки и облегченные клиенты будут кешировать необходимые данные. Такой подход снизит затраты места на хранение и уменьшит зависимость от крупных поставщиков RPC-сервисов.
Напомним, в декабре сооснователь Ethereum Виталик Бутерин призвал к упрощению сети с точки зрения пользовательского интерфейса.
Виталик Бутерин предложил создать рынок фьючерсов на газ в Ethereum
forklog.com