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

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

экосистема: @vartcode
Download Telegram
🧠 AI-АГЕНТЫ ШО И КАК ??

Подробный Материал

Но сегодня кратко разберем процесс создания

Python — для ML/AI моделей и работы с API.

JavaScript/TypeScript — для интеграции с dApps.

Solidity — если нужно взаимодействие со смарт-контрактами.


Библиотеки для AI:

scikit-learn, TensorFlow, PyTorch — для машинного обучения.

pandas, NumPy — для обработки данных.

web3.py или ethers.js — для взаимодействия с блокчейном.


Сбор и обработка данных

AI-агенту нужны данные для обучения и принятия решений:

Крипто-рынок:

Использум API бирж:

Блокчейн-данные:

Используй Infura, Alchemy или свои ноды для получения данных из Ethereum

Для анализа транзакций — web3.py


Обработка данных:

> Очистка данных (фильтрация ошибок).
> Создание признаков (features) для модели.

Обучение:

> Делим данные на тренировочные и тестовые.
> Настройка гиперпараметров.
> Проверка качества модели (точность, F1-score и т.д.).

Начальные затраты +- $800 - $1500 - (CPU, GPU, RAM, SSD)

Набираем Активность и буду собирать своего Агента 😱
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥16🔥32🤩1🏆1
🎹 AI AGENTS С НУЛЯ

собрал все стримы с нашего дао на эту тему

1. Основы Использование LLM (Введение в Разработку AI Агентов)

2. Работа с LLM как с мозгом AI Агентам

3. Введение в Разработку Агентов

4. Основы Работы с LLM + Фреймворки с Агентами

5. Фреймворки Агентов Часть №2

6. Написали Агента на TypeScript

7. Фреймворки Агентов + Crew AI

+10 часов альфы, разбираемся

К слову сейчас в GuideDao 25% скидона на вступление. Также +10% по промокоду VARTCALL

guidedao.xyz

💫💫 Самое время покорить AI Агентов
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩6❤‍🔥2🔥1🍓1
python НА АРБИТРАЖЕ 😑

в связи с качелями на рынке пора научиться писать арбитраж-ботов па пайтон

спасибо за идею AIO 💋

1. Библиотеки

> ccxt — для работы с API криптобирж

> asyncio — для асинхронных запросов

> python-dotenv — для безопасного хранения API-ключей

> requests (если нужно работать с REST API напрямую)


2. Данные

Регаемся на биржах и создаем новые API-ключи с правами только на чтение (для начала тестов) + сохраняем их в .env файле проекта

3. Логика

> Подключение к API бирж ⬇️

Используем библиотеку ccxt, чтобы подключиться к нескольким биржам (например, Binance и KuCoin)

> Загрузка всех торговых пар (token/market)

Загружаем список всех токенов и торговых пар с каждой биржи.

Это делается с помощью exchange.load_markets().


Определение, где торгуется каждый токен

Создаём словарь вида:

{
"BTC/USDT": ["Binance", "KuCoin"],
"ETH/USDT": ["Binance"],
}


Для каждой биржи вызываем fetch_tickers(), чтобы получить актуальные цены всех токенов за один запрос.

4. Обработка скачков цен

> Сохраняем предыдущие значения цен для каждого токена 😊

> Для каждой новой цены сравниваем с предыдущей:

Если изменение цены превышает установленный порог (например, 5%), выводим уведомление:

> Используем asyncio для параллельной работы с API бирж, чтобы не блокировать выполнение.

> Каждые 30 секунд повторяем процесс мониторинга 🚬


5. Цикл Работы Бота

> Подключение к API бирж 👎

> Загрузка всех токенов и определение, на каких биржах они доступны.

> Мониторинг цен для всех токенов.

> Вычисление изменений и поиск резких скачков.

> Уведомление о скачках в бот

> Пауза (несколько минут) и повторение цикла.


50 🔥 и дропаю такой софт
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥56👍75
😈 МУЛЬТИКАЛ ЧТО ЭТО??

