-
Notifications
You must be signed in to change notification settings - Fork 47
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
Add block rewards minting contract #310
Comments
I need to look a bit into other chains minting model but can you answer some questions already for me to understand this better?
|
K is the governance (multisig) contract. Many devs were distrustful they would release according to plan and that would make payout less predictable, and more risky for validators, thus the idea of a hard-coded payout. Account D would be the distribution contract we merge any day now. |
Benjamin was worried about semantics from legal side. We have an initial token supply as defined in the whitepaper, so we cannot pre issue tokens here. He wants to define maximum amount of tokens ever to be minted, in order to differentiate block rewards (good) from inflation (bad). I dunna if this matters, but it seems to be important semantics from the legal / business side, so let's just implement it as issuing new tokens |
Hmmm... after reflecting some. If we just relax the requirement of minting new coins, but rather lock them up, we can implement this with the escrow model. In genesis:
Functionality:
This is basically what we need for the MvP. If we go this route all we need to do is:
I think this is good enough for now, and we can get some road-testing on this, while working out a more proper distribution design |
Note: should add Acceptance Test / Scenario Test that tries this on a real network. Wait for larger discussion on governance tooling (will we provide graphical UI) before spending much time on cli tooling? |
👍 I was aiming for escrow, too as it perfectly matched the case except for the token creation. I am glad that this is not necessary anymore. |
Extracted "header time" into issue #392 |
Simplest iteration is a contract that holds
N
tokens, has a master keyK
, and has a fixed destination address (contract)D
When desiredK
can mintn
tokens, that will be added to addressD
. This will decrementN -= n
.This fulfills MvP requirements, but gives quite a bit of leeway (too much) to governance. A future issue will use fixed curves for token release as an alternative. Using some examples like ethereum, with a fixed release schedule
Implementation will make use of the existing escrow functionality, as mentioned in a comment. We will assume #347 is completed first for nice genesis references and to obviate the need for more additions to the lsc tool.
Needed enhancements to escrow:
escrow
to behave more likedistribution
, where it queries its balance upon sending, rather than assume some local tally is correct. This allows an escrow to receive more funds after creation and makes it more robust.Bonus tasks:
It should look something like:
Note that once this is implemented, we can also use this to provide time-released tokens (eg. 6 months after genesis) with a different config:
The escrow will never be executed, but after the timeout, the tokens can be "returned" to the sender.
The text was updated successfully, but these errors were encountered: