Closed steven004 closed 4 years ago
Yes please!
While I can confirm that the formula proposed is analytically correct, I'm somewhat concerned about compounding of errors when each epoch's reward is computed by multiplying by the remaining unminted supply from the past epoch, which was computed by multiplying... etc. I'm not confident that the numerical stability is bad, necessarily, but I would have to do some tests to be confident that it is good.
I also agree that there is a problem with the current handling of null rounds, but I'd like to solve this by removing unnecessary dependence about what happened in past epochs. My proposed formula for expected simple minting at epoch t
is Total*(e^lambda - 1)*(e^(-lambda*t))
, where (e^lambda - 1)
is a constant.
A test will be convincible. I would think you can consider portion of blocks missed due to some reasons, such as network issues, miner failures, or re-orgs. Let's say 5%, it may result in around 0.5 year delay for half-life; while 10% blocks missed, resulting one year delay.
I would expect an adaptive reward will pull it in much.
I think it is very similar to the formulation we had previously: https://github.com/filecoin-project/specs/pull/530
It has been determined by the cryptoeconomic team that we will not implement adaptive rewards in this fashion. There are a bunch of issues with the current reward implementation that need fixing, but the essential function is to remain the same. A reward that is not claimed will simply go on unclaimed, reducing the total reward asymptote that the emission scheme approaches.
Don't shoot the messenger!
This is a proposal, for better matching what mentioned in Filecoin white paper.
We have designed Filecoin block reward is following an explonential-decay mode with 6-year half-life. Based on this, we could figure out lambda, and how much the decay would be each second precisely (to a reasonable level).
However, the real not is not the same as the ideal one. Due to network latency/jitter/broken, miner's hardware/software failure, etc, the number of blocks in the canonical chain is less than expected in the ideal world. That means, we will not be able to reward as much as it should, and, certainly, the real half-time will be more than 6 years.
One mitigation is to take the remaining rewards into calculation. It may not guarantee the half-life be 6 years exactly, but it will pull it closer. This is reasonable, and the algorithm complexity is the same if not better.
It is simply like:
Reward(t2) = Remaining(t1) * ( 1 - e^(-lambda*(t2-t1)) )
when
t2-t1
is a known number (block time
in most cases), the equation is much simpler.