-
Notifications
You must be signed in to change notification settings - Fork 126
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
🤑 Implements Token model #433
Comments
📝 Module implementationConcerning @amimart remark about the Considering we don't know now the name of the module I will use
|
Implementation alternativeFollowing a discussion with @bdeneux, it seems there's another way to implement the Token model. Current mechanismIf we think in stages, at the end of each daily epoch you should have:
AlternativeThe alternative removes the tax pool by:
This provides a similar end result.
We have the same end-result, with additional benefits:
Regarding the params it's pretty similar, everything is simply converted on a per year basis instead of daily:
Last note, the implementation should consider the ability to define multiple taxes, with different destinations: burn, address or community pool. Proposed workflow tax parameters for mainnet launch:
|
I broadly agree with the alternative approach of a block calculation proposed by @tpelliet. However shifting from a daily basis mechanism to a per-block basis is not a mere change in frequency; it introduces slightly differences in how values compound and adjust over time. Indeed, with a per-block mechanism, any changes (like rewards, burns, or mints) are compounded every block. Over the course of a day, these small changes can accumulate and diverge from a single daily adjustment. If rewards are distributed on a block-by-block basis, this can lead to specific behaviors that are different from daily distributions. Before going any further with the implementation, I'd like to see this frozen in the whitepaper on approval. So let it be written so let it be done.
Yes. So relevant. 😌 |
Instead of "calculate", it's more about "provisioning" for the execution. Here are some thoughts: Upon the completion of a workflow, we determine its real execution cost. At this point, we first evaluate the taxes tied to the workflow, leading to the burning of some tokens and distributing others to the association treasury and community pool based on tax policies. Subsequently, rewards are allocated to all involved parties, including service and data providers. I believe here that every economic player, be it providers or the entity collecting taxes, should considered the same. To elaborate:
Hence, given that the |
What's great about the mint & burn approach is that the 2 contracts (or modules) can be fully dissociated, so you can develop one before the other, especially the |
Let us recap and agree collectively on the approach before editing the whitepaper. We have 3 types of actions regarding tokens:
When a workflow is initiated, X provisionned tokens are
The Do you agree @ccamel? Do you need anything else to go forward on the implementation @bdeneux? |
Thanks @tpelliet for this clarification. So at this moment, the mint module's PR (#439) is ready for review since, like you say, it's completely independent from workflow and taxes. I'm just wondering about the accuracy of the transfer, depending on the workflow cost, taking a small percentage of tokens (2% for burn and 1% for the community pool) on the cost of the workflow can cause trouble if the precision of |
Interesting, yes it needs to be considered. Let's do a quick worst case scenario:
Even with such extremes, the tax doesn't go to zero. |
Purpose
Since the publication of the new Token model, we need to implement it in the software.
Considerations
Here are some ideas that should be considered regarding the implementation, and that of course can/must be discussed:
x/mint
moduleSince this module name is first a standard cosmos sdk module, block explorers and other UIs apps rely on the specification coming from the cosmos sdk, which is conflicting with ours. So it may be relevant to implement inflation mechanisms in a different module name, for example:
x/inflation
. This way, block explorers won't be able to display wrong informations.Please don't hesitate to mention any considerations you would be regarding implementation.
The text was updated successfully, but these errors were encountered: