VARTCALL – Telegram
VARTCALL
2.3K subscribers
648 photos
13 videos
21 files
589 links
web3 разработка, философия, мысли, практика

по всем предложениям: @jerskrew

экосистема: @vartcode
Download Telegram
😱 SOLANA | Ускоряем запросы + минимизируем затраты

Высокая нагрузка на RPC приводит к 🐺

> Медленной обработке транзакций.

> Большому числу ограничений на запросы.

> Увеличению затрат при использовании платных RPC.

🤷‍♂️ Как работают RPC-запросы в Solana

Solana использует JSON-RPC API для работы с блокчейном

Основные запросы:

getAccountInfo – получение данных о кошельке или смарт-контракте.

getProgramAccounts – поиск всех аккаунтов, связанных с программой.

getTransaction – получение информации о транзакции.

simulateTransaction – эмуляция транзакции перед отправкой.


эти запросы могут нагружать RPC, если их делать неправильно

🥳 УСКОРЯЕМ RPC

Используем solders вместо solana-py

она быстрее, т.к использует Rust-биндинги вместо чистого Python + больше безопасности и сериализация транзакций

2. WebSockets вместо REST

REST-запросы к RPC - лишние расходы.

Вместо этого можно подписываться на события через WebSockets, чтобы получать обновления мгновенно, без лишних запросов))


например подписка на обновления баланса кошелька через WebSockets

import asyncio
from solders.rpc.websocket import SolanaWsClient

async def listen_to_account_changes():
async with SolanaWsClient("wss://api.mainnet-beta.solana.com") as ws:
subnoscription_id = await ws.account_subscribe("PublicKey")

async for msg in ws:
print("Account update:", msg)



asyncio.run(listen_to_account_changes())


3.Кеширование (Redis)

Частые запросы к getAccountInfo или getTransaction можно кешировать.

кеширования баланса через Redis

import redis
import json
from solders.rpc.api import Client
from solders.pubkey import Pubkey

client = Client("https://api.mainnet-beta.solana.com")
redis_client = redis.Redis(host='localhost', port=6379, db=0)

def get_cached_balance(wallet):
cache_key = f"solana_balance:{wallet}"
cached_data = redis_client.get(cache_key)

if cached_data:
return json.loads(cached_data)

balance = client.get_balance(Pubkey.from_string(wallet)).value
redis_client.setex(cache_key, 60, json.dumps(balance)) # Кешируем на 60 сек
return balance

wallet = "PublicKey"
print(get_cached_balance(wallet))


4.Самый ГЕНИАЛЬНЫЙ СПОСОБ - Полигамия RPC

используем несколько узлов и переключаться между ними.

выбор случайного RPC

import random
from solders.rpc.api import Client

RPC_NODES = [
"https://api.mainnet-beta.solana.com",
"https://solana-mainnet.rpcfast.com",
"https://your-private-rpc.com"
]

def get_rpc_client():
rpc_url = random.choice(RPC_NODES)
return Client(rpc_url)

client = get_rpc_client()
print(client.get_slot().value)


Меньше rate limits

Резервный RPC на случай отказа узла.


вот такой СТАРТОВЫЙ СПИСОК!! КАК ВЫ Работаете с ОПТИМИЗАЦИЕЙ??
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6😍5🔥4🤩1💘1
😐 Monad РАЗБЕРЕМ Софт

что за monad?

monad.xyz

L1 совместимый с EVM, разработан для решения проблем масштабируемости и эффективности

параллельное выполнение транзакций и оптимизированная база данных MonadDB, сеть способна обрабатывать до 10 000 транзакций в секунду при времени блока в 0,5 секунды и почти нулевых комиссиях за газ.


🥳 сейчас проект запустил тестнет, но мы что нормисы, чтобы без софта это делать??

СЕГОДНЯ РАЗБЕРЕМ ЧТО ДА КАК!!!

1. Запрос Токенов на testnet.monad.xyz

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

WALLET_ADDRESS = "0xКошелек”

# настройка WebDriver

options = webdriver.ChromeOptions()
options.add_argument("--headless") # Запуск без графического интерфейса

