- Each delegation has different
- Accumulated rewards
- Risk of double signing
- How can we create fungible tokens from delegations ?
-
FToken(V)
andYToken(D)
for given validatorV
and delegationD
- Delegators can tokenize their delegation into
FToken(V)
andYToken(D)
FToken(V)
- Fungible token which has redemption rights on every
BondedTokenAmount
inTokenizedDelegation
staking 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
TokenizedDelegation
of 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 1BondedTokenAmount
inTokenizedDelegation
on 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 totalBondedTokenAmount
inTokenizedDelegation
staking to validatorV
- Update
TokenizationRatio(V)
upon every slashing event from validatorV
TokenizationRatio(V)
starts from 1TokenizationRatio(V)
is updated toFToken(V)Supply
/TotalBondedTokenAmount(V)
everytime when slashing happens from validatorV
- Definitions
TokenizedDelegation
DelegationIndex
- 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
-
MsgDelegationTokenization
TokenizationRequestor
- the account address of tokenization requestor
DelegationIndex
- pointing the delegation object to be tokenized
-
MsgSendYToken
Sender
- 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
-
MsgRedeemDelegation
RedeemRequestor
- 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
FToken
pool where users can swap anyFToken(V1)
to any otherFToken(V2)
- The
PoolToken
which represents the share ownership of the assets inside the pool
- A
- This
PoolToken
can become the universally fungibleFToken
across the validators
- Hub AMM expansion to Curve.fi like pool model
-
Problem
- There exists no standard NFT object which is compatible over IBC
YToken
cannot be transfered to different blockchains via IBC
-
Solution
- After we have standard NFT object supported by IBC, this module can be upgraded so that
YToken
becomes 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
YToken
in 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