# Zora 🤝 Mint Songs **Published by:** [Mint Songs Engineering](https://paragraph.com/@mint-songs-engineering/) **Published on:** 2022-07-09 **URL:** https://paragraph.com/@mint-songs-engineering/zora-mint-songs ## Content 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. Zora <> Mint Songs UX - what does this look like for musicians? Musician mints an NFT on Mint Songs V2. Zora Auction is created. Collectors places bids on songs. Calls createBid method on Zora. When the auction ends, the collector settles the auction. Calls settleAuction method on Zora. Modules - Building a marketplace on Zora V3. createAuction - Zora Docs. createBid - Zora Docs. 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. onlyWhitelistedOrOwner - Check if minter is on Mint Songs V2 whitelist. _mint - mint your NFT and create metadata. approveMarketplace - allow both Zora V3 Transfer Helper & Mint Songs V2 marketplace to manage your Mint Songs V2 music nfts. findersEth.createAuction - create an Auction on Zora V3. tokenRoyaltyRecipient - set royalties on-chain. Mint Songs V2: 0x2B5426A5B98a3E366230ebA9f95a24f09Ae4a584 Once an NFT is minted, it is discoverable by collectors on: Mint Songs Marketplace. Zora Marketplace. OpenSea Marketplace. 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 auctionForNFT - checks auction exists for nft. First Bid require(block.timestamp >= auction.startTime, "AUCTION_NOT_STARTED"); - check if the auction has started. require(msg.value >= auction.reservePrice, "RESERVE_PRICE_NOT_MET"); - checks if reserve price met. erc721TransferHelper.transferFrom(_tokenContract, seller, address(this), _tokenId); - transfers nft to escrow. 2+ bid require(block.timestamp < (firstBidTime + duration), "AUCTION_OVER"); - check auction hasn’t ended. require(msg.value >= minValidBid, "MINIMUM_BID_NOT_MET"); - checks 10% bid increase from existing highestBid. _handleOutgoingTransfer - refund previous bidder. 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 require(firstBidTime != 0, "AUCTION_NOT_STARTED"); - verifies auction has started. require(block.timestamp >= (firstBidTime + auction.duration), "AUCTION_NOT_OVER"); - verifies auction has ended. _handleRoyaltyPayout - payout royalties. _handleProtocolFeePayout - payout protocol. _handleOutgoingTransfer - pay Finders Fee. pay the Seller. 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. ## Publication Information - [Mint Songs Engineering](https://paragraph.com/@mint-songs-engineering/): Publication homepage - [All Posts](https://paragraph.com/@mint-songs-engineering/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@mint-songs-engineering): Subscribe to updates