Оценка комиссии за транзакцию: как сэкономить на газе? Часть 2

Сегодня Upvest рада объявить о нашем улучшенном Fees API, в котором используются методы машинного обучения для повышения стабильности цен на газ и общей производительности прогнозирования. Фонд регионального развития Европейского союза поддерживает этот проект как инициативу с открытым исходным кодом в интересах сообщества блокчейнов.

В Части 1 этой серии блогов мы рассмотрели ценообразование на комиссии за транзакции в блокчейнах Proof-Of-Work (Ethereum и Bitcoin), скачки спроса на переводы, волатильность комиссий и вытекающую из этого необходимость в точных прогнозах платы за газ. Во второй части обсуждаются методы машинного обучения, которые мы реализовали для создания значительно лучшего механизма прогнозирования комиссий, проблемы, с которыми мы столкнулись в процессе, текущее состояние и будущее комиссий за транзакции в экосистеме Ethereum в контексте токенизации активов. Давайте приступим!

Агрегация данных: сбор времени подтверждения транзакции

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

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

Создание данных подтверждения транзакции с помощью автоматических переводов

Видя необходимость в этих данных, мы разработали автоматический отправитель, средство проверки и валидатор транзакций Ethereum, который циклически переключает между 7 различными ценами на газ, 20 адресами кошелька и автоматически отправляет транзакции на узел Infura, сохраняя все другие переменные транзакции без изменений. Для отправителя транзакции время отправки транзакции определяется меткой времени последнего блока Ethereum, подтвержденного во время отправки (последний блок). Для доступного кошелька выбирается ранее невыбранная цена на газ, и транзакция отправляется в другой доступный кошелек, где оба кошелька принадлежат одной и той же стороне. Во время трансляции транзакции хэш транзакции регистрируется, что позволяет проверять вновь добытые блоки для подтверждения. Если транзакция включена в блок, который был недавно добыт, мы устанавливаем фактическое время подтверждения транзакции, соответствующее метке времени добытого блока. Разница во времени между временем отправки (последняя временная метка блока на момент отправки) и временем подтверждения (транзакция, обнаруженная во временной метке блока), рассчитываемая в секундах (или блоках) ожидания. Наконец, все цены на газ, используемые для отправки транзакций, сохраняются с хешем транзакции в качестве ключа базы данных.

Моделирование данных: эмпирическая оценка цен на газ

Распределение цен на газ для отправленных транзакций выявило множество транзакций, идущих в сеть с распределениями типа Гаусса, Пуассона и Дельта. График зависимости цен на газ от ожидаемых блоков показал экспоненциальный спад (процесс Пуассона). Мы подобрали эти данные, построив график достаточного количества отправленных транзакций в основной сети (5K +). В качестве «статической» модели мы все еще не могли учесть изменения цен на газ во времени. После изучения большого количества литературы по прогнозам временных рядов (включая многомерные временные ряды ARIMA, GARIMA, модели VAR) мы выбрали долгую краткосрочную память (LSTM), модель рекуррентной нейронной сети (RNN) для обучения и тестирования построенной базы данных. . Затем мы могли бы учесть долгосрочные корреляции цен на газ, взяв параметры Пуассона, подходящие для времени подтверждения транзакции (ожидаемые блоки), в качестве отправной точки для RNN.

Проблемы, возникающие при стабилизации модели

В условиях сети в реальном времени (тесты в тестовой сети Ropsten были обнадеживающими) в основной сети прогнозы цен на газ сильно колебались, временами на величину порядка первого, то есть если цена на газ составляла 1 ГВт, модели оценивали 10 ГВт. Эта модель была чрезвычайно чувствительна к условиям основной сети. Укрепление данных с помощью непрерывных потоков в реальном времени недавно отправленных транзакций в RNN (с помощью автоматического проверяющего отправителя-валидатора) не могло повторно стабилизировать модель. Эффект от каждой новой точки данных при обучении сети был пропорционален только количеству точек, которые были перед ней. Выбор компромисса данных для обучения модели между «текущими» (недавно отправленными) транзакциями и «историческими» (ранее отправленными) транзакциями сильно зависел от меняющегося спроса. Мы не могли знать это соотношение заранее. Например, когда в сети развертывается контракт, связанный с популярной игрой Ethereum, такой как Cryptokitties, пользователи спешат обновить своих котят в течение короткого периода, чтобы избежать упущения или падения рынков из-за глобальной катастрофы, и все отчаянно пытаются закрыть свои обеспеченные долговые позиции для предотвращения финансовых потерь.

