Conversation
Codecov Report
@@ Coverage Diff @@
## develop #3099 +/- ##
==========================================
+ Coverage 55.64% 55.8% +0.16%
==========================================
Files 134 132 -2
Lines 9746 9488 -258
==========================================
- Hits 5423 5295 -128
+ Misses 3980 3858 -122
+ Partials 343 335 -8 |
a6964b6 to
e7e30e8
Compare
e7e30e8 to
c0babcc
Compare
67a555f to
ff6ffe5
Compare
57b1f5d to
11515c2
Compare
ba26c9b to
d5404bf
Compare
c627e11 to
63a589f
Compare
63a589f to
c9a4978
Compare
alexanderbez
left a comment
There was a problem hiding this comment.
Did a first run through and left some comments. Overall, looks really good 👍
Co-Authored-By: cwgoes <cwgoes@pluranimity.org>
Co-Authored-By: cwgoes <cwgoes@pluranimity.org>
|
So there will be no need to implement a specific Auto Withdraw + Delegate fee script for validators ? |
This instantiation of F1 does not include automatic inflation calculation, so re-bonding will still be necessary. Future versions may implement inflation per the spec, which would render it unnecessary. |
|
Got it. Thanks. |
There was a problem hiding this comment.
Generally a very clean implementation 👏
Main considerations:
- currently the file organization is unintuitively shuffled for me - within keeper, we really ought to reorg functions into files relating to either objects (aka
delegation.go,validator.go) or abci calls (tx.go,end_block.goetc. ) - use of sdk.Dec for staking should be removed (see comment)
- lack of NewXxx functions
- there is a missing test which would ease my heart.
jackzampolin
left a comment
There was a problem hiding this comment.
Ready for merge! Great work @cwgoes and @cosmos/cosmossdk team!
Closes #2916
Implement the F1 spec in the "simple form" (inflation is left separate for the time being).
This PR is structured to be reviewed as a sequence of commits, commit-by-commit.
Each is independent (builds / passes simulations successfully, except for the import/export test which I left for the end).
PENDING.md( 😉 )Saved for a separate PR: queriers and CLI commands to view state (mostly reincarnated from last time). I can add that as a PR to this one if we want to wait on those to merge, but easier to review just the substance first I think.
In my view, this version of fee distribution compares favorably to our current one: it is not approximate (so e.g. the whole class of concerns illuminated by #2764 are eliminated), it completely separates withdrawal for separate users (no delegator or validator can cause another to be forced to withdraw fees, thus eliminating the class of concerns of #2914), it makes it far easier for us to change the distribution function per-validator (so e.g. #2525 and #3023 can more easily be addressed), it is implementationally simpler, and it is more amenable to future improvements (see the spec).
One concern is potential error introduced by utilizing decimals - although F1 is analytically exact, we cannot use arbitrary-precision rational numbers in the state machine and must make do with decimals.
The validator update delay renders fee payments slightly inaccurate (e.g. delegations will be paid a block before their validator actually signs), but I don't think this impacts the implementation. The most complex / nuanced part is probably dealing with slashes, which must be iterated through on withdrawal.
F1 has not yet been tested on a testnet. Depending on results of review, given our current timeline, this seems like a candidate for "Red Wedding" (#3079).
docs/)PENDING.mdwith issue #Files changedin the github PR explorerFor Admin Use: