notional-labs / craft

20 stars 59 forks source link

EXP - Review #133

Open Reecepbcups opened 2 years ago

Reecepbcups commented 2 years ago

Need guides on flow of commands, was not able to mint EXP in my test environment (go command cli panics, chain still operational)

proposal

when making the proposal, user needs to specify a vesting period for the EXP. They can stake during this time, but can not burn it to the other asset until that time passes

craft tx exp burnexp [dao_member_address]

https://github.com/notional-labs/craft/blob/bc8c7c614e90d248f5ba291fb7f9921a95768eff/x/exp/types/msgs.go#L79

Like so: craft tx exp burnexp [dao_member_address] [exp_to_burn_amount]

What is the difference between "tx exp spend [coins]" & "tx exp fund [coins]" as 2 separate commands?

craftd tx exp adjust [price]

craft tx exp send [amount]

"send [amount] from module escrow to the DAO address" so the DAO has some EXP in a module account it uses for sending?

vuong177 commented 2 years ago

@Reecepbcups adjust is a temporary solution. I'm writing an oracle logic for query exp price. I have 2 proposal :

vuong177 commented 2 years ago

tx exp spend [coins] for user spend their coin for claim exp. For example: now current exp price is 0.5usdc, they spend 1000 USDC, they will claim 2000 EXP. Before they use this cmd, they need to create a gov for request and this gov passed. And amount of exp they mint need smaller than max_exp_mint in their proposal. Also they have a limit time to mint.

Token when a user spends to join DAO will go to exp module escrow instead of the DAO address. craft tx exp send [amount] for sending token from exp module escrow to DAO address.

vuong177 commented 2 years ago

proposal when making the proposal, user needs to specify a vesting period for the EXP. They can stake during this time, but can not burn it to the other asset until that time passes<

I think vesting period for the EXP is a chain-param for every user. Every DAO member have same vesting period for the EXP

Reecepbcups commented 2 years ago

@vuong177

Token when a user spends to join DAO will go to exp module escrow instead of the DAO address. craft tx exp send [amount] for sending token from exp module escrow to DAO address.

So `tx exp spend [coins]` is really `tx exp exchange [coins]` where coins = some IBC asset, and in return they get EXP. Then the DAO will `craft tx exp send [amount]` to send those IBC tokens to a DAO controlled multisig wallet for example to stake / LP / do what ever with correct?


I think vesting period for the EXP is a chain-param for every user. Every DAO member have same vesting period for the EXP

Is that able to be specified in the proposal? where we mint the tokens to the user as vested for X amount of time? (the proposal can do it at a blockheight or ISO8061, whichever is easier) or are you saying ALL have the same vesting period time with no way to change that param?

vuong177 commented 2 years ago

This param could be change by a gov.

vuong177 commented 2 years ago

Like unbonding time in staking.

vuong177 commented 2 years ago

So tx exp spend [coins] is really tx exp exchange [coins] where coins = some IBC asset, and in return they get EXP. Then the DAO will craft tx exp send [amount] to send those IBC tokens to a DAO controlled multisig wallet for example to stake / LP / do what ever with correct?

Yes, this is logic in exp module. I think need to change cli for better readable.

vuong177 commented 2 years ago

@Reecepbcups, I think oracle exp has been done. I created an ibc-channel between craft-testnet <-> bandchain, and it worked well. If you want to test more, I can provide an RPC for this testnet.