Digital, tokenized real world assets + layer 2 scaling solutions will enable the next breakthrough in Dapps. 3D interfaces can be seamlessly integrated into Dapps, enabling sophisticated user interaction.

What it does

Splits any arbitrary ERC721 into an ERC20 representing shares of the NFT. Anyone who possesses 100% of the ERC20 tokens can reconstruct the NFT and redeem the ERC721.

Once the ERC20s are minted, they are deposited into a Celer channel where they are traded and transferred.

We built a 3D interactive CryptoKitties battling system where you can compete over LAN for other people's CryptoKitty shares by being the first to take the other's position on the game board. If you defeat their Kitty, you receive the ERC20 tokens in the Celer state channel. The ERC20 tokens are then redeemed for the trophy cat.

We deployed it using Infura and registered it on ENS (Ropsten) at cujoapp.eth.

Example TX of an NFT being deposited and minting 100 ERC20 tokens:

How we built it

We wrote the smart contracts in Solidity using the Truffle framework, the battling system using three.js/WebGL and Node.js/React, and the gaming logic using Celer. We used CryptoKitties as the NFT.

Challenges we ran into

Some frameworks only worked on specific test nets. For example CryptoKitties/Dapper on Rinkeby vs Celer on Ropsten. Overcoming the complexity and bugs that come up in a significantly complex multiplayer 3D application was the main challenge on the frontend.

Accomplishments that we're proud of

Fully functional 3D cat battling with dynamic CryptoKitty rendering. Awesome sound effects. Smooth integration with Celer.

What we learned

Layer-2 tech will make high transaction volume Dapps much more viable. Splitting NFTs into divisible, tradeable tokens might have interesting applications in other financial/ asset management apps.

How to use some of the projects we integrated (Dapper, CryptoKitties, Celer, ENS).

What's next for Cujo

Resting before his next big battle

Built With

Share this project: