project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5

Clowder

Clowder.club allows you and your friends to co-buy & co-own any NFT. With Clowder you sell directly at OpenSea.

Clowder

Created At

Superhack

Project Description

Overview:

Clowder.club allows you and your friends to co-buy & co-own any NFT on ETH With Clowder you sell directly at OpenSea. You can contribute to a Clowder and buy a floor NFT of any collection on Polygon, Ethereum, Base, Zora and Optimism.

Key advantages:

  • No gas fees for joining a group, just approve your wETH once and sign your contribution amount.
  • No gas fees for voting for a price to sell the NFT for.
  • Sell directly at OpenSea, not on a fractional illiquid market with almost no users.

Details of how it works:

  1. Users approve their wETH to be spent on Clowder, then they sign as many contributions to different NFT collections as they want using EIP712 which means it’s a gasless operation.

  2. Once enough contributions have been authorized for a floor NFT. The Clowder bot executes the purchase transaction validating the authorization signatures.

  3. An ERC20 token and a vault are created. The NFT bought is put inside the vault. The ERC20 token is distributed to the contributors proportionally to their contributions. This is all handled in the TraderClowderDelegate contract which is instantiated for each new group of contributors.

The vault can receive any asset: ERC721, ERC1155, ERC20 and ETH. This may be useful for receiving airdrops or any kind of assets in the vault.

The ERC20 token can be freely transferred and it represents dividends rights and voting rights over the assets of the vault.

  1. The token holders can vote using EIP712 to:

4.a. Set a listing price. The NFT can be listed on OpenSea once either:

--- The sale price has more than 50% agreement and the sale price is above the Oracle Price.

--- Or the sale price has 100% agreement, doesn’t matter what the sale price is.

4.b. Transfer assets out of the vault. --- The asset is transferred out once the transfer operation has 100% agreement.

--- It supports transferring the entirety of the vault’s ETH, the entirety of an ERC20 or ERC1155 balance or an ERC721.

At any point in time anyone can call distributeFunds. This is used to distribute any ERC20 token or ETH inside the vault proportionally to each token holder at the time.

How it's Made

Tech used overview:

  • We wrote the backend (including the bot) code in nodejs with typescript and deployed it in a serverless environment (Cloud Functions).
  • We store the NFT collections information and the user signatures on a document database (Firestore).
  • We wrote tests and deployed the Clowder smart contract using Hardhat. On the frontend we use flutter.

How we built it:

At first we set up the EIP712 signatures for the contribution and group buying and tried to let the group list their NFT on OpenSea (using Wyvern at the time) and LooksRare. But we couldn’t make neither OpenSea nor LooksRare show the listing on their storefronts as their backends weren’t compatible with ERC1271 (even though their smart contracts allowed it just fine). Related commits: https://github.com/TuMicro/Clowder/commit/d09359f0dbb3f0462243a0b2e4c93cea9a6a2b6b https://github.com/TuMicro/Clowder/commit/e083583740feac44f2af060ef4490cd2dec62983

So at the time our solution was, with pain in our hearts, to centralize the NFT, that is, make EOAs to own the NFTs the groups purchase.

The next challenge was that our group purchase flow required an EOA (our bot) to have the full Eth amount of the NFT price beforehand to be able to purchase. So we had to implement what we call flashbuy (inspired by uniswap flashwaps) which allowed us to execute any purchase without requiring liquidity from our part but just using the liquidity of the contributors.

Some time later we moved the centralized management to a smart contract (yay), which now we call a vault. We used the 0xSplits protocol to distribute the NFT sale proceedings or any proceedings (including possibly airdrops) to the contributors.

While on that we realized our price consensus mechanism was weak because it allowed for a majority to collude and take over the NFT profits (sell price minus buy price) in case its price goes up. That’s when Reservoir came to help, we now use their floor price oracle and we prevent a majority from setting the NFT price below the floor unless there is 100% consensus.

Up to this date we have deployed to Polygon, Ethereum, Base, Optimism and Zora.

background image mobile

Join the mailing list

Get the latest news and updates