MoonCats est le premier art génératif sur Ethereum dans le sens strict et technique d'être généré au moment de la frappe par les utilisateurs sous un algorithme vérifiable sur la chaîne. Point. Voici pourquoi🧵
Déploiement on-chain en 2017. Le contrat MoonCatRescue a été vérifié le 9 août 2017, précédant l'ERC-721 et la plupart des infrastructures NFT.
Randomness au moment de l'activation sur la chaîne. Lorsque les propriétaires appellent activate(), le contrat s'engage à searchSeed = block.blockhash(block.number - 1), qui ne peut être connu qu'immédiatement avant l'activation. Cela empêche la précomputation ou le prémine de résultats souhaitables.
Minting basé sur le proof-of-work. Le minting utilise rescueCat(bytes32 seed), qui calcule catIdHash = keccak256(seed, searchSeed) et nécessite que catIdHash[0] | catIdHash[1] | catIdHash[2] == 0x0. En pratique, les sauveteurs devaient rechercher des seeds hors chaîne jusqu'à ce qu'un hash avec trois octets zéro en tête soit trouvé, puis soumettre ce seed sur chaîne. Cela a rendu la génération sans permission et découvrable par les mineurs plutôt que pré-générée par les créateurs.
Dérivation d'ID déterministe à la création. Pour les graines valides, le contrat attribue catId = bytes5((catIdHash & 0xffffffff) << 216), c'est-à-dire que les 32 bits les plus bas du hachage sont décalés dans un identifiant de 5 octets, avec l'octet le plus élevé réservé pour le drapeau "genesis". L'unicité est imposée sur la chaîne avec require(catOwners[catId] == 0x0).
Générateur canonique ancré sur la chaîne. Le contrat stocke imageGenerationCodeMD5 afin que les clients puissent vérifier que le code de rendu qu'ils utilisent correspond au générateur canonique auquel le contrat fait référence. Il s'agit d'une ancre cryptographique sur la chaîne pour le rendu.
Recette compacte et générative entièrement stockée sur la chaîne. Chaque MoonCat a un ID Hex de 5 octets qui encode sa recette complète : direction, inversion de palette, motif de fourrure, expression faciale, pose et couleur de base. Le deuxième octet ("k") multiplexe pose/visage/fourrure/orientation, et les trois derniers octets fournissent le RGB de base qui est développé en une palette.
Ouvrez, référence du rendu. Le générateur officiel mooncatparser mappe de manière déterministe l'ID de 5 octets dans un tableau de pixels 2D. Quiconque peut re-rendre indépendamment un MoonCat uniquement à partir de l'ID on-chain, garantissant une vérifiabilité à long terme.
Distribution contrôlée par l'utilisateur lors de la création. Le "Scanner" original permettait aux utilisateurs de miner des graines localement et de décider s'ils voulaient soumettre un sauvetage, ce qui a fait émerger des statistiques de rareté et des distributions de traits grâce à une participation ouverte plutôt qu'à un drop précalculé.
Marché entièrement on-chain et nommage avant l'ERC-721. Le contrat de 2017 comprend un marché on-chain (makeAdoptionOffer, acceptAdoptionOffer, requests) et un nommage immuable via nameCat, démontrant un mint génératif autonome plus une couche de provenance et d'échange dans un seul système.
Ensuite, durcissement vers des images entièrement on-chain. En 2022, des contrats supplémentaires (MoonCatSVGs, MoonCatColors, MoonCatTraits) ont été déployés afin que la chaîne elle-même puisse renvoyer le SVG pour n'importe quel MoonCat directement à partir de sa recette on-chain, éliminant les dépendances d'images off-chain tout en préservant le modèle génératif original de 2017.
En résumé, MoonCats a été le pionnier de la création générative découverte par les utilisateurs, ancrée sur la chaîne, avec des semences, et régulée par la preuve de travail en août 2017, avec un pipeline de rendu vérifiable ancré par un hachage dans le contrat et une recette compacte sur la chaîne par jeton.
23,96K