driver = webdriver.Chrome(options=options)

def request_tokens():
try:

Открываем страницу крана
driver.get("https://testnet.monad.xyz/")
time.sleep(3) # Ждем загрузки

# находим поле ввода и вводим адрес кошелька
input_field = driver.find_element(By.XPATH, "//input[@type='text']")
input_field.send_keys(WALLET_ADDRESS)
time.sleep(1)

# Нажимаем кнопку запроса токенов
request_button = driver.find_element(By.XPATH, "//button[contains(text(), 'Request Testnet ETH')]")
request_button.click()

print(" Запрос тестовых токенов отправлен!")
except Exception as e:
print(" Ошибка при запросе токенов:", e)
finally:
driver.quit()

# запускаем
request_tokens()


Далее

Переходим на сайт и коннектим кошелёк

Вводим код: 7AA0B | 2B2EB | C51B2 | C24B6 | C26D0


Минтим Rookie NFT

CODES = [
"7AA0B", "2B2EB", "C51B2", "C24B6", "C26D0"
]

options = webdriver.ChromeOptions()
options.add_argument("--headless")

driver = webdriver.Chrome(options=options)

def mint_nft():
try:

driver.get("https://monad.talentum.id/projects")
time.sleep(3) # ждем загрузки

for code in CODES:
try:
print(f" Пробуем код: {code}")

# находим поле ввода кода и вводим его
input_field = driver.find_element(By.XPATH, "//input[@type='text']")
input_field.clear()
input_field.send_keys(code)
time.sleep(1)

# нажимаем кнопку подтверждения
submit_button = driver.find_element(By.XPATH, "//button[contains(text(), 'Submit')]" )
submit_button.click()
time.sleep(5) # ждем ответа

# проверяем, появилась ли кнопка "Mint Rookie NFT"
try:
mint_button = driver.find_element(By.XPATH, "//button[contains(text(), 'Mint Rookie NFT')]")
mint_button.click()
print(" NFT успешно заминчен!")
break # Прекращаем цикл, если удалось заминтить
except:
print(f" Код {code} не сработал, пробуем следующий...")
except Exception as e:
print(f" Ошибка с кодом {code}: {e}")
finally:
driver.quit()
print("🚀 Скрипт завершил работу.")

#Запуск

mint_nft()


Задачи из гайда я брал тут 🤛

Думаю ПОРА написать ПОЛНОЦЕННЫЙ СОФТ!!

КАК ВАМ ИДЕЯ, ГАЙС????
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥196😍3💘1
🥰 СТРУКТУРА СОФТА PYTHON

универсальная структура для написания ботов, скриптов для блокчейна, арбитражных ботов etc

🤩 main.py – Точка входа в программу. Здесь инициализация сервисов и запуск основных процессов.


- config.py – Хранит основные параметры - RPC-эндпоинты, используемые сети, комиссии и т. д.

- utils/logger.pyНастройка логирования через logging для отладки и мониторинга. 👊

- utils/encryption.py – Безопасная работа с приватными ключами (хранение в .env и дешифрование при запуске)

- services/eth_service.py - Функции для взаимодействия с Ethereum через web3.py

- bots/arbitrage_bot.py - Код арбитражного бота, отслеживающего спреды между биржами.

- tests/Unit-тесты, чтобы проверить работоспособность кода 💰


🥇 Переменные Окружение

.env файлы

PRIVATE_KEY=0x123456789...
INFURA_API=https://mainnet.infura.io/v3/айди-проекта
TELEGRAM_BOT_TOKEN=your_bot_token


Загружаем переменные через python-dotenv:

from dotenv import load_dotenv
import os

load_dotenv()

PRIVATE_KEY = os.getenv("PRIVATE_KEY")
INFURA_API = os.getenv("INFURA_API")


Управление Зависимостями

В requirements.txt и фиксируем зависимости:

web3
python-dotenv
requests
pandas
pytelegrambotapi


🍷 Устанавливаем

pip install -r requirements.txt


Ну и на финал запускаем через Docker

DockerFile

FROM python:3.12
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "main.py"]


