MoonCats è la prima arte generativa su Ethereum nel senso stretto e tecnico di essere generata al momento della mint da parte degli utenti tramite un algoritmo verificabile on-chain. Punto. Ecco perché🧵
Implementazione on-chain del 2017. Il contratto MoonCatRescue è stato verificato il 9 agosto 2017, precedendo l'ERC-721 e la maggior parte dell'infrastruttura NFT.
Randomness al momento dell'attivazione on-chain. Quando i proprietari chiamano activate(), il contratto si impegna a searchSeed = block.blockhash(block.number - 1), che non può essere conosciuto fino a poco prima dell'attivazione. Questo previene la precomputazione o il premine di output desiderabili.
Minting a prova di lavoro. La minting utilizza rescueCat(bytes32 seed), che calcola catIdHash = keccak256(seed, searchSeed) e richiede che catIdHash[0] | catIdHash[1] | catIdHash[2] == 0x0. In pratica, i soccorritori dovevano cercare i semi off-chain fino a trovare un hash con tre byte iniziali zero, per poi inviare quel seme on-chain. Questo ha reso la generazione priva di permessi e scoperta dai miner piuttosto che pre-generata dai creatori.
Derivazione ID deterministica al mint. Per semi validi, il contratto assegna catId = bytes5((catIdHash & 0xffffffff) << 216), cioè, i 32 bit più bassi dell'hash spostati in un identificatore di 5 byte, con il byte alto riservato per il flag "genesis". L'unicità è garantita on-chain con require(catOwners[catId] == 0x0).
Generatore canonico ancorato on-chain. Il contratto memorizza imageGenerationCodeMD5 in modo che i clienti possano verificare che il codice di rendering che utilizzano corrisponda al generatore canonico a cui fa riferimento il contratto. Questo è un'ancora crittografica on-chain per il renderer.
"Ricetta" generativa compatta completamente memorizzata on-chain. Ogni MoonCat ha un ID Hex di 5 byte che codifica la sua ricetta completa: direzione, inversione della palette, motivo del pelo, espressione facciale, posa e colore di base. Il secondo byte ("k") multiplexa posa/faccia/pelo/direzione, e gli ultimi tre byte forniscono il RGB di base che viene espanso in una palette.
Apri, renderer di riferimento. Il generatore ufficiale mooncatparser mappa in modo deterministico l'ID di 5 byte in un array di pixel 2D. Chiunque può ri-renderizzare indipendentemente un MoonCat partendo solo dall'ID on-chain, garantendo la verificabilità a lungo termine.
Distribuzione controllata dall'utente al momento della creazione. Il "Scanner" originale permetteva agli utenti di estrarre semi localmente e decidere se inviare un salvataggio, il che ha fatto emergere statistiche di rarità e distribuzioni di tratti dalla partecipazione aperta piuttosto che da un drop precomputato.
Mercato e denominazione completamente on-chain pre-ERC-721. Il contratto del 2017 include un marketplace on-chain (makeAdoptionOffer, acceptAdoptionOffer, requests) e una denominazione immutabile tramite nameCat, dimostrando un mint generativo autonomo più un livello di provenienza e scambio in un unico sistema.
Successivamente, indurimento per immagini completamente on-chain. Nel 2022, sono stati implementati contratti supplementari (MoonCatSVGs, MoonCatColors, MoonCatTraits) affinché la catena stessa possa restituire l'SVG per qualsiasi MoonCat direttamente dalla sua ricetta on-chain, eliminando le dipendenze dalle immagini off-chain pur preservando il modello generativo originale del 2017.
In sintesi, MoonCats ha pionierato la generazione di minting generativo scoperto dagli utenti, basato su catena, con proof-of-work e semina, nell'agosto 2017, con un pipeline di rendering verificabile ancorata da un hash nel contratto e una ricetta compatta on-chain per ogni token.
23,94K