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

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

экосистема: @vartcode
Download Telegram
🗣 вот и лайф

Написали скрипты, теперь можно и развеяться

Как вы проводите воскресенье? Ваши идеи на следующие видео, посты 🙏
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
🥰 Что подарить девушке, любовнице, жене, маме или дочери??

в честь такого прекрасного праздника у меня есть решение 💸

конечно это доступ в Guide Dao

Благодаря этим легендам я намного быстрее вошел в блокчейн

Разобрался с JS/TS c нуля, взаимодействовал с Ethers.js и наконец писал свои дапки подключив React.

🪙Далее подключил Solidity, считаю что у Guide Dao самое подробное объяснение этой технологии с нуля, особенно задачи и поддержка менторов

Также мне нравятся постоянные созвоны в Discord, где мы кодим, изучаем новое и общаемся с менторами и другими участниками дао!

Также недавно они добавили новый буткемп по AI-Agents

Результат - Дао развивается, проекты пишуться

😊 Для ЛУЧШЕГО СТАРТА - БОНУС

Прямо сейчас в ДАО $LIBRA SALE -20% до 10 марта

И финальный бонус от меня -10% по промокоду VARTCALL

https://www.guidedao.xyz/

Скидки на сайте ДАО - Суммируются

Успевай порадовать свою музу
🥳
Please open Telegram to view this post
VIEW IN TELEGRAM
😍9🤩3👌3💅2🐳1
💰 JS & TS с НУЛЯ для БЛОКЧЕЙН-РАЗРАБОТЧИКОВ

наши герои лета 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
🔥346🐳6💘1
🐿 JS/TS INTRO - Установка Компонентов

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
🌃 JS/TS INTRO - Основы и Работа с API

🤵‍♂️ Материалы по стеку - БАЗА

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
👍134🐳2🤩1💘1
🍌 JS/TS Кошельки X Транзакции

В этом “гайде” разберем:

💰 Отправку обычных ETH-транзакций

> Добавление комиссии (gas) вручную

> Чтение истории транзакций

> Создание подписанных сообщений

🫥 Используем ethers.js для взаимодействия с блокчейном и dotenv для хранения приватных данных


скрипт с кодом этого урока ниже

🔫 Инициализация Проекта

В папке проекта 🔽

Создаем index.js для нашего скрипта

.env файл для хранения приватных данных

npm init -y для удобного управления зависимостями проекта


1⃣ Отправка ETH-транзакции (Классическая транзакция ETH)

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


2⃣ Отправка ETH с настройкой газа - комисии

По умолчанию 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");


3⃣ Проверка баланса кошелька (ETH & токены)

добавляем функцию в наш скрипт

async function getEthBalance(address) {

const balance = await provider.getBalance(address);

console.log(💰 Баланс ETH: ${ethers.formatEther(balance)} ETH);

}

getEthBalance("0xКошелек");


4⃣ Подписание сообщений (без отправки транзакции)

Иногда нужно просто подписать данные (например, в DeFi, NFT или логине через блокчейн)

async function signMessage(message) {
const signature = await wallet.signMessage(message);
console.log(📝 Подписанное сообщение: ${signature});
}

signMessage("Я подтверждаю свою личность!");


5⃣ Получение истории транзакций

можно узнать, какие транзакции были отправлены или получены по адресу.

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


💸 Далее будем продвигаться к смарт-контрактам и написанию тестов на JS

ЧТО ДОБАВИТЕ?? 🤗
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8😍3❤‍🔥2💘1
index.js
3.4 KB
🍷 JS Транзакции
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥93🎉2😍1
🌅 JS/TS - Смарт-Контракты С НУЛЯ - ABI edition

зачем знать смарт-контракты??

1⃣ Интеграция с Web3 - разработка ботов и софта, работающего с блокчейном (арбитражный бот, DEX-агрегатор).

2⃣ Автоматизация финансов - создание контрактов для DeFi, лендинга, стейкинга, автоматических платежей.

3⃣ Безопасность блокчейна - проверка и аудит смарт-контрактов (поиск уязвимостей, защита от взломов)

4⃣ Доходы – Web3-разработчики зарабатывают $100k+ в год, а аудиторы контрактов $10k+ за проверку

5⃣ Чтение ABI и взаимодействие с контрактами - анализируем чужие контракты, отправлять транзакции без UI и работаем напрямую с Etherscan, Infura, Alchemy.


ПОЭТОМУ СЕГОДНЯ РАЗБЕРЕМ!

Что такое ABI и зачем оно нада? 📸

Как читать ABI, находить методы и отправлять транзакции через JS/TS


🤫 ABI (Application Binary Interface) - описание всех функций смарт-контракта, их аргументов и возвращаемых данных.

Без ABI мы не сможем вызвать методы контракта из кода


🫥 Пример ABI для ERC-20 токена:

[
{
"constant": true,
"inputs": [{"name": "owner", "type": "address"}],
"name": "balanceOf",
"outputs": [{"name": "", "type": "uint256"}],
"type": "function"
}
]


😭 balanceOf(address) - возвращает баланс указанного адреса.

inputs: owner (address) - принимает адрес кошелька.

outputs: uint256 - возвращает баланс в токенах.


🌅 Где берем ABI?

Находим контракт на Etherscan

Contract - Read/Write

