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

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

экосистема: @vartcode
Download Telegram
Audio
и снова Solidity

получил вопрос в нашем чате:

можно ли выучить солидити и при этом не знать никакой другой язык, или это будет тупо ?


конечно можно

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

зная только solidity ты:

- не можешь тестировать свой же смарт-контракт

- не можешь взаимодействовать с его функциями

- не создашь интерфейс, благодаря которому с твоим контрактом будут взаимодействовать

- не сможешь выложить контакт в сеть

- не найдёшь работу. Работодатели ищут Solidity Разработчиков, которые умеют создавать контракты и взаимодействовать с ними


что делать?

solidity относительно молодой язык, поэтому не фокусируемся только на нём

ищем себе милфу web3 мира:

JS/TS

Python

учим Solidity + JS/TS или Solidity + Python параллельно

взаимодействуя, тестируя, деплоя свои разработки

а чтобы сделать это ещё быстрее, есть решение:

наш курс по solidity, где мы разберем все эти технологии вместе

твои результаты после обучения 👈

осталось 3 места

пишите

@vartcall_support

делаем
почему arbitrum такой маленький

l2fees.info

сегодня разберем успех этого L2 и почему он топ 2, по самым низким комиссиям среди Ethereum Layer 2 решений

Optimism Rollups с многораундовыми фрод-пруфами

Batching Транзакций

Arbitrum группирует транзакции в один пакет (Rollup) и фиксирует сжатые данные в Ethereum, распределяя стоимость газа L1 между всеми участниками батча

1 Rollup = 1000 - 10000 транзакций (зависит от загруженности сети)

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

в мае 2023, после дропа arbitrum, батчи отправлялись каждые 90 секунд


если отправка батча стоит $50 (L1 Gas), а в нем 10к транзакций, то L1 комиссия на пользователя $0.005

Arbitrum OS

docs.arbitrum.io/run-arbitrum-node/arbos-releases/overview

операционная система arbitrum управляет выполнением транзакций, сжимая данные перед отправкой в L1, уменьшая объем информации, хранимой в Ethereum и снижая L1-комиссии

Dencun и Blob хранилище

После обновления Ethereum Dencun в марте 2024, Ethereum внедрил proto-danksharding, добавив механизм blob объектов

blob-хранилище - arbitrum записывает батчи в дешёвые временные blobs Ethereum, а не в постоянное хранилище, что помогло сократить L1-комиссии на 95%


динамическая структура комиссий

💰 arbitrum комиссии состоят из 2х частей

L2 Execution Fee - затраты на вычисления в arbitrum (минималка через off-chain обработку)

L1 Posting Fee - доля стоимости записи батча в Ethereum

Оптимизация через arbOS и ArbGas


взаимодействие

протоколы взаимодействия -> dappradar.com/rankings/protocol/arbitrum/category/exchanges

SDK для JS/TS, Rust, Python 👈

взаимодействуем
🔰 Самый Быстрый Блокчейн по TPS (transactions per second)

тест 2
Anonymous Quiz
62%
Solana
15%
Sui
8%
Aptos
10%
Ton
4%
Ethereum
📖 ИЮНЬ 2025 ИТОГИ

посты месяца:

наши цели на лето

как писать софт | часть 2 | часть 3

блокчейны для взаимодействия

ton с нуля | часть 2 | часть 3 | часть 4

новая навигация канала

почему web3?

путь до fullstack web3 dev

создал бесплатный закрытый чат | ссылка на чат

когда, если не сейчас | мысли

какие активности отрабатываю?

разбор стека web3 разработчика

дисклеймер по контенту

экосистема чатов

читаем смарт-контракты | часть 1 | все инструменты

про no code в web3

план обучения web3 разработчика

стартуем в web3 с кайфом

зачем solidity | solidity взаимодействие | база solidity

все самое важное для старта в web3

пишем свой dapp с нуля | часть 2

запуск обучения - solidity с нуля | получи обучение бесплатно

зачем solidity в web3

становимся гуру web3 | пошаговый план

ситуация в крипте 2024-2025 | мысли

solana с нуля

как и почему работают скрипты { DeFi Edition }

почему у zkSync самые низкие комиссии

можно ли выучить только solidity ft pop smoke

почему у arbitrum низкие комиссии


ИЮЛЬ 2025 🧠
💚 ИНТЕРАКТИВ

т.к завтра начинается наше обучение Solidity, предлагаю следующий эксперимент

задавайте самые интересные вопросы по ссылке ниже (все анонимно)

ЗАДАТЬ ВОПРОС 👈

