IIP-13 Represent Staking Buckets As Non-fungible Tokens

Abstract

This IIP proposes to natively support the representation of staking buckets as Non-fungible Tokens (NFT) on the IoTeX blockchain, which opens opportunities for applications such as Liquid Staking Derivatives (LSD) and potentially increases the staking ratio and therefore enhances the degrees of security and decentralization of the IoTeX blockchain.

Motivation

The Proof of Stake (PoS) consensus mechanism secures the vast majority of modern blockchains, IoTeX L1 included, as it disincentivizes an attack on the network by requiring control of the majority of coins to control the blockchain. In contrast to the traditional Proof of Work (PoW) consensus mechanism, PoS consensus dramatically reduces the energy required to run a secure and decentralized blockchain. Simply put, the more coins that are staked to govern the protocol, the more secure the blockchain is. Therefore, increasing the total amount of $IOTX staked (i.e., the “staking ratio”) has always been the goal for IoTeX.

An interesting primitive called “Liquid Staking” has been introduced by Lido in 2020 which means a liquid staking provider takes coin deposits, stakes those coins, and gives the depositor a receipt that is redeemable for the staked coins. The receipt is a representation of those staked coins that can be traded or used as collateral elsewhere, such as DeFi protocols to be lent, borrowed, or traded. For this reason, liquid staking coins are sometimes referred to as liquid staking derivatives (LSD). Major L1s such as Ethereum, Polygon, Solana, Polkadot, and so on all adopted liquid staking and achieved tremendous success in improving the number of staked coins (and thus the underlying security of the blockchain). However, staking on IoTeX L1 is implemented in a native way, which does not support interaction from smart contracts. Hence, popular liquid staking solutions can not be applied directly.

To better support liquid staking and other innovations at the smart contracts or dApp level, this IIP suggests adding support natively to represent staking buckets as Non-fungible Tokens on the IoTeX blockchain. Therefore, liquid staking solutions, which rely on smart contracts, could manage their stakes in system smart contracts. With this feature implemented and deployed on testnet and mainnet, builders can easily launch their respective liquid staking dApps such as Lido and RocketPool on IoTeX L1.


More details could be found here: iip-13 Represent Staking Buckets As Non-fungible Tokens by CoderZhi · Pull Request #18 · iotexproject/iips · GitHub


If you are interested in DePIN you can learn more about the latest developments in the sector and compare projects by visiting DePINscan. DePINscan powered by W3bstream and IoTeX is designed to empower intelligent investors in the DePIN sector.

7 Likes

This is an important change being proposed and one that I believe should get strong support. As the Abstract above states, it will

  1. increase the staking ratio, i.e. more tokens will be staked (increasing the ratio) and that strengthens our blockchain.
  2. On an individual staker level, you’re going to be able to take what was previously illiquid - locked in - and turn it into a liquid asset. (the derivative)

If you’re like me, you may have to do a bit of homework to get more acquainted with this topic. Here are some links to get you started.
What Are Liquid Staking Derivatives (LSDs)
Viktor DeFi’s thread on the topic
Lido Explanation - see Problem Statement and Solution on the right side menu of the page

1 Like

Just wondering ate there any potential drawbacks to using NFT’s instead of having a 1:1 token derivative? Or is it just a matter of adding a few more lines of code to accommodate it being represented as an NFT. This is a really exciting proposal!

1 Like

Good question - might the answer be related to our native token not being an ERC20? Is an NFT an easier cross-chain vehicle?

To follow up. I asked the team what was the rationale and got this response:
“In the native implementation, we use the bucket concept. So here, we inherit the same concept. With a bucket, it is better to represent it as NFT.”

Update
Having read the above statement from our team member, I see that the last part of the proposal addresses this question. I’ll paste here, out of context:

However, staking on IoTeX L1 is implemented in a native way, which does not support interaction from smart contracts. Hence, popular liquid staking solutions can not be applied directly.

To better support liquid staking and other innovations at the smart contracts or dApp level, this IIP suggests adding support natively to represent staking buckets as Non-fungible Tokens on the IoTeX blockchain. Therefore, liquid staking solutions, which rely on smart contracts, could manage their stakes in system smart contracts. With this feature implemented and deployed on testnet and mainnet, builders can easily launch their respective liquid staking dApps such as Lido and RocketPool on IoTeX L1.

