Skip to content

Commit cf71472

Browse files
authoredSep 30, 2022
Merge pull request #386 from KiraCore/release/v0.3.1.24
release/v0.3.1.24 -> master
2 parents eae2746 + 95dc14f commit cf71472

File tree

20 files changed

+2050
-95
lines changed

20 files changed

+2050
-95
lines changed
 

‎RELEASE.md

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
Features:
22

3-
- Add basket module to group tokens
3+
- Update plan object with new fields and add genesis upgrader and test the command
4+
- Prevent pause on poor network & test via cli
5+
- Update pools-by-account query help for multistaking module
6+
- Fix proto-gen issue for container name conflict
7+
- If dynamic ubi record, mint only missing amount & add unit test
8+
- Resolve possible panic for distributor module

‎proto/kira/ubi/ubi.proto

+4
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,8 @@ message UBIRecord {
2323
uint64 period = 6; // <seconds>
2424
// pool - spending pool name where exact amount of KEX should be deposited
2525
string pool = 7;
26+
// dynamic field (bool, default false) that defines if UBI is dynamic (true) or static (false).
27+
// If the UBI is dynamic then we will only distribute to the spending pool a difference between what is already in the spending pool still waiting to be claimed and what is already there.
28+
// If the UBI is NOT dynamic then we just send a fixed amount every time period.
29+
bool dynamic = 8;
2630
}

‎proto/kira/upgrade/upgrade.proto

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ message Resource {
3434
option (gogoproto.equal) = true;
3535

3636
string id = 1;
37-
string git = 2;
38-
string checkout = 3;
37+
string url = 2;
38+
string version = 3;
3939
string checksum = 4;
4040
}

‎scripts/commands/governance/upgrade-plan.sh

+10-10
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@
22

33
# PermCreateSoftwareUpgradeProposal PermValue = 28
44
# PermVoteSoftwareUpgradeProposal PermValue = 29
5-
sekaid tx customgov permission whitelist --permission=28 --addr=$(sekaid keys show -a validator --keyring-backend=test --home=$HOME/.sekaid) --from=validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes
6-
sekaid tx customgov permission whitelist --permission=29 --addr=$(sekaid keys show -a validator --keyring-backend=test --home=$HOME/.sekaid) --from=validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes
5+
sekaid tx customgov permission whitelist --permission=28 --addr=$(sekaid keys show -a validator --keyring-backend=test --home=$HOME/.sekaid) --from=validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes --broadcast-mode=block
6+
sekaid tx customgov permission whitelist --permission=29 --addr=$(sekaid keys show -a validator --keyring-backend=test --home=$HOME/.sekaid) --from=validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes --broadcast-mode=block
77

88
# The upgrade time should be set to future time if not it cause internal error
9-
sekaid tx upgrade proposal-set-plan --name="upgrade1" --instate-upgrade=true --skip-handler=false --resources="[{\"id\":\"infra\",\"git\":\"https://aaa/bbb.com\"}]" --min-upgrade-time=$(($(date -u +%s) + 200)) --old-chain-id=testing --new-chain-id=1 --rollback-memo=1 --max-enrollment-duration=1 --upgrade-memo="upgrade1 test" --from=validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes
9+
sekaid tx upgrade proposal-set-plan --name="upgrade1" --instate-upgrade=true --skip-handler=false --resources="[{\"id\":\"infra\",\"git\":\"https://aaa/bbb.com\"}]" --min-upgrade-time=$(($(date -u +%s) + 200)) --old-chain-id=testing --new-chain-id=1 --rollback-memo=1 --max-enrollment-duration=1 --upgrade-memo="upgrade1 test" --from=validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes --broadcast-mode=block
1010

1111
# timestamp related commands
1212
# echo $(date -u +%s)
1313
# echo $(($(date -u +%s) + 200))
1414

1515
# {"height":"175","txhash":"F942BD2DC74DB31334477FD4BCF8BED6A9CA173A691F9A7D1A0AB2885C72DD47","codespace":"","code":0,"data":"0A1E0A1870726F706F73652D736F6674776172652D7570677261646512020801","raw_log":"[{\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"propose-software-upgrade\"}]}]}]","logs":[{"msg_index":0,"log":"","events":[{"type":"message","attributes":[{"key":"action","value":"propose-software-upgrade"}]}]}],"info":"","gas_wanted":"0","gas_used":"15650","tx":null,"timestamp":""}
1616

17-
sekaid tx customgov proposal vote 1 1 --from validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes
17+
sekaid tx customgov proposal vote 1 1 --from validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes --broadcast-mode=block
1818

