Thanks for the many people that reached out about this brainteaser, it is now time for me to post the solutions :)

It turns out the solution is an integral part of how @Panoptic_xyz tracks options NFTs

what does 28253706383254293962.... have to to with NFTs ??

Thread👇
1/16
(TL;DR) It is really encoding for a ETH-SHIB Reverse Jade Lizard as hinted (!)

We'll show below how it encodes for:

• 1 long put @ 7509 x 10^-12
• 1 short put @ 8070 x 10^-12
• 1 short call @ 8936 x 10^-12
2/ So first of all, let's get back to how positions are tracked by the UniswapV3Pool.sol smart contract

Any liquidity deployed by 𝚘𝚠𝚗𝚎𝚛 between a 𝚝𝚒𝚌𝚔𝙻𝚘𝚠𝚎𝚛 and 𝚝𝚒𝚌𝚔𝚄𝚙𝚙𝚎𝚛 is stored in a mapping defined by the keccak256 hash of (owner, tickLower, tickUpper)
2/ The hash returns a struct that stores several quantities, including the liquidity owned by the user.

The struct also contains information about the fees accumulated and the tokens owed to owner when the position was last touched.
3/ However, users do not directly interact with the UniswapV3Pool smart contracts.

Instead, they will mint a position by directly interacting with the NonFungiblePositionManager.sol smart contract.

The NFPM contract helps track liquidity and issues a ERC721 NFT to the minter.
4/ The minter receives a cool on-chain generated NFT that can be seen on the app.uniswap.org website.

Also, each NFT position has a unique 𝚝𝚘𝚔𝚎𝚗𝙸𝚍, which increases *sequentially* at every mint --look at the (𝚝𝚘𝚔𝚎𝚗𝙸𝚍 = _𝚗𝚎𝚡𝚝𝙸𝚍++) in the code above.
5/ In @Panoptic_xyz, users sell options by adding liquidity in a Uni v3 pool, and buy options by removing liquidity from the pool

Panoptic users "bypass" the NFPM and use instead the SemiFungiblePositionManager.sol to trade options

LPs can still use either for "vanilla" LPing
6/ One key distinction between the NFPM and the SFPM is that the SFPM issues an ERC1155 token to track users' positions.

The balance of the ERC1155 represents the amount of liquidity for that position, we call that the 𝚙𝚘𝚜𝚒𝚝𝚒𝚘𝚗𝚂𝚒𝚣𝚎.
7/ The 256bit 𝚝𝚘𝚔𝚎𝚗𝙸𝚍 of the ERC1155 position is also different: it is not sequential, but instead encodes information about the position.

It turns out that a *lot* of information can be encoded in 256bits.
8/ Back to the riddle: 282537063832542939627736618700216160083437754282540792586635888

What is encoded in that number?

First, let's look at it as a hex:
AFD2C04800AFD2808200AFD253870111
2F62F2B4C5FCD7570A70 -< 𝚙𝚘𝚘𝚕𝙸𝚍

The last 80 bits is the 𝚙𝚘𝚘𝚕𝙸𝚍
9/ The 𝚙𝚘𝚘𝚕𝙸𝚍 is the first 20 characters of the Uniswap v3 pool, and in this case, that's the SHIB-ETH-30bps, whose address is:

0x2F62f2B4c5fcd7570a709DeC05D68EA19c82A9ec
-> first 20 characters

etherscan.io/address/0x2f62…
10/ So this tokenId is for a position in the SHIB-ETH-30bps pool.

What about the rest of the tokenId? Converting the rest to binary, we get:

10101111110100101100000001001000000000001010111111010010100000001000001000000000101011111101001001010011100001110000000100010001
11/ From the map, we know there is 16 bits for "Ratios", and each option leg is 40 bits:

ratios (4x4bits):
0000000100010001
leg0 (1x40bits):
0000000010101111110100100101001110000111
leg1:
0000000010101111110100101000000010000010
leg2:
10101111110100101100000001001000
12/ The ratios are all 1 for each leg: the position mints 1 option for each leg.

Let's unwrap Leg0: this one corresponds to a long put at strike -187080.
13/ Similarly, upwrapping Leg1 we get that it encodes for a short put at strike -186360

Leg2 encodes for a short call at strike -185340

Each leg also has a "width" of 10, which means each LP positions is 30*10 ticks wide.
14/ So, 28253706383... encodes for a specific, multi-legged option position

Decoding it revealed that it consists of a long put, a short put, and a short call in the ETH-SHIB 30bps pool.
15/ Why track position that way?

The key here is that users can 1) track complex positions using a single number and 2) they will receive a number of ERC1155 token that corresponds to the amount of liquidity deployed in that position.
16/ This also means a 4626 vault could easily be created for any options strategy

Simply point the vault to the 2825370... tokenId and all added liquidity will be automatically deployed as a Reverse Jade Lizard in the Uni v3 pool

That tokenId could also be updated over time 👀
Stay tuned for more updates about THE perpetual, oracle-free options protocol, and don't forget to follow @Panoptic_xyz for updates, AMAs, alpha leaks, and much more!

