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

Админ @zerofuz
Download Telegram
#DEFI

Landing protocol - Defi проект, где есть две стороны: залоги и займы. Популярные протоколы AAVE, Compound, Vires Finance, Venus. Актуальность их курсов обмена зависит от Chainlink контрактов, которые предоставляют не предвзятые и рыночно средние актуальные цены.

Годовые в займах всегда немного выше чем в залогах.

Ликвидация это когда залог стоит меньше займа пользователя и его health factor негативный. Landing контракт позволяет выкупить инициатору транзакции ликвидации залог со скидкой в >5%. Пользователь с ликвидированной позицией теряет залог, но остается с займом, который не нужно возвращать.

Чтобы не ликвидировало, важно следить за health factor и уровнем обеспечения, если можно взять 80% от залога, то безопаснее брать 50%. Когда btc просел на 10%, 50% превратятся в 60%.

В теории, если позицию пользователя нужно ликвидировать, но инициировать такую транзакцию некому, то и ликвидация не наступит))

Сценарии использования:
⁃ Внести залог $, взять заем в 50% в btc, поторговать, погасить заем в btc+комиссия, вернуть свои $.
⁃ Внести залог $ и получать годовые
⁃ Участвовать в ликвидации чужих позиций и получать залог по скидке от рыночной цены только за то, что помогли очистить позицию с низким health factor
⁃ Когда денег много, можно займом давать нужный импульс токенам с низкой капитализацией и извлекать из этого выгоду.
⁃ Шортить, когда зарабатываем на понижении цены токена
#DEFI
Как шортить в defi через landing

1btc = 20000$

Вносим залог 1000$usdt
Заем (80% максимальный, возьмем 60% в btc) 1000$/20000$/btc*60% = 0,03 btc // получили на свой кошелек
Продали мгновенно 0,03btc->600$

1btc = -10%, 18000$

0.3btc->0.03333btc(659$)
Вернули заем в 0,03btc + мизерные проценты годовых, разлочили свой залог

Владеем 1000$, 0,0033btc(59,4$) = 1059,4$ или прибыль в 6% при падении цены на 10%

Важно, чтобы ценность залога всегда была выше 80% чтобы не произошло ликвидации
#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 транзакций)
#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 (фишинговый страницы могут просить на свой адрес дать апрув)

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

О чем этот канал?

#DEFI - uniswapV2, пары, боты
Пример ethers+js
Blockscan
Uni форки
AMM
Pancakeswap.allPairsLength
Про кошельки
EVM,CEX,DEX
Токен
Landing protocol
Как шортить через landing
Uniswap
USDT,USDC
ERC20.approve
Автоматизация dune
4byte.directory
Rpc.batch
Bsc gasPrice=1gwei

#EVM - нюансы работы evm-блокчейнов
EVM,CEX,DEX
TokenChecks
ERC20.approve
Контракт 2015 года с 130eth
Evm.solidity.fn.signature
Pair.skim
Profanity https://t.me/invmru/71 https://t.me/invmru/76
4byte.directory
Структура байткода
Rpc.batch
1inch.router вывод любых токенов
TOTP на bsc

#HACK - разбор взломов и скам токенов
Обман в дискорде
Что за скам токен
Harmony.one-ethereum
Как теряют деньги мамонты
Solana, 8000 кошельков
Исса. Скам
Исса. Вероятный вектор обхода
Profanity
Celsius
Eth POW
Honeypot
OlympusDao
Frontrun bot потерял 80$
Frontrun. Детали атаки 1/2
Frontrun. Детали атаки 2/2

#FR_BR - frontrun, backrun боты
Пример успешного обмена
Что такое BR
Свой Backrun бот https://t.me/invmru/51 https://t.me/invmru/53 https://t.me/invmru/77

#GETH - как устроена внутри работа главной fullnode eth/bsc
EstimateGas
Flashbots.simulate

#FULLNODE - Как запустить fullnode
Eth
Bsc

#FLASHBOTS
Eth.flashbots.simulate
Polygon.flashbots

