CryptOrchids was primarily inspired by how uninspiring I found a lot of NFT projects to be. It felt to me like there was a lot of digital art being tokenized rather than new art or collectibles or games that could only exist with blockchain technology.
On the other side of the spectrum sat metaverse games that felt like a full time job to start playing - buy tokens, join the DAO, learn the ins and outs of the market so you don't lose your shirt.
So I set out to create something that hit a sweet spot in the middle - an experience that is only possible with blockchain technology, but one that is easy to understand and simple to start playing.
I've written more extensively about my inspiration on the CryptOrchids almanac.
What it does
CryptOrchids are plant NFTs, or PlaNFTs, that live - and die! - on the Ethereum blockchain.
Green thumb gardeners can purchase CryptOrchid seeds in the Nursery, which calls the public
webMint function on the CryptOrchidsERC721 contract.
Seeds can then be germinated, which only the token owner can call, also on the CryptOrchids website, but ultimately anywhere that consumes the CryptOrchids ABI.
Germinating a seed calls Chainlink VRF for a random number used to determine the species - the CryptOrchid genum has 10 species in varying rarity.
Once you germinate a CryptOrchid, that starts the game clock - you must then water your flower exactly every 7 days to keep it alive. There's a 3 hour window to perform your watering transaction, another public but owner-only function on the contract.
Watering updates on-chain data, so it costs some gas.
If a plant isn't watered in time, or is overwatered, it will die. Dead CryptOrchids cannot be sold.
If your CryptOrchid dies the only thing you can do is compost it. Composting burns the token allowing for a new seed to be purchased by anyone who wants one.
How we built it
CryptOrchids is primarily an ERC721 compliant smart contract written in Solidity and deployed to the Ethereum mainnet. Supporting software includes a subgraph via The Graph for indexing flower data for better developer ergonomics; a React dApp that consumes blockchain data via Infura and the subgraph GraphQL API; and some scripts - one I'm providing that helps owners automate watering and others that help keep game data up to date.
- verified contract on Etherscan
- subgraph repo
- subgraph playground
- "watering can" repo
- OpenSea discord bot repo
Challenges we ran into
Building for the blockchain has been an intimidating but refreshing challenge. I found myself needing to be a better programmer and architecting the contract in a way that I could minimize gas. I really bought in to the decentralized ethos and am ultimately frustrated I couldn't find decentralized solutions for a few problems - I'm running some routine scripts to keep the aliveness of flowers up to date across places that cache it like OpenSea and the subgraph, and I'd prefer for nothing to depend on me.
Accomplishments that we're proud of
Selling 8eth worth of tokens in 36 hours is incredible, but I'm probably most proud of the comparisons to Tomagotchis. The project got a little press, definitely broke even despite a large contract deployment cost. It was really cool to see a wallet that owned an Autoglyph and Cryptopunk buy 20+ seeds.
What we learned
The biggest lesson is a familiar one. Code is just code, if you read enough of it and experiment with it you can figure it out. New contexts can be challenging, but its not mystical.
What's next for CryptOrchids
I'm most interested in bringing CryptOrchids to various metaverses as 3D interactive objects. Most NFTs exist as posters you can place in a metaverse, but I'm starting to work with 3d models of flowers, starting with Decentraland.
The first experience will be a showroom - using the subgraph API we'll grab the 10 oldest living flowers, render 3d versions of the species, and add a plaque with the species, latin species, age and owner.
Next would be allowing owners to display their own CryptOrchids in their own spaces, and allowing them to water those plants in the 3d space.
It makes sense to start with 2d art in metaverses, it exists as the essence of itself. But the next step needs to be figuring out how to express more complex objects that are persistent, portable and provable. Houseplants are essentially art you interact with periodically so it's a sensible next step before things like cars or buildings.
If the project garners enough interest, I will likely do a v2 on Matic or something like Flow. A lot of feedback loves the concept, but finds a $50 weekly watering bill to be a bit rich.
I also had to raise my prices to ensure I wasn't losing money on tokens that were germinated - paying 2 LINK for every token germinated is not sustainable pricing, but a layer 2 or alternative blockchain would decrease those costs, allowing more growers to join the community.