InVM - изнутри о Web3
405 subscribers
46 photos
5 files
74 links
Про тонкости работы Defi в EVM-блокчейнах глазами solidity разработчика.

Админ @zerofuz
Download Telegram
#DEFI
Команда проекта Uniswap первой разработала и внедрила DEX на AMM с возможностью FlashSwap, именно ее в свое время форкнул проект SushiSwap. Большинство AMM DEX это форки Uniswap v2.

Существует Uniswap v3, но исходный код временно закрыт, из нововведений там введен функционал частичных обменов, например вместо 1bnb->100$, можно сделать два обмена c v2 и v3 парами: 0.5bnb->55$, 0.5bnb->49$, чтобы по итогу получить 104$.

Uniswap v2 стостоит из таких контрактов:
1. Deployer - деплоит Factory и Router
2. Factory - создает и хранит адреса задеплоеных Pair
3. Router - содержит упрощенные методы для совершения обменов любой длины, например bnb->usdc->cake->wbnb, которые задействуют factory и factory.pairs.
4. Pair - самая важная часть dex’a, потому что этот контракт владеет erc20 токенами, которые пользователи передают паре, чтобы получать комиссионные, пропорционально доле их капитала в паре. Pair содержит низкоуровневые функции swap, mint, burn. Внутри pair.swap возможно заказать flashSwap(когда сначала пара одалживает контракту токенов, но ожидает их возврата в той же транзакции).

Для рядового пользователя совершить обмен в Uniswap v2 означает открыть из stateless сайт, выбрать направление обмена и создать транзакцию, которая взаимодействует с Router контрактом, который в свою очередь с fаctory.pairs.

В протоколе не заложен функционал blacklist, который есть в usdt,usdc.

Ознакомиться с кодом factory

Посмотреть на популярность router (много pending транзакций)
#HACK
19 часов назад произошла атака на мост между harmony.one-ethereum блокчейнами. Атакующий получил примерно 100 000 000$ в сети эфириума.

https://twitter.com/harmonyprotocol/status/1540110924400324608

Почитал, что делали три адреса атакующего:
первый - распределил ETH для комиссий между тремя адресами, на этот адрес приходили разные токены от контракта моста
второй и третий - помогали обменивать полученные токены USDC/USDT/… на ETH по частям, чтобы не спровоцировать резкого дисбаланса ликвидности в парах

В итоге атаки на первом адресе 85,867 ETH.


В эфириум сети мост представляет из себя два смартконтракта:
Harmony ERC20 Bridge - хранил все токены, любой пользователь мог пополнять его, чтобы перевести токены в сеть harmony. Но выводить из контракта может только Multisig контракт с тремя владельцами.

В общем и целом, на стороне эфириум блокчейна проблем не замечено.

Github bridge репозиторий

Осталось проверить такие векторы атаки как:
- в сети harmony что-то эдакое произошло
- оракула-владельца-multisig ввели в замешательство программно (например перезаписали получателя транзакцией)
Есть такое явление, которому наверняка есть научное название, сейчас напишу три примера

1 Вчера
⁃ В одном тг канале вычитал что позитивно мыслящие люди живут на 5% дольше, выборка там огромная, временной интервал сбора данных больше 20лет. Идея что нужно стараться позитивнее смотреть на вещи
⁃ В большом тг чате пользователь описал свою историю как он совершил все возможные ошибки с инвестициями в крипту (занимал деньги, покупал на хаях рынка, использовал кредитное плечо, сейчас в долгах и на таблетках). Лучший совет что ему дали звучит коротко так: думай позитивней, таблетки забрось, попробуй аффирмации, многие миллионеры через такое проходят. Посыл такой же, быть более позитивным.

2 Про пятницу
⁃ На пятницу 24 июня ожидается закрытие биржи CME (конец недели) и есть вероятность повторить падение битка на выходных
⁃ МЧС предупредило о плохой погоде и ветре (символизм)
⁃ Какие-то опционы истекают 24 июня на deribit, и чем ниже цена битка тем больше потеряют покупатели опционов от 30000$
⁃ Карта ликвидаций от kingfisher показывает, что биткоину нужно подорожать до 21500 или подешеветь до 16500 чтобы ликвидировать большинство (плечи, фьючерсы, нехватка обеспечения займа)

3 случай, тут обрывки. В конце апреля подмечал несколько сигналов что ожидается снижение биткоина, которое произошло ближе к 12 мая.
⁃ Некий индикатор впервые за кучу лет показывает вход в стадию экономической рецессии
⁃ МЧС предупредило о похолодании (читай биткоин дешевеет)
⁃ Уважаемый блоггер придерживался идеи о скором снижение цен
⁃ Близилось заседание ФРС по ключевой ставке (первая неделя мая) и ожидания заседания тоже способны повлиять на цены

Как такое называется? Источники не пересекаются, а идеи смотрят в одну сторону. Или это подгонка фактов под гипотезу?
Есть такая компания Electric Capital, которая выпускает аналитику блокчейнов и web3. Последний отчет впущен в январе 2022 года.

Их гитхаб

Прикрепил несколько интересных слайдов, с оговоркой что данные устарели на 6 месяцев.

Web3 это общее название всего что про блокчейн и крипту.

Web2 все что не web3: банки, сервисы заказа такси и еды и т.д.
#HACK

Как потерять средства:
⁃ Дать erc20 аппрув не проверенному контракту
⁃ Использовать в своем контракте проверку доступа по tx.origin, а не msg.sender и отправить левому контракту транзакцию, который абузит tx.origin
⁃ Посетить фишинговый сайт
⁃ Подхватить вирус-стилер-логгер который может узнать пароль и скопировать данные расширения metamask для последующей дешифровки
⁃ Хранить сидфразу в одном месте, к которому потерян доступ
⁃ Идти во фьючерсы с плечом без опыта
#DEFI
Централизованные стейблкоины (USDC,USDT) содержат функционал черного списка адресов во всех блокчейнах, где они представлены.

Когда userA передает свои 100usdc к userB, эти 100usdc не покидают контракта USDC, просто меняется владелец 100$ в пределах контракта, поэтому контракт способен решать, кто имеет право распоряжаться своими средствами, а кого можно забанить.

Централизованным стейблкоинам важно закладывать такой функционал blacklist, чтобы дружить с регуляторами и выполнять их требования.

В теории можно забанить пользователей одной страны, пойдя по цепочке CEX->KYC->конкретная_страна_Х->кошельки, которые однозначно трактуются как «владеет гражданин страны Х» и значительно так ограничить свободы в большинстве своем невинных граждан.

Пример наличия функционала, смотреть вкладки «Code», «Read Contract», «Read as Proxy»
USDC «isBlacklisted»
USDT «isBlacklisted»
#EVM #DEFI
Про апрув

Для начала ERC20 обмена нужно разрешить dex.router распоряжаться вашим конкретным erc20 токеном, потому что при транзакции обмена роутер сам передает необходимое количество токенов пользователя на адрес первой пары в пути обмена, которая по цепочке передает второй токен роутеру.

Поэтому важно проверять, кому дается approve (фишинговый страницы могут просить на свой адрес дать апрув)

На первый взгляд такая практика кажется несостоятельной, но на деле, когда контракт роутера не содержит уязвимостей и багов, можно спать спокойно))
#FR_BR

Так выглядит успешный обмен BackRunning стратегии.
- Занять 12.16$
- Перелить ликвидность между парами
- На контракте 12.59$WAVAX
- Вернуть заем 12.20$

- Прибыль транзакции 12.59$-12.20$=0.39$
#FR_BR

Back running (BR) - стратегия стремится извлечь выгоду после транзакции обмена. Идеально, чтобы целевая транзакция имела позицию X, а BR X+1.

Теоретически, такая стратегия «переливает» ликвидность между DEX парами. Когда пользователь делает существенный для пары обмен, возникает дисбаланс цен и бот может выгодно перелить ликвидность между парами и немного заработать.

Внутри блокчейнов (eth, bsc, avax) происходят сотни успешных BR транзакций, если бы все BR в одной сети выиграл один бот, то его суточная прибыльность примерно такая:
⁃ В ETH >100000 $
⁃ В BSC >10000 $
⁃ В AVAX >100-1000$ в сутки
uni-forks.xlsx
8.6 KB
#DEFI
В июне выбирал, на каком блокчейне реализовать backrunning стратегию. Критерии выбора:
⁃ Количество DEX
⁃ Наличие внятного explorer (etherscan)
⁃ Количество торговых пар
⁃ Количество стабильных токенов, где нет скрытых комиссий
⁃ Консенсус и гео-распределение валидаторов/майнеров
⁃ Позднее количество активных BR контрактов (их нет в таблице, но в BSC >300, AVAX >60)
Todo uni-forks table as attachment
#FR_BR

Новости за 1-9 июля по BR

