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: https://ropsten.etherscan.io/tx/0x1bf323ecd2c4447b9a8a02013d4bf5456a3b0c5d97f7c7014d2591f4b8fe8863
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