разбимаемся с DEX арбитражем часть №1

Multicall (MC) - смарт-контракт, принимающий массив вызовов к другим контрактам и обрабатывает их одновременно.

Он возвращает результаты всех вызовов в одном ответе снижая нагрузку на сеть и делает взаимодействие с блокчейном более эффективным.


Благодяря MC мы можем проверять цен на нескольких биржах DEX одновременно

Как используем:

Библиотеки для Multicall

web3.py - база

eth-brownie - фреймворк для разработки смарт-контрактов, также поддерживает multicall.

multicall.py - библиотека для работы с Multicall.


Структура арбитраж-DEX-бота:

> Используем UNISWAP Factory Contract Address - контракт для управления пулами + его ABI

> Получает адреса всех пар ликвидности на Uniswap V2.

> Для каждой пары выполняем запрос к функции getReserves(), чтобы получить текущие резервы токенов.

> Используем Multicall для объединения множества вызовов в один, что снижает нагрузку на RPC и ускоряет выполнение.


Multicall работает только с DEX биржами, если писать CEX бота - ипользуем

> async/await

> WebSocket для подписки на данные в реальном времени

> threading или multiprocessing для параллельной обработки


через Multicall мы уменьшаем количество запросов к API & повышаем скорость работы софта 💰
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥2💅2
⚔️ EIP-1559 - ЧТО И КАК??

разберемся как писать такие транзакции и зачем все это

EIP-1559 - вместо традиционной системы аукциона (где пользователи конкурировали за включение своих транзакций в блок),

EIP-1559 ввёл механизм с фиксированной базовой комиссией (base fee) и опциональной чаевой (tip) для валидаторов Ethereum


До внедрения EIP-1559 в Ethereum (август 2021 года), использовалась классическая модель "аукциона первой цены" (first-price auction) для расчёта комиссии за транзакции.

Эти транзакции называются "Legacy-транзакции".

Основные изменения EIP-1559:

Base Fee: автоматически регулируемая комиссия, сжигаемая после каждой транзакции. Это уменьшает общее предложение ETH, создавая дефляционное давление.

Tip (Priority Fee): дополнительная комиссия, которую пользователь может добавить, чтобы ускорить обработку своей транзакции.

Dynamic Fee Structure: комиссия изменяется в зависимости от загруженности сети.


🐍 Как написать EIP-1559 транзакция на Python?

transaction = {
'from': account.address,
'to': to_address,
'value': w3.to_wei(0.01, 'ether'),
'nonce': w3.eth.get_transaction_count(account.address),
'maxFeePerGas': w3.to_wei(100, 'gwei'),
'maxPriorityFeePerGas': w3.to_wei(2, 'gwei'),
'gas': 21000,
'chainId': 1
}


Максимальная комиссия за газ - 'maxFeePerGas': w3.to_wei(100, 'gwei')

Чаевые для валидаторов (для ускорения транзакций) - 'maxPriorityFeePerGas': w3.to_wei(2, 'gwei')

😊 Пример в софтах

> Арбитражные боты отслеживают цены на разных биржах и быстро отправляют транзакции, чтобы зафиксировать прибыль.

Здесь важно уметь регулировать комиссии (maxFeePerGas и priorityFee), чтобы транзакция была обработана быстрее конкурентов

> AirDrop Кошелёк

Загружаем CSV с адресами + скрипт автоматически создаёт и отправляет транзакции


В результате используем EIP для новых приложений и софта, а Legacy для работы со старыми контрактами и сетями
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🤩21❤‍🔥1👍1💅1
🙄 ОБХОДИМ КАПЧИ WEB3

использование пайтон скриптов для обхода reCAPTCHA, hCaptcha и Cloudflare Turnstile защиты

1. Сервисы с OCR или нейросети

2Captcha

Anti-Captcha

CapMonster

пример па пайтон (отправка запроса на решение капчи)

captcha_request = requests.post("http://2captcha.com/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": SITE_KEY,
"pageurl": URL,
"json": 1
}).json()


