project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

KittyCross

In KittyCross, breed and collect ERC721 kitties with unique genetics across rollups. Their looks and home chains are determined by their DNA. Using DALL-E, each kitty's appearance is a visual treat, directly reflecting its genes. Embrace the extra meow with KittyCross! ๐Ÿฑ๐ŸŒ๐ŸŽฎ

KittyCross

Created At

ETHGlobal Istanbul

Winner of

IPFS & Filecoin - Grand Prizes

Arbitrum - Pool Prize

Prize Pool

Scroll - Deploy on Scroll

Prize Pool

Hyperlane - Best Interchain Application 1st Place

Project Description

Welcome to KittyCross, the fur-tastic cross-chain adventure! This project is all about collecting and breeding digital kitties across different rollups. Each kitty has their own genetic makeup that determines their look โ€“ from the swish of their tail to the twinkle in their eyes, and one special trait: their home chainID that determines which rollup chain our furry friend lives on.

Hereโ€™s where it gets purr-fect: when you breed two kitties, their offspring will carry a mix of their genes, with some unpredictable mutation. What's super cool is that the chainID trait in their DNA tends to land them on a different rollup chain than their parents. We support @Scroll, @Base, @Arbitrum, and @PolygonZKEVM. So, be prepared to hop across various rollups to cuddle your new fur-babies!

We have forked the original CryptoKitties smart contracts, re-wrote them to be cross-chain compatible and adjusted the genetic code: We've woven the chainID right into their genetic fabric, ensuring a meow-tastic cross-chain experience.

And for the cherry on top, your newborn kitties will be generated using DALL-E based on the genetic makeup! DALL-E is deterministic when providing the same seed, so we invented a prompt structure based on the genetic properties that will always result in the same kit-tastic image. Plus, weโ€™ve built a sleek front-end from scratch. ๐Ÿพ๐ŸŒ๐ŸŽฎ

How it's Made

KittyCross is a meow-tastic ERC721 game, creating a unique kitty collecting and breeding experience. The front-end is built using React and NextJS, with WalletConnect for user authentication and smart contract interactions.

We forked and upgraded the CryptoKitties smart contracts to the latest Solidity version. Notably, we adjusted the kitty genetics to include chainID as a trait stack, enabling cross-chain breeding. This includes one visible chainID and three hidden ones, increasing the likelihood of different chainIDs surfacing during breeding.

Our KittyCross contract introduces additional variables and mappings for cross-chain breeding. We support rollup chains like @Base, @Scroll, @Arbitrum, and @PolygonZKEVM, facilitated by @Hyperlane for cross-chain interactions.

The breeding process is now multi-step, accommodating sires and matrons on different chains. It involves no-cooldown checks, โ€œanti-incestโ€ checks, and updates in breeding states. Upon successful breeding request, the genetics of the sire are sent to the matron for calculating the genetic combination.

Post-pregnancy, the genes of the sire and matron are mixed to determine the newborn kitty's traits, including the chain ID. This ID dictates the chain where the kitty is minted. Again, @Hyperlane is used to mint the new kitty on the destination chain.

We departed from the pre-defined imagery model of CryptoKitties. Instead, we use DALL-E to generate kitty images based on their genetics. The results are deterministic, with a fixed seed ensuring consistency. These images are cached and stored on IPFS via @Filecoin for quicker access.

The back-end, developed in Python, orchestrates these components. To add unpredictability in kitty traits, we integrated @Chainlink VRF. This prevents users from predicting or engineering specific rare traits, adding a layer of randomness and fairness to the breeding process.

background image mobile

Join the mailing list

Get the latest news and updates