


NFT — это уникальные объекты в блокчейне, каждый из которых определяется URI, указывающим на метаданные и визуальное оформление. Эти URI бывают разными: HTTP-ссылки на размещённый контент, IPFS-адреса на основе хеша, Arweave для децентрализованного хранения или data URI, где вся информация содержится прямо в самой ссылке. Метод data URI становится всё более востребованным, поскольку позволяет полностью хранить контент NFT в блокчейне, обеспечивая его постоянство вне зависимости от внешней инфраструктуры. SVG стал стандартом для on-chain NFT из-за поддержки браузерами и ограничений на хранение в смарт-контрактах. Ethereum SVG NFT обеспечивают надёжное постоянство цифровых активов.
В сети Ethereum размещение кода требует оплаты gas. Операции, изменяющие состояние, выполняются через транзакции и стоят денег, а операции только на чтение не требуют затрат. При просмотре on-chain SVG NFT смарт-контракт динамически формирует изображение через функцию tokenURI(), которая работает на основе текущего состояния, не изменяя его, что исключает расходы на gas. Такой подход к отрисовке по запросу стал основой для on-chain SVG проектов. Например, в Neolastics уникальные ID, полученные при выпуске, подаются в генеративные функции, которые всегда выдают одинаковый SVG-результат, сохраняя динамику создания и воспроизводимость. Основная задача — оптимизировать код для ограничения по gas за счёт эффективного программирования, что называют “gas golf”.
Avastars первыми реализовали on-chain SVG для NFT. Несмотря на первоначальное использование HTTP-сервера метаданных, полный SVG и метаданные можно восстановить на блокчейне через функцию getAvastarMetadata() и функцию renderAvastar() в контракте AvastarsTeleporter. Такая избыточность защищает контент даже при недоступности внешних серверов. Avastars собирает SVG-изображения путём объединения разных признаков, заранее заложенных в смарт-контракт как SVG-компоненты, что позволяет полностью воссоздать работу из данных блокчейна.
Squiggly применяет гибридную архитектуру, как и Avastars, — сохраняет HTTP-сервер метаданных и реализует возможность воспроизведения on-chain через функцию getIdtoSVG(). В отличие от Avastars, где признаки хранились отдельно, Squiggly при деплое контракта загружает полный SVG-код. Отрисовка использует seed для динамического построения градиентов и кривых, создавая уникальные изображения для каждого токена. Примечательно, что Squiggly ввёл нестандартное поле “image_data” в метаданных — этот обходной механизм поддержали крупные NFT-платформы для рендеринга data URI до появления универсальной совместимости маркетплейсов.
Neolastics повторяет архитектуру Squiggly — метаданные хранятся на внешних серверах, а воспроизведение произведений возможно on-chain. Функция generateSVGofTokenById() позволяет восстановить изображение в формате SVG напрямую, что защищает от сбоев серверов метаданных. Как и у Squiggly, SVG-компоненты загружаются при развёртывании контракта и комбинируются на основе seed. Такой подход совмещает привычность метаданных на серверах и надёжность полной воспроизводимости on-chain.
TinyBoxes выделяется анимированными SVG-элементами, а не только статическими изображениями. Функция tokenArt() отвечает за рендеринг, при этом сохраняется архитектура внешнего сервера метаданных. Уникальность TinyBoxes — признаки токена внедряются как HTML-теги прямо в SVG-изображение, а не хранятся отдельно в блокчейне. Анимации генерируются на основе случайного seed и сложнее, чем в более простых проектах. Для обхода ограничений по работе со строками в Solidity проект использует SVG.sol — абстракцию, которая реализует логику рендеринга и генерации анимации.
Mandalas полностью отказался от HTTP-серверов метаданных: все JSON-метаданные и SVG-изображения помещаются в data URI в base64-кодировке. Такой подход потребовал base64-кодирования для безопасной работы с символами URI, но увеличил расходы на gas по сравнению с обычным SVG. Кодирование обеспечивает совместимость с браузерами и позволяет выводить полную работу через декодирование data URI. Mandalas использует уникальную систему отрисовки: base64-кодированные пиксели накладываются на шаблоны мандал, формируя процедурно сгенерированную геометрию.
UniSwap V3 NFTs сочетают расширенные анимационные возможности с полностью on-chain хранением за счёт полной base64-кодировки. Реализация использует вложенное кодирование: data URI содержит JSON-метаданные в base64, которые включают SVG-изображение также в base64. Такой подход обеспечил поддержку data URI на большинстве NFT-маркетплейсов. Сложная логика рендеринга вынесена в отдельные контракты (NFTDescriptor.sol и NFTSVG.sol), что решает ограничения Solidity на работу со строками. Визуальная часть строится на основе данных о финансовых позициях, показывая, как on-chain SVG может визуализировать динамическое состояние блокчейна.
Anchor Certificates реализует полностью on-chain архитектуру с хранением метаданных и SVG прямо в data URI с base64-кодировкой. SVG-компоненты вынесены в отдельные функции, что позволяет обходить ограничения callstack в Solidity и очищать переменные между вычислениями. Такой модульный подход позволяет создавать сложные изображения в рамках ограничений блокчейна и обеспечивает полную доступность данных on-chain.
Blitmap использует классическую архитектуру с внешним хранением изображений и метаданных, но даёт возможность on-chain воспроизведения через собственные функции рендеринга. Ключевое новшество — изображение кодируется в 268 байтах пиксельных данных c помощью функций mintOriginal() или mintVariant, а затем восстанавливается как набор SVG-прямоугольников. Каждый байт — это информация о пикселе, преобразуемая в SVG-rect, что позволяет сжать данные для хранения в блокчейне и полностью восстановить изображение on-chain.
Nouns объединяет разные подходы: все метаданные и SVG хранятся on-chain в base64-кодировке, используется отдельный дескриптор-контракт (как в UniSwap V3), а кодирование по признакам реализовано, как у Avastars и Blitmap. Важное отличие — схожие по цвету области группируются в один SVG-прямоугольник вместо отдельного rect для каждого пикселя, что уменьшает итоговый размер изображения без потерь качества. Эта оптимизация подтверждает развитие методов эффективного кодирования on-chain графики.
solSeedlings — гибридный проект, делающий акцент на воспроизводимость, а не на строгую техническую чистоту. Несмотря на использование символов, не идеально подходящих для data URI, коллекция содержит достаточно on-chain компонентов для восстановления изображений. Для рендеринга применяется генерация на основе seed и индивидуальные алгоритмы для коллекции, что отражает разнообразие подходов в экосистеме on-chain SVG.
On-chain SVG NFT развивались через разные архитектурные решения, где балансируются технические ограничения, gas-эффективность и постоянство данных. От объединения признаков в Avastars до полного data URI в Mandalas, от кодирования пикселей в Blitmap до оптимизированных прямоугольников в Nouns — проекты показывают постоянные инновации в хранении и отрисовке искусства непосредственно в блокчейне. Хотя понятие “полностью on-chain” остаётся дискуссионным, эксперименты привели к появлению устойчивого и эстетичного цифрового искусства, использующего неизменяемую инфраструктуру Ethereum. Ethereum SVG стал стандартом для долговременного цифрового творчества, но новые форматы и методы кодирования определяют дальнейшее развитие on-chain искусства. Эта сфера — не только техническое достижение, но и пространство для творчества, где ограничения блокчейна подталкивают к неординарным решениям, а оптимизация gas становится и инженерной задачей, и частью художественного процесса.
Сохраняйте закодированные SVG-данные прямо в смарт-контрактах, а не ссылайтесь на внешние ресурсы. Функция tokenURI возвращает закодированный JSON с SVG для отображения в браузере. Это обеспечивает целостность данных и позволяет создавать динамические SVG NFT без внешних зависимостей.
SVG позволяет создавать уникальный on-chain NFT-арт, кодируя визуальные элементы прямо в блокчейне. SVG-файлы могут быть частью метаданных NFT, что позволяет программно и масштабируемо генерировать цифровое искусство с помощью алгоритмической композиции.
Не допускайте XSS-атак: исключайте вредоносный JavaScript в SVG, чтобы не подвергать риску кошельки пользователей. Проверяйте все SVG-данные, фильтруйте метаданные и используйте безопасные библиотеки рендеринга для защиты от уязвимостей внедрения.











