Наконец-то нормальные игры подьехали
карта wo-wo-wo особенно доставляет
карта wo-wo-wo особенно доставляет
Привет, Пикабу! Сегодня расскажу как я без знания блокчейна с нуля задеплоил собственную NFT-коллекцию на TON и заминтил NFT с живой анимацией. По пути нашёл несколько граблей — покажу как их обойти.


Собственная NFT-коллекция на TON мейннете
NFT с картинкой + Lottie-анимацией (воспроизводится прямо на странице GetGems)
Скрипт для минта новых NFT в одну команду
Стоимость: ~0.3 TON на деплой коллекции + ~0.1 TON за каждый последующий NFT
Node.js (v18+)
Кошелёк Tonkeeper с минимум 0.5 TON на балансе
Аккаунт на Pinata (бесплатный тариф — хватит) — для хранения файлов в IPFS
API ключ TonCenter — получить бесплатно через @tonapibot в Telegram
Для каждого NFT нужно два файла:
Картинка — обложка NFT (PNG/JPG, лучше квадратная 1:1)
Lottie JSON — анимация (если нужна). Lottie — это векторная анимация в формате JSON, которую GetGems умеет воспроизводить прямо на странице NFT
Если анимации нет — можно только с картинкой, поле lottie просто не указываем.
Идём на app.pinata.cloud → загружаем оба файла → получаем CID для каждого. CID выглядит примерно так:
QmfBzxTrLpXrceeEvYWc958Z2NuMGQLPNtSaq8hYr13QtZ
Это и есть постоянный адрес файла в IPFS. Файл будет доступен по URL:
mkdir nft-mint && cd nft-mint
npm init -y
npm install @ton/ton @ton/crypto @Pinata/sdk dotenv
Создаём .env:
MNEMONIC=слово1 слово2 ... слово24
PINATA_API_KEY=ваш_ключ
PINATA_API_SECRET=ваш_секрет
TONCENTER_API_KEY=ваш_ключ
⚠️ Добавьте .env в .gitignore — никогда не коммитьте сид-фразу!
Tonkeeper сейчас по умолчанию создаёт WalletV5R1, а большинство старых туториалов используют WalletV4. Если использовать не ту версию — скрипт будет работать с другим адресом и транзакции не пройдут.
Чтобы проверить версию своего кошелька, запускаем скрипт который перебирает версии:
const versions = [
WalletContractV1R1, WalletContractV1R2, WalletContractV1R3,
WalletContractV2R1, WalletContractV2R2,
WalletContractV3R1, WalletContractV3R2,
WalletContractV4,
WalletContractV5R1,
];
Та версия, адрес которой совпадёт с вашим адресом в Tonkeeper — и есть ваша версия.
Первый мой NFT я попробовал заминтить в уже существующую коллекцию GetGems Launchpad. NFT создался, но метаданные не отобразились — показывалась заглушка "Unavailable".
Причина: у той коллекции commonContentUrl указывал на CDN GetGems (https://s.getgems.io/nft/c/...). Их контракт ожидал в individual_content только суффикс типа "0/meta.json", а я положил полный IPFS URL — в итоге получился сломанный адрес вида https://s.getgems.io/nft/c/.../ipfs://Qm....
Решение: деплоить собственную коллекцию с пустым commonContentUrl = "". Тогда individual_content — это полный IPFS URL, и всё работает корректно.
Метаданные коллекции (collection.json) по стандарту TEP-64:
{
"name": "Моя коллекция",
"description": "Описание",
"image": "ipfs://Qm...",
"social_links": [
]
}
Загружаем collection.json на Pinata, получаем CID.
Ключевой момент при построении stateInit коллекции — commonContentUrl должен быть пустой ячейкой:
function buildCollectionStateInit(collectionMetaUrl, ownerAddress) {
const commonContent = beginCell().endCell(); // ← пустая!
// ...
}
Ещё один сюрприз: BOC-строки стандартных контрактов из документации часто скопированы с артефактами и дают ошибку Invalid CRC32C. Самый надёжный способ — вытащить BOC прямо из блокчейна с уже задеплоенной коллекции:
const state = await client.getContractState(Address.parse('адрес_рабочей_коллекции'));
const boc = state.code.toBoc().toString('base64');
Метаданные NFT (nft.json):
{
"name": "SportBull #1",
"description": "Описание NFT",
"image": "ipfs://Qm...",
"lottie": "ipfs://Qm...",
"attributes": [
{ "trait_type": "Type", "value": "Animated" }
]
}
Тело транзакции минта (op=1, стандарт TEP-62):
function createMintBody({ itemIndex, itemOwnerAddress, metadataUrl, amount }) {
const body = beginCell();
body.storeUint(1, 32); // op: deploy_nft_item
body.storeUint(0, 64); // query_id
body.storeUint(itemIndex, 64); // номер NFT
body.storeCoins(amount); // TON для деплоя item-контракта
const nftItemContent = beginCell();
nftItemContent.storeAddress(itemOwnerAddress);
const uriContent = beginCell();
uriContent.storeBuffer(Buffer.from(metadataUrl)); // полный ipfs:// URL
nftItemContent.storeRef(uriContent.endCell());
body.storeRef(nftItemContent.endCell());
return body.endCell();
}
Запускаем:
node mint.js
Скрипт сам:
Загрузит метаданные на Pinata
Прочитает nextItemIndex из коллекции
Отправит транзакцию
Подождёт подтверждения
Выведет адрес NFT и ссылку на GetGems
✅ Метаданные загружены: ipfs://QmSRD6...
👛 Кошелёк: UQBPSO7...
Баланс: 2.239 TON
📋 next_item_index: 1
🚀 Минтим NFT item #1...
✅ Подтверждено
🎉 NFT: https://getgems.io/nft/EQA90T8s...
Готовый скрипт с комментариями: github.com/freesbots/mint_nft_TON
В репозитории:
deploy-collection.js — деплой коллекции + минт первого NFT
mint.js — минт в существующую коллекцию
check-collection.js — проверка состояния коллекции
.env.example — шаблон переменных окружения
Здравствуйте, уважаемые борцы за свободу слова, децентрализацию, Web3 и прочие красивые слова из презентаций.
Пишу сюда, потому что, как показывает практика, это единственный способ достучаться до живых людей, а не до ботов, форм и «мы обязательно рассмотрим ваше обращение».
Сразу скажу - пишу без хейта, из любви. Если бы было пофиг - не писал бы вообще. Но когда ты несколько месяцев делаешь честный проект, вкладываешь деньги, время, нервы, а в ответ получаешь плашку SCAM без объяснений - тут уже сложно молчать.
Речь про проект DICKSHOTI
Да, название провокационное. Да, это сатира. Да, мемы. Но суть проекта - антискам.
Вот прям буквально:
разоблачение мошенников в экосистеме TON;
предупреждение пользователей;
открытая публичная позиция;
никаких скрытых схем;
никаких «занесите денег и мы вас пропиарим»;
ни одного проданного токена лично мной.
И что мы имеем?
Просто «нет». Почему? За что? Какие пункты правил нарушены? Тишина.
Окей, выкрутились сами через DeDust. Децентрализация же, да?
И вот тут начинается совсем цирк.
На бота, который:
борется со скамом,
не продаёт ничего,
не собирает донаты,
не вводит в заблуждение,
не обещает иксов и лун,
вешается метка SCAM.
Без диалога. Без доказательств. Без объяснений.
Просто: «Вы - скам. Потому что потому».
Проект Memhash, который собирал донаты и просто положил их себе в карман - имеет официальную верификацию.
Это как вообще работает?
Антискам = скам.
Настоящий скам = всё ок, галочка.
Свобода слова по-дуровски, получается.
В боте было:
Всего пользователей: 17 423
С wallet: 1 433
Приглашённых: 6 549
И это без агрессивного маркетинга. Просто органика и коммьюнити.
После следующего запуска мы планировали рост в десятки раз.
И тут - хоба, плашка SCAM и фактическая блокировка функционала.
Случайность? Совпадение? Или кто-то реально напрягся?
Вы там любите рассказывать:
как вас душит государство,
как вы за свободу,
как вы против цензуры,
как вы за честный Web3.
Но по факту:
честный антискам-проект получает бан,
а мутные схемы получают верификацию.
Это как вообще сочетается?
Добрый день.
Прошу разъяснить причины блокировки Telegram-бота (мини-приложения) DICKSHOTI @dickshotibot, в отношении которого была установлена метка SCAM, а также рассмотреть возможность пересмотра данного решения и разблокировки проекта.
Проект DICKSHOTI является публичным и открытым, имеет активное сообщество пользователей и изначально позиционируется как инструмент противодействия мошенническим схемам в Telegram.
На данный момент проект:
не продвигает мошеннические схемы;
не вводит пользователей в заблуждение;
не осуществляет скрытых финансовых операций;
не нарушает интересы пользователей и направлен на их защиту.
В связи с этим прошу:
Предоставить официальное разъяснение причин блокировки.
Указать конкретные пункты правил Telegram, которые были нарушены.
Рассмотреть возможность пересмотра решения и разблокировки проекта.
Потому что сейчас это выглядит не как модерация, а как избирательная цензура.
Не смотря на всё это, мы просто перенесём функционал на сайт.
Скам-лист будет сделан.
Отзывы будут.
Репутация фаундеров и инфлов будет.
Коммьюнити будет.
И что дальше?
Сайту тоже плашку SCAM повесите?
Старина DJ APHRODITE @GODNB 03.01.26 Saint-P Time of Night
Повторенье - мать ученья. Поэтому повторим, как не нарваться на очередной развод.
Для ЛигиЛени:
Предлагают купить уникальное имя в телеграмме. После этого кидают ссылку для совершения сделки. Ссылка естественно фейковая - утянет данные, деньги с карты, пароли, что-то ещё.
Так же для ЛигиЛени:
Товарищ писал на английском, я заботливо перевела для вас.
Начинается все прям стандартно.
Привет, здрасти. Аккаунт аж из самих США, да ещё и не свежий!
Честно говоря, сначала думала, что будет заход на "ти такава красива" и прочую любовь морковь, а потом дикпик или что-то про подарки и переводы на карту. Но заход оказался интереснее - я даже забыла, как буквы пишутся.
Да, все это время оно писал мне на английском, а я отвечала на русском.
обратите внимание на время диалога. У меня время московское, что для США несколько глубокая ночь.
Тут я даже почитала что это такое и с чем едят.
На самом деле настоящая платформа от телеги, где действительно можно выставить на аукцион свой юзернейм и его может быть купят за TON - телеговскую же крипту.
Примерно 4400$ предлагает мне мошенник, или 350 тысяч рублей. При этом вот эта штука после собачки, которая и есть - идентификатор или имя пользователя у меня совершенно банальный гибрид из имени и фамилии. Ничего такого, чтобы стоило каких-то денег. Даже 1000р оно не стоит объективно.
Хотя в интернете есть истории про продажу уникальных имён и брендов буквально за миллионы.
Моя попытка развести разводилу. Разводилу развестись не захотел.
Сейчас мы здесь.
Я прибедняюсь, что площадка спишет с меня комиссию, даже если он лот не купит - и это действительно так. Хочу наныть - пусть переводит мне звезды, хз они мне зачем не знаю.
Судя по тому, что пишут в интернете - далее он пришлёт мне ссылку на специально созданный под меня исходящий лот.
Ну, или кому-то действительно очень нужен мой незаурядный ник и я стану богата.
Если кто-то умеет делать фишинговые ссылки, похожие на настоящие лоты сей платформы - с удовольствием передам по адресу.
Ведь скоро стартуют крупнейшие разлоки в рамках TON Believers Fund: 12 октября 2025 года откроется контракт на более чем 1 млрд TON, а первые ежемесячные выплаты начнутся 11 ноября 2025-го и будут продолжаться три года.
💎 TON Strategy Company (NasdaqCM:TONX) включена в индекс S&P Software & Services Select Industry Index ⭐️
Одновременно с этим AlphaTON Capital подала форму 6-K в SEC, объявив о привлечении $36 млн для запуска TON-казначейства, всего планируется привлечь $225 млн, а управляющим назначена компания DWF Labs.
Для обеспечения компания открыла кредитную линию у BitGo Prime на $35 млн под залог TON — по условиям соглашения, если курс TON снизится на 25% с момента внесения залога, позиция подлежит ликвидации, ориентировочно это может случится при курсе $2.2 за TON.