1919
sekaid query upgrade next-plan
2020

@@ -30,17 +30,17 @@ sekaid query customgov proposals
3030
sekaid start --home=$HOME/.sekaid
3131

3232
# propose second upgrade plan
33-
sekaid tx upgrade proposal-set-plan --name="upgrade6" --instate-upgrade=false --skip-handler=true --resources="[{\"id\":\"infra\",\"git\":\"https://aaa/bbb.com\"}]" --min-upgrade-time=$(($(date -u +%s) + 200)) --old-chain-id=testing --new-chain-id=testing --rollback-memo=1 --max-enrollment-duration=1 --upgrade-memo="upgrade2 test" --from=validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes
33+
sekaid tx upgrade proposal-set-plan --name="upgrade6" --instate-upgrade=false --skip-handler=true --resources="[{\"id\":\"infra\",\"git\":\"https://aaa/bbb.com\"}]" --min-upgrade-time=$(($(date -u +%s) + 200)) --old-chain-id=testing --new-chain-id=testing --rollback-memo=1 --max-enrollment-duration=1 --upgrade-memo="upgrade2 test" --from=validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes --broadcast-mode=block
3434

35-
sekaid tx upgrade proposal-set-plan --name="upgrade3" --instate-upgrade=true --skip-handler=false --resources="[{\"id\":\"infra\",\"git\":\"https://aaa/bbb.com\"}]" --min-upgrade-time=$(($(date -u +%s) + 200)) --old-chain-id=testing --new-chain-id=testing --rollback-memo=1 --max-enrollment-duration=1 --upgrade-memo="upgrade3 test" --from=validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes
35+
sekaid tx upgrade proposal-set-plan --name="upgrade3" --instate-upgrade=true --skip-handler=false --resources="[{\"id\":\"infra\",\"git\":\"https://aaa/bbb.com\"}]" --min-upgrade-time=$(($(date -u +%s) + 200)) --old-chain-id=testing --new-chain-id=testing --rollback-memo=1 --max-enrollment-duration=1 --upgrade-memo="upgrade3 test" --from=validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes --broadcast-mode=block
3636

37-
sekaid tx upgrade proposal-set-plan --name="upgrade4" --instate-upgrade=true --skip-handler=true --resources="[{\"id\":\"infra\",\"git\":\"https://aaa/bbb.com\"}]" --min-upgrade-time=$(($(date -u +%s) + 200)) --old-chain-id=testing --new-chain-id=testing --rollback-memo=1 --max-enrollment-duration=1 --upgrade-memo="upgrade4 test" --from=validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes
37+
sekaid tx upgrade proposal-set-plan --name="upgrade4" --instate-upgrade=true --skip-handler=true --resources="[{\"id\":\"infra\",\"git\":\"https://aaa/bbb.com\"}]" --min-upgrade-time=$(($(date -u +%s) + 200)) --old-chain-id=testing --new-chain-id=testing --rollback-memo=1 --max-enrollment-duration=1 --upgrade-memo="upgrade4 test" --from=validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes --broadcast-mode=block
3838

39-
sekaid tx upgrade proposal-set-plan --name="upgrade5" --instate-upgrade=false --skip-handler=false --resources="[{\"id\":\"infra\",\"git\":\"https://aaa/bbb.com\"}]" --min-upgrade-time=$(($(date -u +%s) + 200)) --old-chain-id=testing --new-chain-id=testing --rollback-memo=1 --max-enrollment-duration=1 --upgrade-memo="upgrade5 test" --from=validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes
39+
sekaid tx upgrade proposal-set-plan --name="upgrade5" --instate-upgrade=false --skip-handler=false --resources="[{\"id\":\"infra\",\"git\":\"https://aaa/bbb.com\"}]" --min-upgrade-time=$(($(date -u +%s) + 200)) --old-chain-id=testing --new-chain-id=testing --rollback-memo=1 --max-enrollment-duration=1 --upgrade-memo="upgrade5 test" --from=validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes --broadcast-mode=block
4040

4141
sekaid tx upgrade proposal-cancel-plan --name="cancel-upgrade4" --from=validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes
42-
sekaid tx customgov proposal vote 1 1 --from validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes
43-
sekaid tx customgov proposal vote 2 1 --from validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes
42+
sekaid tx customgov proposal vote 1 1 --from validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes --broadcast-mode=block
43+
sekaid tx customgov proposal vote 2 1 --from validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes --broadcast-mode=block
4444
sekaid query customgov proposals
4545