2. Браузерной автоматизации (Selenium, Playwright, Puppeteer)

page.wait_for_selector('iframe[src*="hcaptcha.com"]', timeout=60000)

# Получение токена и выполнение формы
captcha_response = page.evaluate('''() => {
return document.querySelector('[name="h-captcha-response"]').value;
}''')


но такой вариаент требует открытого браузера + капчи часто меняются (


3. Обход Cloudflare (Turnstile, IUAM, JS Challenge)

Если сайт использует Cloudflare, то можно использовать cloudscraper:

scraper = cloudscraper.create_scraper()
response = scraper.get("https://binance.com")


🤔 Для чего?

> Автоматизации торговли (быстрые сделки, арбитраж).

> Фарминг дропов

> Минт NFT без задержек.

> Подтверждения транзакций без ручного ввода.

> Мониторинг данных (цены, ликвидность, ордербук).


Разбираем подробнее этот процесс? 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12😍3🐳21💅1
🎮 MEV БОТЫ ЧТО И КАК?

MEV - Maximal Extractable Value - программы эксплуатирующие механизмы упорядочивия транзакций в блоках, получая прибыль за счёт фронт-раннинга, арбитража и сэндвич-атак.

В основе работы MEV-ботов лежит тот факт, что майнеры и валидаторы могут изменять порядок транзакций в блоке. Боты анализируют мемпул (список неподтверждённых транзакций) и ищут прибыльные возможности, включая:

> Фронт-раннинг
> Сэндвич-атаки
> DEX-арбитраж
> Ликвидация позиций


🏃 Фронт-раннинг - Бот находит выгодную транзакцию, которую кто-то собирается выполнить (например, крупную покупку токена).

Создаёт свою транзакцию с повышенной комиссией и отправляет её в блок раньше оригинальной. В результате цена токена растёт, и бот продаёт его с прибылью.

🥪 Сэндвич-атаки - Бот обнаруживает транзакцию на покупку токена, отправляет свою покупку перед этой транзакцией, поднимая цену. Затем он отправляет продажу после чужой покупки, фиксируя прибыль.


☕️ Как Реализовывать?

> web3.py библиотека для взаимодействия с блокчейном Ethereum.

> Infura / Alchemy для доступа к Ethereum-ноде.

> Мемпул-анализ - механизм мониторинга транзакций в реальном времени.

> Алгоритмы арбитража или фронт-раннинга для поиска прибыльных транзакций.

> Быстрое исполнение - оптимизированное создание и подпись транзакций.


пример получения информации из мемпула (реального времени)

pending_tx_filter = w3.eth.filter('pending')

def analyze_mempool():
pending_txs = pending_tx_filter.get_new_entries()
for tx_hash in pending_txs:
try:
tx = w3.eth.get_transaction(tx_hash)
print(f"📡 New TX: {tx['from']} -> {tx['to']} | Gas: {tx['gasPrice']}")
except Exception:
continue

while True:
analyze_mempool()


+ можно добавить Flashbots - отправка транзакций напрямую майнерам для скрытия от мемпула.

вот такой старт, набираем активности и реализуем такого 😱
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍75😍1🍓1
💪 Берем Максимум от Etherscan Api

разберем пару софтов с использованием этой апи

1. Бот для отслеживания крупных транзакций (Whale Tracker 2.0)

Бот мониторит блокчейн Ethereum в реальном времени, отслеживая крупные транзакции (например, больше 1000 ETH). При обнаружении отправляет уведомление в Telegram или Discord.


пример кода на фильтр транзакций с большой суммой ETH

def filter_large_transactions(transactions):
global LAST_BLOCK
large_txs = []

for tx in transactions:
block_number = int(tx["blockNumber"])
if LAST_BLOCK and block_number <= LAST_BLOCK:
continue # Пропускаем уже обработанные транзакции

eth_value = int(tx["value"]) / 10**18 # Переводим в ETH
if eth_value >= ETH_THRESHOLD:
large_txs.append(tx)

if transactions:
LAST_BLOCK = int(transactions[0]["blockNumber"]) # Обновляем последний блок
return large_txs


2. Анализатор прибыли и убытков кошелька

🗒 Приложение анализирует историю транзакций кошелька и рассчитывает прибыль/убыток на основе покупки/продажи токенов и стоимости газа.

Основной анализатор прибыли и убытков


def analyze_pnl():
transactions = get_wallet_transactions()
total_income = 0
total_expense = 0
gas_fees = 0

for tx in transactions:
eth_value = int(tx["value"]) / 10**18 # ETH перевод из Wei
gas_cost = (int(tx["gasPrice"]) * int(tx["gasUsed"])) / 10**18 # Стоимость газа в ETH
timestamp = int(tx["timeStamp"])
date_str = datetime.utcfromtimestamp(timestamp).strftime('%d-%m-%Y')

# Получаем цену ETH на дату транзакции
eth_price = get_eth_price(date_str)
if not eth_price:
continue # Пропускаем, если цену не удалось получить

usd_value = eth_value * eth_price
gas_usd = gas_cost * eth_price

if tx["to"].lower() == ETH_ADDRESS.lower():
total_income += usd_value # Приход ETH
else:
total_expense += usd_value # Отправка ETH
gas_fees += gas_usd # Комиссия за газ

time.sleep(60) # Чтоб не перегружать API

# 🔥 Итоговая прибыль (PnL)
pnl = total_income - (total_expense + gas_fees)
print(f"💰 Приход: ${total_income:.2f}\\\\n📉 Расходы: ${total_expense:.2f}\\\\n⛽️ Комиссия за газ: ${gas_fees:.2f}\\\\n📊 Итоговый PnL: ${pnl:.2f}")
analyze_pnl()


3. Дашборд активности смарт-контракта

Веб-приложение, отображающее информацию о вызовах функций конкретного смарт-контракта, количестве пользователей и обороте токенов.


в результате каждый из этих скриптов можно интегрировать в бот и получать самую свежую инфу сразу 🤦‍♂️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥71❤‍🔥1💅1
😐 ЦЕПНАЯ СВЯЗЬ - ЧТО И КАК?

chain.link

Chainlink прежде всего для работы с оракулами - то есть для получения внешних данных в смарт-контрактах.

блокчейн - изолированная среда, он не может просто так получать данные с интернета - цены активов, мировые событие etc и ChainLink решает эту проблему


Пример 🔽

Оракулы для взаимодействия с реальным миром
Если нужно подтягивать данные с бирж, API погоды или спортивных событий, можем написать Python-скрипт, который отправляет данные в смарт-контракт через Chainlink.


пример ⚔️

оракул на Python получает данные из внешнего API (например, цену BTC/USD с CoinGecko) и передает их в смарт-контракт через Chainlink Functions.

Solidity Контракт 😔

contract OracleConsumer {
int256 public btcPrice;
address public oracle;

event PriceUpdated(int256 newPrice);

modifier onlyOracle() {
require(msg.sender == oracle, "Not authorized");
_;
}

constructor(address _oracle) {
oracle = _oracle; // Адрес оракула
}

function updatePrice(int256 _price) external onlyOracle {
btcPrice = _price;
emit PriceUpdated(_price);
}


Пайтон скрипт

# Получение цены BTC/USD
def get_btc_price():
url = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd"
response = requests.get(url)
data = response.json()
return int(data["bitcoin"]["usd"] * 10**8) # Конвертируем в формат int256

# Обновление цены в смарт-контракте
def update_smart_contract():
btc_price = get_btc_price()
print(f"Полученная цена BTC/USD: {btc_price / 10**8} USD")

# Формирование транзакции
tx = contract.functions.updatePrice(btc_price).build_transaction({
'from': ORACLE_ADDRESS,
'nonce': w3.eth.get_transaction_count(ORACLE_ADDRESS),
'gas': 100000,
'gasPrice': w3.to_wei('10', 'gwei')
})


Python-скрипт запрашивает цену BTC/USD с CoinGecko 💰

> Формирует транзакцию и подписывает её.

> Отправляет данные в смарт-контракт.

> Контракт обновляет цену, и любое приложение в блокчейне может её использовать.


пример 2

Доступ к блокчейн-данным через Python 🤩

скрипт показывает, как получить:

Баланс адреса в ETH

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

Актуальную цену ETH/USD через Chainlink


# Получение баланса ETH
def get_eth_balance(address):
balance_wei = w3.eth.get_balance(address)
balance_eth = w3.from_wei(balance_wei, 'ether')
return balance_eth

# Получение актуальной цены ETH/USD через Chainlink

def get_eth_price():
contract = w3.eth.contract(address=CHAINLINK_FEED, abi=FEED_ABI)
latest_data = contract.functions.latestRoundData().call()
price = latest_data[1] / 10**8 # Chainlink возвращает цену с 8 знаками после запятой
return price


# Получение последних 10 транзакций с Etherscan API

def get_recent_transactions(address):
ETHERSCAN_API_KEY = "YOUR_ETHERSCAN_API_KEY"
url = f"https://api.etherscan.io/api?module=account&action=txlist&address={address}&startblock=0&endblock=99999999&sort=desc&apikey={ETHERSCAN_API_KEY}"
response = requests.get(url).json()
transactions = response["result"][:10] # Берем последние 10 транзакций
return transactions


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

Расписываем подробнее? 😴
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9😍2🐳1💅1
😭 Солана на Пайтон ШО ТАМ?

база по солане

Для взаимодействия используем либу Solana.py

🔫 База по взаимодействию

Подключение к Solana (Devnet/Testnet/Mainnet) ⬇️

> Генерация нового ключа и кошелька.

> Получение баланса кошелька.

> Отправка SOL с одного адреса на другой.


Разберем пару скриптов

from solana.rpc.api import Client

# Подключаемся к Solana Devnet (для тестирования)

client = Client("https://api.devnet.solana")

# работает ли соединение

print(client.is_connected())


Создаём новый кошелек Solana + Получаем его баланс + Запрос airdrop (только в Devnet) и Отправка 0.01 SOL на другой кошелек.

keypair = Keypair.generate()
public_key = keypair.public_key
private_key = base58.b58encode(keypair.secret()).decode() # Для сохранения

# Получаем баланс

def get_balance(pubkey):
balance = client.get_balance(pubkey)
return balance["result"]["value"]

# Запрашиваем airdrop (только в Devnet)

print("🚀 Запрашиваем airdrop 1 SOL...")
client.request_airdrop(public_key, 1_000_000_000)
time.sleep(20) # Нужно подождать подтверждения транзакции

# Отправка 0.01 SOL другому кошельку

receiver = PublicKey("8K4wR1vYyqM3Z9oeGypvVX5vKYJefT3gT9sAeZKqPmWv")
amount = 10_000_000 # 0.01 SOL в лампортах

txn = Transaction().add(
transfer({"from_pubkey": public_key, "to_pubkey": receiver, "lamports": amount})
)

print("📤 Отправляем 0.01 SOL...")

try:
txn_signature = client.send_transaction(txn, keypair, opts=TxOpts(skip_confirmation=False))
print(f" Транзакция отправлена! Signature: {txn_signature['result']}")
except Exception as e:
print(f" Ошибка: {e}")


Дальше хочу разобрать следующее 😠

Работа со смарт-контрактами Solana

> Создание и управление токенами SPL

> Подключение и взаимодействие с Raydium и другими Solana Dex

> Работа с WebSockets


Неплохой вариант для оптимизации действий в Solana, учитывая МОЩЬ этой экосистемы

Разбираем Далее? 💩
Please open Telegram to view this post
VIEW IN TELEGRAM
51🔥14❤‍🔥4🤩3
😌 Web3 Python С Нуля

10 января на канале началась серия постов по web3 на Python

Вышло огромное количество материала - пересматриваем

Но нам не хватило практики, пора исправить это

😊 В январе познакомился с AIO Study

Был рад перечню материала которую они предоставляют на обучении web3 Python, от азов ООП до интеракции с Solana

так вот

До 13 февраля действует скидон на обучение -15%, далее мы начинаем 3 месяца фул обучение

🎮Буду ждать вас там, вот

Сайт + Бонусы

Начинаем
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥32❤‍🔥1😍1
😔 ТРАНЗАКЦИИ НА СОЛАНА - ШО И КАК?

отправлять их мы будем через IDL

IDL (Interface Definition Language) JSON-файл, описывающий, какие методы есть в программе, какие аргументы они принимают, и какие аккаунты участвуют в транзакциях.

🤩 На основе IDL создается объект программы, который предоставляет методы для взаимодействия с программой на Solana.


Если используем фреймворк Anchor для разработки программ на Solana, то IDL автоматически генерируется при компиляции программы.

🤩 Пример полного взаимодействия с программой через IDL (клиентский код)

from anchorpy import Idl, Program
from solana.rpc.api import Client
from solana.publickey import PublicKey
from solana.account import Account
import asyncio

# 1. Подключение к Solana RPC

client = Client("[https://api.devnet.solana.com](https://api.devnet.solana.com/)")

#2. Загрузка IDL

with open("idl.json", "r") as f:
idl = Idl.from_json(f.read())

#3. Создание объекта программы

program_id = PublicKey("ПрограммаПубличныйКлюч")
program = Program(idl, program_id, client)

#4. Подготовка данных

from_account = PublicKey("ПубличныйКлючОтправителя")
to_account = PublicKey("ПубличныйКлючПолучателя")
amount = 1_000_000 # 0.001 SOL

#5. Приватный ключ отправителя

private_key = bytes([...]) # Замените на ваш приватный ключ
signer = Account(private_key)

#6. Вызов метода программы

async def call_transfer():
tx = await program.rpc["transfer"](
amount,
accounts={
"from": from_account,
"to": to_account,
"system_program": PublicKey("11111111111111111111111111111111")
},
signers=[signer]
)
print("Транзакция отправлена:", tx)

#Запуск асинхронной функции

asyncio.run(call_transfer())


👋 Что происходит под капотом?

1. Формирование инструкции:

> Клиентский код на основе IDL формирует инструкцию для вызова метода программы

2. Создание транзакции:

> Инструкция добавляется в транзакцию.

3. Подпись транзакции:

> Транзакция подписывается отправителем.

4. Отправка транзакции:

> Транзакция отправляется в сеть Solana через RPC.

⌨️ Хотя Anchor автоматически генерирует IDL и клиентский код, нам всё равно нужно:

1. Настроить подключение к Solana:

> Указать, к какому RPC-узлу подключаться (например, Devnet или Mainnet)

2. Указать параметры вызова

> Передать аргументы метода (сумму перевода, etc).

> Указать аккаунты, которые участвуют в транзакции (отправитель и получатель).

> Подписать транзакцию Указать, кто подписывает транзакцию (отправитель).


🙄 Ваша активность, мой + к желанию написать фулл статейку по Solana на Python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14🤩5❤‍🔥4
🎹 SOLANA SPEED_UP ГУЙД

база - выполнения транзакций зависит от - загруженности сети, комиссии за транзакцию и правильной настройку кода.


разберем все

1. Использование более высокой комиссии

sender = Keypair()  # Ваш кошелек
receiver = PublicKey("RECEIVER_PUBLIC_KEY") # Публичный ключ получателя
amount = 1000000 # Сумма в lamports (1 SOL = 1000000000 lamports)

# Создаем транзакцию с повышенной комиссией
txn = Transaction().add(transfer(TransferParams(
from_pubkey=sender.public_key,
to_pubkey=receiver,
lamports=amount
)))

# Указываем приоритет (добавляем комиссию)
txn.recent_blockhash = client.get_recent_blockhash()["result"]["value"]["blockhash"]
txn.fee_payer = sender.public_key
txn.sign(sender)


В этом примере вы можете увеличить комиссию, добавив больше lamports в поле lamports.

2. RPC УЗЛЫ

собственный RPC или быстрый сторонний RPC-провайдера (QuickNode например) может значительно ускорить отправку и подтверждение транзакций.

client = Client("тут_ссылка_на_rpc")


3. Параллельная отправка транзакций

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

import asyncio
from solana.rpc.async_api import AsyncClient

async def send_transaction_async():
client = AsyncClient("https://api.mainnet-beta.solana.com")
# Ваш код для создания и отправки транзакции
await client.send_transaction(txn)
await client.close()

asyncio.run(send_transaction_async())

база

далее advanced lvl )) ☔️