Trading view
Про создателей tradingview
Гадание на кейной гуще
VRVP

Личные проекты
TokenChecks https://t.me/invmru/21 https://t.me/invmru/73
Signature Profanity
abi-guesser-webserver

Не всем проектам нашлось место с тегом, продублирую их здесь, но они классные:
Copilot
Blockscan
Chainlist, defilama
Deepface live
Electric capital report
MidJourney
Dune
4byte.directory
Sublime text 3
Сколько занято ГБ на накопителе кубиками
#DEFI
Как создать особенный адрес кошелька в EVM-сети

Существует утилита Profanity (остерегайтесь форков), которая написана в далеком 2019 году. Она ищет такой privateKey, что address совпадает с искомым паттерном. Например 10 ноликов вначале адреса, или ..dead.., ..ded.., ..bed…, на что хватит фантазии))

Подходит для любой сети, которую поддерживает metamask, или адрес состоит из 40 hex символов

Вторая фишка для ценителей, это поиск privateKey, что его первая транзакция сдеплоит контракт с нужным партерном адреса. nonce=0

На 4-12 rtx3090 возможно в течении часа подобрать несколько адресов с 10 ноликами вначале.
Пример запуска «./profanity.x64 --leading 0»

Мне удавалось найти даже 13ти ноликовый адрес смарт-контракта, который после деплоя передает права на контракт моему кошельку.

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

Пытливые умы могут предположить, что так можно сбрутфорсить любой адрес, но это не так. Каждый следующий нолик после 13 искать гораздо дольше чем предидущий, иными словами невозможно подобрать в разумных временных рамках null адрес с 40ка ноликами.
InVM - изнутри о Web3
С помощью https://dune.com можно взаимодействовать с eth/bsc/matic/optimism блокчейнами через sql запросы и упаковывать в инфографики, например «прирост деплоев смарт-контрактов по месяцам». Мне сильно пригодился для того, чтобы выгрузить все адреса еth…
#EVM #DEFI
11кк abi собрано, если обогащать базу сигнатур функций, то тут на 10% больше, чем в 4byte.directory

Большинство контрактов на solidity, попадаются vyper.

Чаще всего попадаются такие опкоды для идентификации сигнатур в байткоде:
// aa bb cc dd = сигнатура
// 63 = PUSH4 означает что длина сигнатуры 4 байта (минимум 1 байт, поэтому 1+3)функции
80 63 aa bb cc dd …

или
80 62 aa bb cc …. // 62 = PUSH3
80 61 aa bb ….
80 60 aa ….

Живой пример weth (байткод внизу)
06fdde03 = name()
095ea7b3 = approve(address,uint256)
#EVM #DEFI
Rpc запросы к evm провайдерам можно делать пачками, не один eth_call а сразу тысяча в одном запросе.

Пример curl
curl --request GET \
--url https://eth-mainnet.public.blastapi.io/ \
--header 'Content-Type: application/json' \
--data '[{"jsonrpc":"2.0","id":0,"method":"eth_blockNumber","params":[]},{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]},{"jsonrpc":"2.0","id":2,"method":"eth_blockNumber","params":[]}]'


- Важно менять ‘id’
- Максимум 1000 элементов, зависит от провайдера
- Если внутри заменить eth_blockNumber на etc_call + свой контракт, то можно повысить емкость одного запроса еще в 10-100 раз
- На один eth_call ограничение в несколько млн газа
- Гуглить список rpc api так «eth eth_call»
#DEFI
Как мы все знаем, в bsc минимальный gasPrice = 5gwei.

Но отдельный валидатор, если захочет, может принимать транзакции с 1gwei.

Идея в том, что пользователю нужно купить токен 1KOGE=11$.
1KOGE = 240000 gasLimit максимум.
Рост gasLimit от количества koge нелинейный, детали в офф чате.

Имея 1koge и установив их rpc link можно отправлять сколько угодно транзакций с 1gwei и до 240000gasLimit.

Пост-релиз в офф чате