Basket NFT: A Flow network contract enabling minting and managing unique baskets of NFTs & FTs, expanding use cases and offering a new standard for digital asset composability.

The problem Basket solves

Basket NFT allows people to:

  • Bundle NFTs and FTs: Create unique combinations of Non-Fungible Tokens and Fungible Tokens in a single basket, tailoring it to specific needs or preferences.
  • Trade or Lend: Use these baskets anywhere a single NFT is required - for trading on marketplaces, in DApps, or as collateral in DeFi lending protocols.
  • Enhance Flexibility: The basket can hold purely FTs, enabling 'NFT' based collateral in lending protocols to use underlying FTs without changing the loan contract.
  • Standardize Composability: It aims to set a new standard for digital asset composability in the Flow ecosystem, making it easier and safer for future projects to utilize composite NFTs and FTs.

Challenges I ran into

While building Basket NFT, we encountered a specific challenge: accessing metadata view for NFTs stored within another NFT. This was a crucial aspect as it would enable users to view details about the individual NFTs and FTs within a basket.
The challenge arose from the fact that the current NFT standard on the Flow network does not naturally support viewing metadata of nested NFTs. We found that the metadata view was not directly accessible for objects stored inside another object.
To overcome this hurdle, we decided to store and use the IDs and collection NFT type details of the nested NFTs instead. This provided necessary information about the NFTs in the basket, albeit not as rich as the full metadata view.
While this solution worked for our hackathon project, we believe a more comprehensive solution is needed for the Flow ecosystem. We see a future where composability is standardized, making it easier to unlock the potential of composable NFTs. This experience has motivated us to work towards making this vision a reality.