4. Локальные блоки (слот leader)

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

5. Durable Nonce

В Solana есть механизм Durable Nonce, который позволяет избежать проблем с устаревшими nonce и ускорить обработку транзакций.

😱 nonce - уникальное число, которое добавляется к данным для обеспечения их уникальности или для выполнения определенных условий


nonce_account = Keypair()
txn = Transaction().add(create_nonce_account(
from_pubkey=sender.public_key,
nonce_pubkey=nonce_account.public_key,
authority=sender.public_key,
lamports=1000000
))


+Убедитесь, что код не содержит задержек и использует последние версии библиотек для Solana.

мысли?
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥7🤩2🐳2🤔1😍1
🎮 Web3 x Python | финиш

Через три часа стартует наше обучение web3 автоматизации на пайтон у AIO Study

😭 я тоже решил принять в нем участие и буду делиться всем что будет просходить

завтра цены на обучение повышаются, поэтому....

финальный бонусный промокод

жду вас

P.s всем кто регистрируется по моему бонусу - отпишите в поддержку @aio_supp от меня также будет бонуска вам

Готовы? (это будет легендарно) 🤫
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🤩1😍1🐳1
😱 SOLANA НА ДЕКСЫ ШО ТАМ??

начнем с jupiter

pip install requests solana (две либы для взаимодействия)