4646
# upgrade to new json for hard-fork case

‎scripts/commands/validator-pause.sh

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/bash
2+
3+
sekaid tx customslashing pause --from=validator --keyring-backend=test --home=$HOME/.sekaid --chain-id=testing --fees=100ukex --yes --broadcast-mode=block

‎types/constants.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ package types
33
const (
44
// we set page iteration limit for safety
55
PageIterationLimit = 512
6-
SekaiVersion = "v0.3.1.23"
6+
SekaiVersion = "v0.3.1.24"
77
CosmosVersion = "v0.45.1"
88
)

‎x/distributor/keeper/distributor.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,10 @@ func (k Keeper) AllocateTokens(
4444
}
4545

4646
// combine fees and inflated tokens for rewards allocation
47-
feesCollected := feesAccBalance.Sub(feesTreasury)
47+
feesCollected := sdk.Coins{}
48+
if feesAccBalance.IsAllGTE(feesTreasury) {
49+
feesCollected = feesAccBalance.Sub(feesTreasury)
50+
}
4851
totalRewards := feesCollected.Add(inflationCoin)
4952

5053
validatorsFeeShare := k.gk.GetNetworkProperties(ctx).ValidatorsFeeShare

‎x/genutil/client/cli/upgrade_genesis.go

+63
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,47 @@ import (
1111
"github.com/KiraCore/sekai/x/genutil"
1212
v01228govtypes "github.com/KiraCore/sekai/x/gov/legacy/v01228"
1313
govtypes "github.com/KiraCore/sekai/x/gov/types"
14+
v03123upgradetypes "github.com/KiraCore/sekai/x/upgrade/legacy/v03123"
1415
upgradetypes "github.com/KiraCore/sekai/x/upgrade/types"
1516
"github.com/cosmos/cosmos-sdk/client"
1617
"github.com/cosmos/cosmos-sdk/types/module"
1718
"github.com/cosmos/cosmos-sdk/version"
1819
)
1920

