Delegation tokenization module, a native Cosmos-SDK module which allows delegations to be tokenized to fungible tokens
- Each delegation has different
- Validator to stake on
- Accumulated rewards
- Risk of double signing
- How we can standardize staked atom into universal one token?
- Delegators can tokenize their delegation into
NToken
andYToken
- Tokenized delegations either can be
- redeemed by submitting both
NToken
andYToken
- or auctioned to any
NToken
holder after maturity
- redeemed by submitting both
NToken
- It has ultimate rights to redeem "any" tokenized delegation whose maturity is passed
YToken(V,M)
- It is fungible over same validator
V
and same maturityM
YToken
holders get accrued rewards until redemption, but are exposed to slashing riskYToken
holders will- redeem delegation with
NToken
andYToken
submitted to the module before maturity - or get auctioned by
NToken
holders after maturity
- redeem delegation with
- It is fungible over same validator
-
DefaultTokenizationRatio
- The starting value of
TokenizationRatio
- This value decides how much of slashing loss can be covered by
YToken
- Lower
DefaultTokenizationRatio
results in less slashing risk forNToken
holders
- The starting value of
-
MaturityLength
- The length of tokenization period until maturity
- Longer
MaturityLength
results in- Less auction amount for each maturity
- Less opportunity for
NToken
holders to redeemTokenizedDelegation
-
TokenizationFrequency
- The frequency of delegation tokenization execution
- Shorter
TokenizationFrequency
results in- Too many kinds of
YToken(V,M)
floating around - Too frequent auction held
- But more diversified auction amount for each period
- Too many kinds of
-
AuctionPeriod
- The length of auction before entering into
SuddenDeath
mode - Shorter
AuctionPeriod
results in- Higher risk of significantly discounted auction winning price
- The length of auction before entering into
-
TokenizedDelegation
DelegationIndex
- pointing the delegation object which is tokenized
TokenizationDateTime
- datetime of tokenization
Maturity
- the maturity datetime of this
TokenizedDelegation
- the maturity datetime of this
Status
Tokenized
/AuctionPeriod
/SuddenDeath
-
DelegationAuction
DelegationIndex
- pointing the tokenized delegation object to be auctioned
AuctionMaturity
- block height when the auction finalized
- when 0, the auction entered
SuddenDeath
status
HighestBid
- the bidder and bid price with highest bid price
-
MsgDelegationTokenization
TokenizationRequestor
- the account address of tokenization requestor
DelegationIndex
- pointing the delegation object to be tokenized
-
MsgRedeemDelegation
RedeemRequestor
- the account address of redeem requestor
RedeemToken
- sending
NToken
andYToken
for redemption
- sending
DelegationIndex
- pointing the delegation object to be redeemed
-
MsgDelegationAuctionBid
Bidder
- the account address of the bidder
DelegationIndex
- pointing the tokenized delegation object which is under auction to be participated
BidToken
- the bid price in
NToken
- the tokens are escrowed in the module until
- higher bid is coming in
- or auction is finalized
- the bid price in
-
Description : a delegation with
OriginalBondedAmount
ofStakingToken
splitted into two kinds of tokensNToken
: Fungible delegation notional tokenYToken(V,M)
: Fungible delegation yield token for validatorV
and maturityM
- Tokenization of
OriginalBondedAmount
of delegation → (TokenizationRatio
*OriginalBondedAmount
) ofNToken
+OriginalBondedAmount
ofYToken(V,M)
-
Delegation Tokenization Schedule and Maturity
- Delegation Tokenizations are executed
TokenizationFrequency
TokenizationFrequency
is a governance parameter- Users can reserve delegation tokenization for next available execution datetime
MaturityLength
: A governance parameter which decides the length of the maturity for every delegation tokenization
- Delegation Tokenizations are executed
-
Delegation ownership transfered to module account after tokenization
-
Before Maturity
- Redeem requestor sends (
TokenizationRatio
*OriginalBondedAmount
) ofNToken
andOriginalBondedAmount
ofYToken(V,M)
to the module account- Sent
NToken
andYToken(V,M)
are burnt - Delegation ownership transfered to redeem requestor
- Including all accumulated and automatically withdrawed rewards
- Sent
- Redeemed
TokenizedDelegation
is deleted
- Redeem requestor sends (
-
After maturity or Automated unbonding triggered
- Auction held for the delegation ownership for each
TokenizedDelegation
- Bid token :
NToken
AuctionPeriod
: a governance parameter for the auction period length
- Bid token :
- Auction completion before end of
AuctionPeriod
- If
AuctionWinningPrice
≥ (TokenizationRatio
*OriginalBondedAmount
) : winning price is enough to cover originally mintedNToken
upon tokenization- Auction winner payout
- The delegation ownership transfered to the auction winner including accrued rewards
- (
TokenizationRatio
*OriginalBondedAmount
) ofNToken
is burnt
- YToken(V,M) holders payout
- (
AuctionWinningPrice
-TokenizationRatio
*OriginalBondedAmount
) ofNToken
sent toYToken(V,M)
holdersNToken
distribution is proportional to YToken(V,M) holding shares
OriginalBondedAmount
ofYToken(V,M)
are burntYToken(V,M)
burns proportional toYToken(V,M)
holding shares
- (
- Auction winner payout
- If
AuctionWinningPrice
< (TokenizationRatio
*BondedAmount
) : winning price is not enough to cover originally mintedNToken
upon tokenization- Auction winner payout
- The delegation ownership transfered to the auction winner including accrued rewards
- Entire
AuctionWinningPrice
ofNToken
is burnt
YToken(V,M)
holders payout- Nothing is paid out to
YToken(V,M)
holders OriginalBondedAmount
ofYToken(V,M)
are burntYToken(V,M)
burns proportional toYToken(V,M)
holding shares
- Nothing is paid out to
- Update
TokenizationRatio
as belowTokenizationRatio
=NTokenSupply
/ SUM(OriginalBondedAmount
in allTokenizedDelegation
)- Increased
TokenizationRatio
means theNToken
value has been diluted
- Increased
- Auction winner payout
- If
- If auction has no winner after auction period?
SuddenDeath
auction triggered- Anyone paying zero or more
NToken
will immediately win the auction
- Anyone paying zero or more
- Auction held for the delegation ownership for each
-
Fungibility
NToken
is fungible over all validators and maturitiesYToken
is fungible over same validator and same maturity- No NFT is utilized
-
No Slashing Rate Assumption
YToken
is firstly responsible for slashing loss- Residual slashing loss is distributed to all
NToken
byTokenizationRatio
increment
-
Independent Solution
- It already provides universally fungible
NToken
independently - It does not need any kind of liquidity pool utility for fungibility
- It already provides universally fungible
-
Efficient auction participation is assumed
- If the winning prices of auctions are not competent enough,
YToken
holders will get much less payout - All matured
TokenizedDelegation
are auctioned at the same time- Auction participants cannot utilize their capital into multiple auctions
- There exists some capital utilization inefficiency for auction participants
- If the winning prices of auctions are not competent enough,
-
Roll-over inconvenience by
YToken
holdersYToken
holders need to buy a lot ofNToken
from the market to roll over their tokenization- To buy enough
NToken
, they have to bring significant capital - If they don't roll over their tokenization until maturity
- Auction will be automatically triggered
- There exists some risk that the auction winning price is significantly lower than fair value
- Lower auction winning price results in less payout to
YToken
holder
- There can exist some services provided by large
NToken
holders- To roll-over the tokenization for
YToken
holders with appropriate fee - And send back new
YToken
with extended maturity to originalYToken
holder - These multiple messages can be atomically transacted in one transaction in a decentralized fashion
- To roll-over the tokenization for
- Discussions
- Because the ownership of delegation is transfered to a module account, it is undecided who has the governance voting right
NToken
is meant to be used for multiple DeFi purposes including providing liquidity to AMM, collaterized for lending, and trading activities- Most
NToken
will be held by modules, smart contracts or pegged out to different blockchains - So, it is difficult to distribute governance power to
NToken
holders
- Most
- If we only distribute governance power to
YToken
holders- YToken holders locked relatively much less capital than
NToken
holders - So, it is unfair to give the governance right only to
YToken
holders
- YToken holders locked relatively much less capital than