Right so I was wondering since the derivative would be represented as an NFT and let’s say there were multiple LSD projects then it wouldn’t be possible to split your bucket into two separate piles and deposit on two separate LSD platforms. Your only be able to choose one or the other correct? That’s basically what I was wondering. What the limitations may be compared to fungible tokens.

I like it so I give it the thumbs up :+1:

NVM looking at the diagram I think answered my questions

1 Like

Love it I think this was my idea to begin with, But a more advanced version.

Screenshot is from the github link.

Is the highlighted line referring to increasing the staked amount/staking duration?

Just sharing my understanding - so the staking properties ‘tied’ to the nft will be dynamic. Meaning users will stake as usual, they can increase amount/increase duration and it will still be that same original nft initially minted to represent that certain bucket. After a certain duration, the nft might cease to be valid to be used for defi etc.

As usual, feel free to rectify where needed

1 Like

Since the diagram highlight Smart contract (LSD) will be un-stake and burn NFT to withdraw iotex. They won’t be open market place for trading?

And if they were in the future, what are plans for it’s peg maintenance, if they were no deposit?, Does amount of period of staking Contribute to LSD receipt? What value will backing it and with what portion of Apr?

1 Like

Is IIP-13 performed by teams? Is it safe to pledge NFT to a third-party dapp? Is there any LSD dapp developed on iotex now?

Can someone clarify this statement:

Backward Compatibility

No issues. Specifically, users who stake via the original staking subprotocol are not affected.

If I am reading correctly, it appears as though only NEWLY STAKED buckets of specific sizes and durations will be eligible for the proposed Liquid Staking model?

If true, this is extremely disappointing and I will strongly oppose.

Agree, If the assumption is true, a mechanism to generate the corresponding NFT should be enabled in the edit options of the buckets belonging to the original staking subprotocol.

This is an exciting read! A quick question.

As it is with native staking where one can increase an ongoing bucket, does this apply to the LSD system? Is the reward tracking system the same or different from the native staking.

There is no LSD dApp on IoTeX right now. If this proposal passes then it would be possible to create such a dApp.

The question of security is addressed in this doc: iip-13 Represent Staking Buckets As Non-fungible Tokens by CoderZhi · Pull Request #18 · iotexproject/iips · GitHub on lines 103 - 106 and lines 111 - 114. The team takes security seriously and our record to date has been excellent. We’ll exercise all due diligence as we always have in the past.

As this doc notes, the security of 3rd party dApps is out of the scope of this doc. (and none exist yet)

1 Like

The following addresses the above questions. I hope answering in one place is easier to read than moving through each person’s comment:

@Kenneth - We can’t split NFTs but a 3rd party could convert the NFT to ERC20s. This is not part of our system design.

@anwar139 - So far, in the current implementation, we don’t support the increase in the amount of tokens. We only support the update of delegates. We should consider implementing your suggestion of extending the duration and increasing the amount. This assumes it complies with the requirements of the system contract.

@Richard - Can you restate / elaborate on this question? We’re not understanding what you mean.

@Charlie - The question of security is addressed in this doc: iip-13 Represent Staking Buckets As Non-fungible Tokens by CoderZhi · Pull Request #18 · iotexproject/iips · GitHub on lines 103 - 106 and lines 111 - 114. The team takes security seriously and our record to date has been excellent. We’ll exercise all due diligence as we always have in the past.

As this doc notes, the security of 3rd party dApps is out of the scope of this doc. (and none exist yet)

@MFI - You are right. The original, native bucket, is not compatible with this new LSD functionality. We agree that’s not fair and we are working to make these buckets compatible with the system contract involved in the creation of these NFTs. The solution will be included in this IIP.

@Peter - Right now, the native staking supports compound interest but the system contract will not support that. We’re trying to keep this model simple. A 3rd party dApp (e.g., LSD) might implement compound interest.

3 Likes

Thanks for that update.

Many old buckets with long stake durations have very random numbers of IOTX staked, due to the fact burn drop rewards used to be dropped directly to buckets. So if you staked 1,000 IOTX in a bucket originally, this may now have 1,254.593930 IOTX. I was worried on first read that only buckets with very specific amounts of staked IOTX would qualify, but it looks like this is not the case.

1 Like