ОБЩЕНИЕ с CRYPTO-API на TS
часть 2
совершентвуем наш “проект” апи-коллер
структура проекта
интерфейс для типизации ответа
src/types/coinmarketcap.types.ts
логика общения с CoinMarketCap API
src/api/coinmarketcap.ts
часть 2
совершентвуем наш “проект” апи-коллер
структура проекта
ts-crypto-api/
├── src/
│ ├── api/ # Все функции/классы для работы с API
│ │ └── coinmarketcap.ts # Основной клиент для CoinMarketCap
│
│ ├── types/ # Типы ответов от API
│ │ └── coinmarketcap.types.ts
│
│ └── index.ts # Точка входа. Здесь можно тестировать getPrice()
│
├── .env # API ключи, базовые URL
├── tsconfig.json # Настройки TypeScript
├── package.json # Скрипты и зависимости
├── .gitignore
└── README.md
интерфейс для типизации ответа
src/types/coinmarketcap.types.ts
export interface CoinMarketCapResponse {
data: {
[symbol: string]: {
quote: {
USD: {
price: number;
volume_24h: number;
market_cap: number;
percent_change_24h: number;
};
};
};
};
}логика общения с CoinMarketCap API
src/api/coinmarketcap.ts
import axios from "axios";
import * as dotenv from "dotenv";
import { CoinMarketCapResponse } from "../types/coinmarketcap.types";
dotenv.config();
const API = process.env.COINMARKETCAP_API!;
const API_KEY = process.env.CMC_API_KEY!;
export async function getPrice(symbol: string): Promise<number> {
const url = ${API}/cryptocurrency/quotes/latest?symbol=${symbol}&convert=USD;
const { data } = await axios.get<CoinMarketCapResponse>(url, {
headers: {
"X-CMC_PRO_API_KEY": API_KEY,
},
});
return data.data[symbol.toUpperCase()].quote.USD.price;
}
точка входа - здесь мы что-то вызываем и тестим
src/index.tsimport { getPrice } from "./api/coinmarketcap";
async function main() {
const btc = await getPrice("BTC");
const eth = await getPrice("ETH");
console.log(BTC: $${btc});
console.log(ETH: $${eth});
}
main().catch((err) => {
console.error("Ошибка:", err.message);
});😕 Финал:
> разобрали как правильно структурировать TypeScript-проект
> Типизацию данных от API
> Сделали универсальную функцию getPrice(symbol)
> Получаем цену любого токена по тикеру (BTC, ETH, DOGE, и т.д.)
Простая, читаемая и переиспользуемая функция
далее
Сделать CoinMarketCapClient класс — для расширения API
Добавить работу с другими API (DEXTools, Uniswap)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥2🤩2
что такое работа с API?
HTTP-запросы к внешнему сервису🥰
Получение ответов с данными🥳 Типизирование этих данные (иначе будут баги)
Оборачивание логики в переиспользуемые функции
✏️ БАЗОВЫЕ БИБЛИОТЕКИ:
axios - http запросы
dotenv - Хранение API ключей и URL в.env
ts-node - Запуск.tsфайлов
@types/node - Типы дляprocess.env,fs, и т.д.
установка
npm install axios dotenv
npm install --save-dev typenoscript ts-node @types/node
const apiKey = "123456";
решением будет dotenv
import * as dotenv from "dotenv";
dotenv.config();
const apiKey = process.env.MY_API_KEY!;
создаем интерфейс
interface PriceResponse {
price: number;
symbol: string;
}И передаем в
axios.get<T>():const { data } = await axios.get<PriceResponse>(url);export async function getPrice(symbol: string): Promise<number> {
const url = ${API}/price?symbol=${symbol};
const { data } = await axios.get<PriceResponse>(url);
return data.price;
}src/
├── api/ # Функции запроса
│ └── service.ts
├── types/ # Типы API-ответов
│ └── service.types.ts
├── utils/ # Вспомогалки (логгер, sleep)
├── index.ts # Точка входа
🧠 МАТЕРИАЛЫ
quicktype.io - вставляешь JSON, получаешь TypeScript интерфейсы
zod.dev - Валидация и парсинг API-ответов
npmjs.com/package/axios-retry - Автоматический повтор запросов при ошибке
github.com/pinojs/pino или npmjs.com/package/debug - Логгирование API-запросов
github.com/chalk/chalk - Цветной вывод в консоли (для CLI-ботов)
github.com/Kikobeats/awesome-api - GitHub-список полезных API
🌅 РЕЗУЛЬТАТ
Строгий контроль над данными - меньше багов
Чистый код легко поддерживать🥊 ⚔️ Гибкость - можно легко менять API, не трогая остальной код
Готовность масштабировать (под другие сервисы, DEX, блокчейны)😌
ВАШИ ИДЕИ НА НЕКСТ РАЗБОР
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥2🤩1
ЗА 5 МЕСЯЦЕВ
наконец-то вместе пройдем путь до моего первого коммерческого опыта в WEB3
🤩 Smart Contract Developer (Solidity)
Solidity - язык смарт-контрактов на Ethereum.
Hardhat или Foundry - фреймворки для разработки, тестирования и деплоя.
Ethers.js - библиотеки для взаимодействия с блокчейном.
Node.js / TypeScript - написание скриптов и backend логики.
OpenZeppelin - стандартные контракты (ERC-20, ERC-721 и т.д.).
Metamask / WalletConnect - взаимодействие с кошельками.
The Graph - индексация и поиск данных из блокчейна.
IPFS / Pinata - децентрализованное хранение файлов (чаще для NFT).
Full-stack Web3 Developer🥳
добавляется:
React / Next.js — фронтенд фреймворк.
Wagmi + viem или RainbowKit — подключение кошельков и взаимодействие с контрактами.
TailwindCSS / shadcn/ui — для красивого и удобного UI
Vite / Webpack — сборщики.
🐹 Smart Contract Auditor / Security Engineer
ищем уязвимости в контрактах
Slither
Foundry Fuzzing
MythX
Code4rena (баг-баунти)👍 Плюсы:
можно зарабатывать на хакатонах и аудитах (Code4rena, Immunefi)
и так далее… дел много, весело будет так точно
буду двигаться в этом направлении
GitHub, LinkedIn, Twitter, Discord
МОЩНЫЙ Контент, Оформление, Кооперация, Проекты
эти сервисы будут нашей визиткой
Вот И начинается мой Коммерческий ОПЫТ
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤33🔥11👍3
🤐 Языки программирования:
TypeScript - основной язык всего фронта и большинства Web3-интеграций
Solidity - написание, тестирование и деплой смарт-контрактов
JavaScript - вспомогательный (если вдруг без TS)
Python (опционально) - для ботов, скриптов, аналитики (если нужно)
📖 Смарт-контракты / Backend (on-chain)
Solidity
HardHat - разработка, тестирование, деплой
Foundry (опционально) - альтернатива с продвинутыми возможностями
OpenZeppelin Contracts - готовые реализации токенов и стандартов
TypeChain - типизация контрактов для TS
Slither / MythX - базовая безопасность контрактов
🧑⚕️ Фронтенд (dApp Layer)
React + Next.js - основной фреймворк
TypeScript - строго типизированный код
TailwindCSS + shadcn/ui - стилизация и UI-компоненты
Motion - анимации
🔫 Web3-интеграция
wagmi + viem - подключение кошельков, отправка транзакций, взаимодействие с контрактами
Ethers.js - библиотека для работы с Ethereum (если не viem)
RainbowKit - готовый UI-компонент для подключения кошельков
SIWE (sign-in with Ethereum) - авторизация через кошелек
Данные и хранение☺️
The Graph - индексация данных из блокчейна
Etherscan API / Alchemy SDK - внешние данные
IPFS / Pinata / NFT.storage - хранение файлов и метаданных (особенно для NFT)
😲 Инфраструктура и деплой
Alchemy / Infura / QuickNode - провайдеры блокчейна
Vercel / Netlify / Fleek / IPFS - деплой фронта
HardHat Deploy / Tenderly - деплой и симуляция контрактов
👊 Тесты и утилиты
Jest / Mocha / Chai - тестирование JS/TS-логики
HardHat Tests - тесты для контрактов
ViTest - альтернатива Jest для Vite/TS
ESLint / Prettier / Husky - стиль и контроль кода
😊 Дополнительное
Git + GitHub - контроль версий и портфолио
Telegram / Discord боты (Python/Node) - если автоматизируешь уведомления или арбитраж
Zod / Yup - типизированная валидация данных
Supabase / Firebase / PostgreSQL - бэкенд и база (если off-chain логика)
В результате получается такой стек
TypeScript, Solidity, HardHat, Ethers.js, Wagmi, React/Next.js, Tailwind, The Graph, IPFS, Alchemy, RainbowKit, shadcn/ui, GitHub Actions
Давайте разбирать и другие WEB3 JOBS
проявите реакции!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤26👍9🔥7💅4
разберем проекты для реализации и практики web3 технологий
1⃣ NFT-Галерея с минтом + метаданными на IPFS
прокачиваем:
> Контракты (ERC-721)
> Хранение через IPFS
> Загрузка изображений и JSON
> Wagmi + viem + кнопка "Mint"
> Отображение NFT владельца
> Работа с метаданными и токенURI
2⃣ DAO-голосовалка с токеном
прокачиваем:
> ERC-20 или ERC-1155 токен
> Контракт DAO (создание предложений, голосование)
> Подсчет голосов
> Подключение кошелька и участие в голосовании с фронта
> Подпись сообщений
3⃣ DEX-интерфейс (Uniswap-подобный swap)
прокачаем:
> Вызовы чужих контрактов (Uniswap / Sushi / Pancake)
> Подключение кошелька
> Расчет курсов, approve, swap
> Отображение баланса токенов
> Работа с токенами (ERC-20 ABI)
4⃣ Арбитражный бот с фронтом
прокачиваем:
> Python/Node backend (или бота)
> Подключение API бирж
> Веб-интерфейс с контролем стратегии
> Telegram-уведомления
> Интерактивная панель с логами и действиями
5⃣ Sign-in with Ethereum + gated content
прокачиваем:
> Подписание сообщения (SIWE)
> Валидация на backend
> Gated-контент (например, доступ только NFT-холдерам)
> Интеграция с smart contract для проверки прав
6⃣ Дашборд для Web3-протокола
прокачиваем:
> Взаимодействие с контрактами (read-only)
> The Graph / Alchemy SDK
> Динамическое отображение данных: объемы, токены, события
> Графики и UI для инвесторов / юзеров
7⃣ Мини-маркетплейс NFT
прокачиваем:
> Mint / List / Buy / Cancel NFT
> Работа с контрактами на обе стороны (покупатель/продавец)
> UI + логика отображения лотов
> Отслеживание статуса транзакции
ШО ДЕЛАЮ
начинаю с 1-2 проектов
заливаю на GitHub + демо на Vercel/Netlify.
весь процесс будет тут в Twitter и на YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥40👍8❤7💘3
почему я выбрал Web3, а не Web2: взгляд с технической стороны
😭 В Web2: ты пишешь backend, ставишь БД, API, авторизацию.😮 В Web3: у тебя есть смарт-контракт - это и есть твой backend.
Он живёт на блокчейне. Он публичный. Его нельзя изменить.
Все функции и данные - прямо внутри него😕
🤫 В Web2: логин через email, OAuth, куки.🔫 В Web3: Sign-In with Ethereum (SIWE) Пользователь подписывает сообщение, и ты знаешь, кто он - без логов, баз и слежки.
🛌 В Web2: ты создаёшь таблицы, поля, индексы.😊 В Web3: данные пишутся в контракт, и ты читаешь их через get() или event logs.
Иногда используешь The Graph или Alchemy SDK, чтобы удобно тянуть данные⚔️
😨 web2: ты пилишь интерфейс, который общается с API.🚬 web3: весь UI - мост между контрактом и пользователем.
Подключить кошелёк, подписать транзу, дождаться подтверждения, показать результат - всё на тебе🚰
🔧 web2: баг на бэке - пофиксил, задеплоил заново.🏆 web3: баг в контракте = замороженные деньги.
Поэтому тут меньше "быстрее", больше "надёжнее"🍪 🍪
✏️ В Web3 почти всё open-source
Ты можешь посмотреть, как работают контракты Uniswap, ENS
Или внести свой вклад. Это ощущение участия в движении😮
Ты ближе к деньгам и ответственности
А ВЫ ПОЧЕМУ В WEB3?? ВАШИ МЫСЛИ
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥18👍5🏆2
💫 ИДЕИ:
записываю новый плейлист видео по блокчейн-разработке
Сделал опрос на YouTube, самая интересная идея не останется без выпуска и бонуса💰
youtube.com/post/Ugkx5vHLrMXDZBQbdd7kbAdhOmkfJyh1gwD0
😰 Пора шатнуть алгоритмы YouTube
записываю новый плейлист видео по блокчейн-разработке
Сделал опрос на YouTube, самая интересная идея не останется без выпуска и бонуса
youtube.com/post/Ugkx5vHLrMXDZBQbdd7kbAdhOmkfJyh1gwD0
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14🔥9😍6
развеим миф о том что web3 это только Solidity дев
1⃣ Smart Contract Developer
Пишет и тестит контракты на Solidity / Vyper😘
Отвечает за безопасность, gas-оптимизацию, логику протокола
HardHat / Foundry / OpenZeppelin / TypeChain
2⃣ Web3 Frontend Developer
🎨 Делает dApps: интерфейсы, кошельки, кнопки, взаимодействие с контрактами
Wagmi, viem, RainbowKit, React, Tailwind, Ethers.js
Пользователь видит только то, что ты построил😕
3⃣ Full-stack Web3 Developer
Знает и фронт, и контракты, и иногда пишет backend
🧱 Solidity + React + Next.js + RPC API + IPFS
Может сделать проект целиком🤫
4⃣ Smart Contract Auditor🧻 Ловит баги в чужом коде до того, как их найдут хакеры
Знает паттерны атак, проводит ревью, пишет отчёты
Slither, fuzzing, MythX, Foundry tests
5⃣ Blockchain Analyst / Data Engineer
Достаёт данные из блокчейна, строит дашборды, находит инсайты📈
The Graph, Dune Analytics, SQL, Python
Нужен фондам, DeFi-проектам, трейдерам😮
6⃣ Bot Developer / Automation
Пишет ботов: арбитраж, мониторинг, уведомления🥳
Python / Node.js + APIшки + Telegram bots😡 Применение - от DeFi до NFT минтов и трейдинга
7⃣ Developer Advocate / Tech Writer😮 Пишет туториалы, документацию, делает демки
Проводит вебинары, коммьюнити-коллы🥳
Работает в инфраструктурных проектах типа Alchemy, ThirdWeb
8⃣ Tokenomics / Crypto Researcher
Проектирует токены, управляет инфляцией, делает модели для DAO🐷 🧾 Экономика + блокчейн + стратегия🥁 Без них ни один токенне взлетит
0⃣ Web3 UI/UX Designer🎨 Делает интерфейсы удобными, а UX - понятным☺️ Разбирается в wallet flow, tx statuses, подписаниях
Работает с Figma, иногда даже фигачит в code (шрифт, Tailwind)
🔟 Community / Marketing / Product
Делают Web3 понятным людям🤬 💸 Twitter, Discord, Telegram, Mirror, мемы, стратегии
Понимают, как привлекать юзеров и строить доверие💰
♾ Бонус: Web3 QA / Testing / Simulation🧠 Пишет тесты к контрактам, симулирует поведение пользователей🤩 Использует тестовые сети, Tenderly, test wallets
Чекпоинт перед деплоем в mainnet😕
вот такой web3 мир дружба жвачка
КАК ВАМ ТАКИЕ ПОЗИЦИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤33❤🔥13🔥9💅1
самый мощный месяц за всю историю канала ATHHH
+750 Подписчиков в Telegram
+450 Подписчиков на YouTube
+7000 Просмотров на последнем видео 250 ДНЕЙ В КРИПТО-РАЗРАБОТКЕ
спасибо всем за саппорт, делаем далее 💫💫💫
Разаберем Rust – идеальный ли язык для блокчейн-разработки?? && часть №2
ИЩЕМ РАБОТУ В WEB3? Guide
WEB3 ПЕТ-ПРОЕКТЫ Разбираем
WEB3 СОФТ-Python с НУЛЯ && часть №2
WEB3 SOFT ПРАКТИКА
JS & TS с НУЛЯ для БЛОКЧЕЙН-РАЗРАБОТЧИКОВ (+-19 постов)
НОВАЯ НАВИГАЦИЯ КАНАЛА
С нуля до КРИПТО-КОДЕР-ГУРУ материалы на погружение && часть №2
Стек WEB3 FullStack Dev
ПРОЕКТЫ Full-stack Web3
WEB2 / WEB3 GRIND
WEB3 ПОЗИЦИИ
🚀🚀🚀 АПРЕЛЬ 2025 💫💫💫
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15🔥8👍4🤩1
меняю структуру нашего обучения, постов не достаточно для описания всех процессов поэтому теперь все уроки + код будут публиковаться на моем GitHub
Как отправлять токены сразу 100 адресам
> Считываем CSV с адресами
> Цикл по списку, проверка баланса
> Отправляем через смарт-контракт trasfer🏆 разберем учёт gas, retries, логирование в файл
Как узнать, кто покупает токен в реальном времени (через события)🤟
> Слушаем transfer из токен-контракта
> Фильтруем входящие транзы
> Выводим адреса, суммы, ссылки на Etherscan
Как сделать Web3-слежку за whale-адресами🥳
> Берем топ-холдеров
> Отслеживаем их активность: вход/выход средств, свопы
> Отправка отчета раз в час в Telegram
Как узнать ликвидность токена в пуле Uniswap - noscript
> Получаем reserves из Uniswap V2
> Считаем общую ликвидность токена
> Можно использовать для оценки "живой / мёртвый" токен
Как в одном скрипте получить баланс всех токенов пользователя✏️
> Массив токенов
> Запрашиваем balanceOf + decimals
> Выводим сводку с символами и значениями🕺
🤩 Как отслеживать выход новых токенов в Uniswap
> Слушаем создание новых пар (Factory контракт)
> Анализируем токены, ликвидность, риски
> Alert в Telegram при создании подозрительного пула
🐖 Как сделать Web3-бота для “Claim” токенов с airdrop'а
> Читаем список адресов
> Подписываем вызов claim() в контракте
> Ставим лог: успешно / неуспешно
> Валидация - чтобы не сжечь gas впустую
задачи есть, все уроки будут на GitHub!
начинаем новый уровень обучения, поддержите активом, старые уроки также выйдут быстрее
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥6❤5❤🔥2
📁 WEB3-Automation-JS-TS
└── 📁 lessons/ # все уроки и материалы по Web3 JS/TS
├── 📁 introduction/ # вводные материалы
│ ├── 00-links.md # полезные ссылки, доки, тулзы
│ ├── 01-setup.md # установка окружения
│ ├── 02-tools.md # инструменты для работы
│ └── 03-glossary.md # глоссарий терминов Web3
├── 📁 basics/ # транзакции, кошельки, провайдеры
├── 📁 advanced/ # подписи, мультисиги, боты, безопасность
└── 📁 examples/ # практические кейсы: дашборды, боты, трекеры
ССЫЛКА НА РЕПО
ССЫЛКА НА РЕПО
ССЫЛКА НА РЕПО
Следующий на 116 реакций
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤58🔥18👍11
ЧАСТЬ 1
собрал основные инструменты, автоматизирующие
взаимодействие с протоколами, повышая шансы на получение airdrop
💰 Языки программирования
> Категории и инструменты
> Что можно автоматизировать
> Структура проекта
> Полезные ссылки и ресурсы (либы, API, тестовые СЕТИ, требования, сайты, практики)
все и более доступно в нашем обновленном блоке web3 автоматизации - INTRODUCTION
lessons/introduction/04-airdrops.md
👉 РЕПОЗИТОРИЙ
👉 РЕПОЗИТОРИЙ
👉 РЕПОЗИТОРИЙ
реакции - новые уроки 💫
2025 САМОЕ ВРЕМЯ АВТОМАТИЗАЦИИ НАШИХ АКТИВНОСТЕЙ
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
6❤20🔥4🏆1
это практика создания и управления несколькими аккаунтами (кошельками), чтобы увеличить шансы на получение AIRDROP
✏️ например:
в airdrop-кампаниях
в тестнетах
в краудлоунах и раннем фарме
в NFT-дропах
если проект раздаст 1000 долларов на 1 аккаунт, а у нас их 20 = доход умножается
🤵 Главное - чтобы эти аккаунты выглядели как разные живые пользователи, а не как армия ботов.
Для этого и нужна "маскировка": разный IP, уникальный браузерный отпечаток, разное поведение.
Dolphin, AdsPower
Помогают создать профили с уникальными отпечатками браузера и системы
Нужны, чтобы каждый аккаунт имел свой уникальный IP.
через Ethers.js, Web3.py или даже CLI-скрипты
Можно сгенерировать сотни адресов за минуту
Puppeteer, Playwright, Selenium
Скрипты заходят на сайты, кликают, подписываются, фармят активность.
https://accsmarket.com/
🔥 Разбираем подробнее?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥39❤4👍4
Что вообще такое Web3-софт?
софт, который взаимодействует с блокчейном: читает данные, пишет транзакции, вызывает смарт-контракты и т.д
☕️ Типичный Web3-софт:
> Браузерный кошелек (MetaMask)
> Децентрализованные обменники (Uniswap, 1inch)
> Боты, которые следят за событиями в сети
> DAO-интерфейсы, лендинги с NFT, арбитражные боты
🎨 Инструменты:
Взаимодействие с сетью Ethers.js / Web3.py
Разработка и тестирование контрактов
HardHat / Foundry
Развёртывание контрактов HardHat / Remix IDE
Тестовая сеть
Sepolia / Anvil / Ganache (отлично объединил)
Кошелек
MetaMask, Safe Wallet
Чтение контрактов
Etherscan + ABI, Infura / Alchemy / QuickNode
Node.js + npm (если ещё нет)
https://nodejs.org/
TypeScript
npm install -g typenoscript
Hardhat - Solidity - контракты
npm install --save-dev hardhat
Ethers.js - взаимодействие с сетью
npm install ethers
Python-разработчикам:
pip install web3
+ Устанавливаем и настраиваем MetaMask, включаем тестовые сети (Sepolia etc…)
Регаемся и Получаем API Блокчейна на Infura https://www.infura.io/
Получить тестовые ETH из фосета
например:
sepoliafaucet.com
> Отправить самому себе транзакцию через MetaMask
> подключается к Sepolia
> показывает текущий номер блока
import { ethers } from "ethers";
const provider = new ethers.JsonRpcProvider(
"https://sepolia.infura.io/v3/InfuraKey"
);
async function main() {
const block = await provider.getBlockNumber();
console.log("Block:", block);
}
main();> Прочитать чей-то баланс
const balance = await provider.getBalance("0x123...abc");Подключить свой приватный ключ (только для тестов!)
const balance = await provider.getBalance(
"0xdAC17F958D2ee523a2206206994597C13D831ec7"
);
console.log(ethers.formatEther(balance), "ETH");
Отправить $ETH через код
await wallet.sendTransaction({
to: "0x456...def",
value: ethers.parseEther("0.01")
});📖 Вызвать метод у чужого контракта (чтение)
const abi = ["function decimals() view returns (uint8)"];
const usdc = new ethers.Contract(
"0xf08A50178dfcDe18524640EA6618a1f965821715",
abi, provider
);
const decimals = await usdc.decimals();
console.log("Decimals:", decimals);
Теперь умееем
> Подключаться к RPC через Infura
> Читать блоки
> Читать баланс аккаунта
> Работать с контрактом (вызов decimals())
дропаем реакции? 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥33👏7😍5