Inspiration

@austpryb (dev) has partnered with a generative art creative, @0x_rxse, to do a Chainlink Hackathon themed NFT drop. The drop will likely be later in the year once the project is production worthy.

What it does

Deploying NFT's can be challenging and time consuming. Launchables offers an easy to use UI/API for managing layered, generative art assets.

Creatives upload and organize their digital art layers into collections. Launchables will deploy an NFT Factory that references this collection. Wallets can mint from this Factory contract and a VRF will supply random numbers for layers. A server side program will generate the layered art based on the VRF response on that NFT contract. (this VRF feature is untested and thus is not considered completed for the hackathon)

How we built it

This Web App is built on Flask Appbuilder (https://flask-appbuilder.readthedocs.io/), a popular Python web application framework used in Apache projects like Superset and Airflow. The image upload component is handled by IPFS while wallet ownership is maintained in the database by the Appbuilder API. Flask Appbuilder allows fine grained control over all model views and thus admins can gate keep models and views by wallet. The Web3 login is handled by React and the database integration is handled by serving a nonce, signing that nonce, and recovering the signee's address.

The Smart contract layer uses Brownie and deploys an NFT Factory that Mints a tradable of "LaunchCollectible" This means that after all of the art assets and layers have been initialized, the wallet operator publishes their collection as an asset Factory contract. This factory has a "RequestLaunchable" method that will request randomness and subsequently mint a token once the VRF is fulfilled.

Chainlink VRF consumer is used trigger the minting of the NFT token and fulfill a random request to assign each layer (up to 4 supported for MVP) a random integer. The factory contains a URI that holds the mapping table for layer indices and IPFS locations of each layer. If "layer1" maps to VRF integer 2, then "layer1" will use the second image in the list of "layer1" options.

What's next for NFT Launchpad on FlaskAppbuilder

There are some items that need development and testing to consider MVP requirements met. 1) VRF coordinator is untested and thus the demo uses server side RNG and does ont auto mint contract. This should be fixed first 2) Add minting to front end 3) Add wallet registration 4) Launch the Chainlink Hackathon themed NFT on the Polygon or Avalanche mainnet

Challenges we ran into

  • The most challenging piece of code to get right was the Web3 login, nonce, and JWT combo correct
  • Request Randomness still errors on the Factory contract on the Rinkeby network

Accomplishments that we're proud of

Flask Appbuilder is a great hybrid dapp framework due to its ease of use and scalability. It was really interesting to test building a Flask/React Web3 app and I am happy to have a Flask app that can easily deploy my smart contracts in the feature.

Built With

Share this project:

Updates