Подключение к Jupiter API

Jupiter предоставляет REST API для получения маршрутов обмена и выполнения свопов.

Основные эндпоинтс:

Маршруты обмена:

Выполнение свопа:

Маршрут обмена SOL/USDC

import requests

# Эндпоинт для получения маршрутов

url = "https://api.jup.ag/swap/v1/quote"

# Параметры запроса

params = {
"inputMint": "So11111111111111111111111111111111111111112", # SOL
"outputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", # USDC
"amount": 1000000000, # 1 SOL (в lamports)
"slippageBps": 50, # Допустимое проскальзывание (0.5%)
}

# Отправляем запрос

response = requests.get(url, params=params)

# Проверяем ответ

if response.status_code == 200:
routes = response.json()
print("Available routes:", routes)
else:
print("Error:", response.status_code, response.text)


Выполняем своп (подписываем транзу)

from solana.rpc.api import Client
from solana.transaction import Transaction
from solana.keypair import Keypair
import base64

# Подключаемся к devnet

client = Client("https://api.devnet.solana.com")

# твой кошель

wallet = Keypair.from_secret_key(твой_приватник)

# Эндпоинт для выполнения свопа

swap_url = "https://api.jup.ag/swap/v1/swap"

# Данные для свопа

swap_data = {
"quoteResponse": routes, # Используем маршрут из предыдущего шага
"userPublicKey": str(wallet.public_key),
"wrapAndUnwrapSol": True, # Автоматически конвертировать SOL в wSOL и обратно
}