🧠 авторы самых интересных вопросов получат бета-версию нашего обучения бесплатно
“Где можно найти работу после курсов? на hh нет вакансий по solidity”

вакансии - удалёнка

cryptocurrencyjobs.co

web3.career

indeed.com

glassdoor.com/index.htm

также пост про фриланс

t.me/code_vartcall/770

как я нашёл работу?

публичный web3 чат в Telegram

задать вопрос 👈
🔑 Как избежать потери точности при работе с процентами и дробными числами в Solidity?

В Solidity нет поддержки чисел с плавающей точкой (float, double)

❗️❗️❗️все операции с процентами и дробями нужно реализовывать вручную с помощью целых чисел


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract PercentageMath {
uint256 public constant PERCENT_SCALE = 1e4; // 100.00%


function calculateFee(uint256 amount, uint256 percent) public pure returns (uint256) {
// Проверка переполнения (но в версии ^0.8 автоматическая)
return (amount * percent) / PERCENT_SCALE;
}

function subtractFee(uint256 amount, uint256 percent) public pure returns (uint256) {
uint256 fee = calculateFee(amount, percent);
return amount - fee;
}

/// @notice Пример: считает, какой процент составляет part от total
function calculatePercent(uint256 part, uint256 total) public pure returns (uint256) {
require(total > 0, "Division by zero");
return (part * PERCENT_SCALE) / total;
}
}


разбор скрипта:

calculateFee(uint256 amount, uint256 percent) - рассчитывает процент от суммы

subtractFee(uint256 amount, uint256 percent) - рассчитывает оставшуюся сумму после вычета комиссии:

calculatePercent(uint256 part, uint256 total) - считает, какой процент составляет часть от целого, в масштабе 1e4:


задать вопрос 👈
solidity

самые интересные вопросы на сегодня 💚

Можно ли создать смарт-контракт solidity, который эволюционирует сам, меняет свою логику в зависимости от поведения
пользователей, транзакций и времени, причём без участия разработчика?

ссылка на ответ 👈

Почему использование struct иногда дешевле, чем отдельные переменные

ссылка на ответ 👈


на сегодня все, все вопросы @vartcall_support

GN 🥱
solana возвращение

наконец-то на канал возвращается solana, на постоянной основе

За последнее время было много постов и базы о ней, но теперь - только практика

БАЗА SOLANA

теперь каждый день параллельно EVM будем говорить и практиковать Solana

изучаем базу и начинаем!
делаю деанон?
Anonymous Poll
75%
да
25%
нет
solanaTx.js
2.5 KB
solana скрипт старт

сегодня разбираем все что необходимо для старта в solana разработке


почему solana? 👈

все примеры я буду показывать на JS/TS:

текстовый редактор

code.visualstudio.com

далее для работы скрипта локально - необходим node js

nodejs.org

установка библиотек

npm install --save @solana/web3.js


теперь начинаем разработку

🧠 написал небольшой скрипт

создаём два кошелька

запрашиваем отправителю 1 $SOL через airdrop

отправляем 0.1 $SOL на второй кошелёк

получаем ссылку эксплорера о нашей транзакции

explorer.solana.com/?cluster=devnet


далее будет...
🧠 solana

прекрасная идея на этот лето


создаю отдельный чат на 100 человек, где буду с нуля учить Solana разработке

💵цена - бесплатно

первый поток - 50 мест

❤️ твой доступ - t.me/+tazEGayEpoYzYzUy

делаем делаем
Please open Telegram to view this post
VIEW IN TELEGRAM
НОЧЬ SOLANA

ночной набор в наш чат

t.me/+0GJ_R76JvwAyOGVi

10 мест и начинаем
GN команда

50 💊 реакций и завтра делаем финальный набор


спать 😴
💊49
tracker.js
4.2 KB
Solana Wallets Tracker 🫆

💸 Мониторинг Solana-кошельков в реальном времени:


т.к Solana не обладает полноценным multicall, этот скрипт - решение проблемы

printBalances():

Получает и выводит текущий баланс каждого адреса в SOL и лампортах

printTransactionHistories():

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

logToFile():

записывает любую информацию в файл transaction_history.log.

Подписка через onLogs():

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


📖 справка

1 $SOL = 1,000,000,000 лампортов (наименьшая единица $SOL).

Используется Devnet кластер для безопасного тестирования.

RPC && Endpoints (подключение к блокчейну Solana)

Mainnet - https://api.mainnet-beta.solana.com (production)
Devnet - https://api.devnet.solana.com (developer experimentation)
Testnet - https://api.testnet.solana.com (validator testing)

