Обновления сети
February 7, 2022

Обновления Emerald ParaTime - февраль 2022 года

Emerald - официальный EVM-совместимый ParaTime Oasis, был запущен в ноябре 2021 года. Он принес в Oasis Network множество возможностей, включая легкую интеграцию с DApps на базе EVM и запуск первых проектов DeFi в Oasis Network в январе 2022 года. Эти запуски вызвали огромный интерес и привели к быстрому росту использования Emerald. Чтобы не отставать от этого стремительного роста, команда Oasis выпустила серию обновлений для обеспечения постоянного хорошего пользовательского опыта для пользователей Emerald.

Отказ от ответственности: Приведенный ниже текст является любительским переводом, выполненным членом сообщества Oasis. Первоисточник

На сегодняшний день версия 6.2.0 Emerald работает в Mainnet без сбоев уже более недели с момента выпуска 28 января. Пятьдесят пять валидаторов Oasis Network работают на узлах Emerald, и Emerald обрабатывает около 200 тысяч транзакций в день. В этом блоге мы подробно расскажем о стремительном росте Emerald в январе и о том, как команда Oasis решала проблемы, возникшие в результате этого роста.

Значительный рост использования.

Объем транзакций на Emerald быстро увеличился в январе после его первоначального запуска. Он начинался всего с нескольких десятков транзакций в день до 5 января, поднявшись до более чем 18 тысяч в день 10 января. Первое значительное увеличение объема транзакций произошло 11 января, когда количество транзакций достигло более 150 тысяч в день. Это совпало с запуском интеграции Wormhole Bridge и YuzuSwap, первого DEX, созданного на базе Oasis Network, который превысил $100M TVL в течение 12 часов после запуска.

Стремительный рост продолжался и в итоге достиг максимума в 950 тысяч транзакций в день 19 января, когда мы установили не нулевую минимальную цену газа на шлюзах web3, размещенных в Oasis. После этого до конца месяца он стабилизировался на уровне около 200 тыс. транзакций в день.


Обеспечение здоровья и масштабируемости сети

Команда Oasis постоянно следит за состоянием Emerald, чтобы гарантировать, что при возникновении проблем решения будут быстро разработаны и внедрены. В ответ на значительный рост объема транзакций Oasis, валидаторы приняли срочные меры для удовлетворения спроса и обеспечения работоспособности ParaTime.

Когда 11 января произошел первый резкий всплеск использования, команда немедленно увеличила аппаратную мощность существующих серверов шлюза web3 и создала новые экземпляры. Такие оперативные действия со стороны сети и ее партнеров по сообществу позволили конечным точкам масштабироваться для удовлетворения возросшего спроса, который в настоящее время составляет в среднем около 23 миллионов запросов в день.

Поддержка высокого спроса с помощью Emerald 6.1.0

Спам с нулевой комиссией за транзакции

Чтобы пользователи могли начать работу с Emerald без необходимости платить комиссию за транзакции, мы запустили Emerald в Mainnet без назначения минимальной цены за транзакцию. Когда использование Emerald начало расти, некоторые пользователи начали пользоваться этой политикой и устанавливать ботов, которые спамили сеть транзакциями с нулевой комиссией. Одной из возможных целей такой деятельности является попытка получить прибыль, размещая спекулятивные торговые ордера на платформах DEX.

Поскольку эта активность возросла, мы постарались предотвратить ее влияние на работу честных пользователей сети, не являющихся ботами. Во-первых, мы повысили минимальную цену на газ на конечных точках шлюза web3, расположенных в Oasis, а затем внедрили обновление, позволяющее валидаторам Emerald ParaTime устанавливать ненулевую минимальную цену на газ на своей ноде. Это означало, что все ноды, участвующие в рабочем комитете Emerald ParaTime, которые обновились до новой версии, могли принудительно устанавливать минимальную цену на газ и отклонять транзакции с нулевой комиссией.

Неправильное планирование транзакций за пределами лимита газа блока

Поскольку рост спроса привел к увеличению объема транзакций, мы обнаружили проблему, связанную с тем, что лимиты газа транзакций не учитывались должным образом при планировании пакетов транзакций. В результате планировщик транзакций Emerald мог планировать пакеты, которые использовали больше газа, чем лимит газа в блоке. Такие пакеты могли быть запланированы, но не могли быть успешно выполнены, так как во время выполнения транзакций и лимиты газа блока проверяются правильно.
Это привело к тому, что некоторые транзакции некорректно завершались, например, ошибкой "batch out of gas":

batch out of gas (limit: 10000000 wanted: 10000111)

С пользователей по-прежнему взималась плата за газ, даже если их транзакции не были обработаны из-за того, что пакет превысил максимально допустимый лимит газа в блоке. Как и все газовые сборы Emerald, эти сборы распределялись между нодами, которые были запланированы комитетом Emerald в это время.

Релиз Emerald ParaTime 6.1.0 устранил как спам транзакций с нулевой платой, так и ошибку с ограничением лимита газа:

  1. Правильный учет лимитов газа транзакций при планировании пакетов.
  2. Предоставление возможности узлам Emerald устанавливать ненулевую минимальную цену на газ

Тестирование обновления началось в Testnet 19 января, а 26 января оно было развернуто в Mainnet.

Улучшенное планирование транзакций в Emerald 6.2.0

После решения проблемы спама транзакций с нулевой комиссией и проблемы лимита газа в блоках в релизе Emerald 6.1.0 команда сосредоточилась на другой проблеме планировщика транзакций Emerald, которая возникла из-за того, как Ethereum обрабатывает неиспользованные комиссии за газ. В Ethereum (и Emerald) пользователь может установить лимит газа для транзакции на огромное число, например, 5M единиц газа, и если транзакция использует только 100k единиц газа, пользователь получает обратно неизрасходованную плату за газ. Однако, поскольку планировщик транзакций ParaTime, используемый в Emerald, учитывал только запрашиваемый транзакцией лимит газа, была возможна атака на отказ в обслуживании, при которой злоумышленник мог израсходовать большое количество доступной мощности в блоках Emerald, объявляя очень большие лимиты газа для транзакций, а на самом деле используя и оплачивая гораздо меньшие объемы.

Решение этой проблемы заключалось в дополнении ParaTime SDK новым планировщиком транзакций, который учитывает, сколько газа на самом деле потребляют транзакции. Учитывая, сколько газа реально потребляют транзакции при создании пакетов, новый планировщик транзакций гарантирует, что ParaTime, использующие газовую семантику Ethereum, смогут эффективно упаковывать блоки.

Emerald 6.2.0, который переходит на новый планировщик транзакций, был развернут на Testnet 27 января, а команда Oasis предложила его для выпуска Mainnet всего через день, 28 января.

Релизы Emerald 6.1.0 и 6.2.0 были обратно совместимы, что позволило ParaTime оставаться в рабочем состоянии, пока участвующие ноды выполняли обновления. Это позволило завершить оба обновления без задержек.

Быстрая реакция валидаторов Emerald

Несмотря на то, что анонс Emerald 6.2.0 состоялся поздно вечером в пятницу в часовых поясах Азии и Европы, валидаторы быстро отреагировали на обновление нод Emerald ParaTime и Oasis. Менее чем за четыре часа после официального объявления версии 6.2.0 было обновлено более половины из 65 узлов Emerald, а 56 из 65 были обновлены менее чем за 24 часа.
Мы очень благодарны нашему удивительному сообществу преданных и увлеченных валидаторов, работающих в сети Oasis!