# Получаем транзакцию для свопа

swap_response = requests.post(swap_url, json=swap_data)

if swap_response.status_code == 200:
swap_transaction = swap_response.json()
print("Swap transaction:", swap_transaction)

# Декодируем транзакцию
raw_transaction = base64.b64decode(swap_transaction["swapTransaction"])

# Создаем объект транзакции
transaction = Transaction.deserialize(raw_transaction)

# Подписываем транзакцию
transaction.sign(wallet)

# Отправляем транзакцию
txid = client.send_transaction(transaction, wallet)
print("Transaction sent:", txid)

else:
print("Error:", swap_response.status_code, swap_response.text)


🤩 Что еще может апишка жупитера??

Получение списка всех токенов:

Получение информации о пулах ликвидности:

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

разберем получение списка всех токенов 😨

tokens_url = "https://api.jup.ag/tokens/v1/mints/all"

tokens_response = requests.get(tokens_url)

if tokens_response.status_code == 200:
tokens = tokens_response.json()
print("Available tokens:", tokens)
else:
print("Error:", tokens_response.status_code, tokens_response.text)


далее ещё больше движа с дексами, делаем? 🔥🔥

ваши идеи
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9🤩2🐳2👍1
🐸🐸🐸кошельки Solana | управление

создаем keyPair (пару из публичного и приватного ключей)

