Обнова Emerald ParaTime-лютий 2022 року

Ikotsulim
5 min readFeb 13, 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!

--

--