• • •

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

Keep Current with Guillaume Lambert | geeyohm.eth | 🦇🔊

Guillaume Lambert | geeyohm.eth | 🦇🔊 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!

PDF

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!

More from @guil_lambert

Sep 7
Providing liquidity in Uniswap v3 generates a payoff that is mathematically identical to selling a put option.

Yet, most LPs do not use the tried-and-tested strategies used by options traders.

Here are 8 tips to help Uni v3 LPs behave more like successful options sellers 👇
1/ Have directional assumptions

Is your outlook on the token bearish, neutral, bullish?

You should control the "delta" of a position by shorting the token before locking.

Use the desmos link in this post to determine your LP positions' shorted amount: Image
2/ Understand pin risk

The width of a position should match your risk tolerance. A narrow position will rapidly convert between token and ETH in a way that is similar to pin risk in options.

Use r<1.07 if active traders and 1.07 < r < 1.75 for most traders, with r=√(Pb/Pa)
Read 11 tweets
Aug 31
Providing liquidity in @Uniswap v3 can be 600x more capital efficient than on Uni v2.

However, most use a passive approach, re-adjust their position too frequently, or provide liquidity to low-yield pools.

Here are 10 tips to make your Uni v3 LPing 10x more efficient.

A 🧵:
1. Know the risks

Providing liquidity has potentially unlimited losses and capped profitability.

LPing can generate income, but returns *will* underperform simply holding when the asset appreciates.

The key is to understand that LPing = selling options:
lambert-guillaume.medium.com/uniswap-v3-lp-…
2. Choosing an asset pair

Choose an asset pair that has enough 1) volume, 2) liquidity, and 3) legitimacy.

One way to evaluate 1) & 2) is to look at the 24h fees and TVL of a pool in info.yewbow.org/#/pools

Choose any asset with >$1M TVL and >$1k in daily fee
Read 13 tweets
May 26
. @Panoptic_xyz is a perpetual, oracle-free options protocol

-Perpetual: Panoptic options never expire. This completely eliminates the need to roll options

-Oracle-free: This one makes @Panoptic_xyz much more resilient to attacks compared to other protocols.

Here's why👇
1/ Image
2/ Oracles are necessary whenever a smart contract needs to know about external (real-world) data.

"Without a reliable connection to real-world conditions, smart contracts cannot effectively serve the real-world." (docs.chain.link)
3/ Many DeFi protocols rely on @chainlink to provide secure and accurate data about the price of digital assets.

In most lending protocols, for instance, oracles are necessary to ensure that an account, and by extension the whole protocol, remains solvent.
Read 16 tweets
Apr 4
I just published "Designing a constant volatility AMM"

We describe how to construct an AMM that keeps volatility constant regardless of the price dynamics of the underlying.

How do we do this? Read the details below 👇

1/10
link.medium.com/SeyX5EvhXob
2/ First, we have to start from the relationship between the fee tier in Uniswap v3, the daily volume, and the liquidity locked at the currently traded tick.

One can combine these qty to create an "invariant" that is the same across different pools if the track the same asset. Image
3/ What we did next is to *invert this expression* so that the feeTier is instead floating, and the implied volatility is constant.

This means that specifying an IV will dynamically adjust the feeTier for each trade according to the trade size and the amount of tickLiquidity Image
Read 10 tweets
Feb 23
I just published: "Gamma transforms: How to hedge squeeth using Uni V3"

We demonstrate how 1-tick Uni v3 LP positions can perfectly hedge the gamma of positive convexity assets like squeeth.

Gamma transforms? squeeth? convexity?

Let's dig in 👇

lambert-guillaume.medium.com/gamma-transfor…
1/ First, what is gamma? Gamma is a measure of the "convexity" of an asset.
An asset with a positive convexity will increase in value faster as its price goes up. OTOH, an asset with negative convexity will see diminishing returns.
Here's a graph showing how gamma affects price: Image
2/ Formally, Gamma is defined as the second derivative of the value of an asset. Recall that delta is the first derivative of the value of an asset

Delta = slope, Gamma = slope of the slope

Here's the gamma and delta for a positive convexity instrument like a long call option.
Read 12 tweets
Jan 12
I just published "How to deploy delta-neutral liquidity in Uniswap —  or why Euler Finance is a game changer for LPs"
link.medium.com/dX2BFzr8Kmb

1/8
In this post, I show how @eulerfinance allows LPs to deploy directionally strategic positions on Uniswap.
2/8 The problem with liquidity providing is that only pools with a bullish token are profitable.

That's because the value of a LP position has a positive delta and it will follow the price of the asset.

Token ⬆️, LP value goes up
Token ⬇️, LP value goes down
3/8 As a result, LPs should simply withdraw all assets from bearish pools in order to protect their portfolio’s value.

Liquidity mining can offset some of these losses, but LM is not sustainable and could lead to the price spiraling down due to a selling feedback loops.
Read 8 tweets

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!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(