Inspiration

Rarity has been a great source of inspiration for our team member Ping Chen. Although the concept may seem "basic" at first glance, the creative community has developed amazing extensions on top of it. This is why we are developing a universal NFT infrastructure on Fantom, and the idea of an NFT wallet immediately came to mind.

What it does

NFT Wallets can transform any NFT into an actual wallet and contain any liquid, illiquid or soul-bound crypto asset via a smart contract. These assets are not locked to the owner, but to the NFT itself and creates de facto digital first-class citizens. Instead of the wallet address, an NFT can become now the face and alias of a person to engage in blockchain transactions. For instance, one does not need to know the wallet address of a specific person, but simply his NFT id in a collection (e.g. Astro Kid #22 instead of 0x12345.....). As the demo video shows, users can:

  • Create a wallet in one click from one of their NFT.
  • Transfer assets to/from their NFT wallet.
  • Batch-airdrop to one, several or an entire collection of NFTs, even if the user doesn't know the owners and even if the actual NFT wallets do not exist yet.
  • Check the transaction history of any NFT wallet.

How we built it

We wrote a Solidity smart contract of a contract wallet similar to Gnosis Safe or Argent. It points ownership to an NFT address. We have built a frontend app making it easy to use for the average user.

Challenges we ran into

  • Tackling non-enumerable NFTs to display on our frontend app.
  • Parsing action calldata to make the NFT wallet contract behave like a "real" wallet.

Accomplishments that we're proud of

Opening up endless possibilities of application of "monkey jpgs" in blockchain gaming, DAOs, digital art, social recovery, etc.

What we learned

We have found out that there's a non-standard interface of ERC-721 that can help the frontend app to work better (especially for enumerables).

What's next for NFT Wallet

We'd like to integrate the wallet with soul-bound tokens, locked vote tokens, airdrop applications.

Built With

  • chakra-ui
  • etherjs
  • netlify
  • react
  • vite
  • wagmi
Share this project:

Updates