далее сборка и запуск

docker build -t crypto_project .
docker run --env-file .env crypto_project


🧃 В результате у нас чистая структура проекта, модульность и удобства для масштабирования и возможность быстрого тестирования!!

ВАШИ ДОПОЛНЕНИЯ ??!!!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥14😍7🔥6💘1
✏️ ПИШЕМ СОФТ С НУЛЯ

как же стартануть в написании скриптов, РАЗБИРАЕМСЯ

☺️ ОСНОВЫ ПРОГРАММИРОВАНИЯ

Python & JavaScript - шикарные решения для старта в крипто-разработки

Питон хорош для написания ботов, автоматизации и работы с API бирж 🤵‍♂️ ⬇️

✏️ JavaScript (TypeScript) – нужен для взаимодействия со смарт-контрактами и написания фронтенда для DApps.


javanoscript.info

learnpython.org

Прекрасные ресурсы для изучения языков, но без практики никуда

w3resource.com/python-exercises - Задачи на Пайтон

jschallenger.com - Задачи на JS

Задачи 👍

Python: основы синтаксиса, ООП, работа с модулями, обработка ошибок.

JavaScript/TypeScript: основы JS, промисы, async/await, работа с API.


☕️ Подключение к Блокчейну

web3.py - Python

ethers.js - JS

Благодаря этим библиотекам мы смотрем подключиться к блокчейну Ethereum и другим EVM и взаимодействовать с ними

🤩 ДЛЯ полного взаимодействия у нас должна быть НОДА!

Поэтому получаем ключ к ней на

infura.io ИЛИ alchemy.com

😱 НАПИСАНИЕ Скриптов

Начинаем Применять наши знания на практике, мои гайды тому пример

Ethers.js с нуля

web3.py с нуля

КАК ВАМ ТАКОЙ СПИСОК?? Разработчики, добавьте что-то от себя!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥114❤‍🔥4💘1
🤫 “Скрытые” механики блокчейна

разбираем базу каждого блокчейн-разработчика

😂 Mempool – зона ожидания транзакций

Прежде чем транзакция попадет в блок, она отправляется в 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 боты

перехватывают твои сделки

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 - невидимый рынок внутри блокчейна

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")


Зачем ?

1⃣ Можно искать закономерности в транзакциях.

2⃣ Можно разрабатывать стратегии защиты от MEV-атак.

ЧТО РАЗБЕРЕМ ДАЛЕЕ? 💰
Please open Telegram to view this post
VIEW IN TELEGRAM
9❤‍🔥2🔥1🐳1💘1
🔥 250 ДНЕЙ В КРИПТО-РАЗРАБОТКИ

https://youtu.be/YqYLqtAWOok

Поддержите активностью!
👍112🔥2
😌 Разаберем Rust – идеальный ли язык для блокчейн-разработки??

Rust в последние годы набирает популярность в крипто-разработке, особенно среди высокопроизводительных блокчейнов, таких как Solana, NEAR, Polkadot и Substrate

РАЗБИРАЕМ

1. Безопасность Памяти 😘

Rust обеспечивает memory safety без необходимости в garbage collector (GC), что критически важно для блокчейнов, где даже небольшие задержки могут приводить к высокому расходу газа или уязвимостям.

🔧 Rust сочетает безопасность памяти (как в Solidity) с высокой производительностью без GC (как C++), что делает его идеальным для блокчейнов.
2. Скорость 🏆

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
🤨 Rust СКРИПТЫ с чего начать?

1. Получение баланса ETH

Этот скрипт подключается к Ethereum (через Infura/Alchemy), получает баланс кошелька и выводит его.

Библиотека: ethers-rs

cargo add ethers

👊 СКРИПТ

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 address: Address = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e".parse()?;
    let balance = provider.get_balance(address, None).await?;

    println!("Баланс: {} ETH", balance);
    Ok(())
}

💻 Вывод: Баланс кошелька в WEI.

2. Отправка транзакции в Ethereum 💰

скрипт отправляет ETH на указанный адрес.

😕 ethers-rs

СКРИПТ

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(())
}

