Skip to content

Commit 95eb909

Browse files
authored
optimized staking weight value (#3119)
* optimized staking weight value * optimized code * optimized code
1 parent 528b9aa commit 95eb909

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

x/staking/keeper/weight.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@ const (
1414
blockTimestampEpoch = int64(946684800)
1515
secondsPerWeek = int64(60 * 60 * 24 * 7)
1616
weeksPerYear = float64(52)
17-
fixedTimeStamp = int64(1685577600) // 2023-06-01 00:00:00 GMT+0
18-
fixedWeek = int64(1221) // (fixedTimeStamp - blockTimestampEpoch) / secondsPerWeek
17+
fixedWeight = int64(11700000) // The weight of 1 okt, calculated by calculateWeight before venus6. (nowTime=2023-06-01 00:00:00 GMT+0)
1918
)
2019

2120
func calculateWeight(nowTime int64, tokens sdk.Dec, height int64) (shares types.Shares, sdkErr error) {
22-
nowWeek := fixedWeek
23-
if !types2.HigherThanVenus6(height) {
24-
nowWeek = (nowTime - blockTimestampEpoch) / secondsPerWeek
21+
if types2.HigherThanVenus6(height) {
22+
shares = tokens.MulInt64(fixedWeight)
23+
return
2524
}
2625

26+
nowWeek := (nowTime - blockTimestampEpoch) / secondsPerWeek
2727
rate := float64(nowWeek) / weeksPerYear
2828
weight := math.Pow(float64(2), rate)
2929

x/staking/keeper/weight_test.go

+11-9
Original file line numberDiff line numberDiff line change
@@ -35,27 +35,29 @@ func TestProposalSuite(t *testing.T) {
3535
func (suite *ProposalSuite) TestNewChangeDistributionTypeProposal() {
3636
testCases := []struct {
3737
title string
38+
curTime string
3839
curHeight int64
3940
upgradeHeight int64
4041
quo int64
4142
}{
42-
{"default", 100, 0, 2},
43-
{"set upgrade height, not reached height", 100, 100, 2},
44-
{"set upgrade height, reached height", 101, 100, 1},
43+
{"default", "2023-05-01 00:00:00", 100, 0, 2},
44+
{"set upgrade height, not reached height", "2023-05-01 00:00:00", 100, 100, 2},
45+
{"set upgrade height, reached height", "2023-05-01 00:00:00", 101, 100, 1},
4546
}
46-
formatTime, _ := gotime.Parse("2006-01-02 15:04:05", "2023-06-01 00:00:00")
47-
require.Equal(suite.T(), formatTime.Unix(), fixedTimeStamp)
4847

4948
for _, tc := range testCases {
5049
suite.Run(tc.title, func() {
50+
tokens := sdk.NewDec(1)
51+
curTime, _ := gotime.Parse("2006-01-02 15:04:05", tc.curTime)
52+
curDecBefore, err := calculateWeight(curTime.Unix(), tokens, tc.curHeight)
5153
global.SetGlobalHeight(tc.curHeight)
5254
tmtypes.InitMilestoneVenus6Height(tc.upgradeHeight)
53-
tokens := sdk.NewDec(1000)
54-
nowDec, err := calculateWeight(time.Now().Unix(), tokens, tc.curHeight)
55+
curDec, err := calculateWeight(curTime.Unix(), tokens, tc.curHeight)
56+
require.Equal(suite.T(), true, curDec.GTE(curDecBefore))
5557
require.NoError(suite.T(), err)
56-
afterDec, err := calculateWeight(time.Now().AddDate(0, 0, 52*7).Unix(), tokens, tc.curHeight)
58+
afterDec, err := calculateWeight(curTime.AddDate(0, 0, 52*7).Unix(), tokens, tc.curHeight)
5759
require.NoError(suite.T(), err)
58-
require.Equal(suite.T(), sdk.NewDec(tc.quo), afterDec.Quo(nowDec))
60+
require.Equal(suite.T(), sdk.NewDec(tc.quo), afterDec.Quo(curDec))
5961
})
6062
}
6163
}

0 commit comments

Comments
 (0)