Skip to content
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

R4R: Add a flag to export for zero-height start #2827

Merged
merged 73 commits into from
Nov 26, 2018
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
1c08b35
Initial pass
cwgoes Nov 14, 2018
492e9f0
Minor cleanup
cwgoes Nov 14, 2018
93242a2
untested core minting updates
rigelrozanski Nov 15, 2018
d9a53e5
fix initialMinter
rigelrozanski Nov 15, 2018
e61c357
Merge branch 'develop' into cwgoes/runtime-assertable-invariants
cwgoes Nov 15, 2018
dd4bc57
Update PENDING.md
cwgoes Nov 15, 2018
decf163
Add flag
cwgoes Nov 15, 2018
70d64ec
Fix flag, update docs
cwgoes Nov 15, 2018
7feb7aa
Update heights across state, add forZeroHeight handling to app.go
cwgoes Nov 15, 2018
079f7f4
Merge branch 'develop' into cwgoes/runtime-assertable-invariants
cwgoes Nov 15, 2018
f8ea009
Merge branch 'cwgoes/runtime-assertable-invariants' into cwgoes/expor…
cwgoes Nov 15, 2018
7c61478
Assert runtime invariants at application start, move export code
cwgoes Nov 15, 2018
bf2e525
Test fixes; 'make format'
cwgoes Nov 15, 2018
9c96e64
Bugfix height; return validators correctly
cwgoes Nov 15, 2018
481d801
Minor simulation fixes
cwgoes Nov 15, 2018
e6f05b2
Fix import-export tests, which cannot assert invariants
cwgoes Nov 15, 2018
58e026a
Simulation after import, include in CI
cwgoes Nov 15, 2018
e2a21f2
Avoid zero-validator case
cwgoes Nov 15, 2018
9a57abc
Fix height offset
cwgoes Nov 15, 2018
1cc058f
fix existing tests
rigelrozanski Nov 15, 2018
32e652f
working writing test
rigelrozanski Nov 16, 2018
2bd86c2
Merge branch 'develop' into cwgoes/export-for-zero-height
cwgoes Nov 16, 2018
7155483
Remove offset-by-one, must be some other issue
cwgoes Nov 16, 2018
834d472
'make format'
cwgoes Nov 16, 2018
7d6ff98
Add iteration functions
cwgoes Nov 16, 2018
c08f90c
Don't iterate over all accounts
cwgoes Nov 16, 2018
b9b979f
NextProvision test, some fixes
rigelrozanski Nov 16, 2018
f31a7e8
update mechanism to use average block time, PENDING, wip docs
rigelrozanski Nov 16, 2018
3dc8ab1
1 line compile fix
rigelrozanski Nov 16, 2018
5b0f3c9
finish updating docs
rigelrozanski Nov 16, 2018
5f70992
compile fix
rigelrozanski Nov 16, 2018
01a9246
address @cwgoes comments
rigelrozanski Nov 19, 2018
bb8c8ed
uint fixes
rigelrozanski Nov 19, 2018
fa469c2
benchmark using Int
rigelrozanski Nov 20, 2018
e1af6c6
use decimal
rigelrozanski Nov 20, 2018
58d34b7
Merge remote-tracking branch 'origin/develop' into rigel/blockly-mint
rigelrozanski Nov 20, 2018
8581dc4
Merge branch 'develop' into cwgoes/export-for-zero-height
cwgoes Nov 20, 2018
0f0ad9d
Address @rigelrozanski comments
cwgoes Nov 20, 2018
385cb68
Fix testcases
cwgoes Nov 20, 2018
06e7844
Add accum invariant
cwgoes Nov 20, 2018
645e023
minor invar update
rigelrozanski Nov 20, 2018
4d11313
doc update
rigelrozanski Nov 20, 2018
c6ce1e6
Merge branch 'develop' into rigel/blockly-mint
cwgoes Nov 20, 2018
9c74ae1
lint
rigelrozanski Nov 20, 2018
00b6497
Linter fix
cwgoes Nov 20, 2018
8b082e9
defensive checks
rigelrozanski Nov 20, 2018
3f8176b
some debugging output
rigelrozanski Nov 20, 2018
17e3bf5
Rename initGenesis to initFromGenesisState
cwgoes Nov 21, 2018
b8c2d43
Merge branch 'develop' into cwgoes/export-for-zero-height
cwgoes Nov 21, 2018
3cc2495
correct the defensive checks addresses
rigelrozanski Nov 21, 2018
94c888a
delegation share invariance
rigelrozanski Nov 21, 2018
1480510
...
rigelrozanski Nov 21, 2018
eb2bdcc
...
rigelrozanski Nov 21, 2018
f4782fe
del accum invariance
rigelrozanski Nov 21, 2018
d510df1
better invar output
rigelrozanski Nov 21, 2018
fb8aa02
PositiveDelegationInvariant
rigelrozanski Nov 22, 2018
2abab59
resolved Dec bug
rigelrozanski Nov 22, 2018
d41eeb1
PENDING.md
rigelrozanski Nov 22, 2018
b678bcc
Merge branch 'develop' into rigel/blockly-mint
rigelrozanski Nov 22, 2018
fffc100
test cover fix
rigelrozanski Nov 22, 2018
0da12f8
Merge branch 'rigel/blockly-mint' of https://github.com/cosmos/cosmos…
rigelrozanski Nov 22, 2018
ccfbfcf
...
rigelrozanski Nov 22, 2018
7c97582
missing iter.Close(), line length, reduce tab
rigelrozanski Nov 22, 2018
e38af2a
typo
rigelrozanski Nov 22, 2018
faa14f1
Merge branch 'develop' into cwgoes/export-for-zero-height
cwgoes Nov 22, 2018
822944b
Set validator.UnbondingHeight to 0
cwgoes Nov 22, 2018
dbf5a4b
Remove defer() usage
cwgoes Nov 22, 2018
685c55d
Tiny cleanup
cwgoes Nov 22, 2018
7aa1182
Merge branch 'rigel/blockly-mint' into cwgoes/export-for-zero-height
cwgoes Nov 22, 2018
3094324
Turn the ability to withdraw rewards into an invariant
cwgoes Nov 23, 2018
b1a14c1
Fix linter nit
cwgoes Nov 23, 2018
3674cb3
Correctly set height
cwgoes Nov 23, 2018
64fdd49
Merge branch 'develop' into cwgoes/export-for-zero-height
jaekwon Nov 26, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
use decimal
  • Loading branch information
