Після запуску PFP-проєкту Bored Ape Yacht Club десятки команд скопіювали механіку, але більшість провалилася на технічній реалізації: переповнення газу при мінті, вкрадені рідкісні токени, прозорий reveal. Проблема не в арті — в коді. Ми пропонуємо розробку PFP NFT-колекції під ключ: від генерації шарів до деплою смарт-контракту NFT на mainnet. Стандартний проєкт — 10 000 унікальних зображень з чесним розподілом рариті та захистом від MEV-ботів. Напишіть нам і отримайте безкоштовну консультацію по вашому проєкту.
Чому PFP-проєкти ламаються?
Прогнозований rarity reveal. Найпоширеніша помилка: метадані відкриваються одразу при мінті. Користувач отримує #4521, йде на rarity.tools — бачить, що це топ-1% за рідкістю. Досвідчені гравці сканують транзакції в реальному часі та front-run мінт рідкісних токенів, передбачаючи token ID за порядковим номером транзакції.
Рішення — delayed reveal: при мінті всі токени показують placeholder зображення. Після закінчення мінту власник проєкту встановлює baseURI з реальними метаданими через setBaseURI. Але це породжує іншу проблему: команда знає фінальний mapping tokenId → trait заздалегідь і може зарезервувати рідкісні токени.
Чесний reveal — через Chainlink VRF. Після закінчення мінту запитуємо випадкове число у VRF, використовуємо його як offset: tokenId #5000 отримує метадані з файлу (5000 + offset) % totalSupply. Ні команда, ні мінтери не знають фінальний mapping до отримання randomness.
Нерівномірний розподіл при генерації. Наївний генератор вибирає кожен trait випадково з вагами — але не перевіряє комбінації. В результаті «рідкісний» trait може випадково зустрічатися частіше очікуваного через кореляцію з популярними базовими traits. Правильний підхід: задаємо точну кількість кожного trait, генератор shuffle'їть та розподіляє детерміновано, перевіряє підсумкову rarity таблицю перед фіналізацією.
Як захистити мінт від ботів?
Без захисту перші 1000 токенів ідуть MEV-ботам за один блок. Стандартні механізми:
- Merkle proof whitelist: тільки адреси зі списку можуть мінтити.
MerkleProof.verifyз OpenZeppelin — дешево по газу. - Commit-reveal: користувач спочатку фіксує намір мінту (commit), через N блоків забирає токен (reveal). Запобігає atomic snipe ботів.
- Max per wallet через mapping — базовий захист. Обходиться через контракти, якщо не додати
require(tx.origin == msg.sender)або ERC-721Psi з packed ownership.
Як ми будуємо PFP NFT-колекцію: покроково
-
Генератор зображень. Python-скрипт на базі Pillow: завантажує шари PNG з прозорістю, компонує за пріоритетом, зберігає підсумкове зображення. Конфіг для кожного trait:
{name, weight, files[]}. Генератор гарантує унікальність через hash згенерованих комбінацій, при колізії повторює генерацію. Етап займає 2-3 дні, вартість — від $500.Фінальний крок — validation скрипт: перевіряє відсутність дублікатів, відповідність вагів очікуваному розподілу рариті (±2%), коректність усіх файлів метаданих.
-
ERC-721 контракт. Базуємося на ERC-721A (від Azuki) — оптимізована реалізація, яка дозволяє мінтити кілька токенів за одну транзакцію з майже тією ж ціною газу, що й один токен. Оригінальний OpenZeppelin ERC-721 оновлює
_ownersmapping для кожного tokenId — це O(n) по газу при мінті n токенів. ERC-721A використовує lazy initialization:_ownersоновлюється тільки для першого токена в batch. ERC-721A кращий за OpenZeppelin ERC-721 у 3-4 рази по газу при пакетному мінті — економія до 70% на комісіях.Параметр OpenZeppelin ERC-721 ERC-721A Gas за 1 токен ~80k gas ~80k gas Gas за 5 токенів ~400k gas ~120k gas Initialization mapping На кожен tokenId Лінива, тільки перший Економія суттєва: на mainnet при 50 gwei це різниця $66 vs $20 за транзакцію. Додаткові компоненти: EIP-2981 для роялті,
Ownable2StepзамістьOwnable(захист від випадкової передачі прав),ERC721Burnableякщо планується спалювання. Вартість розробки контракту — від $1500.Зберігання метаданих. IPFS через Pinata або NFT.Storage. Структура: всі зображення завантажуються в одну директорію, отримуємо CID. Метадані JSON посилаються на
ipfs://{CID}/{tokenId}.png.baseURIв контракті —ipfs://{CID}/. Формат метаданих за стандартом OpenSea:{ "name": "Collection #1234", "description": "...", "image": "ipfs://Qm.../1234.png", "attributes": [ {"trait_type": "Background", "value": "Blue"}, {"trait_type": "Eyes", "value": "Laser"} ] }trait_typeіvalueповинні точно збігатися з rarity таблицею — від цього залежить коректність відображення на OpenSea та rarity агрегаторах.Процес роботи
- Арт і шари (паралельно з розробкою). Приймаємо від клієнта: PNG шари з прозорістю, конфіг вагів trait'ів. Генеруємо прев'ю вибірки з 100 токенів для узгодження.
- Генератор і rarity (2-3 дні). Фінальна генерація 10K зображень, rarity таблиця, валідація унікальності.
- Завантаження на IPFS (1 день). Завантаження через Pinata API, отримання CID.
- Контракт і тести (3-4 дні). ERC-721A + VRF reveal + whitelist. Foundry тести: мінт, reveal, transfer, royalty.
- Деплой (1-2 дні). Testnet (Sepolia) → узгодження → mainnet. Верифікація на Etherscan. Налаштування колекції на OpenSea (description, royalties, banner).
Порівняння методів захисту від ботів
Метод Складність реалізації Ризик обходу Газові витрати Merkle whitelist Низька Низький (при правильному mapping) Низькі Commit-reveal Середня Середній (front-running не усувається повністю) Середні Max per wallet (tx.origin) Низька Високий (контракт-проксі) Низькі ERC-721Psi Середня Низький Дуже низькі Що входить в роботу (deliverables) — пакет під ключ
- Повний вихідний код генератора, контракту, тестів та скриптів розгортання.
- Документація налаштування колекції на маркетплейсах.
- Доступ до Pinata акаунту з завантаженими метаданими.
- Онлайн-метрика розподілу рариті після reveal.
- Підтримка після деплою — 2 тижні (консультації, виправлення).
Строки та вартість
Від отримання арт-файлів до деплою на mainnet — 1.5-2 тижні. Вартість розраховується індивідуально і починається від $3000 за повний пакет під ключ (генерація зображень, ERC-721A контракт, IPFS, деплой). Наші інженери мають понад 5 років досвіду в смарт-контрактах та 20+ реалізованих PFP-проєктів. Замовте розробку PFP-колекції — отримайте профільні аватарки NFT з чесним reveal та захистом від ботів. Оцініть ваш проект безкоштовно — напишіть нам!







