Zora 🤝 Mint Songs

Traditional auction houses take art into custody, preventing the item from being listed in multiple marketplaces. Web3 enables more freedom for creators. The original Mint Songs platform was built on our own, custom, marketplace methods. Creators could mint nfts on Mint Songs, and also list them for sale on OpenSea, Zora, and other marketplace protocols. One protocol selling the nft removes the listing from other marketplaces. While having our own, custom, marketplace methods was nice for control & customization, there are teams focused exclusively on building open marketplace protocols. enter Zora.

If I have seen further, it is by standing on the shoulders of giants.

Zora is the open protocol to buy, sell and curate NFTs on Ethereum. Mint Songs V2 is the protocol for musicians to create music nfts. Mint Songs V2 is now built on Zora V3. Here’s how we work:

  • Mint Songs focuses on music NFT toolkits.

  • Zora focuses on the nft marketplace.

UX - what does this look like for musicians?

  1. Musician mints an NFT on Mint Songs V2.

    1. Zora Auction is created.

  2. Collectors places bids on songs.

    1. Calls createBid method on Zora.

  3. When the auction ends, the collector settles the auction.

    1. Calls settleAuction method on Zora.

Modules - Building a marketplace on Zora V3.

  1. createAuction - Zora Docs.

  2. createBid - Zora Docs.

  3. settleAuction - Zora Docs.

Let’s take a sec to walk through the lifecycle of each NFT.

Minting

If you’ve ever minted an NFT on Mint Songs V2, you’re probably familiar with this interface. This is the minter musicians use to create new 1:1 music nfts.

Mint Songs V2 music NFT minter

As a musician, you add the details for your NFT, and when you click mint, here’s the smart contract transaction you sign on Ethereum Mainnet.

  1. onlyWhitelistedOrOwner - Check if minter is on Mint Songs V2 whitelist.

  2. _mint - mint your NFT and create metadata.

  3. approveMarketplace - allow both Zora V3 Transfer Helper & Mint Songs V2 marketplace to manage your Mint Songs V2 music nfts.

  4. findersEth.createAuction - create an Auction on Zora V3.

  5. tokenRoyaltyRecipient - set royalties on-chain.

Mint Songs V2: 0x2B5426A5B98a3E366230ebA9f95a24f09Ae4a584

Once an NFT is minted, it is discoverable by collectors on:

Bidding

Once an NFT is minted, bids can be placed, kicking off the Zora Auction and transferring your NFT to escrow.

Placing a bid on Mint Songs V2

Collectors sign transactions directly on the Zora V3 Finders ETH contract. Here’s the createBid method collectors sign when the use Mint Songs V2.

Zora V3 Finders ETH - 0x9458E29713B98BF452ee9B2C099289f533A5F377
  1. auctionForNFT - checks auction exists for nft.

  2. First Bid

    1. require(block.timestamp >= auction.startTime, "AUCTION_NOT_STARTED"); - check if the auction has started.

    2. require(msg.value >= auction.reservePrice, "RESERVE_PRICE_NOT_MET"); - checks if reserve price met.

    3. erc721TransferHelper.transferFrom(_tokenContract, seller, address(this), _tokenId); - transfers nft to escrow.

  3. 2+ bid

    1. require(block.timestamp < (firstBidTime + duration), "AUCTION_OVER"); - check auction hasn’t ended.

    2. require(msg.value >= minValidBid, "MINIMUM_BID_NOT_MET"); - checks 10% bid increase from existing highestBid.

    3. _handleOutgoingTransfer - refund previous bidder.

  4. emit AuctionBid - update auction with new highest bid.

Settle Auction

You know an auction has ended & is ready to be settled if it looks like this:

Auction Ended vs Settled

Again, collectors always interact directly with Zora V3. Here’s what the settleAuction method of Zora V3 Finders ETH contract looks like:

settleAuction - Zora V3 - 0x9458E29713B98BF452ee9B2C099289f533A5F377
  1. require(firstBidTime != 0, "AUCTION_NOT_STARTED"); - verifies auction has started.

  2. require(block.timestamp >= (firstBidTime + auction.duration), "AUCTION_NOT_OVER"); - verifies auction has ended.

  3. _handleRoyaltyPayout - payout royalties.

  4. _handleProtocolFeePayout - payout protocol.

  5. _handleOutgoingTransfer -

    1. pay Finders Fee.

    2. pay the Seller.

  6. IERC721(_tokenContract).transferFrom(address(this), auction.highestBidder, _tokenId); - transfer the NFT to winning bidder.

That’s it! That’s the lifecycle of an NFT on Mint Songs V2 from minted to sold. Hopefully this illuminates a little more of how Mint Songs V2 works with Zora V3 as well.

Loading...
highlight
Collect this post to permanently own it.
sweetman logo
Subscribe to sweetman and never miss a post.