Who we are

We are CommunityMint! Our team is comprised of two individuals: Jonathan and Zechen. Jonathen is a graduate student studying comupter science at Georgia Tech and resides in Atlanta, GA. Zechen is an engineer working at Texas Instruments and resides in Houston, TX.

Inspiration/Problem we tackled

Inspired by the recent surge in popularity of non-fungible tokens (NFTs), we set out to use the unique properties of DAML smart contracts to create our own spin-off of an art NFT marketplace. Current NFT-related blockchains require developers to make large trade-offs between privacy and consistency. For example, most NFT marketplaces require users to connect their wallets, leaking all of their past and future transactions to the public. In contrast, with the help of DAML, our application allows users to have full control over their privacy options in NFT transactions. Additionally, many NFT marketplaces are built off of tight-knit communities, and our application gives communities the extra option to display and transact NFTs only to each other.

What it does

Users can buy, sell, and mint DAML NFTs, which are just unique digital asset contracts with an image as metadata. Users can fully privatize their NFTs and display them to nobody else. They also have the option to display their NFTs semi-privately to certain communities. Only users with access to these communities will have access to the community's virtual shared ledger and can see and trade NFTs with other community members. Finally, users have the choice to display their NFTs to the public, which is technically just a community that everyone has access to. Like private art galleries, these private communities can help increase the exclusivity and value of certain art NFTs. These unique features give NFT enthusiasts much more flexibility in controlling who they want to trade and interact with and what NFT they want displayed where.

How we built it

We built CommunityMint using DAML as the backend and react.js as the frontend. The frontend features of communities and NFT interactions are handled by creating and archiving contracts derived from the DAML templates. Every action on the UI frontend has a counterpart on the DAML backend:

  • Minting a NFT on the front end means calling a non-consuming choice to create an Asset contract
  • Accepting a NFT transfer means calling a non-consuming choice to archive the current Asset contract and create a new Asset contract with the owner field changing to be the buyer.

To give a full picture of the DAML and UI intractions, we have uploaded a UI and DAML architecture of CommunityMint in the image gallery. For clarity, we have defined the archiving and recreation of a contract as modifying the contract in our diagram.

Challenges we ran into

This hackathon was our first experience developing a UI from the ground up. This lack of front-end experience was a huge obstacle for our development of CommunityMint, and we struggled to figure out how to get a fully functioning UI to communicate with the DAML templates and contracts. Additionally, because our front end skill was too low, throughout most of the hackathon, we were unsure if our DAML code would work for our front end purposes. This uncertainty stayed even after the DAML code successfully ran with DAML scripts, because the leap from DAML scripts to fully functioning UI was a huge one, and we did not initially see how to connect the two.

Accomplishments that we're proud of

We are most proud of the fact that all of our key features that highlight the daml template backend have been successfully implemented and functioning on the UI. We believe that CommunityMint has created something special within the NFT space by improving on the most important variable for the success of an NFT: its community.

What we learned

From this hackathon, we learned how daml works as well as a lot of front end knowledge. In the future, we plan to use our acquired knowledge to design web apps that can utilize resources like DAML to their full extent.

What's next for CommunityMint

There are a lot of aspects and features that we would like to continue to develop for CommunityMint. For the next step, we want to develop 2 main features:

  • Linking real world currency into CommunityMint, so users of CommunityMint can use real assets to exchange for our NFTs instead of using the fake wallets that we have installed now.
  • Adding an auto-refresh option on our NFT community display, so users do not have to trouble themselves with refreshing the NFT display everyday.

Additionally, we would eventually like to revamp the UI to make it more user friendly, since our current UI was developed with the intention of functionality and not ease of use.

Resource Links

Github: https://github.com/zlu89/CommunityMint

DAML ledger: https://console.hub.daml.com/ledger/luwpt45l694y3ypa/

Built With

Share this project:

Updates