21+
func upgradedPlan(plan *v03123upgradetypes.PlanV03123) *upgradetypes.Plan {
22+
if plan == nil {
23+
return nil
24+
}
25+
26+
return &upgradetypes.Plan{
27+
Name: plan.Name,
28+
Resources: upgradedResources(plan.Resources),
29+
UpgradeTime: plan.UpgradeTime,
30+
OldChainId: plan.OldChainId,
31+
NewChainId: plan.NewChainId,
32+
RollbackChecksum: plan.RollbackChecksum,
33+
MaxEnrolmentDuration: plan.MaxEnrolmentDuration,
34+
InstateUpgrade: plan.InstateUpgrade,
35+
RebootRequired: plan.RebootRequired,
36+
SkipHandler: plan.SkipHandler,
37+
ProposalID: plan.ProposalID,
38+
ProcessedNoVoteValidators: plan.ProcessedNoVoteValidators,
39+
}
40+
}
41+
42+
func upgradedResources(resources []v03123upgradetypes.ResourceV03123) []upgradetypes.Resource {
43+
upgraded := []upgradetypes.Resource{}
44+
for _, resource := range resources {
45+
upgraded = append(upgraded, upgradetypes.Resource{
46+
Id: resource.Id,
47+
Url: resource.Git,
48+
Version: resource.Checkout,
49+
Checksum: resource.Checksum,
50+
})
51+
}
52+
return upgraded
53+
}
54+
2055
// GetNewGenesisFromExportedCmd returns new genesis from exported genesis
2156
func GetNewGenesisFromExportedCmd(mbm module.BasicManager, txEncCfg client.TxEncodingConfig) *cobra.Command {
2257
cmd := &cobra.Command{
@@ -52,6 +87,19 @@ $ %s new-genesis-from-exported exported-genesis.json new-genesis.json
5287
return errors.Wrap(err, "failed to validate genesis state")
5388
}
5489

90+
upgradeGenesisV03123 := v03123upgradetypes.GenesisStateV03123{}
91+
err = cdc.UnmarshalJSON(genesisState[upgradetypes.ModuleName], &upgradeGenesisV03123)
92+
if err == nil { // which means old upgrade genesis
93+
upgradeGenesis := upgradetypes.GenesisState{
94+
Version: "v0.3.1.24",
95+
CurrentPlan: upgradedPlan(upgradeGenesisV03123.CurrentPlan),
96+
NextPlan: upgradedPlan(upgradeGenesisV03123.NextPlan),
97+
}
98+
genesisState[upgradetypes.ModuleName] = cdc.MustMarshalJSON(&upgradeGenesis)
99+
} else {
100+
fmt.Println("error exists v0.3.1.23 upgrade genesis parsing", err)
101+
}
102+
55103
upgradeGenesis := upgradetypes.GenesisState{}
56104
cdc.MustUnmarshalJSON(genesisState[upgradetypes.ModuleName], &upgradeGenesis)
57105
oldVersion := upgradeGenesis.Version
@@ -143,6 +191,21 @@ $ %s new-genesis-from-exported exported-genesis.json new-genesis.json
143191
if err == nil {
144192
govGenesis.RolePermissions[govtypes.RoleSudo] = govtypes.DefaultGenesis().RolePermissions[govtypes.RoleSudo]
145193
genesisState[govtypes.ModuleName] = cdc.MustMarshalJSON(&govGenesis)
194+
} else {
195+
fmt.Println("parse error for latest gov genesis", err)
196+
fmt.Println("trying to parse v03123 gov genesis for following error on genesis parsing")
197+
govGenesisV03123 := make(map[string]interface{})
198+
err = json.Unmarshal(genesisState[govtypes.ModuleName], &govGenesisV03123)
199+
if err != nil {
200+
panic(err)
201+
}
202+
govGenesisV03123["proposals"] = []govtypes.Proposal{}
203+
govGenesisV03123["votes"] = []govtypes.Vote{}
204+
bz, err := json.Marshal(&govGenesisV03123)
205+
if err != nil {
206+
panic(err)
207+
}
208+
genesisState[govtypes.ModuleName] = bz
146209
}
147210

148211
appState, err := json.MarshalIndent(genesisState, "", " ")

‎x/slashing/keeper/msg_server.go

+7
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,13 @@ func (k msgServer) Pause(goCtx context.Context, msg *types.MsgPause) (*types.Msg
5858
if valErr != nil {
5959
return nil, valErr
6060
}
61+
62+
properties := k.gk.GetNetworkProperties(ctx)
63+
validators := k.sk.GetValidatorSet(ctx)
64+
if len(validators) <= int(properties.MinValidators) || len(validators) <= 1 {
65+
return nil, types.ErrPauseNotAllowedOnPoorNetwork
66+
}
67+
6168
err := k.Keeper.Pause(ctx, valAddr)
6269
if err != nil {
6370
return nil, err

‎x/slashing/types/errors.go

+10-9
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@ import (
66

77
// x/slashing module sentinel errors
88
var (
9-
ErrNoValidatorForAddress = sdkerrors.Register(ModuleName, 2, "address is not associated with any known validator")
10-
ErrBadValidatorAddr = sdkerrors.Register(ModuleName, 3, "validator does not exist for that address")
11-
ErrValidatorJailed = sdkerrors.Register(ModuleName, 4, "validator jailed")
12-
ErrValidatorInactivated = sdkerrors.Register(ModuleName, 5, "validator still inactivated; cannot be activated")
13-
ErrValidatorNotInactivated = sdkerrors.Register(ModuleName, 6, "validator not inactivated; cannot be activated")
14-
ErrValidatorNotPaused = sdkerrors.Register(ModuleName, 7, "validator not paused")
15-
ErrValidatorPaused = sdkerrors.Register(ModuleName, 8, "validator paused")
16-
ErrNoSigningInfoFound = sdkerrors.Register(ModuleName, 9, "no validator signing info found")
17-
ErrSlashProposalDoesNotExists = sdkerrors.Register(ModuleName, 10, "slash proposal does not exists")
9+
ErrNoValidatorForAddress = sdkerrors.Register(ModuleName, 2, "address is not associated with any known validator")
10+
ErrBadValidatorAddr = sdkerrors.Register(ModuleName, 3, "validator does not exist for that address")
11+
ErrValidatorJailed = sdkerrors.Register(ModuleName, 4, "validator jailed")
12+
ErrValidatorInactivated = sdkerrors.Register(ModuleName, 5, "validator still inactivated; cannot be activated")
13+
ErrValidatorNotInactivated = sdkerrors.Register(ModuleName, 6, "validator not inactivated; cannot be activated")
14+
ErrValidatorNotPaused = sdkerrors.Register(ModuleName, 7, "validator not paused")
15+
ErrValidatorPaused = sdkerrors.Register(ModuleName, 8, "validator paused")
16+
ErrNoSigningInfoFound = sdkerrors.Register(ModuleName, 9, "no validator signing info found")
17+
ErrSlashProposalDoesNotExists = sdkerrors.Register(ModuleName, 10, "slash proposal does not exists")
18+
ErrPauseNotAllowedOnPoorNetwork = sdkerrors.Register(ModuleName, 11, "pause not allowed on poor network")
1819
)

‎x/spending/client/cli/query.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ func GetCmdQueryPoolProposals() *cobra.Command {
118118
func GetCmdQueryPoolsByAccount() *cobra.Command {
119119
cmd := &cobra.Command{
120120
Use: "pools-by-account [addr]",
121-
Short: "Get the token rate by denom",
121+
Short: "Query list of pool names where specific kira account can register its claim or otherwise claim tokens from",
122122
Args: cobra.MinimumNArgs(1),
123123
RunE: func(cmd *cobra.Command, args []string) error {
124124
clientCtx := client.GetClientContextFromCmd(cmd)

‎x/ubi/keeper/keeper_test.go

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package keeper_test
2+
3+
import (
4+
"testing"
5+
6+
simapp "github.com/KiraCore/sekai/app"
7+
sdk "github.com/cosmos/cosmos-sdk/types"
8+
"github.com/stretchr/testify/suite"
9+
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
10+
)
11+
12+
type KeeperTestSuite struct {
13+
suite.Suite
14+
15+
ctx sdk.Context
16+
app *simapp.SekaiApp
17+
}
18+
19+
func (suite *KeeperTestSuite) SetupTest() {
20+
checkTx := false
21+
suite.app = simapp.Setup(checkTx)
22+
suite.ctx = suite.app.BaseApp.NewContext(checkTx, tmproto.Header{Height: 1})
23+
}
24+
25+
func TestKeeperTestSuite(t *testing.T) {
26+
suite.Run(t, new(KeeperTestSuite))
27+
}

‎x/ubi/keeper/ubi.go

+14
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,20 @@ func (k Keeper) ProcessUBIRecord(ctx sdk.Context, record types.UBIRecord) error
6666
k.SetUBIRecord(ctx, record)
6767

6868
amount := sdk.NewInt(int64(record.Amount)).Mul(sdk.NewInt(1000_000))
69+
70+
// if dynamic ubi record, mint only missing amount
71+
if record.Dynamic {
72+
spendingPool := k.sk.GetSpendingPool(ctx, record.Pool)
73+
if spendingPool == nil {
74+
return types.ErrSpendingPoolDoesNotExist
75+
}
76+
77+
if amount.LTE(spendingPool.Balance) {
78+
return nil
79+
}
80+
amount = amount.Sub(spendingPool.Balance)
81+
}
82+
6983
coin := sdk.NewCoin(k.BondDenom(ctx), amount)
7084
err := k.bk.MintCoins(ctx, minttypes.ModuleName, sdk.NewCoins(coin))
7185
if err != nil {

‎x/ubi/keeper/ubi_test.go

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package keeper_test
2+
3+
func (suite *KeeperTestSuite) TestProcessUBIRecordDynamic() {
4+
ctx := suite.ctx
5+
6+
// check genesis ubi records
7+
records := suite.app.UbiKeeper.GetUBIRecords(ctx)
8+
suite.Require().Len(records, 1)
9+
suite.Require().True(records[0].Dynamic)
10+
11+
// process it and check
12+
suite.app.UbiKeeper.ProcessUBIRecord(ctx, records[0])
13+
pool1 := suite.app.SpendingKeeper.GetSpendingPool(ctx, records[0].Pool)
14+
15+
// process again and check
16+
suite.app.UbiKeeper.ProcessUBIRecord(ctx, records[0])
17+
pool2 := suite.app.SpendingKeeper.GetSpendingPool(ctx, records[0].Pool)
18+
suite.Require().Equal(pool1.Balance, pool2.Balance)
19+
20+
// update to not dynamic and check
21+
records[0].Dynamic = false
22+
suite.app.UbiKeeper.ProcessUBIRecord(ctx, records[0])
23+
pool3 := suite.app.SpendingKeeper.GetSpendingPool(ctx, records[0].Pool)
24+
suite.Require().NotEqual(pool1.Balance, pool3.Balance)
25+
}

‎x/ubi/types/genesis.go

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ func DefaultGenesis() *GenesisState {
1212
Amount: 500_000, // 500k KEX
1313
Period: 86400 * 30, // 30 days
1414
Pool: "ValidatorBasicRewardsPool",
15+
Dynamic: true,
1516
},
1617
},
1718
}

0 commit comments

Comments
 (0)