Сколько отправленных транзакций мы можем зарегистрировать и сколько из этих данных мы можем принять в любой момент времени? Это обескураживало, поскольку это привело к увеличению времени обучения (ожидания) для моделей LSTM RNN. Несмотря на то, что при тестировании на Ropsten мы получили хорошую точность (90% +), живые прогнозы основной сети с использованием LSTM RNN неоднократно дестабилизировались. Нам нужно было немного больше, чем эмпирически оцененная формула, модифицированная для одномерного прогнозирования временного ряда. модель

Достижения в области моделирования данных: включение сигналов сети спроса

Чтобы использовать расширенную модель в свете вышеуказанных проблем, мы добавили факторы, влияющие на волатильность цен на газ и свойства сети, сигнализирующие о спросе; агрегирование и сохранение их поминутно для повторного обучения модели. Мы собрали более 45 тысяч различных сигнальных точек по восьми различным сигналам перед обучением любых новых моделей. Эти сигналы:

  • Количество неподтвержденных транзакций
  • Цены на газ предоставлены различными публичными оракулами Ethereum.
  • Пул майнинга Ethereum сообщил о скорости хеширования
  • ETH против цен в долларах, ETH против цен BTC
  • Количество активных майнеров (и рабочих) в данном пуле
  • Общая сложность и время блокировки Ethereum

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

Улучшение нейронных сетей с помощью поиска по сетке гиперпараметров

После того, как более месяца были собраны сетевые сигналы с метками времени и объединены с информацией о блоках Ethereum, мы обучили модели многомерной регрессии с использованием (глубоких) нейронных сетей. Эти модели сначала динамически выбирают лучший тип регрессии для использования - линейную, логистическую, полиномиальную и т. Д. Во время обучения, а затем оптимизируют коэффициенты регрессии зависимых переменных для целевой цены на газ. Затем мы приступили к настройке обученных моделей с помощью поиска по сетке гиперпараметров с использованием перекрестной проверки в K-кратном порядке. Целью настройки было минимизировать средние абсолютные ошибки (MAE). Тем самым придавая оценкам сильную стабильность. MAE - это средняя абсолютная разница между метками (зарегистрированными ценами на газ) и прогнозируемыми значениями (прогнозируемыми ценами на газ) в данных обучения. MAE колеблется от нуля до бесконечности, где меньшее значение указывает на модель более высокого качества. Гиперпараметры нейронной сети были применены из списка заранее определенных диапазонов значений и протестированы на предмет минимизации MAE:

  • Количество узлов NN - от 64 до 256
  • Количество слоев - от 2 до 6
  • Скрытые слои до 4
  • Перекрестные слои до 2
  • Показатели отсева - от 0 до 0,375

Эти модели стали называться «FeNN» или оценки комиссионных с использованием нейронных сетей, что привело к MAE ~ 0,34 или ниже. Во время обучения мы избегали потенциальных векторов манипуляций, связанных с входными данными, используя каналы из 6 разных источников (6 отдельных поставщиков), которые каждую минуту регистрируются на внутреннем сервере с расширяющимся хранилищем. Одновременное манипулирование всеми источниками маловероятно. Благодаря достоверным источникам и надежным сигналам мы достигли показателя точности 0,95 и выше для всех категорий скорости модели при прогнозировании цен на газ.

В целом точность прогнозирования цен на газ на испытательной установке была довольно высокой (›95%) наряду с самыми низкими значениями MAE, которые мы видели по сравнению с этим моментом.

‍Мы внедрили модели FeNN для всех трех скоростей подтверждения - быстрой, средней и медленной в производство, чтобы делать выводы из сетевой статистики в реальном времени. Во-первых, мы обнаружили, что прогнозы цен на газ, основанные на этих моделях, не менялись на порядок или больше. Во-вторых, время подтверждения для каждой категории скорости уменьшилось по мере того, как модели стабилизировались с большим количеством данных. Это были обнадеживающие знаки! Поскольку мы стремились к более дешевым сделкам, мы пошли дальше и применили весовые коэффициенты для параметров, упомянутых выше в модели для вывода, в диапазоне от 85% до 95% в зависимости от их чувствительности к оценке цены на газ.

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

Бенчмаркинг производительности: FeNN против EGS в основной сети Ethereum

