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-байтовий ідентифікатор, а високий байт зарезервовано для прапорця "genesis". Унікальність забезпечується в ланцюжку за допомогою require(catOwners[catId] == 0x0).
Канонічний генератор закріплений на ланцюгу. Контракт зберігає imageGenerationCodeMD5, щоб клієнти могли перевірити, що код рендерингу, який вони використовують, збігається з канонічним генератором, на який посилається контракт. Це криптографічний якір у ланцюжку для рендерера.
Компактний, генеративний «рецепт» повністю зберігається в мережі. 5-байтний Hex ID кожного MoonCat кодує його повний рецепт: напрямок, інверсія палітри, візерунок хутра, вираз обличчя, поза та основний колір. Другий байт ("k") мультиплексує pose/face/fur/faceing, а останні три байти забезпечують базовий RGB, який розгортається в палітру.
Відкритий, еталонний рендерер. Офіційний генератор mooncatparser детерміністично відображає 5-байтовий ID у 2D-піксельний масив. Будь-хто може незалежно відрендерити MoonCat лише з ідентифікатора в мережі, що забезпечує довгострокову перевірку.
Контрольований користувачем розподіл на монетному дворі. Оригінальний «Сканер» дозволяв користувачам видобувати насіння на місцевому рівні та вирішувати, чи подавати заявку на порятунок, завдяки чому статистика рідкісності та розподіл ознак з'явилися завдяки відкритій участі, а не попередньо обчисленому падінню.
Pre-ERC-721, повністю ончейн маркет і неймінг. Контракт 2017 року включає в себе ончейн-маркетплейс (makeAdoptionOffer, acceptAdoptionOffer, requests) і незмінне неймінг через nameCat, демонструючи автономний генеративний монетний двір плюс рівень походження та обміну в одній системі.
Пізніше затвердіння до повністю ончейнових зображень. У 2022 році були розгорнуті додаткові контракти (MoonCatSVGs, MoonCatColors, MoonCatTraits), щоб сам ланцюг міг повертати SVG для будь-якого MoonCat безпосередньо зі свого ончейн-рецепту, усуваючи залежності зображень поза ланцюгом, зберігаючи при цьому оригінальну генеративну модель 2017 року.
У підсумку, у серпні 2017 року MoonCats вперше запровадила генеративне карбування в ланцюжку, з доказом роботи та виявленням користувача, з перевіреним конвеєром рендерингу, закріпленим хешем у контракті, і компактним ончейн-рецептом на токен.
23,95K