😭 Вывод: Баланс токена USDT у указанного пользователя.

ВОТ ТАКОЕ НАЧАЛО??

КАК ВАМ РАСТ??

ИДЕИ??
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍4🤩2
🎮 ИЩЕМ РАБОТУ В WEB3? Guide

разбираем где и как искать работу блокчейн-разработчикам

Контрибуть в 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 - новые соцсети для крипторазработчиков 🤳


😐 Фриланс через Web3-платформы

Questbook - гранты, задания.

Cryptojobslist - площадка с вакансиями и фриланс-заказами в крипто.

🐺 Ethlance - децентрализованная фриланс-биржа на Ethereum.

LaborX – платформа с крипто-оплатами в USDT, ETH etc.


✏️ Работа через Discord и Telegram

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
🧑‍🌾 WEB3 ПЕТ-ПРОЕКТЫ Разбираем

🐈 Pet-project - личный (не коммерческий) проект, который ты создаешь для изучения технологий, прокачки навыков и создания портфолио.


разбираем такие проекты:

1⃣ Web3 Dashboard для Отслеживания Портфеля

Создаем DApp, которое подключается к кошельку (MetaMask, WalletConnect) и показывает баланс токенов, стейкинг, доходность фарминга, транзакции и другие метрики 💻

Технологии: TypeScript, Next.js, Ethers.js / Viem, The Graph

💰 Фичи:

> Автоподключение к кошельку

> История транзакций

> Анализ доходности

> Поддержка нескольких сетей


2⃣ Блокчейн-бот для Аукционов NFT

⌚️ Бот, отслеживает новые NFT-аукционы на OpenSea / Blur и уведомляет пользователя о самых перспективных лотах.

Python (Web3.py), Solidity, OpenSea API, Telegram Bot API

💪 Фичи:

> Подключение к NFT-маркетплейсам

> Оценка ликвидности коллекций

> Автоматическое размещение ставок

> Уведомления в Telegram


3⃣ Web3 Чат с Крипто-Платежами

🤫 Чат, где можно отправлять сообщения и платить за них криптой.

Solidity, React, IPFS, WalletConnect

Фичи:

> Отправка сообщений через IPFS

> Оплата через smart-contract

> Поддержка ENS 🪙


4⃣ DAO-инструмент для Голосования

Создаем платформу для управления DAO с возможностью голосования и управления токенами.

Solidity (Governor контракт), React, Ethers.js, Hardhat

☕️ Фичи:

> Поддержка голосования на основе токенов

> Гибкие правила голосования

> Подключение к Snapshot / Aragon


5⃣ On-Chain Игровой NFT Маркетплейс

🤬 Маркетплейс для игровых 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🐳42💘1
😮 1000 сабов

безумно рад популяризации блокчейна в нашем пространстве

Двигаемся далее, новые проекты, новый уровень, новые цели 🥰

Спасибо всем, кто присоединился к этому легендарному пути, Легенды!

Shoot For The Stars, Aim For The Moon 💫💫
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍5💘53🤩1😍1
😣 WEB3 СОФТ-Python с НУЛЯ

разбираемся на практике - создаем проекты постепенно набирая обороты

1⃣ Подключение к блокчейну через web3.py

как работать с web3.py и получать информацию из блокчейна? 😑

Устанавливаем web3.py

> Подключаемся к публичному RPC-узлу (Infura или Alchemy)

> Получаем информацию о блоках, балансе кошельков и истории транзакций


2⃣ Создание и подпись транзакций

отправляем транзакции и работаем с приватными ключами 🙏

> Создаем и подписываем транзакцию с помощью web3.py

> Отправь тестовые ETH на Goerli или Sepolia

> Пробуем взаимодействовать с любым смарт-контрактом


3⃣ Автоматизированный сбор данных из блокчейна

🥊 читаем события из блокчейна и работаем с историей транзакций.

> Подключаемся к WebSocket-узлу Ethereum для реального времени

> Пишем Python-скрипт для мониторинга новых блоков и транзакций

> Фильтруем транзакции по адресу, токенам или конкретным контрактам

