Mohamed Baioumy Profile picture
Sep 5 12 tweets 6 min read
Introducing Granular: the next generation NFT AMM.
It’s on-chain, gas-efficient and preserves the NFT value (doesn’t demote assets in the pool to the floor price).

Granular was one of the winners at @Macro_Hacks by @1kxnetwork @nftfi

A brief description 👇🧵
Let’s start with AMMs for fungible tokens. In a @Uniswap or @SushiSwap pool, you have two fungible tokens (e.g. ETH and DAI). Each token has the same value, I can buy or sell fractions of these tokens, and the price is decided by a bonding curve: x*y = k
Existing NFT AMMs (e.g. @sudoswap @NFTX_ ) use similar logic. A pool contains ETH and NFTs from a collection (e.g. BAYC). In the pool, NFTs from that collection are treated as fungible, and thus all are priced the same (usually at the floor).
This has many issues. Most obviously, not every NFT in a collection is valued the same, thus having the same prices is problematic. Non-floor assets will be undervalued (at the floor prices) and thus the owner most likely won’t list them in the pool.
A critical difference between Uniswap and NFT AMMs is that you only move in integers on the bonding curve. That’s because you can’t trade a fraction of an NFT. This causes slippage to be quite high, especially if the pool contains a small number of NFTs.
Additionally, there are a few other issues that arise in practice.

To address the above, we built Granular. It’s based on models from @danuFinance and built together with @puttyfi. Here is the TLDR of how it works:
Every collection has a single ‘master pool’. Whether you want to trade or LP, you go to the same (master) pool.
The NFTs listed will have different prices within this master pool, and you can readily (batch) buy or sell.

Abstracted away from the user are ‘sub-pools’.
The collection is divided into sub-pools based on a desirability score (more details on that coming soon). Intuitively this means, that the lower sub-pools will contain floor assets, and the higher sub-pools will contain premium assets.
Every sub-pool has its own bonding curve. The number of sub-pools and number of NFTs per sub-pool differs per collection, but can be optimally* determined. More liquid collections will have more sub-pools.
Wanna try it?

We have a testnet version if you’re looking to understand the sub-pools:

Want to contribute, or stay up-to-date on the release? Join our discord!…

Video description at:
Also, we're designing the V2 already which improves the sub-pooling and the price efficiency. If you’re interested in contributing to that, feel free to drop me a DM.
@sudoswap @NFTX_ Clarification:
This is to illustrate that due to the bonding curve every NFT in the pool is priced the same and treated as fungible. Sudo is NOT restricted to x*y=k

Thanks to @polarply @hype_eth @0xmons for pointing this out.

• • •

Missing some Tweet in this thread? You can try to force a refresh

Keep Current with Mohamed Baioumy

Mohamed Baioumy Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!


Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!

This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!


0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy


3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!