rigelrozanski committed Nov 20, 2018
commit e1af6c68ef64444d4557d67db8390749a34bb1bd
17 changes: 8 additions & 9 deletions x/mint/minter.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ import (
type Minter struct {
LastUpdate time.Time `json:"last_update"` // time which the last update was made to the minter
Inflation sdk.Dec `json:"inflation"` // current annual inflation rate
AnnualProvisions sdk.Int `json:"annual_provisions"` // current annual expected provisions
AnnualProvisions sdk.Dec `json:"annual_provisions"` // current annual expected provisions
}

// Create a new minter object
func NewMinter(lastUpdate time.Time, inflation sdk.Dec,
annualProvisions sdk.Int) Minter {
func NewMinter(lastUpdate time.Time, inflation,
annualProvisions sdk.Dec) Minter {

return Minter{
LastUpdate: lastUpdate,
Expand All @@ -30,7 +30,7 @@ func InitialMinter(inflation sdk.Dec) Minter {
return NewMinter(
time.Unix(0, 0),
inflation,
sdk.NewInt(0),
sdk.NewDec(0),
)
}

Expand Down Expand Up @@ -81,14 +81,13 @@ func (m Minter) NextInflationRate(params Params, bondedRatio sdk.Dec) (

// calculate the annual provisions based on current total supply and inflation rate
func (m Minter) NextAnnualProvisions(params Params, totalSupply sdk.Dec) (
provisions sdk.Int) {
provisions sdk.Dec) {

provisionsDec := m.Inflation.Mul(totalSupply)
return provisionsDec.TruncateInt()
return m.Inflation.Mul(totalSupply)
}

// get the provisions for a block based on the annual provisions rate
func (m Minter) BlockProvision(params Params) sdk.Coin {
provisionAmt := m.AnnualProvisions.DivRaw(int64(params.BlocksPerYear))
return sdk.NewCoin(params.MintDenom, provisionAmt)
provisionAmt := m.AnnualProvisions.QuoInt(sdk.NewInt(int64(params.BlocksPerYear)))
return sdk.NewCoin(params.MintDenom, provisionAmt.TruncateInt())
}
10 changes: 7 additions & 3 deletions x/mint/minter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ func TestBlockProvision(t *testing.T) {
{(secondsPerYear / 5) / 2, 0},
}
for i, tc := range tests {
minter.AnnualProvisions = sdk.NewInt(tc.annualProvisions)
minter.AnnualProvisions = sdk.NewDec(tc.annualProvisions)
provisions := minter.BlockProvision(params)

expProvisions := sdk.NewCoin(params.MintDenom,
Expand All @@ -81,15 +81,19 @@ func TestBlockProvision(t *testing.T) {
}
}

// using sdk.Int operations:
// Benchmarking :)
// previously using sdk.Int operations:
// BenchmarkBlockProvision-4 5000000 220 ns/op
//
// using sdk.Dec operations: (current implementation)
// BenchmarkBlockProvision-4 3000000 429 ns/op
func BenchmarkBlockProvision(b *testing.B) {
minter := InitialMinter(sdk.NewDecWithPrec(1, 1))
params := DefaultParams()

s1 := rand.NewSource(100)
r1 := rand.New(s1)
minter.AnnualProvisions = sdk.NewInt(r1.Int63n(1000000))
minter.AnnualProvisions = sdk.NewDec(r1.Int63n(1000000))

// run the Fib function b.N times
for n := 0; n < b.N; n++ {
Expand Down