Skip to content

Commit f40f820

Browse files
authored
fix(x/protocolpool): withdraw rewards before export genesis (#23467)
1 parent c04ae66 commit f40f820

File tree

3 files changed

+44
-8
lines changed

3 files changed

+44
-8
lines changed

simapp/v2/app_config.go

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,6 @@ var (
154154
accounts.ModuleName,
155155
authtypes.ModuleName,
156156
banktypes.ModuleName,
157-
// bankv2types.ModuleName,
158157
distrtypes.ModuleName,
159158
stakingtypes.ModuleName,
160159
slashingtypes.ModuleName,
@@ -174,7 +173,28 @@ var (
174173
},
175174
// When ExportGenesis is not specified, the export genesis module order
176175
// is equal to the init genesis order
177-
// ExportGenesis: []string{},
176+
ExportGenesis: []string{
177+
consensustypes.ModuleName,
178+
accounts.ModuleName,
179+
authtypes.ModuleName,
180+
pooltypes.ModuleName, // Must be exported before bank
181+
banktypes.ModuleName,
182+
distrtypes.ModuleName,
183+
stakingtypes.ModuleName,
184+
slashingtypes.ModuleName,
185+
govtypes.ModuleName,
186+
minttypes.ModuleName,
187+
genutiltypes.ModuleName,
188+
evidencetypes.ModuleName,
189+
authz.ModuleName,
190+
feegrant.ModuleName,
191+
nft.ModuleName,
192+
group.ModuleName,
193+
upgradetypes.ModuleName,
194+
vestingtypes.ModuleName,
195+
circuittypes.ModuleName,
196+
epochstypes.ModuleName,
197+
},
178198
// Uncomment if you want to set a custom migration order here.
179199
// OrderMigrations: []string{},
180200
// TODO GasConfig was added to the config in runtimev2. Where/how was it set in v1?
@@ -298,10 +318,6 @@ var (
298318
Name: epochstypes.ModuleName,
299319
Config: appconfig.WrapAny(&epochsmodulev1.Module{}),
300320
},
301-
// {
302-
// Name: bankv2types.ModuleName,
303-
// Config: appconfig.WrapAny(&bankmodulev2.Module{}),
304-
// },
305321
},
306322
}
307323
)

x/protocolpool/keeper/genesis.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,21 @@ func (k Keeper) InitGenesis(ctx context.Context, data *types.GenesisState) error
7777
}
7878

7979
func (k Keeper) ExportGenesis(ctx context.Context) (*types.GenesisState, error) {
80+
// refresh all funds
81+
if err := k.IterateAndUpdateFundsDistribution(ctx); err != nil {
82+
return nil, err
83+
}
84+
85+
// withdraw all rewards before exporting genesis
86+
if err := k.RecipientFundDistribution.Walk(ctx, nil, func(key sdk.AccAddress, value types.DistributionAmount) (stop bool, err error) {
87+
if _, err := k.withdrawRecipientFunds(ctx, key.Bytes()); err != nil {
88+
return true, err
89+
}
90+
return false, nil
91+
}); err != nil {
92+
return nil, err
93+
}
94+
8095
var cf []*types.ContinuousFund
8196
err := k.ContinuousFund.Walk(ctx, nil, func(key sdk.AccAddress, value types.ContinuousFund) (stop bool, err error) {
8297
recipient, err := k.authKeeper.AddressCodec().BytesToString(key)

x/protocolpool/keeper/genesis_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,18 @@ package keeper_test
33
import (
44
"time"
55

6+
"go.uber.org/mock/gomock"
7+
68
"cosmossdk.io/math"
79
"cosmossdk.io/x/protocolpool/types"
810

911
sdk "github.com/cosmos/cosmos-sdk/types"
1012
)
1113

12-
func (suite *KeeperTestSuite) TestInitGenesis() {
14+
func (suite *KeeperTestSuite) TestInitExportGenesis() {
15+
suite.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), types.ProtocolPoolDistrAccount, gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
16+
suite.bankKeeper.EXPECT().SendCoinsFromModuleToAccount(gomock.Any(), types.StreamAccount, gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
17+
1318
hour := time.Hour
1419
gs := types.NewGenesisState(
1520
[]*types.ContinuousFund{
@@ -49,5 +54,5 @@ func (suite *KeeperTestSuite) TestInitGenesis() {
4954
suite.Require().NoError(err)
5055
suite.Require().Equal(gs.ContinuousFund, exportedGenState.ContinuousFund)
5156
suite.Require().Equal(gs.Budget, exportedGenState.Budget)
52-
suite.Require().Equal(math.NewInt(101), exportedGenState.LastBalance.Amount.AmountOf("stake"))
57+
suite.Require().Equal(math.ZeroInt(), exportedGenState.LastBalance.Amount.AmountOf("stake"))
5358
}

0 commit comments

Comments
 (0)