> Парсим события (logs) из смарт-контрактов (например, переводы токенов ERC-20)

4⃣ Парсинг цен токенов через API бирж - REST API

Получаем информацию о ценах криптовалют с CEX и DEX ✏️

> Подключаемся к API Binance, OKX, KuCoin (CEX)

> Получаем данные о ценах токенов и объёме торгов

> Подключаемся к Uniswap или 1inch API для получения цен на DEX

> Реализовываем мониторинг скачков цен и анализ спредов между биржами


5⃣ Бот для мониторинга резких движений цены (Асинхронность)

Автоматическое отслеживание значительных изменений цен 😭

> Подключиться к нескольким биржам (CEX + DEX)

> Реализовать логику уведомления при изменении цены > X% за Y секунд

> Реализовать Telegram-бота для отправки уведомлений

Добавить функционал, например: просмотр цены по запросу 👊


СТАРТОВЫЙ ПАКЕТ ТАКОВ!!

Как вам?? ИДЕИ!?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥8❤‍🔥3💅2
😢 WEB3 СОФТ-Python

часть №2, практика с нуля до софта

1⃣ Создание и взаимодействие с NFT web3.py

Подключаемся к смарт-контракту ERC-721 или ERC-1155

> Получаем данные о NFT (метаданные, владелец, историю транзакций)

> Отправляем NFT другому пользователю

> Читаем события (Transfer) из NFT-контрактов

ТУЛЗ 👍

Web3.py – работа с Ethereum (чтение данных, транзакции)

IPFS / Pinata – хранение метаданных NFT

Etherscan API – получение истории транзакций


2⃣ DeFi-бот для свопов на DEX

бот для автоматической торговли на Uniswap

> Подключаемся к Uniswap V3 (PancakeSwap или 1inch)

> Получаем ликвидность, цены и объемы

> Совершаем свопы между токенами

> Мониторим цены и автоматически исполненяем сделки

ТУЛЗ 🤩

Web3.py – взаимодействие с контрактами

Uniswap V3 SDK / 1inch API – свопы и цены

AIOHTTP / Asyncio – асинхронные запросы


3⃣ Арбитражный бот между DEX и CEX

Ищем разницу цен и совершаем прибыльные сделки 🎧

> Подключаемся к нескольким DEX и CEX

> Расчитываем спред между биржами

> Автоматически исполненяем арбитражные сделки

> Работаем с flash-loan (по желанию)

ТУЛЗ 😱

CCXT - API для CEX (Binance, OKX, KuCoin)

Web3.py – подключение к DEX (Uniswap, PancakeSwap)

Pandas/Numpy – расчет спредов

Flashbots – для арбитража с flash-loans


4⃣ MEV и снайпинг новых токенов

Продвинутая тема для Web3-разработчиков 🎹

> Мониторинг мемпула и поиск выгодных транзакций

> Написание снайпер-бота для покупки новых токенов

> Фронтраннинг (опционально)

ТУЛЗ 💃

Web3.py + Etherscan API – анализ транзакций

Infura / Alchemy – доступ к мемпулу

Flashbots – отправка приоритетных транзакций

Вот такой спикок софта у нас получился, практикуемся!

🤬 РЕАЛИЗУЕМ ЧТО-ТО ПОДОБНОЕ?? ВАШИ ИДЕИ!!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤‍🔥2👍2💘1
😎 WEB3 SOFT PYTHON РЕАЛизация

разберем, как писать софты из первой и второй части степ бай степ

1⃣ БАЗА

> Подключение к блокчейну

> Отправка Транзакций

> Взаимодействие с DEX CEX биржами Rest API

> Взаимодействие со смарт-контрактами

💩 все подробно расписал в моих python материалах на Teletype

teletype.in/@vartcall/+web-3-python-development


2⃣ Advanced

Бот для мониторинга резких движений цены (Асинхронность)

> Подключение к 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 / PancakeSwap / 1inch

> Подключаемся к 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🔥217😍3💘1
🔧 WEB3 SOFT ПРАКТИКА

часть №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}")


👊 MEV и снайпинг новых токенов

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🤩21