Характеристики стабильности и прогнозирования FeNN позволили непрерывно отправлять транзакции в основной сети в течение длительных периодов времени. Измеренные задержки в 103,69 миллисекунды для 95% обращений к API FeNN, полученные на основе моделей с высокой (95% +) точностью. Мы реорганизовали автоматическую проверку отправителя-валидатора транзакции (описанную в разделе «Агрегация данных») для переводов по основной сети с ценами на газ, предложенными с помощью FeNN API и Egs API. Запуск автоматического отправителя в трех параллельных потоках (быстрый, средний и медленный), одновременно вводя итоговое время подтверждения транзакции и цены на газ в единую базу данных, помечая каждую передачу либо транзакцией оценки комиссии Egs (Fast, Average, SafeLow), либо FeNN ( быстрая, средняя, ​​медленная) оценка.

Мы подтвердили в общей сложности 1403 FeNN API и еще 1403 транзакции с Egs API. Оба API также были запрошены примерно в одно и то же время (‹2 минуты), поэтому они видели одно и то же состояние сети. Тест установил стабильность FeNN с помощью предполагаемых прогнозов, которые соответствовали условиям сети (также наблюдались у других поставщиков). На гистограмме выше представлены эти результаты сравнительного анализа:

  • Транзакции с привлечением FeNN были подтверждены дешевле с Egs на 1,862%
  • Транзакции с привлечением FeNN были подтверждены быстрее с Egs на 10,21%
  • Транзакция с привлечением FeNN показала лучшие результаты по сравнению с Egs (дешевле / быстрее) на 18,23%.

По состоянию на 11.05.2020 предположения о цене на газ FeNN в целом дешевле на 13,35% по сравнению с Egs. FeNN также дешевле во всех категориях быстрых, средних и медленных.

Полная интеграция с механизмом токенизации активов Upvest

Усовершенствованный Fee API хорошо вписывается в общий пакет продуктов Upvest. Как лидер рынка в области токенизации активов, мы знаем, что комиссионные за транзакции имеют большое влияние, и их нельзя недооценивать. Для эмитентов активов, хранителей или бирж, управляющих большими объемами переводов на крупные суммы, решающее значение приобретает отправка транзакций с оптимальной комиссией. Очень велика вероятность переплаты за некритичную по времени транзакцию или недоплату за критичную по времени транзакцию, поэтому она не будет обработана так быстро, как хотелось бы. Снижение общих уплачиваемых комиссий в дополнение к оптимизации временного окна выполнения транзакции немедленно приносит пользу в этих ситуациях.

Зная это, мы полностью интегрировали модель прогнозирования комиссий FeNN в наш механизм токенизации активов. Клиенты Upvest получают эту функцию для автоматического расчета экономически эффективных скоростей для правильного медленного / среднего / быстрого выполнения транзакций. из коробки.

Взгляд в будущее комиссий Ethereum

Upvest позволяет избавиться от многих сложностей для пользователей, имеющих дело с комиссией за транзакции в сети Ethereum. Между тем, протокол Ethereum также постоянно развивается и уделяет пристальное внимание довольно громоздким процессам оплаты. Текущий механизм цен на газ, встроенный в протокол на уровне 1 Ethereum, не позволяет использовать более простой подход. EIP-1559 - это предлагаемый в настоящее время подход для обеспечения простоты, предсказуемости и стабильности комиссий за транзакции. Первоначально он был предложен Виталиком Бутериным (основателем Ethereum) в его статье Ценообразование ресурсов блокчейна в качестве поправки к первому механизму ценообразования на газ на основе аукционов. Это также предназначено для уменьшения ненужных задержек подтверждения и повышения справедливости для пользователей сети. В результате на уровне консенсуса Ethereum планируется внести несколько фундаментальных изменений. Все еще продолжается интенсивная разработка следующего хард-форка Ethereum как одного из наиболее ожидаемых обновлений модели стимулирования экономических комиссий Ethereum.

Хотите попробовать или внести свой вклад? Связаться!

Если вы хотите протестировать наш расширенный Fees API в основной сети для своей транзакции, мы с радостью приглашаем вас зарегистрироваться и попробовать бета-версию. Хотите узнать больше о том, как работает этот инструмент? Открытый исходный код всей кодовой базы является одним из наших главных приоритетов, и мы будем рады ответить на любые вопросы, касающиеся собранных данных, дополнений кода и тех, которые будут добавлены в будущем. Мы приглашаем вас принять участие в наших текущих обсуждениях с сообществом Ethereum на Reddit или обратиться напрямую к разработчикам (и авторам) по любым вопросам или дополнительной информации - pranay#@#upvest.co / paul#@#upvest.co (Удалить '#'). Чтобы как можно скорее узнать об открытом исходном коде всей кодовой базы для этого проекта, подпишитесь на наши анонсы. Мы будем рады услышать от вас информацию о дальнейших разработках и сотрудничестве в будущем.

Первоначально опубликовано на https://upvest.co.