MoonCats este cea mai veche artă generativă pe Ethereum în sensul strict și tehnic de a fi generată de utilizatori sub un algoritm verificabil on-chain. Perioadă. Iată de ce🧵
Implementare on-chain 2017. Contractul MoonCatRescue a fost verificat pe 9 august 2017, precedând ERC-721 și majoritatea infrastructurii NFT.
Aleatoriu în lanț, în timpul activării. Când proprietarii apelează activate(), contractul se angajează la searchSeed = block.blockhash(block.number - 1), care nu poate fi cunoscut decât chiar înainte de activare. Acest lucru previne precalcularea sau premierea rezultatelor dorite.
Mentă închisă proof-of-work. Minting folosește rescueCat(bytes32 seed), care calculează catIdHash = keccak256(seed, searchSeed) și necesită catIdHash[0] | catIdHash[1] | catIdHash[2] == 0x0. În practică, salvatorii au trebuit să caute semințe în afara lanțului până când a fost găsit un hash cu trei zero octeți la început, apoi să trimită acea sămânță în lanț. Acest lucru a făcut ca generarea să fie descoperită de mineri, mai degrabă decât pre-generată de creatori.
Derivarea deterministă a ID-ului la monetărie. Pentru semințe valide, contractul atribuie catId = bytes5((catIdHash & 0xffffffff) << 216), adică cei 32 de biți mici ai hash-ului s-au mutat într-un identificator de 5 octeți, cu octetul mare rezervat pentru steagul "geneza". Unicitatea este impusă în lanț cu require(catOwners[catId] == 0x0).
Generator canonic ancorat pe lanț. Contractul stochează imageGenerationCodeMD5, astfel încât clienții să poată verifica dacă codul de redare pe care îl folosesc se potrivește cu generatorul canonic la care face referire contractul. Aceasta este o ancoră criptografică on-chain pentru randare.
"Rețetă" compactă, generativă, complet stocată în lanț. Fiecare MoonCat Hex ID de 5 octeți codifică rețeta completă: direcție, inversare paletă, model de blană, expresie facială, poziție și culoare de bază. Al doilea octet ("k") multiplexează pose/față/blană/față, iar ultimii trei octeți furnizează RGB de bază care este extins într-o paletă.
Deschidere, redare de referință. Generatorul oficial mooncatparser mapează determinist ID-ul de 5 octeți într-o matrice de pixeli 2D. Oricine poate reda independent un MoonCat doar din ID-ul on-chain, asigurând verificabilitatea pe termen lung.
Distribuție controlată de utilizator la monetărie. "Scanerul" original a permis utilizatorilor să extragă semințe local și să decidă dacă să trimită o salvare, ceea ce a făcut ca statisticile de raritate și distribuția trăsăturilor să apară din participare deschisă, mai degrabă decât dintr-o cădere precalculată.
Pre-ERC-721, piață și denumire complet on-chain. Contractul din 2017 include o piață on-chain (makeAdoptionOffer, acceptAdoptionOffer, cereri) și o denumire imuabilă prin nameCat, demonstrând un mint generativ autonom plus proveniență și strat de schimb într-un singur sistem.
Mai târziu se întărește la imagini complet în lanț. În 2022, au fost implementate contracte suplimentare (MoonCatSVG, MoonCatColors, MoonCatTraits), astfel încât lanțul în sine să poată returna SVG-ul pentru orice MoonCat direct din rețeta sa on-chain, eliminând dependențele de imagine off-chain, păstrând în același timp modelul generativ original din 2017.
În concluzie, MoonCats a fost pionier în emiterea generativă on-chain, proof-of-work, descoperită de utilizatori în august 2017, cu o conductă de randare verificabilă ancorată de un hash în contract și o rețetă compactă on-chain per token.
23,93K