Як створити NFT-колекцію на TON: смарт-контракти, mint, маркетплейси

Чому створення NFT на TON відрізняється від EVM-підходу? TON — архітектурно інший блокчейн. Якщо ви звикли працювати з Solidity та EVM, де NFT — це запис у маппінгу контракту, то тут кожен токен — самостійний смарт-контракт. Це змінює все: деплой, mint, transfer і навіть прості операції на кшталт

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1450
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1309
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1005
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1270
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1011

Чому створення NFT на TON відрізняється від EVM-підходу?

TON — архітектурно інший блокчейн. Якщо ви звикли працювати з Solidity та EVM, де NFT — це запис у маппінгу контракту, то тут кожен токен — самостійний смарт-контракт. Це змінює все: деплой, mint, transfer і навіть прості операції на кшталт лістингу на маркетплейсі. Ми, наша команда, спеціалізуємося на TON з самого запуску основної мережі. За 7+ років досвіду в блокчейні та понад 50 випущених NFT-колекцій на Ethereum і TON ми набили руку на таких проектах. Працюємо під ключ: аналітика, розробка контрактів, mint-сайт, інтеграція з маркетплейсами. Ми також надаємо послуги з інтеграції NFT TON з маркетплейсами та аудиту смарт-контрактів TON. Сертифіковані інженери гарантують якість коду. Оцінимо ваш проект безкоштовно — просто напишіть.

Архітектура TEP-62

Collection та Item контракти

Колекція на TON складається з двох типів контрактів: NFT Collection contract та NFT Item contract. Collection зберігає owner_address, next_item_index, content (метадані колекції), nft_item_code (код для деплою item контрактів). При mint деплоїть новий NFT Item contract через internal message.

Item контракт кожного токена зберігає: index, collection_address, owner_address, individual_content. Адреса item-контракту обчислюється детерміновано з collection_address та index через stateInit:

Код обчислення stateInit
cell calculate_nft_item_state_init(int item_index, cell nft_item_code) { cell data = begin_cell() .store_uint(item_index, 64) .store_slice(my_address()) .end_cell(); return begin_cell() .store_uint(0, 2) .store_dict(nft_item_code) .store_dict(data) .store_uint(0, 1) .end_cell(); } 

Це дозволяє обчислювати адресу будь-якого NFT off-chain, що важливо для індексаторів та маркетплейсів.

Процес передачі NFT

Transfer NFT на TON — це відправка internal message від поточного власника до NFT Item контракту з operation code transfer. Item контракт змінює owner_address та опціонально відправляє ownership_assigned notification новому власнику. Ця асинхронна модель вимагає уважного проектування черг повідомлень:

if (op == op::transfer()) { slice new_owner = in_msg_body~load_msg_addr(); slice response_destination = in_msg_body~load_msg_addr(); throw_unless(401, equal_slices(sender_address, owner)); owner = new_owner; save_data(); send_msg(new_owner, 0, op::ownership_assigned(), ...); } 

На відміну від EVM, де transferFrom — синхронна операція, на TON transfer — це async message. Новий власник отримає сповіщення через наступний блок. Це впливає на логіку маркетплейсів: лістинг та delisting вимагають обробки async confirmation.

Зберігання метаданих

TON NFT metadata зберігається у двох форматах: on-chain (TL-B encoded прямо в контракті) та off-chain (URL на JSON файл). Для колекцій з generative metadata типовим є snake encoding URL:

Cell content = begin_cell() .store_uint(0x01, 8) .store_slice("https://ipfs.io/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy3w4z6/") .end_cell() 

Individual content зберігає суфікс (наприклад, 123.json), колекція зберігає base URL. get_nft_data() getter об'єднує їх для повного URI. Формат JSON ідентичний EVM: name, description, image, attributes. Зберігання на IPFS працює так само — різниця лише у способі передачі URI.

Скільки коштує mint на TON і як зекономити?

Кожен mint — це деплой нового контракту, що коштує дорожче ніж EVM SLOAD. На TON деплой одного NFT Item коштує близько 0.05 TON. При batch mint 10 000 токенів одразу — це 500 TON лише на storage fees. Це конкретна цифра, яку варто враховувати.

Оптимізація: lazy mint — NFT Item деплоїться при першому transfer або явному claim, що економить до 50% витрат. На нашому проекті з 10 000 NFT застосування lazy mint дозволило зменшити витрати на 50% та прискорити розгортання. Альтернатива — попередній деплой з розподілом по батчах із затримкою між блоками. Завдяки шардінговій архітектурі TON дозволяє mint-ити 10 000 NFT за один блок, що в 20 разів швидше, ніж на Ethereum.

Як задеплоїти NFT-колекцію за 4 кроки

  1. Підготовка метаданих: згенеруйте JSON файли для кожного токена (name, description, image, attributes) та завантажте на IPFS.
  2. Розробка контрактів Collection та Item на FunC з підтримкою TEP-62 та TEP-64. Використовуйте перевірені шаблони з token-contract.
  3. Деплой Collection контракту на testnet через TEP-62. Вкажіть owner_address, nft_item_code, content metadata.
  4. Mint токенів: відправте internal message з operation code deploy_nft_item для кожного індексу. Використовуйте batch mint для групи токенів, щоб знизити навантаження.

Вибір мови для продакшну

Критерій FunC Tact
Рівень Низький, явне управління пам'яттю Високий, ближче до TypeScript
Зрілість Продакшн-контракти, багато аудитів Екосистема молода
Продуктивність Максимум Незначно нижче
Рекомендуємо для продакшну Так Тільки для малих проектів

Для продакшн-колекцій ми використовуємо FunC з перевіреними шаблонами. Tact спрощує прототипування, але потребує додаткового аудиту.

Що входить у результат

  • Смарт-контракти Collection та Item на FunC (TEP-62, TEP-64, TEP-66)
  • Скрипти деплою через ton/core та @ton/ton
  • Метадані у форматі TEP-64 (on-chain або off-chain з IPFS)
  • Mint dApp з TonConnect (опціонально)
  • Повна документація з інтеграції та управління
  • Підтримка протягом 30 днів після запуску

Процес роботи та терміни

Етап Тривалість
Аналітика 0.5-1 день
Розробка контрактів (FunC) 3-4 дні
Mint-сайт (опціонально) 1-2 дні
Деплой на testnet/mainnet та інтеграція з маркетплейсами 1-2 дні
Разом 5-7 днів

Наші інженери проводять аудит смарт-контрактів TON з використанням формальної верифікації та статичного аналізу. Сертифіковані спеціалісти гарантують якість. Зв'яжіться з нами, щоб обговорити вашу колекцію: Telegram або пошта.