+ создаем приватный ключ из мнемонической фразы

pip install solana bip32utils mnemonic (либы для соланы и мнем-фразы)

1. Создаем KeyPair

from solana.keypair import Keypair

# создаем новый KeyPair

keypair = Keypair()

# публичный и приватный ключи

print("Public Key:", keypair.public_key)
print("Private Key:", keypair.secret_key)


2. Генерация Мнемонической Фразы (seed фраза)

используется для восстановления кошелька

from mnemonic import Mnemonic

# генерация мнемонической фразы

mnemo = Mnemonic("english")
mnemonic_phrase = mnemo.generate(strength=128) # 12 слов

print("Mnemonic Phrase:", mnemonic_phrase)


3. Деривация приватного ключа из мнемонической фразы

используя мнемоническую фразу, мы можем получить приватный ключ

используем стандарт BIP-39 (генерация seed из мнемонической фразы) и BIP-44 (деривация ключей).

import hashlib
import hmac
from bip32utils import BIP32Key

# преобразуем мнемоническую фразу в seed

seed = mnemo.to_seed(mnemonic_phrase)

# деривация приватного ключа по пути BIP-44

# путь для Solana: m/44'/501'/0'/0'

bip32_key = BIP32Key.fromEntropy(seed)
derived_key = bip32_key.ChildKey(44 + BIP32Key.HARDEN).ChildKey(501 + BIP32Key.HARDEN).ChildKey(0 + BIP32Key.HARDEN).ChildKey(0).ChildKey(0)

