Paint Swap Finance
Published in

Paint Swap Finance

Announcing Beardies

After many months of hard work, we’re excited to announce our unique avatar & utility NFT collection!

About Beardies

Beardies are the second NFT collection from the PaintSwap team. Beardies are a next-gen generative art piece with 105 unique traits and only 2048 will ever exist.

Beardies will have 20 eye variations, 19 mouths, 15 shoes & 21 bodies with some super rare ones in there! Who will generate the rarest Beardie of them all?

NFTs can also be much more than an image. As with our first collection, which gives discounted marketplace fees, Beardies are not going unloved either.

Beardies will be able to claim 3% of the decentralized PaintSwap NFT marketplace fees, provide access to secret discord channels & more benefits to the owner in the future! (Does anyone like GameFi?)

When can I buy a Beardie?

Beardies will launch on the 17th of December at 22:00 UTC with a cost of 200 FTM each and you will be able to buy them directly at https://paintswap.finance

A maximum of 10 Beardies can be minted in a single transaction — if purchasing the maximum you will receive an extra one for free! This will be the only limit on purchases. More Beardies = More rewards. There is no whitelist and the PaintSwap team has reserved 0 Beardies.

NFT Marketplace Fees?

Each successful sale on the decentralized NFT marketplace has a 2.5% fee. 50% of this currently goes to buying and burning our token $BRUSH, 3% will go into a contract for Beardies holders to claim an equal slice of this. Claiming will be available within 48 hours of all the Beardies being minted.

ID 1337

One lucky minter will receive an airdrop of one of the last NFTs from our first collection “PaintSwap Official NFTs” this will be the person that randomly mints Beardie ID 1337.

Provenance Hash

We wanted Beardies to be as fair as possible so we brought on an experienced dev to help build our contracts.

As the popularity of NFTs increases so does the opportunity to take advantage of gaming the system — whether it’s from rogue rarity snipers or the developers themselves. The provenance hash is an elegant solution to this problem and was used by both Bored Apes Yacht Club on Ethereum, and by Spooky Magicats on Fantom. In simple terms using Magicats as an example, a SHA256 hash of each image is created and concatenated in order, then hashed again. This final value is saved as the provenance hash.

This is a way to guarantee that the images have not been changed before they are revealed.

(Pretty) Random Minting

To complete the process a starting index is chosen before minting starts — the more random the better. A common practice is to use a hash of somewhat unpredictable values as this will generate a pseudo random number. By adding this value to each token ID that is minted and finding the modulus of the collection supply, we can start minting from an unexpected location in the set.

(Iterator + Starting Index) % Supply = Token ID

Merkle Trees and Provable Random Minting

The current solutions are elegant and make sense for a deterministic blockchain. They are practical for most projects but we wanted to see if we could expand the concept and come up with an improved solution for Beardies. Some of his recent implementations using Merkle trees and VDF proofs — and Fantom’s time to finality and gas fees — seem to be a good fit for these goals:

  • Prove images haven’t changed
  • Prove metadata attributes haven’t changed
  • Provably offset the minting index using a random number
  • Probably mint the token IDs out of order (pseudo randomly)
  • Accessibility to prove metadata on chain

To accomplish this for Paintswap Beardies we used the following steps:

  • Calculate the IPFS CID for the images. Changes to the image data would result in a new CID
  • Create the collection metadata, including attributes and links to the images’ IPFS location, then hash this value and place it on a Merkle tree using the token ID for the index. The Merkle root hash is the provenance hash.
  • The provenance hash + unpredictable block are used at contract initialization and used to generate a seed value which can then be used as input for a VDF. Because a VDF is low to calculate by design, we can specify a number of iterations that will take longer to calculate than the blockchain finality — one block for Fantom. The VDF proof is used to create an array of Token IDs offset by the provably random number.
  • When each token is minted a pseudo random number is found based on the bounds of the remaining token IDs. This random number is used to select from the array of remaining values, then the last value in the list is shifted into its place. It’s impractical to predict the token ID that will be minted from the remaining set, thus making sniping impractical even if you are monitoring blockchain events.
  • All of the data can be proven on chain using these available functions:
provenanceURI() for the metadata hashes used in the Merkle treetokenURI(uint256 _tokenId) to get the metadata for a token IDtokenMetadataHash(string memory _metadata) to calculate the keccak256 hash for a token’s metadatatokenProofUri(uint256 _tokenId) to get the Merkle proof for this token IDproveTokenMetadata(uint256 _tokenId, string memory _metadata, bytes32[] memory _merkleProof) can then be called using the values obtained in the earlier steps to prove this metadata (and image) have not be altered.

Who did the designs?

The artwork for Beardies was created by the amazing LoserKing, who should be familiar to most of you by now! The creator of The Lost Kingdom, BabyBoo Kitten Crew NFT collection and many more.

Get a beardie: https://paintswap.finance

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store