- Each delegation has different
- Accumulated rewards
- Risk of double signing
- How can we create fungible tokens from delegations ?
-
FToken(V)andYToken(D)for given validatorVand delegationD- Delegators can tokenize their delegation into
FToken(V)andYToken(D) FToken(V)- Fungible token which has redemption rights on every
BondedTokenAmountinTokenizedDelegationstaking to validatorV FToken(V)is only fungible among delegations to the same validatorV- All
FToken(V)holders will be affected by slashing events from the validatorV
- Fungible token which has redemption rights on every
YToken(D)- Non-fungible token which has redemption rights only on accrued rewards from the specific
TokenizedDelegationof the delegationD
- Non-fungible token which has redemption rights only on accrued rewards from the specific
- Delegators can tokenize their delegation into
-
Delegation tokenization process
- Definitions
TokenizationRatio(V)for validatorV: the amount ofFToken(V)minted or burnt for every 1BondedTokenAmountinTokenizedDelegationon validatorV
- The module account mints
FToken(V)andYToken(D)and sends to the delegation tokenization requestor- Number of
FToken(V)minted :BondedTokenAmount(D)*TokenizationRatio(V) - The unique NFT
YToken(D)representing the reward rights on this delegationD
- Number of
- Definitions
-
Transfer ownership of
YToken(D)YToken(D)can be transfered to others viaMsgSendYToken
-
Delegation redemption process for any
TokenizedDelegation-
Two redemption processes available
① By sending both
FToken(V)andYToken(D)into the module account- Redemption requestor receives both the delegation ownership and accrued rewards of
D - Both
FToken(V)andYToken(D)are burnt after redemption - Available period : this process is available any time
② By sending only
FToken(V)into the module accountFToken(V)sender only receives the delegation ownership without accrued rewardsYToken(D)owner receives all accrued rewards from the redeemed delegation- Both
FToken(V)andYToken(D)are burnt after redemption - Available period : this process is only available after the maturity of targeted
TokenizedDelegation
- Redemption requestor receives both the delegation ownership and accrued rewards of
-
Number of
FToken(V)needed for redemption of delegationD:BondedTokenAmount(D)*TokenizationRatio(V)
-
-
Slashing event hook
- Definitions
TotalBondedTokenAmount(V): the sum of totalBondedTokenAmountinTokenizedDelegationstaking to validatorV
- Update
TokenizationRatio(V)upon every slashing event from validatorVTokenizationRatio(V)starts from 1TokenizationRatio(V)is updated toFToken(V)Supply/TotalBondedTokenAmount(V)everytime when slashing happens from validatorV
- Definitions
TokenizedDelegationDelegationIndex- pointing the delegation object which is tokenized
BondedTokenAmount- the amount of token bonded for this
TokenizedDelegation
- the amount of token bonded for this
YTokenOwner- the account address of
YToken(D)owner
- the account address of
Maturity- the maturity of this
TokenizedDelegation
- the maturity of this
-
MsgDelegationTokenizationTokenizationRequestor- the account address of tokenization requestor
DelegationIndex- pointing the delegation object to be tokenized
-
MsgSendYTokenSender- the account address of
YToken(D)sender
- the account address of
Receiver- the account address of
YToken(D)receiver
- the account address of
DelegationIndex- pointing the delegation object which YToken ownership is being transfered
-
MsgRedeemDelegationRedeemRequestor- the account address of redeem requestor
RedeemTokens- option1) sending
FToken(V)andYToken(D)for redemption - option2) sending
FToken(V)for redemption
- option1) sending
DelegationIndex- pointing the delegation object which
YToken(D)ownership is being transfered
- pointing the delegation object which
-
Problem
- Because the ownership of delegation is transfered to the module account, governance voting right is unavailable
-
Discussion
- Who should get the governance voting rights?
- How we can effectively prevent vote buying?
- How we can allow governance voting without any inconvenience?
-
Problem
FToken(V)is only fungible over the same validatorV
-
Suggested Solution
- Hub AMM expansion to Curve.fi like pool model
- A
FTokenpool where users can swap anyFToken(V1)to any otherFToken(V2) - The
PoolTokenwhich represents the share ownership of the assets inside the pool
- A
- This
PoolTokencan become the universally fungibleFTokenacross the validators
- Hub AMM expansion to Curve.fi like pool model
-
Problem
- There exists no standard NFT object which is compatible over IBC
YTokencannot be transfered to different blockchains via IBC
-
Solution
- After we have standard NFT object supported by IBC, this module can be upgraded so that
YTokenbecomes IBC compatible NFT object
- After we have standard NFT object supported by IBC, this module can be upgraded so that
-
Problem
- There exists no way to trade
YTokenin fully decentralized way
- There exists no way to trade
-
Suggested Solution
- NFT DeX
- Hub AMM can be expanded to NFT DeX which allows fully decentralized NFT marketplace
- NFT DeX