# приватный ключ (32 байта)

private_key = derived_key.PrivateKey()
print("Derived Private Key:", private_key.hex())


4. Создаем KeyPair из приватного ключа

когда у нас есть приватный ключ, мы можем создать KeyPair!

from solana.keypair import Keypair

# Преобразуем приватный ключ в KeyPair

keypair = Keypair.from_secret_key(private_key)

# публичный и приватный ключи

print("Public Key from Derived Private Key:", keypair.public_key)
print("Private Key from Derived Private Key:", keypair.secret_key.hex())


в результате:

😭 Генерируется 12 слов, которые можно использовать для восстановления кошелька.

Мнемоническая фраза преобразуется в seed с помощью алгоритма PBKDF2.


вот так это и работает
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🤩2🎉1💘1
🗒 ТОП подарков на 14 февраля

Какие подарки, пока учить солидити 🤩

Начнём с Базы:

т.к я люблю аудио формат обучения вот вам стартовый плейлист Solidity from Scratch

> плейлист
> плейлист
> плейлист


Ну так уже и быть, дропаю подарки 😊

Скоро автор материала начинает курс обучения Solidity с Нуля

🍷 Поэтому выбил для вас 10% скидон по промокоду VARTCALL

bootcamp.solidity.university

ДЕЛАЕМ ДЕЛАЕМ 💫💫
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤‍🔥2🤩1🍓1