Разработка видео NFT-платформы
Видео как NFT — это не просто другой mime-type в метаданных. Основная проблема: on-chain хранить видео нельзя, а off-chain хранение разрушает суть владения. Платформы вроде Royal или Vidy решают это по-разному, и каждый подход имеет компромиссы, которые нужно понимать до написания первой строки смарт-контракта.
Архитектура хранения и доставки видео
Ядро проблемы — разрыв между NFT как записью в блокчейне и реальным медиафайлом весом 2–20 GB.
Слои хранения
IPFS + Filecoin — стандарт де-факто для decentralized storage. Видеофайл загружается через NFT.storage или web3.storage, получает CID. В метаданных токена (стандарт ERC-721 или ERC-1155) поле animation_url указывает на ipfs://CID. Проблема: IPFS сам по себе не гарантирует persistence — нужен pinning через Filecoin deals или Pinata/nft.storage с долгосрочными контрактами.
Arweave — альтернатива с иной экономикой: платишь один раз, файл хранится вечно (теоретически, за счёт endowment pool). Bundlr (сейчас Irys) позволяет загружать через Ethereum/Solana кошельки. Подходит для платформ, где persistence важнее стоимости.
Centralized CDN с proof-of-ownership — гибридный подход: файл на AWS S3 / Cloudflare R2, но смарт-контракт управляет доступом. Используется когда нужен streaming без буферизации и низкая latency важнее decentralization. Честно: большинство коммерческих video NFT платформ работают именно так.
Streaming и transcoding
Сырое видео на IPFS нельзя стримить — нет range requests в нативном протоколе. Решения:
- HLS через IPFS gateway — ffmpeg транскодирует видео в HLS (m3u8 + сегменты .ts), каждый сегмент пинится отдельно, плейлист хранит CID-ссылки. Медленно при загрузке, но работает.
- Livepeer — decentralized video transcoding network. Загружаешь мастер-файл, Livepeer возвращает HLS-стримы разного качества. Оплата в LPT токенах. Хорошо интегрируется с NFT платформами через Livepeer Studio API.
- Mux / Cloudflare Stream — centralized, но с DRM и adaptive bitrate из коробки. Для premium content с токен-гейтингом часто единственный разумный выбор.
Смарт-контракты: что важно для видео NFT
ERC-721 vs ERC-1155
Для video NFT платформ ERC-1155 часто предпочтительнее:
- Поддержка editions (100 копий одного видео — разные tokenId или одинаковые с supply > 1)
- Batch transfers снижают gas при массовых операциях
- Semi-fungible tokens — можно выпустить "ранний доступ" как fungible, потом сконвертировать в unique
Но если важна совместимость с OpenSea, Blur, LooksRare без кастомного кода — ERC-721 с tokenURI проще.
Метаданные и стандарты
OpenSea Metadata Standard поддерживает поля:
{
"name": "...",
"image": "ipfs://CID_preview",
"animation_url": "ipfs://CID_video",
"attributes": [...],
"properties": {
"video": {
"uri": "ipfs://CID_video",
"mime_type": "video/mp4",
"duration": 180
}
}
}
Поле animation_url рендерится как iframe на OpenSea — это и хорошо (превью прямо в маркетплейсе), и плохо (любой может посмотреть без покупки). Для gated content нужен отдельный контракт доступа.
Токен-гейтинг и DRM
Самая нетривиальная часть. Варианты:
Lit Protocol — decentralized access control. Условие доступа (ownsERC721, ownsERC1155) проверяется несколькими нодами, возвращается симметричный ключ для расшифровки контента. Ключ никогда не передаётся в открытом виде через единую точку.
On-chain signature + server-side gate — проще, но централизованно. Пользователь подписывает сообщение кошельком, сервер проверяет владение через RPC и выдаёт presigned URL на CDN. Работает для большинства случаев.
ERC-4337 + session keys — для UX без постоянных подписей: разовая авторизация создаёт session key с ограниченными правами на доступ к контенту на N часов.
Royalties и вторичный рынок
EIP-2981 — стандарт on-chain royalties, поддерживается OpenSea, Blur (опционально), Foundation. Реализуется через royaltyInfo(tokenId, salePrice) → (receiver, royaltyAmount).
Проблема: Blur и другие агрегаторы обходят royalties через прямые контракт-вызовы. Для enforcement нужен оператор-фильтр (Operator Filter Registry от OpenSea) или кастомная логика в _beforeTokenTransfer с whitelist разрешённых маркетплейсов. Последнее ломает composability.
Компоненты платформы
| Слой | Технологии |
|---|---|
| Smart contracts | Solidity 0.8.x, Hardhat/Foundry, OpenZeppelin |
| Storage | IPFS + Filecoin, Arweave/Irys, опционально Cloudflare R2 |
| Transcoding | Livepeer Studio или Mux |
| Access control | Lit Protocol или custom JWT gate |
| Indexing | The Graph subgraph для событий Transfer, Sale |
| Frontend | Next.js + wagmi v2 + viem |
| Payments | Native ETH + ERC-20 через Permit2 (Uniswap) |
Что влияет на сроки
Минимальная MVP-платформа (mint + basic marketplace + IPFS storage): 4–6 недель. Полноценная платформа с Livepeer transcoding, Lit Protocol gating, кастомным субграфом и royalty enforcement: 2–3 месяца. Основные time sinks — интеграция с Livepeer (нестабильное API), настройка Filecoin deals для persistence и аудит смарт-контрактов перед деплоем в mainnet.







