разбираем базу каждого блокчейн-разработчика
Прежде чем транзакция попадет в блок, она отправляется в mempool – это своего рода «очередь» неподтвержденных транзакций.
Как это?
> Узлы сети принимают транзакции и хранят их в mempool.
> Майнеры/валидаторы выбирают транзакции из mempool для включения в следующий блок.
> Транзакции с высокими комиссиями (gas fee) имеют приоритет.
Как Пайтон анализирует МемПул ?
разберем код для отслеживания транзакций
from web3 import Web3
w3 = Web3(Web3.HTTPProvider("https://mainnet.infura.io/v3/INFURA_KEY"))
def watch_mempool():
while True:
pending_transactions = w3.eth.get_block('pending', full_transactions=True)
for tx in pending_transactions.transactions:
print(f"Транзакция {tx.hash.hex()} с gas price {tx.gasPrice}")
watch_mempool()
> Выявлять крупные транзакции перед их подтверждением.
> Анализировать, какие комиссии актуальны для быстрой отправки.
> Предугадывать атаки типа frontrunning.
перехватывают твои сделки
Frontrunning - когда кто-то (например, MEV-боты) замечает выгодную сделку в mempool и вставляет свою транзакцию перед ней.
Как?
1⃣ Ты отправляешь транзакцию на покупку токена с высокой ликвидностью.2⃣ Бот видит твою транзакцию в mempool и отправляет свою раньше с чуть более высоким gas fee.3⃣ Бот скупает токены раньше тебя и перепродает их по более высокой цене.
Пайтон поможет??
пробуем анализировать транзакции, которые быстро следуют друг за другом с похожими параметрами.
скрипт на поиск подозрительных транзакций
def detect_frontrunning():
pending_transactions = w3.eth.get_block('pending', full_transactions=True)
tx_map = {}
for tx in pending_transactions.transactions:
sender = tx['from']
to = tx['to']
amount = tx['value']
if (to, amount) in tx_map:
print(f"⚠️ Возможный фронтраннинг! Отправитель {sender} повторяет транзакцию.")
tx_map[(to, amount)] = sender
detect_frontrunning()
1⃣ Фильтровать мемпул на предмет подозрительных ботов.2⃣ Настраивать защиту в своих смарт-контрактах.3⃣ Опережать ботов, если ты делаешь арбитраж.
MEV (Maximal Extractable Value) – дополнительная прибыль, которую майнеры/валидаторы и боты могут извлечь за счет изменения порядка транзакций в блоке.
Кто использует MEV?🤬
> Frontrunning-боты
> Sandwich-атаки
> Арбитражные боты, которые используют разницу цен на DEX.
ПАЙТОН - используем для анализила блоков и поиска подозрительных групп транзакций.
def check_mev_transactions(block_number):
block = w3.eth.get_block(block_number, full_transactions=True)
txs = block.transactions
for i in range(len(txs) - 1):
if txs[i]['to'] == txs[i + 1]['to'] and txs[i]['value'] < txs[i + 1]['value']:
print(f"⚠️ MEV подозрение: {txs[i].hash.hex()} -> {txs[i + 1].hash.hex()}")
check_mev_transactions("latest")
Зачем ?
ЧТО РАЗБЕРЕМ ДАЛЕЕ?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9❤🔥2🔥1🐳1💘1
подведем итоги месяца
1. Разобрались с AI-AGENTS (ЧАСТЬ №1, Часть №2)
2. Начали Работу Над Арбитраж-Ботом на Пайтон
3. Разобрали Multicall & EIP-1559
4. Научились Работать с Капчей через Пайтон
5. Разобрали работу MEV-ботов
6. Работали с Etherscan api & ChainLink
Начали МАРАФОН по Солана на пайтон + Нашли Обучение
Работали с транзакциями соланы и ее скоростью
Солана x DEX
Solana x Кошельки
Солана Legacy VS V0
spl токены солана
БЕСПЛАТНЫЙ курс по солане с НУЛЯ
Разбор Solders
Софтанули Памп-Фан
Бустанули Транзакции в Солане
Ускорили RPC Solana
Начали разработку Софта под Monad
Разобрали Структуру Крипто-Софта в пайтон
Гайд по написанию Софтов с НУЛЯ
Разобрали механики Блокчейна
Запустили Наш ЗАКРЫТЫЙ Клуб
Взлом Байбит на $1.5 млрд
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥6🔥4🏆3💅1
Rust в последние годы набирает популярность в крипто-разработке, особенно среди высокопроизводительных блокчейнов, таких как Solana, NEAR, Polkadot и Substrate
РАЗБИРАЕМ
1. Безопасность Памяти
Rust обеспечивает memory safety без необходимости в garbage collector (GC), что критически важно для блокчейнов, где даже небольшие задержки могут приводить к высокому расходу газа или уязвимостям.2. Скорость🔧 Rust сочетает безопасность памяти (как в Solidity) с высокой производительностью без GC (как C++), что делает его идеальным для блокчейнов.
Rust компилируется в машинный код, не использует интерпретатор (как Python) или виртуальную машину (как Solidity), а значит, работает максимально быстро.
3. Что писать??
На Rust можно разрабатывать не только смарт-контракты, но и:
> DeFi-приложения (Solana, NEAR)
> Layer-2 решения (ZK-rollups, state channels)
> Блокчейн-клиенты (Ethereum, Polkadot)
> Боты для арбитража и трейдинга
> Криптографические библиотеки (шифрование, подписи)
Видимо Rust — это C++ для блокчейнов, но без боли и багов.
Если писать безопасные и быстрые смарт-контракты, Rust - следовательно неплохой выбор
WEB3 X Rust😮
ethers-rs - Web3-клиент для Ethereum и EVM-совместимых блокчейнов.
(подписывать и отправлять транзакции, взаимодействовать с контрактами)
solana-sdk - Библиотека для работы с Solana.
(писать программы и управлять аккаунтами)
substrate-api-client - Rust API для работы с Polkadot/Substrate.
(управления узлами и контрактами)
КАК ВАМ РАСТ?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤🔥3🏆3💘1
🗣 вот и лайф
Написали скрипты, теперь можно и развеяться
Как вы проводите воскресенье? Ваши идеи на следующие видео, посты🙏
Написали скрипты, теперь можно и развеяться
Как вы проводите воскресенье? Ваши идеи на следующие видео, посты
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥3💅1
1. Получение баланса ETH
Этот скрипт подключается к Ethereum (через Infura/Alchemy), получает баланс кошелька и выводит его.
Библиотека: ethers-rs
cargo add ethersuse ethers::prelude::*;
use std::convert::TryFrom;
use tokio;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let provider = Provider::<Http>::try_from("https://mainnet.infura.io/v3/INFURA_KEY")?;
let address: Address = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e".parse()?;
let balance = provider.get_balance(address, None).await?;
println!("Баланс: {} ETH", balance);
Ok(())
}
2. Отправка транзакции в Ethereum
скрипт отправляет ETH на указанный адрес.
СКРИПТ
use ethers::prelude::*;
use std::convert::TryFrom;
use tokio;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let provider = Provider::<Http>::try_from("https://mainnet.infura.io/v3/INFURA_KEY")?;
let wallet: LocalWallet = "PRIVATE_KEY".parse::<LocalWallet>()?.with_chain_id(1);
let client = SignerMiddleware::new(provider.clone(), wallet);
let to: Address = "0xRecipientAddressHere".parse()?;
let tx = TransactionRequest::new()
.to(to)
.value(ethers::utils::parse_ether(0.01)?) // 0.01 ETH
.gas_price(provider.get_gas_price().await?);
let pending_tx = client.send_transaction(tx, None).await?;
let tx_hash = pending_tx.tx_hash();
println!("Отправлено! Tx hash: {:?}", tx_hash);
Ok(())
}
3. Чтение данных из смарт-контракта (ERC-20 баланс)
Этот скрипт получает баланс токена ERC-20 у пользователя.
ethers-rs
USDT - 0xdAC17F958D2ee523a2206206994597C13D831ec7
СКРИПТ
use ethers::prelude::*;
use std::convert::TryFrom;
use tokio;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let provider = Provider::<Http>::try_from("https://mainnet.infura.io/v3/INFURA_KEY")?;
let erc20 = "0xdAC17F958D2ee523a2206206994597C13D831ec7".parse::<Address>()?;
let user = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e".parse::<Address>()?;
let abi: Abi = serde_json::from_str(include_str!("erc20_abi.json"))?;
let contract = Contract::new(erc20, abi, provider.clone());
let balance: U256 = contract.method("balanceOf", user)?.call().await?;
println!("Баланс USDT: {} USDT", balance);
Ok(())
}
ВОТ ТАКОЕ НАЧАЛО??
КАК ВАМ РАСТ??
ИДЕИ??
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍4🤩2
разбираем где и как искать работу блокчейн-разработчикам
Контрибуть в open-source
1⃣ Берем любой популярный web3 проект - Ethers.js, Hardhat, Foundry, Solidity, Ethereum, L2-решений2⃣ Заходим в issue, смотрим, какие задачи можно решить.3⃣ Читаем чужой код - понимаем, как работают крупные проекты.4⃣ Контрибь – попадаешь на радары.
Свой pet-проект и популяризация в Twitter/Reddit/Telegram
Блокчейн = код + медийка.
Твой GitHub + Twitter (X) + Telegram = твое резюме.
ПЛАН
Пилить DeFi-контракты, арбитражных ботов, NFT-дропы, L2-плагины. ⬇️
> Расписывать процесс разработки в тредах в Twitter / писать посты в Telegram.
> Делать видосы – записывай свой код с объяснением.
например
Я написал арбитражного бота на Python -> выложил GitHub + Telegram пост -> Кто-то увидел -> предложил контракт или работу🤬
DAO и комьюнити-хакатоны
Работодатели в крипте ищут людей внутри комьюнити.
Как попасть?
Gitcoin, ETHGlobal, Encode Club - хакатоны и гранты🤬 Arbitrum, Optimism, Polygon, zkSync - у всех есть гранты для разработчиков.
Участвуем в обсуждениях в Discord/Twitter/Telegram у топовых криптопроектов
Заходим в Lens, Farcaster, Warpcast - новые соцсети для крипторазработчиков🤳
Questbook - гранты, задания.
Cryptojobslist - площадка с вакансиями и фриланс-заказами в крипто.🐺 Ethlance - децентрализованная фриланс-биржа на Ethereum.
LaborX – платформа с крипто-оплатами в USDT, ETH etc.
Twitter + Discord = главные HR-платформы крипты
Подаёмся не через сайты, а через комьюнити.
Где искать?
CryptoJobsList, Remote3, Web3.career - доски вакансий🤫 Discord серверы Solana, Ethereum, zkSync, Polygon, Starknet - ИЩЕМ "we're hiring".
Вот так, больше кода, гайс, больше проектов, больше видимости
Разбираем тему далее?? ИДЕИИИ!!
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩19🐳6👍5🔥4💘2
🐈 Pet-project - личный (не коммерческий) проект, который ты создаешь для изучения технологий, прокачки навыков и создания портфолио.
разбираем такие проекты:
Создаем DApp, которое подключается к кошельку (MetaMask, WalletConnect) и показывает баланс токенов, стейкинг, доходность фарминга, транзакции и другие метрики💻
Технологии: TypeScript, Next.js, Ethers.js / Viem, The Graph💰 Фичи:
> Автоподключение к кошельку
> История транзакций
> Анализ доходности
> Поддержка нескольких сетей
⌚️ Бот, отслеживает новые NFT-аукционы на OpenSea / Blur и уведомляет пользователя о самых перспективных лотах.
Python (Web3.py), Solidity, OpenSea API, Telegram Bot API💪 Фичи:
> Подключение к NFT-маркетплейсам
> Оценка ликвидности коллекций
> Автоматическое размещение ставок
> Уведомления в Telegram
🤫 Чат, где можно отправлять сообщения и платить за них криптой.
Solidity, React, IPFS, WalletConnect
Фичи:
> Отправка сообщений через IPFS
> Оплата через smart-contract
> Поддержка ENS🪙
Создаем платформу для управления DAO с возможностью голосования и управления токенами.
Solidity (Governor контракт), React, Ethers.js, Hardhat☕️ Фичи:
> Поддержка голосования на основе токенов
> Гибкие правила голосования
> Подключение к Snapshot / Aragon
🤬 Маркетплейс для игровых NFT с возможностью P2P-торговли и ставок.🤣 Solidity (ERC-721 / ERC-1155), Next.js, IPFS, The Graph
Фичи:
> Выставление NFT на продажу
> On-chain аукционы
> Подключение к OpenSea
Изучение технологий - прокачиваем Solidity, Ethers.js, Web3.py, Hardhat, Foundry и другие инструменты🥤 💼 Создание портфолио - можно показать работодателю или инвесторам🤩 Развитие идеи - успешный pet-project можно превратить в стартап.
Проверка концепции - можем тестировать новые механики, например, новые модели токеномики🎉
Реализация пет-проектов - ключ к понимаю технологий, с которыми мы работаем
ПОРА ДЕЛАТЬ
Предлагаю реализовать один из таковых тут! Как вам? 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16😍5🐳4❤2💘1
безумно рад популяризации блокчейна в нашем пространстве
Двигаемся далее, новые проекты, новый уровень, новые цели
Спасибо всем, кто присоединился к этому легендарному пути, Легенды!
Shoot For The Stars, Aim For The Moon 💫💫
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍5💘5❤3🤩1😍1
разбираемся на практике - создаем проекты постепенно набирая обороты
как работать с web3.py и получать информацию из блокчейна?😑
Устанавливаем web3.py
> Подключаемся к публичному RPC-узлу (Infura или Alchemy)
> Получаем информацию о блоках, балансе кошельков и истории транзакций
отправляем транзакции и работаем с приватными ключами🙏
> Создаем и подписываем транзакцию с помощью web3.py
> Отправь тестовые ETH на Goerli или Sepolia
> Пробуем взаимодействовать с любым смарт-контрактом
🥊 читаем события из блокчейна и работаем с историей транзакций.
> Подключаемся к WebSocket-узлу Ethereum для реального времени
> Пишем Python-скрипт для мониторинга новых блоков и транзакций
> Фильтруем транзакции по адресу, токенам или конкретным контрактам
> Парсим события (logs) из смарт-контрактов (например, переводы токенов ERC-20)
Получаем информацию о ценах криптовалют с CEX и DEX✏️
> Подключаемся к API Binance, OKX, KuCoin (CEX)
> Получаем данные о ценах токенов и объёме торгов
> Подключаемся к Uniswap или 1inch API для получения цен на DEX
> Реализовываем мониторинг скачков цен и анализ спредов между биржами
Автоматическое отслеживание значительных изменений цен😭
> Подключиться к нескольким биржам (CEX + DEX)
> Реализовать логику уведомления при изменении цены > X% за Y секунд
> Реализовать Telegram-бота для отправки уведомлений
Добавить функционал, например: просмотр цены по запросу👊
СТАРТОВЫЙ ПАКЕТ ТАКОВ!!
Как вам?? ИДЕИ!?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥8❤🔥3💅2
часть №2, практика с нуля до софта
Подключаемся к смарт-контракту ERC-721 или ERC-1155
> Получаем данные о NFT (метаданные, владелец, историю транзакций)
> Отправляем NFT другому пользователю
> Читаем события (Transfer) из NFT-контрактов
ТУЛЗ👍
Web3.py – работа с Ethereum (чтение данных, транзакции)
IPFS / Pinata – хранение метаданных NFT
Etherscan API – получение истории транзакций
бот для автоматической торговли на Uniswap
> Подключаемся к Uniswap V3 (PancakeSwap или 1inch)
> Получаем ликвидность, цены и объемы
> Совершаем свопы между токенами
> Мониторим цены и автоматически исполненяем сделки
ТУЛЗ🤩
Web3.py – взаимодействие с контрактами
Uniswap V3 SDK / 1inch API – свопы и цены
AIOHTTP / Asyncio – асинхронные запросы
Ищем разницу цен и совершаем прибыльные сделки🎧
> Подключаемся к нескольким DEX и CEX
> Расчитываем спред между биржами
> Автоматически исполненяем арбитражные сделки
> Работаем с flash-loan (по желанию)
ТУЛЗ😱
CCXT - API для CEX (Binance, OKX, KuCoin)
Web3.py – подключение к DEX (Uniswap, PancakeSwap)
Pandas/Numpy – расчет спредов
Flashbots – для арбитража с flash-loans
Продвинутая тема для Web3-разработчиков
> Мониторинг мемпула и поиск выгодных транзакций
> Написание снайпер-бота для покупки новых токенов
> Фронтраннинг (опционально)
ТУЛЗ💃
Web3.py + Etherscan API – анализ транзакций
Infura / Alchemy – доступ к мемпулу
Flashbots – отправка приоритетных транзакций
Вот такой спикок софта у нас получился, практикуемся!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤🔥2👍2💘1
разберем, как писать софты из первой и второй части степ бай степ
> Подключение к блокчейну
> Отправка Транзакций
> Взаимодействие с DEX CEX биржами Rest API
> Взаимодействие со смарт-контрактами💩 все подробно расписал в моих python материалах на Teletype
teletype.in/@vartcall/+web-3-python-development
Бот для мониторинга резких движений цены (Асинхронность)
> Подключение к API бирж - используем ccxt для CEX и web3.py для DEX.😡
> Асинхронный мониторинг цен - используем asyncio, будем проверять цены с определенным интервалом.
> Логика уведомлений - если цена изменится больше чем на X% за Y секунд, отправляем уведомление.
> Telegram-бот - реализуем уведомления через aiogram.
пример
async def fetch_price():
"""Функция для получения цены с биржи"""
exchange = getattr(ccxt, EXCHANGE_ID)()
ticker = await exchange.fetch_ticker(PAIR)
await exchange.close()
return ticker['last']
async def monitor_prices():
"""Мониторинг резких изменений цен"""
prev_price = await fetch_price()
while True:
await asyncio.sleep(CHECK_INTERVAL)
current_price = await fetch_price()
price_change = ((current_price - prev_price) / prev_price) * 100
if abs(price_change) >= PRICE_CHANGE_THRESHOLD:
message = (f"⚠️ Цена {PAIR} изменилась на {price_change:.2f}%\\\\n"
f"Было: {prev_price}, стало: {current_price}")
await bot.send_message(chat_id=YOUR_CHAT_ID, text=message, parse_mode=ParseMode.MARKDOWN)
prev_price = current_price
DeFi-бот для свопов на DEX
> Подключаемся к Uniswap V3 / PancakeSwap / 1inch через web3.py и etherscan API🌈
> Получаем ликвидность, цены и объемы из смарт-контрактов DEX.
> Совершаем свопы между токенами, используя смарт-контракт DEX.
> Мониторим цены и автоматически исполнять сделки при заданных условиях.
пример
from web3 import Web3
import asyncio
import json
# настройки
INFURA_URL = "https://mainnet.infura.io/v3/INFURA_PROJECT_ID"
PRIVATE_KEY = "PRIVATE_KEY"
WALLET_ADDRESS = "WALLET_ADDRESS"
UNISWAP_ROUTER = "0xE592427A0AEce92De3Edee1F18E0157C05861564" # Uniswap V3 Router
TOKEN_IN = "0xdAC17F958D2ee523a2206206994597C13D831ec7" # USDT
TOKEN_OUT = "0xC02aaa39b223FE8D0A0e5C4F27eAD9083C756Cc2" # WETH
AMOUNT_IN = Web3.toWei(10, "ether") # Сколько токенов покупаем
SLIPPAGE = 0.5 # % проскальзывания
# подключение к Ethereum
w3 = Web3(Web3.HTTPProvider(INFURA_URL))
assert w3.isConnected(), "Ошибка подключения к сети Ethereum"
# загрузка ABI Uniswap
with open("UniswapV3RouterABI.json") as f:
router_abi = json.load(f)
router_contract = w3.eth.contract(address=UNISWAP_ROUTER, abi=router_abi)
def get_quote():
"""Получаем цену обмена через смарт-контракт"""
amount_out_min = int(AMOUNT_IN * (1 - SLIPPAGE / 100))
return amount_out_min
def swap():
"""Исполняем своп USDT -> WETH"""
nonce = w3.eth.get_transaction_count(WALLET_ADDRESS)
txn = router_contract.functions.exactInputSingle({
'tokenIn': TOKEN_IN,
'tokenOut': TOKEN_OUT,
'fee': 3000,
'recipient': WALLET_ADDRESS,
'deadline': w3.eth.get_block('latest')['timestamp'] + 60,
'amountIn': AMOUNT_IN,
'amountOutMinimum': get_quote(),
'sqrtPriceLimitX96': 0
}).build_transaction({
'from': WALLET_ADDRESS,
'gas': 200000,
'gasPrice': w3.toWei('50', 'gwei'),
'nonce': nonce
})
signed_txn = w3.eth.account.sign_transaction(txn, private_key=PRIVATE_KEY)
tx_hash = w3.eth.send_raw_transaction(signed_txn.rawTransaction)
return w3.toHex(tx_hash)
async def monitor_and_trade():
"""Мониторинг цен и автоторговля"""
while True:
price = get_quote()
print(f"Текущая цена: {price}")
if price < Web3.toWei(0.02, "ether"): # Критерий покупки
tx_hash = swap()
print(f"Своп выполнен! TX: {tx_hash}")
await asyncio.sleep(30)
ВОТ ТАКАЯ ПЕРВАЯ ЧАСТЬ!
Как вам ИДЕЯ, ЧТОБЫ ВСЕ ЭТИ МАТЕРИАЛЫ Я ДРОПНУЛ НА GITHUB??
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥21❤7😍3💘1
часть №2
разбираем пример софта из второй части наших идей
Арбитражный бот между DEX и CEX
критерии версий библиотек - requirements.txt
ccxt>=4.0.0
web3>=6.0.0
pandas>=2.0.0
numpy>=1.24.0
web3-flashbots>=2.0.0
pip install -r requirements.txt
пример кода
# подключениек CEX (ccxt)
cex_exchanges = {
"binance": ccxt.binance(),
"okx": ccxt.okx(),
"kucoin": ccxt.kucoin()
}
# функция для получения цен cex
def get_cex_prices(symbol):
prices = {}
for name, exchange in cex_exchanges.items():
try:
ticker = exchange.fetch_ticker(symbol)
prices[name] = ticker['last']
except Exception as e:
print(f"Ошибка получения цены с {name}: {e}")
return prices
# функция для получения цен с DEX (Uniswap V2)
def get_dex_price(pair_address):
try:
contract = w3.eth.contract(address=pair_address, abi=[
{"name": "getReserves", "outputs": [
{"name": "reserve0", "type": "uint112"},
{"name": "reserve1", "type": "uint112"}], "stateMutability": "view", "type": "function"}
])
reserves = contract.functions.getReserves().call()
price = reserves[1] / reserves[0]
# Примерный расчет цены
return price
except Exception as e:
print(f"Ошибка получения цены с DEX: {e}")
return None
# функция расчета спреда и поиск арбитражной возможности
def find_arbitrage(symbol, dex_address):
cex_prices = get_cex_prices(symbol)
dex_price = get_dex_price(dex_address)
if dex_price is None:
return None
for exchange, cex_price in cex_prices.items():
spread = ((cex_price - dex_price) / dex_price) * 100
print(f"Спред между {exchange} и DEX: {spread:.2f}%")
if spread > 1: # 1% порог арбитража
print(f"🔥 Возможность арбитража! Покупаем на DEX, продаем на {exchange}")
requirements.txt
web3>=6.0.0
requests>=2.28.0 # Для API Etherscan
flashbots>=2.0.0 # Интеракция с Flashbots
python-dotenv>=1.0.0 # Для API-ключей (Infura, Alchemy, Etherscan)
numpy>=1.24.0
pandas>=2.0.0
пример кода
def monitor_mempool():
print("🚀 Мониторинг мемпула...")
latest_block = w3.eth.block_number
while True:
new_block = w3.eth.block_number
if new_block > latest_block:
print(f"🔄 Новый блок: {new_block}")
pending_transactions = w3.eth.get_block('pending', full_transactions=True)
for tx in pending_transactions.transactions:
analyze_transaction(tx)
latest_block = new_block
time.sleep(1)
# функция анализа транзакций
def analyze_transaction(tx):
try:
to_address = tx["to"]
value = w3.from_wei(tx["value"], "ether")
gas_price = w3.from_wei(tx["gasPrice"], "gwei")
print(f"📌 Транзакция: {tx['hash'].hex()} | Получатель: {to_address} | Сумма: {value} ETH | Gas: {gas_price} Gwei")
except Exception as e:
print(f"Ошибка анализа транзакции: {e}")
🔫 Благодаря данном примеру - разобрались как эта технология работает изнутри, далее
> Фильтрация транзакций (только токены ERC-20)
> Авто-покупку новых токенов - снайпинг
> Фронтраннинг - опережение выгодных сделок
Поэтому для написания ПОЛНОЦЕННОГО софта, все наконец-то ОПУБЛИКУЮ НА GITHUB
ВАШИ ИДЕИ??
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤🔥3🤩2❤1
в честь такого прекрасного праздника у меня есть решение
конечно это доступ в Guide Dao
Благодаря этим легендам я намного быстрее вошел в блокчейн
Разобрался с JS/TS c нуля, взаимодействовал с Ethers.js и наконец писал свои дапки подключив React.
Также мне нравятся постоянные созвоны в Discord, где мы кодим, изучаем новое и общаемся с менторами и другими участниками дао!
Также недавно они добавили новый буткемп по AI-Agents
Результат - Дао развивается, проекты пишуться
Прямо сейчас в ДАО $LIBRA SALE -20% до 10 марта
И финальный бонус от меня -10% по промокоду
VARTCALLhttps://www.guidedao.xyz/
Скидки на сайте ДАО - Суммируются
Успевай порадовать свою музу
Please open Telegram to view this post
VIEW IN TELEGRAM
😍9🤩3👌3💅2🐳1
наши герои лета 2024 возращаются с новым марафоном!!
МИНИ-КУРС Прямо на этом канале!
10 МАРТА - 10 АПРЕЛЯ
🍻 Задачи месяца: Понимание JS & TS, знакомство с блокчейном, написание первых DApps
> Введение в JS & TS + Работа с API
> Разработка DApps + Взаимодействие со смарт-контрактами
> Взаимодействие с DeFi-протоколами
> NFT + Security
10 АПРЕЛЯ - 10 МАЯ
Автоматизация + Глубокая работа с DeFi/NFT
📸 Задачи месяца: Пишем автоматизированные боты, работаем с CEX и DEX, делаем DeFi-арбитраж, работать с NFT + AI
> Автоматизация Web3
> Арбитражные боты
> NFT + AI
> Глобальный проект + Итоги
7+ проектов в "портфолио"
Глубокое понимание JS, TS, Solidity, Web3🙄
> Навык написания ботов.
> Понимание DeFi, NFT, CEX & DEX.
план будет обновляться....
ВЫ ГОТОВЫ??? ЭТИ 2 МЕСЯЦА БУДУТ ЛЕГЕНДАРНЫ!!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥34❤6🐳6💘1
Node.js и npm
nodejs.org
Будем запускать JS/TS вне браузера через Node.js, npm - для управления пакетами
устанавливаем LTS версию, npm установится автоматически
проверка установки
node -v
npm -v
TypeScript
Добавим строгой типизации в наш код
npm install -g typenoscript
Проверка tsc -v
Подключение к блокчейну
используем библиотеку ethers.js
TypeScript
npm install --save-dev @types/node
JavaScript
npm install ethers
Пример json-файла со всеми перечисленными библиотеками и актуальными версиями
{
"name": "blockchain-project",
"version": "1.0.0",
"denoscription": "JS/TS blockchain development setup",
"noscripts": {
"start": "node index.js",
"build": "tsc"
},
"dependencies": {
"ethers": "^6.13.5",
"dotenv": "^16.0.3",
"@openzeppelin/contracts": "^4.9.0"
},
"devDependencies": {
"typenoscript": "^5.8",
"hardhat": "^2.22.19",
"eslint": "^8.35.0",
"prettier": "^3.0.0",
"@types/node": "^20.11.0"
},
"engines": {
"node": ">=18.17.1",
"npm": ">=9.0.0"
}
}Далее начинаем писать первые скрипты и работаем с API
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥3
🤵♂️ Материалы по стеку - БАЗА
JavaScript 🔽
javanoscript.info - документация
jschallenger.com - практика задач на js🤟 TypeScript
Semolina Code записал плейлист с нуля на эту тему
Что изучаем?
😈 Основы JS & TS { без этого никуда }
> Типы данных { string, number, boolean, object, array, null, undefined }
> Работа с let, const и область видимости
> Функции и async/await
> Promise, обработка ошибок { try/catch }
> Классы и ООП { class, constructor, extends }
> Работа с API { fetch, axios }
> Работа с файлами { fs в Node.js }✏️ Node.js и npm
> Умеем ставить зависимости { npm install ethers dotenv }
> Разбираться в package.json
> Запускать JS/TS-скрипты через node и tsc🥰 TypeScript
> Типизация { string, number, boolean, any, unknown, void, never }
> Интерфейсы и type
> readonly, optional { ? в интерфейсах }
> Generics { очень полезны при работе с блокчейн-данными }
> Работа с @types/* { например, @types/node }
Начинаем Работу с API
Стартанем с JS далее будем подключать TS
😎 WHY TS???
Строгая типизация - меньше ошибок в коде
Лучшая поддержка Web3-библиотек - { ethers.js, viem }
Упрощает работу с API - { точные типы данных }
Профессиональный стандарт - серьезные проекты используют TS 😎
СТАРТУЕМ { Подключение к API блокчейна }
переходим на infura.io регаемся и получаем API ключ
пример использования в коде
import { ethers } from "ethers";
// Подключаемся к Ethereum через Infura
const provider = new ethers.JsonRpcProvider(
"https://mainnet.infura.io/v3/КлючInfura"
);
// Функция для получения баланса кошелька
async function getBalance(address) {
try {
const balance = await provider.getBalance(address);
console.log(💰 Баланс: ${ethers.formatEther(balance)} ETH);
} catch (error) {
console.error("❌ Ошибка получения баланса:", error);
}
}
// Адрес кошелька
const walletAddress = "0xВашКошелек";
// Вызываем функцию
getBalance(walletAddress);node index.js
при проблемах с запуском - проверяем package.json
(мы получили этот файл при установке ethers.js)
{
"type": "module",
"dependencies": {
"ethers": "^6.13.5"
}
}Подписание транзакций { отправка ETH }
> Работа с ERC-20 токенами
> Подключение Metamask и “создание DApp”
> Деплой собственного смарт-контракта
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤4🐳2🤩1💘1
В этом “гайде” разберем:
💰 Отправку обычных ETH-транзакций
> Добавление комиссии (gas) вручную
> Чтение истории транзакций
> Создание подписанных сообщений🫥 Используем ethers.js для взаимодействия с блокчейном и dotenv для хранения приватных данных
скрипт с кодом этого урока ниже
🔫 Инициализация Проекта
В папке проекта 🔽
Создаем index.js для нашего скрипта
.env файл для хранения приватных данных
npm init -y для удобного управления зависимостями проекта
import { ethers } from "ethers";
import * as dotenv from "dotenv";
dotenv.config();
const provider = new ethers.JsonRpcProvider(
https://sepolia.infura.io/v3/${process.env.INFURA_API_KEY}
);
// загружаем кошелек (приватный ключ + провайдер)
const wallet = new ethers.Wallet(process.env.PRIVATE_KEY, provider);
// Функция отправки ETH
async function sendETH(to, amount) {
try {
const tx = await wallet.sendTransaction({
to: to,
value: ethers.parseEther(amount), // Конвертируем ETH в wei
});
console.log(✅ Транзакция отправлена!);
console.log(📌 Hash: ${tx.hash});
} catch (error) {
console.error("❌ Ошибка:", error);
}
}
sendETH("0xПолучатель", "0.01");По умолчанию ethers.js сам выбирает gas price, мы можем задать его вручную:
добавляем к скрипту следующую фунцкию
async function sendETHWithGas(to, amount) {
try {
const gasPrice = await provider.getFeeData(); // текущая цена газа
const gasLimit = 21000; // минималка gas limit для обычных транзакций
const tx = await wallet.sendTransaction({
to: to,
value: ethers.parseEther(amount),
gasLimit: gasLimit,
maxPriorityFeePerGas: gasPrice.maxPriorityFeePerGas, // приоритет по комиссии
maxFeePerGas: gasPrice.maxFeePerGas, // задается общая комиссия
});
console.log(✅ Транзакция отправлена с кастомным gas!);
console.log(📌 Hash: ${tx.hash});
} catch (error) {
console.error("❌ Ошибка:", error);
}
}
sendETHWithGas("0xКошелек", "0.01");добавляем функцию в наш скрипт
async function getEthBalance(address) {
const balance = await provider.getBalance(address);
console.log(💰 Баланс ETH: ${ethers.formatEther(balance)} ETH);
}
getEthBalance("0xКошелек");Иногда нужно просто подписать данные (например, в DeFi, NFT или логине через блокчейн)
async function signMessage(message) {
const signature = await wallet.signMessage(message);
console.log(📝 Подписанное сообщение: ${signature});
}
signMessage("Я подтверждаю свою личность!");можно узнать, какие транзакции были отправлены или получены по адресу.
async function getTxHistory(address) {
try {
const startBlock = 0; // Ищем с нулевого блока
const endBlock = "latest"; // До последнего блока
const logs = await provider.getLogs({
fromBlock: startBlock,
toBlock: endBlock,
address: address,
});
if (logs.length === 0) {
console.log(❌ Нет найденных событий (logs) для ${address});
return;
}
console.log(📌 Найдено ${logs.length} событий:);
logs.forEach((log, index) => {
console.log(
📌 [${index + 1}] Hash: ${log.transactionHash} | Block: ${log.blockNumber}
);
});
} catch (error) {
console.error("❌ Ошибка при получении истории событий:", error);
}
}ЧТО ДОБАВИТЕ??
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8😍3❤🔥2💘1