fix(x/protocolpool): withdraw rewards before export genesis (backport #23467) (#23471)

Co-authored-by: Julien Robert <julien@rbrt.fr>
This commit is contained in:
mergify[bot]
2025-01-21 15:13:04 +01:00
committed by GitHub
co-authored by Julien Robert
parent a79ed8c188
commit 27ff1eb359
3 changed files with 44 additions and 3 deletions
+22 -1
View File
@@ -174,7 +174,28 @@ var (
},
// When ExportGenesis is not specified, the export genesis module order
// is equal to the init genesis order
// ExportGenesis: []string{},
ExportGenesis: []string{
consensustypes.ModuleName,
accounts.ModuleName,
authtypes.ModuleName,
pooltypes.ModuleName, // Must be exported before bank
banktypes.ModuleName,
distrtypes.ModuleName,
stakingtypes.ModuleName,
slashingtypes.ModuleName,
govtypes.ModuleName,
minttypes.ModuleName,
genutiltypes.ModuleName,
evidencetypes.ModuleName,
authz.ModuleName,
feegrant.ModuleName,
nft.ModuleName,
group.ModuleName,
upgradetypes.ModuleName,
vestingtypes.ModuleName,
circuittypes.ModuleName,
epochstypes.ModuleName,
},
// Uncomment if you want to set a custom migration order here.
// OrderMigrations: []string{},
// SkipStoreKeys is an optional list of store keys to skip when constructing the
+15
View File
@@ -76,6 +76,21 @@ func (k Keeper) InitGenesis(ctx context.Context, data *types.GenesisState) error
}
func (k Keeper) ExportGenesis(ctx context.Context) (*types.GenesisState, error) {
// refresh all funds
if err := k.IterateAndUpdateFundsDistribution(ctx); err != nil {
return nil, err
}
// withdraw all rewards before exporting genesis
if err := k.RecipientFundDistribution.Walk(ctx, nil, func(key sdk.AccAddress, value types.DistributionAmount) (stop bool, err error) {
if _, err := k.withdrawRecipientFunds(ctx, key.Bytes()); err != nil {
return true, err
}
return false, nil
}); err != nil {
return nil, err
}
var cf []*types.ContinuousFund
err := k.ContinuousFund.Walk(ctx, nil, func(key sdk.AccAddress, value types.ContinuousFund) (stop bool, err error) {
recipient, err := k.authKeeper.AddressCodec().BytesToString(key)
+7 -2
View File
@@ -3,13 +3,18 @@ package keeper_test
import (
"time"
"github.com/golang/mock/gomock"
"cosmossdk.io/math"
"cosmossdk.io/x/protocolpool/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
func (suite *KeeperTestSuite) TestInitGenesis() {
func (suite *KeeperTestSuite) TestInitExportGenesis() {
suite.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), types.ProtocolPoolDistrAccount, gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
suite.bankKeeper.EXPECT().SendCoinsFromModuleToAccount(gomock.Any(), types.StreamAccount, gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
hour := time.Hour
gs := types.NewGenesisState(
[]*types.ContinuousFund{
@@ -49,5 +54,5 @@ func (suite *KeeperTestSuite) TestInitGenesis() {
suite.Require().NoError(err)
suite.Require().Equal(gs.ContinuousFund, exportedGenState.ContinuousFund)
suite.Require().Equal(gs.Budget, exportedGenState.Budget)
suite.Require().Equal(math.NewInt(101), exportedGenState.LastBalance.Amount.AmountOf("stake"))
suite.Require().Equal(math.ZeroInt(), exportedGenState.LastBalance.Amount.AmountOf("stake"))
}