Остановил свой выбор на AVAX, потому что:
⁃ Экосистема быстро развивается (количество новых пар и токенов в сутки), блокчейн игры тут выходят.
⁃ Консенсус масштабируемый, децентрализованный, сравнительно быстрый (майнинг транзакции за 1-2блока(<4секунд), для сравнения BSC 3 блока (~9секунд)
⁃ Сравнительно дешевая стоимость содержания одной ноды без стейка, около 20$ (для сравнения BSC бода стоит от 214$ до 700$ в месяц
⁃ Низкая цена классического обмена (avax 0.20$, bsc 0.60$, eth 1$+)
⁃ Низкая цена проигрышной транзакции бота (avax 0.03$, bsc 0.10$, eth 0.1$+)

Собрал DEX, dex.fees, dex.pairs, адреса токенов без скрытых комиссий

Адаптировал бота из BSC сети, написанного на golang и способного делать обмены с 2,3,4 парами без необходимости владения сотнями тысяч капитала, потому что используется flashswap прием, когда у отдельный пары берется заем на одну транзакцию (такое правда возможно, но обхитрить не выйдет)

Вот готов бот, контракты задеплоены, и 2 ноды в РФ и Германии. На очереди нода в США

Тестирую шанс извлечь выгоду,
4 июля 2%(7 раз) из 300+ попыток
6 июля ~0%(1 раз) из 300+ попыток
7 июля 0% из 300+ попыток
8 июля 0% из 300+ попыток
Оказаться в том же блоке что и цель удалось лишь пару раз, зачастую удачные транзакции про сбор остатков, а не пирога

Некоторым ботам «конкурентов» удается оказываться ровно после целевой транзакции. В теории так способны делать лишь валидаторы. Но неужели горстка владельцев ботов содержит сотни валидаторов(цена одного валидатора около 30k$) только для правильной ротации транзакций в одном блоке? Или может валидаторы подключены к аналогу Flashbots сети ETH? Ответом у меня нет
#EVM
Обнаружил два идентичных по логике контракта, созданных в 2015 году

Они вызвали интерес тем, что они старые и на них есть ETH, может авторы допустили ошибку в коде и забыли про существование своих поделок, потому что в 2015 году 1ETH<1$ 😄

130ETH
9ETH

Принцип их работы в подражании реферальной системе с уровнями. Один уровень это условно 10 ставок. Чем выше в пирамиде, тем дольше будут начисления. Тот уровень пирамидки, где мы можем занять место, разделит 130eth между более ранними уровнями, а нам ничего не достанется, пока не задонатят больше пользователей, которые создадут новый уровень пирамидки

Так вот, возможно 100% вызвать создание нового слоя пирамидки и один из кошельков получит больше 100ETH, потому что он много участвовал, но мне так не выгодно, я только пожертвую 10ETH и может через 50лет мне что-то вернется 😄
InVM - изнутри о Web3
#FR_BR Новости за 1-9 июля по BR Остановил свой выбор на AVAX, потому что: ⁃ Экосистема быстро развивается (количество новых пар и токенов в сутки), блокчейн игры тут выходят. ⁃ Консенсус масштабируемый, децентрализованный, сравнительно быстрый (майнинг…
9-21 июля, BR
⁃ Сменил вектор анализа с «одна транзакция пользователя в вакууме» на анализ «сколько выгоды можно извлечь из целого сманеного блока». Потому что шансов быть следующим после целевой транзакции очень мало.
⁃ Заметил, что из avalanchego+coreth события доходят с задержкой в 10-100мс до golang(avaxBot), поэтому объединил coreth+avaxBot. Теперь бот встроен в код ноды узла и минимизированы задержки на передачу полезной нагрузки к боту, потому что взаимодействие идет не через ethclient а напрямую с локальным state блокчейна. В том числе, когда нода получает новый блок, transaction.receipts подгружаются для последующего анализа. По умолчанию такого нет в eth_* namespace.
⁃ Выигрываются транзакции с около-нулевой прибыльностью
⁃ При ставке в 50gwei, выигрывались 17% транзакций (стандартная ставка 25gwei)
⁃ При ставке в 35gwei, выигрывались 10% транзакций
⁃ Но по итогу выигранные транзакции не выводят в положительный ROI. В обоих случаях ROI -50%

17-21 июля
⁃ Изучал, что такое Flashbots проект, который объединил 90%+ ethereum майнеров с помощью форка geth -> mev-geth. Любой пользователь может формировать «бандлы транзакций» в нужном порядке, но понадобится поделиться прибылью с майнером. Во время майнинга блока, бандлы комбинируются так, чтобы извлечь максимум выгоды для майнера. Если в двух бандлах есть общая транзакция, то будет выбран тот бандл, что дает майнеру больше ETH.
⁃ Нашел статью, которой 1.5 года, в ней рассказывается о том, как перехитрить FR бота с помощью самодельного ERC20 токена, который в определенный момент не дает FR боту зафиксировать прибыль. Повторил такую штуковину в AVAX сети, и один бот так пожертвовал в мою пару 600$ через 7 транзакций. Позднее пробовал аналогично сделать в BSC,HECO,KCC сетях, но без результатно. В BSC сети FR бот настолько прошареный, что обнаруживает любые потенциально опасные для него транзакции и перезаписывает свою BUY транзакцию (которая уже в mempool), чтобы не потерять средства. BSC бот делает evaluate(FR1, targetTx, FR2) и вместе с этим способен обнаружить, что humanTx123 может обломать его извлечение выгоды.
- Если научиться определять из solidity контракта контекст, в симуляции транзакции ли мы или в майнинге блока, то есть шанс перехитрить BSC FR ботов