MoonCats — это самое раннее генеративное искусство на Ethereum в строгом, техническом смысле, так как оно создается при чеканке пользователями по алгоритму, проверяемому в блокчейне. Точка. Вот почему🧵
Развертывание в цепочке в 2017 году. Контракт MoonCatRescue был проверен 9 августа 2017 года, предшествуя ERC-721 и большей части инфраструктуры NFT.
Случайность времени активации в блокчейне. Когда владельцы вызывают activate(), контракт фиксирует searchSeed = block.blockhash(block.number - 1), который не может быть известен до самого момента активации. Это предотвращает предварительное вычисление или предварительную добычу желаемых результатов.
Доказательство работы с ограниченным доступом к чеканке. Чеканка использует rescueCat(bytes32 seed), который вычисляет catIdHash = keccak256(seed, searchSeed) и требует, чтобы catIdHash[0] | catIdHash[1] | catIdHash[2] == 0x0. На практике спасатели должны были искать семена вне цепи, пока не будет найден хеш с тремя ведущими нулевыми байтами, а затем отправить это семя в цепь. Это сделало генерацию разрешенной и доступной для майнеров, а не заранее сгенерированной создателями.
Детерминированное извлечение ID при создании. Для действительных семян контракт присваивает catId = bytes5((catIdHash & 0xffffffff) << 216), т.е. низкие 32 бита хеша сдвинуты в 5-байтовый идентификатор, при этом старший байт зарезервирован для флага "генезиса". Уникальность обеспечивается в цепочке с помощью require(catOwners[catId] == 0x0).
Канонический генератор, привязанный к блокчейну. Контракт хранит imageGenerationCodeMD5, чтобы клиенты могли проверить, что код рендеринга, который они используют, соответствует каноническому генератору, на который ссылается контракт. Это криптографический якорь для рендерера, находящийся в блокчейне.
Компактный, генеративный «рецепт», полностью хранящийся в блокчейне. Каждый MoonCat имеет 5-байтовый шестнадцатеричный ID, который кодирует его полный рецепт: направление, инверсия палитры, узор меха, выражение лица, поза и основной цвет. Второй байт («k») мультиплексирует позу/лицо/мех/направление, а последние три байта предоставляют базовый RGB, который расширяется в палитру.
Открыть, рендерер ссылок. Официальный генератор mooncatparser детерминированно отображает 5-байтовый ID в 2D пиксельный массив. Каждый может независимо перерисовать MoonCat только по ID в блокчейне, обеспечивая долгосрочную проверяемость.
Распределение, контролируемое пользователем, при создании. Оригинальный "Сканер" позволял пользователям добывать семена локально и решать, отправлять ли спасение, что привело к появлению статистики редкости и распределения черт благодаря открытому участию, а не предвычисленному дропу.
Предварительный ERC-721, полностью ончейн рынок и именование. Контракт 2017 года включает ончейн рынок (makeAdoptionOffer, acceptAdoptionOffer, requests) и неизменяемое именование через nameCat, демонстрируя самодостаточный генеративный минт плюс уровень происхождения и обмена в одной системе.
Позднее ужесточение до полностью ончейн изображений. В 2022 году были развернуты дополнительные контракты (MoonCatSVGs, MoonCatColors, MoonCatTraits), чтобы цепочка сама могла возвращать SVG для любого MoonCat непосредственно из его ончейн рецепта, устраняя зависимости от изображений вне цепи и сохраняя оригинальную генеративную модель 2017 года.
В итоге, MoonCats стали пионерами генеративного минтинга, основанного на цепочке, с использованием доказательства работы и открытого доступа для пользователей в августе 2017 года, с проверяемым процессом рендеринга, закрепленным хешем в контракте и компактным рецептом на цепочке для каждого токена.
23,96K