4я фаза обновления Apricot: Snowman++ и снижение комиссий в C-Chain

stsoen
AVA Russia
Published in
7 min readSep 20, 2021

Четвертая фаза Apricot будет активирована в мейннете Avalanche 22 сентября в 5 p.m. EDT (22:00 по МСК).

Обновление ( 18 сентября ): после успешной активации AP4 в тестовой сети Fuji, активация Avalanche Mainnet AP4 была запланирована на 17:00 по восточному поясному времени (21:00 по всемирному координированному времени) в среду, 22 сентября. Код (AvalancheGo@v1.6.0) для активации Avalanche Mainnet можно найти здесь .

Поскольку это обновление включает оптимизацию протокола, несовместимую с версиями AvalancheGo <v1.6.0, ваша нода будет помечена как отключенная, если вы не обновите ее к моменту активации обновления. Если вы держите ноду валидатора, то это означает, что другие ноды будут сообщать о меньшем времени безотказной работы вашей ноды, что может поставить под угрозу ваши вознаграждения за стейкинг.

Напоминаем, что вы можете убедиться, что ваш валидатор подключен к сети и исправен, с помощью нового инструмента для мониторинга статистики по стейкингу: https://stats.avax.network/dashboard/staking/

16 сентбря был опубликован предварительный код для четвертой фазы обновления Apricot Upgrade («AP4»), которое было активировано в 17:00 по 5 p.m. EDT (9 p.m. UTC) в четверг, 16 сентября, в тестнете Fuji. Обратите внимание, что этот предварительный код работает только в Fuji. Если вы запустите его в мейннете, то он просто завершится при запуске.