Devnet - песочница для разработки

Testnet - подготовка перед миграцией в Mainnet


делаем далее...
Please open Telegram to view this post
VIEW IN TELEGRAM
💊2
БАЗА: VSE Solana Инструменты

📖 глоссарий

Lamport - минимальная единица $SOL, как wei в Ethereum. 1 $SOL = 1 000 000 000 лампортов.

Account - всё — аккаунт: пользователь, контракт, или хранилище. Аккаунт может хранить данные и $SOL.

Program - Аналог смарт-контракта. Пишется на Rust и загружается как BPF bytecode.

Instruction - Один вызов функции из программы.

Transaction - Содержит инструкции и подписи. Может взаимодействовать с несколькими аккаунтами.

Rent - Чтобы аккаунт сохранялся в сети, он должен быть "rent-exempt" — иметь минимальный баланс.

Cluster - Сеть: mainnet-beta, devnet, testnet, localnet.


🤜 Установка инструментов

для JS/TS - nodejs.org

после установки проверяем:

node -v  
npm -v


Установка SDK

npm install --save @solana/web3.js


🧠 Самые важные ссылки
Документация и гайды:


Solana Дока - solana.com/docs

Solana Cookbook (рецепты, примеры кода) - solanacookbook.com

SDK-клиенты:

JavaScript / TypeScript

Rust

Python

Java

Go


🔎 Эксплореры и аналитика:

Solana Explorer (официальный)

Solscan - подробный эксплорер

SolanaFM (аналитика, история аккаунтов)

Xray (декомпиляция транзакций)

Explorer для Devnet

👑 Кошельки

Phantom

Solflare

Backpack

🐜 Devnet Инструменты:

Краны:

solfaucet.com

faucet.solana.com

Solana Status - мониторинг сети

status.solana.com

БАЗА! Двигаемся далее 😈
👹 ОРЕНДУЕМ SOLANA

разберем оренду в солана


😈 для справки

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

Это сделано для предотвращения засорения сети «мусорными» аккаунтами. ♻️

⌚️ Аренда взимается не в момент создания, а вычитается из баланса аккаунта со временем.

Если баланс аккаунта становится слишком маленьким — он может быть удалён из сети - reclaimed 😭


🧱 Rent-exempt - аккаунт освобождён от аренды, если у него на счету есть достаточно лампортов (минимальная сумма), чтобы покрыть пожизненное хранение данных в этом аккаунте

💵 Это одноразовая оплата, после которой арендная плата не взимается.

😕 Это рекомендуемый способ работы с аккаунтами, особенно если хотите, чтобы аккаунт существовал постоянно

Допустим, создаём аккаунт, который хранит 100 байт данных.

🪙 Solana потребует, чтобы вы депнули определённое количество лампортов, скажем, 890.880 лампортов, чтобы сделать аккаунт rent-exempt.


const lamports = await connection.getMinimumBalanceForRentExemption(dataSize);


Как проверить и получить значение?

Solana SDK (JS/TS) предоставляет API для расчёта этой суммы:

const lamports = await connection.getMinimumBalanceForRentExemption(dataSize);


🪴 КТО ПЛАТИТ АРЕНДУ?

Создаёшь токеновый аккаунт - создатель (инициатор транзакции)

Деплоишь программу - разработчик (создатель транзакции)

Создаешь PDA (program derived address) аккаунт - тот, кто вызывает инструкцию (обычно пользователь)

Делаешь Airdrop токена - отправитель (если он создаёт ATA)


💰 СКОЛЬКО ПЛАТИМ?

connection.getMinimumBalanceForRentExemption(dataSize)


dataSize - размер данных аккаунта в байтах.

Метод вернёт количество лампортов, которые нужно внести на аккаунт, чтобы освободить его от аренды навсегда 😮


Размер аккаунта и необходимые лампорты (примерно)

0 байт ≈ 890.880 лампортов

100 байт ≈ 1.000.000+ лампортов

165 байт (ATA) ≈ 2.039.280 лампортов


🫆 ATA — обычный Solana аккаунт, но:

Он принадлежит твоему кошельку

привязан к конкретному токену

всегда имеет размер 165 байт

должен быть rent-exempt (иначе исчезнет)


почему 165 байт? 🧠

этот размер фиксирован, потому что ATA хранит такую информацию:

Mint - 32 байта

Owner - 32 байта

Amount - 8 байт

Delegate info ≈ 40 байт

State flags, padding - остальное


🌹 РАЗДЕВАЕМ SOLANA ДАЛЕЕ...
Please open Telegram to view this post
VIEW IN TELEGRAM