Как удобно отследить цену на газ в сети Ethereum
Газ — это деноминированная единица Эфира (#Ethereum ), служащая для оплаты транзакций в #блокчейне Эфириума. Другими словами, это цена, которую вы платите за транзакцию в блоке.
Однако, иногда по причине поступления большого количества транзакций, сеть Эфириума становится перегруженной. Транзакции становятся медленней, а цена самого газ начинает расти. Это происходит по двум причинам:
- При скапливании большого количества транзакций, работы у майнеров, которые добывают блоки, а значит обрабатывают эти самые транзакции, пропорционально так же становится больше. Майнеры начинают «выборочно» исполнять транзакции, отдавая предпочтение транзакциям с наибольшей наградой. Как следствие, цена на газ начинает расти.
- Сами же пользователи, которые совершают эти транзакции, начинают выставлять всё большую цену чтобы транзакция была обработана как можно скорее. Эффект аукциона толкает цену на газ ещё выше.
Нередко случается что по незнанию пользователи отдают слишком высокие комиссии за обработку транзакций. Безусловно, это влияет и на доходность, съедая часть профита. Однако даже те кто знают об этой особенности, всё равно не могут удобно и быстро отследить цену на газ. Это потому что приходится открывать отдельную вкладку с ценой газа и постоянно её мониторить.
В ответ на это на рынке появилось несколько удобных сервисов. Например, телеграм бот от команды EtherDrops. Функция мониторинга цены на газ называется- Gas price notification.
Данная фишка позволяет удобно отследить цену на газ (в gwei) и установить интересующие вас значения для получения нотификаций. Их можно установить как выше так и ниже текущей цены на газ. Данная фича поможет сэкономить деньги и время на транзакциях когда сеть Ethereum становится перегруженной, а значит, более дорогой и медленной.
Чтобы воспользоваться остаточно перейти в «Menu» и выбрать «Set gas alert», после чего указать интересующее значение (может быть как выше так и ниже нынешней цены на газ). Как только цена на газ достигнет указанной отметки, бот незамедлительно пришлёт вам оповещение.
На рынке так же есть и «мейн-стрим» ресурсы для отслеживания цены на газ. Например Etherscan предлагает ту же услугу но с одним но что вам придётся самому обновлять страницу и следить за интересующими вас уровнями. Однако, сайт предоставляет множество других услуг, поэтому это некий трейд-офф между юзабилити и возможностями.
Оставайтесь в курсе событий чтобы ничего не пропустить!
Источник
Что такое газ в Ethereum простыми словами!
В этой статье рассказываем про концепцию лимита газа, самого понятия газ и цены на него, что является центральной особенностью блокчейна Ethereum и всей экосистемы. Также отвечаем на вопрос, является ли GAS отдельной валютой. Кроме того, рассказываем про Gas в Neo и ETH Classic.
Gas в Ethereum
Если вы каким-либо образом работали со смарт-контрактами, переводили ETH или участвовали в ICO, то вы сталкивались с газом. Эта механика, выраженная в gas limit (лимит газа) и gas price (цена за газ), является ключевой для проведения транзакций в экосистеме Эфириум.
Чтобы понять детали, нужно вспомнить базовую концепцию проекта Ethereum.
Ethereum — гигантская сеть, которая состоит из объединенных компьютеров с установленным клиентом. Эта взаимосвязанная сеть называется виртуальной сетью Ethereum (EVN), как бы глобальным суперкомпьютером, где все транзакции обновляются и записываются на каждый компьютер.
Эфир (ETH) — это внутренняя валюта блокчейна Ethereum и используется как «топливо» для сети: для операций, передачи ценности, системы поощрений.
Новым в блокчейне Ethereum была возможность исполнять смарт-контракты (относительно биткоина). Это контракты, предварительно запрограммированные с набором необходимых правил и положений, которые выполняются самостоятельно, без необходимости в посреднике.
Зачем нужен газ?
ETH открыто торгуется на биржах, и его рыночная цена может быстро меняться. Создание единиц GAS заключается в том, чтобы отделить стоимость вычислительной работы в сети Ethereum от изменчивой рыночной цены Ethereum, так как стоимость вычислений изменяется не так быстро.
При создании смарт-контракта вы рассчитываете на фиксированные взносы в эфире. Например, когда ETH стоил $10, а вам нужно было заплатить за работу 0,5 ETH, цена в долларах вас устраивала — всего 5 долларов.
Но эфир вырос, теперь за 0,5 ETH придется заплатить 250 долларов, например. Это мешает использовать систему для разработки и запуска приложений. Поэтому была создана система с газом.
Что такое Gas?
Газ в Эфириум — это единица измерения вычислительной работы для осуществления транзакций или смарт-контрактов в сети Ethereum. Это не монета, не какая-то часть токена, это динамический показатель, через который будет выставляться счет уже в ETH.
Эта система похожа на использование киловатт для измерения электричества в доме. Количество потраченной электроэнергии не измеряется сразу в рублях, вместо этого счет выставляют за кВт/ч.
Важно понимать, что для разных видов транзакций требуется разное количество газа. Как и с электричеством или бензином: мощный прибор или двигатель потратит больше в сравнении со слабым.
Например, простая транзакция отправки ETH с адреса на адрес стоит 21 000 газ. Выполнение смарт-контрактов осуществляется майнером, который тратит свое время, электричество и мощности на выполнение кодов и завершение транзакции. Для смарт-контракта газ будет другим.
Gas Limit
Лимит газа — это максимальное количество газа, которое вы готовы потратить на определенную транзакцию. Высокий уровень газа означает, что для выполнения интеллектуального контракта необходимо выполнить большую вычислительную работу.
Для стандартного переноса ETH требуется предел газа в 21 000 единиц газа. Это указывается в дополнительных опциях в кошельке при переводе. Нужно указывать лимит с запасом: непотраченные единицы все равно вернутся обратно.
Источник
Этология: сафари-тур в темный лес Ethereum
Чудовища из темного леса Ethereum — вовсе не шутка. Это боты фронтраннеры анализируют запросы и функции смарт-контрактов, с которыми раньше не имели никакого дела, чтобы извлекать из них прибыль.
Чтобы лучше понять ботов и выяснить масштаб проблемы, мы отправимся в сафари тур по лесу.
Нам удалось заманить в «ловушку» некоторых ботов фронтраннеров и проанализировать их поведение. А также:
- Изучили их эффективность и вероятность перехвата транзакций
- Протестировали способы уклонения от них
Фронтраннинг — это процесс попадания новой транзакции в очередь исполнения сразу перед оригинальной транзакцией.
Простой пример фронтраннига — бид на бирже.
Предположим, трейдер проводит крупную сделку с ETH на Uniswap, которая поднимет стоимость ETH. Зная эту информацию, можно извлечь прибыль: купить ETH по низкой цене ровно перед тем, как купят большое количество ETH, и продать по более высокой после того, как цена выросла.
В дополнение к этому примеру можно привести и другие варианты извлечения ценности из фронтраннинга, включая ликвидации, покупки редких NFT или ошибки пользователей.
Фронтраннинг в Ethereum достигается за счет предложения более высокого газа для транзакции, чтобы стимулировать майнеров добавить транзакцию раньше других в блок. Транзакции с более дорогими комиссиями выполняются первыми.
Таким образом, если 2 транзакции, приносящие доход от взаимодействия сосмарт-контрактом, попадают в один и тот же блок, то только первая получает прибыль.
Пост Ethereum — темный лес Дэна Робинсона и Георгиоса Константополуса описывает попытку извлечения активов на $12 000, которые попали лапы изощренного хищника.
Хищник был настолько продвинутым, что мог отследить любую ценностную транзакцию в пуле Ethereum и заклеймить ценность с помощью фронтраннинга.
История о темном лесе настолько «страшная», что в нее сложно поверить. Действительно есть основания сомневаться в существовании таких хищников.
Как получилось достать средства из Uniswap c платформы, которую тщательно мониторят множество ботов арбитражников?
Мог ли это быть обычный арбитражник?
В начале 2020 года наш глубокий анализ доказал, что это не так. Это был не какой-то обычный бот.
Ему удалось вызвать функцию смарт-контракта, которую, насколько мы знаем, никто до этого не вызывал. Это получилось даже несмотря на то, что транзакцию запутали прокси смарт-контрактом, через который извлекали средства.
Это весьма тревожно, если не сказать больше. Возможность мониторить любую транзакцию в пуле — супермощное оружие. Настолько тревожно, что некоторые сервисы начали публично предлагать транзакции уровня «дарк пул«.
Вместо того, чтобы использовать Infura или даже частную ноду, уровень «дарк пул» позволяет отправлять транзакции напрямую майнерам с обещанием не раскрывать их остальной части сети и таким образом скрыть от наглых глаз хищников.
Аналогичный подход использовал samczun в попытке извлечь 9,6 млн$ из уязвимого контракта.
Несложно представить, что майнеры сами запускают фронтраннинг ботов и предлагают безопасный проход только тем, кто готов платить дополнительную комиссию.
В отличии от других элементов в Ethereum, типа смарт-контрактов, которые тестируют в среде разработки или в тестнете, эти боты живут сразу в главной сети Ethereum. Для них нет финансового смысла фронтраннить тестовые транзакции. Плюс им не нужно играть по общепринятым правилам, поскольку их логика скрыта.
Мы не знаем при каких обстоятельствах эти боты атакуют. Поэтому, в некотором смысле, отслеживание этих хищников похоже на поиск редкого животного. Нам не нужен был какой-то средний фронтраннер, нам нужен был особенный.
Чтобы убедиться, что пойманные фронтраннеры действительно те, кого искали, мы использовали уникальную ловушку. Ловушка представляла собой свежий контракт с SHA256 хэшем секретной строки со средствами, доступными для снятия. Предоставив секретные данные, можно было извлечь средства. Средства в таком случае уходят на адрес отправителя транзакции.
Идея была в том, чтобы отправить транзакцию-приманку, в которой будет содержаться правильные данные, и посмотреть скопируют ли эти данные, чтобы предоставить их самому и забрать средства. Если кто-то заберет средства быстрее приманки, значит этот кто-то проанализировал транзакцию пока она была в пуле, скопировать релевантную информацию и предоставить секретные данные самостоятельно.
Получается бот, чтобы забрать ценные средства, использует секретные данные, о которых он раньше не знал, в контракте, который раньше не видел.
Настоящий фронтраннер 80 левала
С помощью эксперимента мы по большей части хотели понять, как такие фронтраннеры работают. Если кто-то создал машину для зарабатывания денег, то он вряд ли поделится кодом на Github. Поэтому остается лишь наблюдать и разбирать действия преступника.
Разработка такого умного фронтраннера обычно состоит из 2 компонентов:
- Первая составляющая — учетная запись Ethereum с прокси сервером смарт-кошелька или без него, куда будут отправляться модифицированные транзакции.
- Вторая — офчейн бэкенд, то есть мозги, которые управляют всей операцией.
Оператор использует некоторую технику, чтобы просмотреть каждую транзакцию в пуле, проанализировать ее, заменить параметры и разобраться, принесёт она прибыль или нет.
Рациональный бот не будет фронтраннить транзакцию, где возможная прибыль меньше комиссионных издержек. Комиссии за транзакции бывают достаточно дорогими, когда цена на газ высокая. Поэтому, ожидается, что нужен минимальный профит, чтобы бот схватил приманку.
Кроме того, время также важно, так как анализ проводится по каждой транзакции в пуле. Подтверждение блока в Ethereum занимает примерно 12 секунд. Если у транзакции достаточно газа, то ее нужно быстро проанализировать и заменить, прежде чем появится новый блок.
Это вероятностный процесс и есть шанс того, что блок подтвердят сразу после появления транзакции, поэтому у бота просто не будет времени на то, чтобы успешно проанализировать и отправить фронтраннинг транзакцию.
Имея ввиду эти соображения и несколько идей, мы стали проверять, что заставит бота схватить приманку.
Наш контракт ( Дающий ) был создан с начальным балансом 0.035 ETH.
Эти средства были доступны любому, кто сможет предоставить правильный образ хэша, который хранился в контракте.
Чтобы забрать средства и послужить триггером для хищника, отдельный аккаунт ( Берущий ) попытается извлечь средства, предоставив соответствующие данные.
Раунд первый. Прямой вызов контракта
Чтобы убедиться, что наша ловушка работает правильно, мы использовали берущий аккаунт, чтобы вызвать контракт. С первой попытки мы успешно извлекли средства, благодаря тому, что цена на газ была установлена высоко.
Вероятно причиной успеха стало то, что прибыль оказалась низкой для хищника, либо транзакцию подтвердили слишком быстро. Очевидно, нас это не устраивало, так как наша цель была захватить хищника.
Раунд второй. Дать время немного подумать
В этот раз мы рассмотрели недостатки из прошлой попытки. Мы увеличили потенциальный профит и уменьшили газ, чтобы транзакцию подтверждали медленнее, а у ботов было время найти ее. Пополнили контракт на 0.04 ETH (больше на 0,005).
В этот раз попали в точку!
Транзакция подтверждалась около 3 минут и после пришла пустая. Изучив внутренние транзакции контракта, мы обнаружили, что средства ушли в другое место.
Фронтраннинг транзакция использовала 25.000001111 Gwei , что на 0.000001111 Gwei больше, чем в нашей, и была подтверждена в том же блоке, что и попытка извлечения.
Теперь, после успешной ловли бота, мы могли бы получить парочку интересных инсайдов. Транзакция показала, что вызов контракта был выполнен не напрямую.
Бот не просто скопировал транзакцию и слепо отправил с собственного счета. Вместо этого он передавал через прокси-смарт-контракт, который играл роль смарт кошелька для таких транзакций.
Теперь мы могли отслеживать предыдущие и будущие транзакции, чтобы понять как работает бот и оценить насколько он успешен.
Декомпиляция контракта показывает 2 основные функции:
- «Вывод», которая в основном отправляет средства контракта оператору
- Другая функция получает некоторые параметры: контракт для вызова, список параметров и параметр передаваемого значения.
С этой функцией, прокси контракт работает как смарт кошелек для оператора. Помимо возможности вызывать внешние функции, он также в состоянии оценить баланс окончания транзакции, чтобы не был меньше баланса в начале, в целях предотвращения потенциальных потерь в результате вызова незнакомого контракта.
С помощью Dune Analytics можно оценить, насколько успешен этот бот с момента начала его работы, которая началась аж в мае 2018!
Доход равен примерно 17 ETH при условии, что этот конкретный бот использует один и тот же прокси и адрес для транзакций.
Раунд третий. Насколько они умные?
Теперь мы точно знаем, что боты за нами охотятся.
Нужно протестировать, получится ли извлечь приманку, запутав наш вызов через 2 контракт, который вызовет функцию извлечения приманки из дающего. (У контракта также была функция «сбора», чтобы вернуть средства нам обратно).
Мы развернули наш ПроксиБерущий контракт и и вызвали нужную функцию, чтобы извлечь средства.
Ввиду того, что забирать средства из контракта было несколько дороже, мы добавили в наш дающий контракт 0.055 ETH.
Что бы вы думали?
Нашу транзакцию тут же перехватил другой бот.
На этот раз все выглядело куда более впечатляющее. Мало того, что бот обнаружил транзакцию извлечения, он распознал ее из внутреннего вызова совершенно другого контракта! И сделал это в рекордные сроки .
Наша транзакция была добыта за несколько секунд, так же как и у бота.
Личность бота довольна интересна. Контракт бота в основном оперируется вручную с этого аккаунта.
У аккаунта есть комментарии на Etherescan со ссылками, которые ведут на попытки белых хакеров извлечь средства из уязвимых смарт-контрактов Bancor.
Учитывая тот же поведенческий паттерн (вызвать прокси со счета А и отправить средства на счет B) и близость к событиям, разумно предположить, что этот бот также фронтранил белых хакеров во время инцидента.
Этот бот гораздо сложнее, чем его предшественник. Он фокусируется и на ETH, и выполняет различные арбитражные сделки.
Судя по балансу счета, куда уходят средства, он очень успешен. На текущий момент на нем более 300 ETH. Мы так же в состоянии просчитать все входящие и выходящие транзакции, чтобы оценить доход, который составляет порядка 900 ETH.
Это приблизительная оценка, поскольку счет мог совершать и другие транзакции, не связанные с фронтраннингом.
Чтобы сделать задачу еще интереснее, мы предприняли еще одну попытку запутать. На этот раз мы использовали прокси контракт, которым могли пользоваться только мы.
Аналогично третьему раунду. Мы пополнили дающий контракт на 0.05 ETH.
С первой попытки транзакция была подтверждена за 1 минуту и мы успешно извлекли средства.
Для 2 попытки мы пополнили аккаунт на 0.06 ETH, чтобы убедиться, что низкая выплата не стала причиной отсутствия атаки.
Цена газа была установлена низкой. Транзакция висела 7 минут, но мы все равно успешно извлекли средства.
Сочетание собственного прокси, который позволял только владельцу пересылать транзакции помешало ботам проанализировать данные и забрать прибыль себе.
Возможно помогло наличие требования на вызов контракта только владельцем, или то, что средства отправлялись на другое место, а не на вызывающий контракт.
Боты скорее всего настроены так, что в приоритете стоит самосохранение .
В конце концов они взаимодействуют с неизвестным контрактом, который может вызвать произвольный код. Так что разумно предположить, что боты будут избегать ненужного риска или лишней траты на комиссии, если прибыль не гарантирована.
Почему нам удалось избежать фронтраннинга в последних тестах?
Сложно сказать. Возможно, бот не рискует связываться с аутентифицированными контрактами, либо тот факт, что средства переводились на другой адрес, оказался неожиданным.
Но это не значит, что это отличный метод избежать фронтраннеров. Скорее всего, существуют более сложные боты в пуле, которые не заинтересованы рисковать ради такой маленькой прибыли.
В нашем эксперименте удалось доказать существование продвинутых ботов фронтраннеров и то, что они очень сложны.
Конечно мы понимаем, что наш эксперимент далек от завершения.
Существует множество других ботов с разными триггерами и способами работы. Такие факторы, как потенциал роста, коммуникационные модели и минимальная сложность (например, через лимит газа), вероятно, влияют на их работу.
Однако, мы убеждены, что наши эксперименты дают доказательство концепции и ведут к дальнейшему разгадыванию способа работы этих ботов фронтраннеров.
Ужасная реальность заключается в том, что если существует вызов доходного контракта, который каждый может вызвать, то вероятно, что фронтраннинговый бот попытается заполучить прибыль первым.
Поэтому, чтобы создавать безопасные системы, очень важно понимать этих ботов и их работу, . Такие инициативы, как Flashbots стремятся выполнить эту задачу, демократизируя добычу MEV.
Источник