/frameworks-ri-ja

Framework Hackathon Project by Ricy and Jamie

Primary LanguageTypeScript

Mint-A-Cast: A Farcaster Frame

An ETHGlobalFramework Hackathon Project by Ricy @ricy and Jamie @chicago.

Introduction

We created the Mint-A-Cast frame to empower creators and users. We wanted to solve 2 problems:

  • How do we have on-chain attribution for users who save casts?
  • How do we reward creators for quality, popular casts?

Our Mint-A-Cast frame solves these two problems. First, the frame allows users to mint banger casts and allows them to have an on-chain record of casts they like. Second, creators (cast authors) can set a fee when their casts are minted; this gives creators another avenue of revenue. Creators also have a way to track users who are rewarding them for their content; this gives another directory to content creators to possibly reward their followers. With the Mint-A-Cast frame, users directly reward creators for quality content thus increases the reward for casting quality content.

MVP Summary

Through the use of this frame, the user can mint a cast as an NFT. Currently, the user will need to visit the site – https://frameworks-ri-ja-seven.vercel.app – to paste the URL to upload the metadata. Afterward, they use the link provided to cast that will spin up a frame. This single-frame will allow users to mint casts directly from the Warpcast platform. Currently, the cast creator can set a minting fee by interacting with the contract directly as well as withdraw funds.

User Flow

  1. Find a cast they like; copy the cast link (format: https://warpcast.com/[castAuthorName]/[castShortHash])
  2. Navigate to the website https://frameworks-ri-ja-seven.vercel.app
  3. Past URL into input box, click button to next step
  4. Follow Transaction pop-up in order to use the Pinata SDK to upload the IPFS
  5. Copy the link to the frame generated.
  6. Either cast this link to spin up the frame or use a debugger like frames.js to see the frame.
  7. Click mint & sign the wallet pop up
  8. Wait for the transaction to complete

Currently, the Mint-A-Cast website and frame is usable to mint any cast; so no customization is required beyond providing the cast link. You can use the link to the blockchain explorer to see recent mints: https://sepolia.etherscan.io/address/0x4dd9ed609abbb6ae489045a678ff3080d3f4106c

Technical Summary

The contract is a erc1155 smart contract. The contract is deployed on Sepolia and developed with Hardhat. It also provides interface for authors to adjust price and withdraw profits.

The frontend is a NextJS project. Using Framejs to achieve single page minting frame. This Mint-A-Cast frame is to present users with the cast image of the nft they can mint with a the mint button. The mint button would allow users to send transactions to Sepolia chain and the transaction would also send some ETH as the fees to buy/mint the nft. After users have submitted the transaction, the frame returns a transaction submitted frame with transaction hash. To convert a cast into NFT, the project is using APIs by Wield to retrieve related data and using the Pinata SDK to upload metadata to IPFS.

Future Roadmap

General Improvements

  • Move production to Base Mainnet; currently dev is on Sepolia
  • Switch from Wield API to Pinata Farcaster API when they accept the short hash and username for cast look up.
  • Create multipage frame
    • First Page
      • Allow users to input cast link into first frame
      • Submit button & transaction to upload metadata IPFS
    • Second Page
      • Show picture preview of cast
      • Mint button & transaction to mint NFT
    • Third Page
      • Show success image
      • Link out button to blockchain explorer
  • Deploy an 1155 contract per creator from first mint
  • When the same cast is minted, it will have the same token id; hence, using ERC 1155.
  • Each NFT will have attributes to show:
    • Date
    • Author Name
    • Channel cast was made in
  • Make sure contract follows standards to be minting with Warps
  • Small ~$0.10 fee for each mint to go to us (Ricy & Jamie) to help cover cost to maintain the Frame

User Improvements

  • The frame's input with be able to accept the cast URL or a full cast hash input
  • After the first mint, when the user shares their minted cast other users can mint the same cast with Warps through Warpcast.
  • User will have a Mint-A-Cast web client to browse Farcaster
    • Minting cast is an embedded function
    • Users can use any currency (cross chain execute; full chain abstraction)
    • User can create their own custom Mint-A-Cast frame for specific casts of theirs

Creator Improvements

  • Creation of a web client front end for creator tools including but not limited to
    • Set mint pricing (e.g. 0.001 ETH)
    • Set mint limit amount (e.g. 10 total)
    • Set mint time limit (e.g. 1 day)
    • Unmintable Cast (disabled minting on some casts)
    • Airdrop minted casts to previous supporters
    • Allowlist minting
    • Subscription to cast minting (through Hypersub)
    • Specify currency received (e.g. Base ETH, DEGEN)
      • Users will be able to use whatever
      • The currency will be instant bridged under the hood
    • Specify Chain for Depolyed Contract
      • Default to a chain if none selected
    • Allocate profits directly to an address withouth needing to withdraw