Скачать ABI - "Contract ABI"

Вставить в код для работы с контрактом


🤪 Как читать ABI и находить методы контракта?

Структра Проекта 👮‍♂️

npm install ethers dotenv

index.js - основной скрипт

.env для приватных данных

скрипт

import { ethers } from "ethers";

import as dotenv from "dotenv";

dotenv.config();

const provider = new ethers.JsonRpcProvider(

https://mainnet.infura.io/v3/${process.env.INFURA_API_KEY}

);

// адрес контракта USDT

const contractAddress = "0xdAC17F958D2ee523a2206206994597C13D831ec7";

// ABI для ERC-20

const abi = [

"function balanceOf(address owner) view returns (uint256)",

"function transfer(address to, uint256 amount)",

];

// объект контракта

const contract = new ethers.Contract(contractAddress, abi, provider);

async function getBalance(address) {

const balance = await contract.balanceOf(address);

console.log(💰 Баланс: ${ethers.formatUnits(balance, 6)} USDT);

}

getBalance("0xКошелек");


🔫 Как?

Подключаемся к Ethereum через Infura

Находим контракт USDT по адресу

Вызываем balanceOf() и получает баланс


пример №следующий

Как читать переменные из контракта (name, symbol, totalSupply) - $USDC

// адрес контракта USDC
const contractAddress = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48";

// ABI с нужными методами
const abi = [
"function name() view returns (string)",
"function symbol() view returns (string)",
"function totalSupply() view returns (uint256)"
];

const contract = new ethers.Contract(contractAddress, abi, provider);

async function getContractInfo() {
const name = await contract.name();
const symbol = await contract.symbol();
const totalSupply = await contract.totalSupply();

console.log(📌 Токен: ${name} (${symbol}));
console.log(💰 Всего выпущено: ${ethers.formatUnits(totalSupply, 6)} ${symbol});
}

getContractInfo();


пример №ФИНАЛ

🥰 Отслеживаем события контракта (Transfer) WEBSOCKET EDITION

const provider = new ethers.WebSocketProvider(
wss://mainnet.infura.io/ws/v3/${process.env.INFURA_API_KEY}
);

// адрес USDC
const contractAddress = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48";

// ABI с событием Transfer

const abi = [
"event Transfer(address indexed from, address indexed to, uint256 value)"
];

const contract = new ethers.Contract(contractAddress, abi, provider);

// Подписка на события Transfer

contract.on("Transfer", (from, to, value) => {
console.log(🔄 Перевод: от ${from} → к ${to} на сумму ${ethers.formatUnits(value, 6)} USDC);
});

console.log("📡 Ожидание новых переводов USDC...");


БАЗА ВЫДАНА!! РАЗБЕРЕМ ПОДРОБНЕЕ ABI???
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍166🐳4💘1
🥳 WebSocket x JS/TS

Если ты хочешь отслеживать крупные сделки, мемпул или события контрактов в блокчейне, нужно использовать WebSocket (wss://)

🤨 Компоненты

npm install ethers dotenv

dotenv (.env файл) служит для приватных данных

INFURA_API_KEY=НАШ_INFURA_API_KEY

ethers.js - подключение к блокчейну


скрипт

Подключаемся к WebSocket ноде:

import { ethers } from "ethers";

import as dotenv from "dotenv";

dotenv.config();

const provider = new ethers.WebSocketProvider(

wss://mainnet.infura.io/ws/v3/${process.env.INFURA_API_KEY}

);

console.log("📡 WebSocket подключен к Ethereum...");


😳 отлеживаем новые блоки

provider.on("block", (blockNumber) => {
console.log(📡 Новый блок: ${blockNumber});
});
// так мы "мониторим" активность в блокчейне


Отслеживаем входящие транзакции (mempool)

provider.on("pending", async (txHash) => {
try {
const tx = await provider.getTransaction(txHash);
if (tx) {
console.log(`🔄 Входящая транзакция: От ${tx.from} → Кому: ${tx.to} | Сумма: ${ethers.formatEther(tx.value)} ETH`);

}

} catch (error) {
console.error("Ошибка при получении транзакции:", error);

}

});


Отслеживаем события контрактов (переводы токенов)

отслеживаем переводы $USDC (Transfer)

ABI для события Transfer:

const abi = [
"event Transfer(address indexed from, address indexed to, uint256 value)"
];


😭 подписка на Transfer

const contractAddress = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; // USDC
const contract = new ethers.Contract(contractAddress, abi, provider);

contract.on("Transfer", (from, to, value) => {
console.log(🔄 Перевод USDC: От ${from} → Кому: ${to} | Сумма: ${ethers.formatUnits(value, 6)} USDC);
});


🙏 Фильтр событий на конкретный адрес

const myWallet = "0xКошелек";

contract.on("Transfer", (from, to, value) => {

if (to.toLowerCase() === myWallet.toLowerCase()) {

console.log(

Ты получил ${ethers.formatUnits(value, 6)} USDC от ${from}

);

}

});


скрипт показываем переводы только на наш кошелек 💰

Теперь мы мониторим все события в блокчейне в реальном времени!

😕 Эти знания помогут в последующем написании арбитражных ботов, фронт раннинга и создании WEB3 Приложений


ВАШИ ИДЕИ? Что ДАЛЕЕ!! 🙌
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍112🔥2🐳2