После успешного запуска AP4 на Fuji мы объявили время активации AP4 Avalanche Mainnet (22 сентября в 5 p.m. EDT (22:00 по МСК), и уже выпустили официальную версию AP4 AvalancheGo (v1.6.0).

Если же вы работаете в тестнете — то обновление включает оптимизацию протокола, несовместимую с версиями AvalancheGo версий младше v1.6.0. Если вы запускаете узел в Fuji Testnet, рекомендуется обновить программное обеспечение до AvalancheGo до v1.6.0 или выше до времени запуска обновления в Fuji.

Оптимизация 1: Snowman ++ (уменьшение MEV и конкуренции)

В Avalanche любая нода может создать блок в любое время, если этот блок содержит ненулевое количество транзакций, а также в него включены комиссии за транзакции. После создания валидного блока механизм консенсуса, известный как Snowman, должен завершить один из многих потенциально конфликтующих блоков на любой заданной высоте. Независимо от величины разногласий, Snowman в конечном итоге разрешает все конфликты и принимает по 1 блоку на каждой высоте, отклоняя все остальные. И, как правило, чем меньше количество разногласий, тем меньше времени проходит до финализации, поскольку меньше ресурсов тратится на разрешение конфликтов.

Без внедрения каких-либо оптимизаций в сети Avalanche конкуренция между блоками начинает возрастать с увеличением нагрузки (поскольку конкуренция за извлекаемую ценность в сети усиливается с ростом TVL). Эта история уже начала разворачиваться, поскольку некоторые участники сети начали модифицировать программное обеспечение нод, чтобы лучше использовать преимущество такого явления, как MEV (Maximal Extractable Value), обходя некоторые механизмы троттлинга, предназначенные для сдерживания чрезмерно агрессивной генерации блоков.

Для тех, кто не знаком с MEV, на русском можно сформулировать как “максимальная” или “дополнительная извлекаемая ценность”, это обычно считается «общей стоимостью, которая может быть извлечена публично (т.е., не требуется особых прав) за счет переупорядочивания, добавления и цензурирования транзакций в создаваемом блоке» (определение от Flashbots). В контексте создания блоков Snowman без лидера в консенсусе применимо несколько более широкое определение, которое также охватывает значение, которое может быть извлечено из изменения времени создания блока и/или родительского элемента, на который ссылается создаваемый блок.

Чтобы обеспечить быструю финализацию в сети Avalanche и гарантировать, что требования к ресурсам нод не начнут увеличиваться пропорционально экспоненциальному росту количества пользователей, необходимы небольшие, малозаметные оптимизации, которые уменьшают ненужную конкуренцию и точнее взимают плату за дорогостоящие взаимодействия с сетью. В Ava ​​Labs мы начали исследования и разработки еще около 6 месяцев назад, чтобы изучить, как оптимизировать протокол в целях ограничения на системном уровне влияния блок-продюсеров на нагрузку в сети(и на всех валидаторов в сети) из-за их конкуренции между собой, при которой они пытаются опередить друг друга в выполнении ончейн-действий. И на данный момент это решение реализовано в видео Snowman ++.

Snowman ++ реализован как наложение на Snowman (автоматически применяется ко всем созданным пользователем виртуальным машинам на основе Snowman), и это обновление ограничивает количество конфликтов, которые может создать любая нода, за счет увеличения подмножества рандомных валидаторов, которые могут создавать блок на заданной высоте с течением времени. Это подмножество валидаторов (и приоритет для производства блоков) изменяется после создания каждого блока, поэтому вероятность создания следующего блока для валидатора, выпустившего предыдущий блок, не увеличивается. Snowman ++ не делает никаких модификаций, ориентированных на пользователя, поэтому биржи, кошельки и т. д. не обязаны вносить какие-либо изменения в свою интеграцию (кроме обновления до AvalancheGo@v1.6.0, если они держат ноду). Вы можете прочитать полную техническую спецификацию Snowman ++ здесь .

Инженеры Ava Labs обнаружили, что Snowman ++ уменьшил количество конфликтов, наблюдаемых в агрессивных сценариях, примерно на 99,7% по сравнению с предыдущей версией Snowman. Это приводит к прямому снижению нагрузки валидаторов на железо/ использование процессора/операции чтения-записи в этих сценариях.

Оптимизация 2: снижение комиссий C-Chain

В Apricot Phase 3 в C-Chain добавился новый алгоритм динамических комиссий под названием «Moderato». Этот алгоритм нацелен на используемость сети в конкретный промежуток времени, и регулирует минимальную комиссию, которую любая транзакция должна уплатить для включения в блок, в зависимости от количества активности («сожженного газа») за последние 10 секунд. С момента активации AP3 цена на газ в среднем составила ~ 98,2 nAVAX, что на ~ 56% ниже, чем в фазе AP2. Средняя почасовая цена на газ за этот период времени представлена ​​на графике ниже:

В общих чертах, этот алгоритм отвечает за корректировку параметризации комиссий за сеть только тогда, когда какое-либо нововведение ограничивает чистое воздействие изменения до уровня, близкого к нейтральному. Например, когда количество операций ввода-вывода БД снижается на ~ 50%, комиссия может быть снижена на ~ 50%. Таким образом, диапазон цен на газ для C-Chain был расширен до 25 nAVAX-1000 nAVAX по сравнению с предыдущим диапазоном 75 nAVAX-225 nAVAX, благодаря сокращению ресурсов, введенному Snowman ++, особенно под нагрузкой. Кроме того, параметры сглаживания «Moderato» были настроены таким образом, что плата будет увеличиваться / уменьшаться намного медленнее, это мы сделали на основе отзывов комьюнити.

Оптимизация 3: комиссии за блоки

И последнее нововведение, но не менее важное: четвертая фаза Apricot вводит понятие платы за блок, которая должна быть оплачена транзакциями в блоке, если она производится быстрее, чем целевая скорость блока. Поскольку любая нода может создать блок в Snowman в любое время, важно, чтобы блоки справедливо компенсировали загруженность сети своей нагрузкой (т.е. сжигали достаточное количество AVAX), особенно когда они создаются в очень быстрой последовательности.

Плата за блок — это постоянно оцениваемая функция (например, как мы писали выше, за счет «Moderato»), значение которой увеличивается / уменьшается в зависимости от того, сколько блоков создается быстрее, целевой скорости блока. Плата за блок оплачивается за счет «эффективных чаевых» всех транзакций в блоке, где «эффективные чаевые» — это цена газа, уплаченная сверх минимальной требуемой цены на газ, и умноженная на количество газа, использованное в транзакции (т.е. ненужное сжигание). В формуле это выглядит примерно так: («gasPrice» — «minGasPrice») * «gasUsed» .

Большинство людей (~ 99%), которые взаимодействуют с Avalanche, скорее всего даже не заметят, что существуют комиссии для блоков, потому что им нет смысла стараться ускорить включение своих транзакций в блоки (обычно в этом нет необходимости. поскольку среднее время до финализации составляет 1–2 с). Однако люди, которые действительно пытаются создавать блоки в агрессивном режиме, теперь будут платить за подобные действия.

Полезные ссылки

  • Код обновления Apricot Phase Four можно найти здесь .
  • Гайд по обновлению вашей ноды доступен здесь .
  • Если у вас есть какие-либо вопросы, вы всегда можете связаться с командой разработчиков Ava Labs здесь .
  • Для получения полного списка всех элементов, на которые нацелены предстоящие обновления, вы можете ознакомиться с роадмапом.

FAQ

Как мне обновить свою ноду?

Процесс обновления до AvalancheGo v1.6.0 такой же, как и для любого другого обновления. Если вы запускаете из исходного кода, запустите сценарий сборки, как раньше. Если вы используете предварительно скомпилированные двоичные файлы, вызывайте их, как раньше. Если же вы используете сценарий установщика, опять же, используйте его, как раньше.

После запуска AvalancheGo v1.6.0 больше ничего делать не нужно. Более подробную информацию об обновлении ноды можно найти здесь . Напоминаем, что лучше всего иметь резервную копию ключа/сертификата стейкинга.

Каковы минимальные / максимальные цены на газ?

25 nAVAX (снижение на 66% по сравнению с AP3) и 1000 nAVAX соответственно.

Обратите внимание, что максимальная цена на газ не ограничивается статической ценой на газ как в AP2 (225 nAVAX). Если вы не перейдете на использование встроенных конечных точек с динамической комиссией до активации AP4, возможно, что обработка ваших транзакций будет отложена (если минимальная цена газа поднимется выше 225 nAVAX).

Вы можете узнать текущую предлагаемую цену на газ, вызвав метод API eth_gasPrice . Например:

Я использую Metamask. Мне нужно что-то менять?

Нет. Metamask будет автоматически учитывать новую минимальную / максимальную цену на газ, как только обновление вступит в силу (как это было при введении динамических сборов в AP3).

Мне нужно обновить свою ноду?

Если вы не обновите свою ноду валидатора до версии v1.6.0 до даты активации Avalanche Mainnet (будет опубликована в ближайшие дни), ваш узел будет отмечен как отключенный от сети, а другие ноды сообщат ос нижении времени безотказной работы вашей ноды, что может поставить под угрозу вашу работу. ставка вознаграждений.

Есть ли какие-либо изменения в требованиях к оборудованию?

Нет.

Уменьшит ли обновление время безотказной работы моего валидатора?

Нет.

Я думаю, что что-то пошло не так. Что я должен сделать?

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

--

--