-
Notifications
You must be signed in to change notification settings - Fork 30
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
bump up mods.irisnet.org/simapp to cosmos-sdk v0.50.10 #450
Changes from 12 commits
9a184de
e7e9e08
4e80d77
8df920e
9debf66
7e2e2c1
65dd448
171b07d
5bfc14e
6a5f6ca
17d1ed0
39ee00a
2a7e86f
a44cfdb
b313340
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -5,7 +5,8 @@ import ( | |||||||||||||
"fmt" | ||||||||||||||
"log" | ||||||||||||||
|
||||||||||||||
tmproto "github.com/cometbft/cometbft/proto/tendermint/types" | ||||||||||||||
storetypes "cosmossdk.io/store/types" | ||||||||||||||
cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" | ||||||||||||||
servertypes "github.com/cosmos/cosmos-sdk/server/types" | ||||||||||||||
sdk "github.com/cosmos/cosmos-sdk/types" | ||||||||||||||
slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" | ||||||||||||||
|
@@ -15,21 +16,23 @@ import ( | |||||||||||||
|
||||||||||||||
// ExportAppStateAndValidators exports the state of the application for a genesis | ||||||||||||||
// file. | ||||||||||||||
func (app *SimApp) ExportAppStateAndValidators( | ||||||||||||||
forZeroHeight bool, jailAllowedAddrs, modulesToExport []string, | ||||||||||||||
) (servertypes.ExportedApp, error) { | ||||||||||||||
func (app *SimApp) ExportAppStateAndValidators(forZeroHeight bool, jailAllowedAddrs, modulesToExport []string) (servertypes.ExportedApp, error) { | ||||||||||||||
// as if they could withdraw from the start of the next block | ||||||||||||||
ctx := app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()}) | ||||||||||||||
ctx := app.NewContextLegacy(true, cmtproto.Header{Height: app.LastBlockHeight()}) | ||||||||||||||
|
||||||||||||||
// We export at last height + 1, because that's the height at which | ||||||||||||||
// Tendermint will start InitChain. | ||||||||||||||
// CometBFT will start InitChain. | ||||||||||||||
height := app.LastBlockHeight() + 1 | ||||||||||||||
if forZeroHeight { | ||||||||||||||
height = 0 | ||||||||||||||
app.prepForZeroHeightGenesis(ctx, jailAllowedAddrs) | ||||||||||||||
} | ||||||||||||||
|
||||||||||||||
genState := app.ModuleManager.ExportGenesis(ctx, app.appCodec) | ||||||||||||||
genState, err := app.ModuleManager.ExportGenesisForModules(ctx, app.appCodec, modulesToExport) | ||||||||||||||
if err != nil { | ||||||||||||||
return servertypes.ExportedApp{}, err | ||||||||||||||
} | ||||||||||||||
|
||||||||||||||
appState, err := json.MarshalIndent(genState, "", " ") | ||||||||||||||
if err != nil { | ||||||||||||||
return servertypes.ExportedApp{}, err | ||||||||||||||
|
@@ -72,16 +75,24 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [] | |||||||||||||
/* Handle fee distribution state. */ | ||||||||||||||
|
||||||||||||||
// withdraw all validator commission | ||||||||||||||
app.StakingKeeper.IterateValidators( | ||||||||||||||
ctx, | ||||||||||||||
func(_ int64, val stakingtypes.ValidatorI) (stop bool) { | ||||||||||||||
_, _ = app.DistrKeeper.WithdrawValidatorCommission(ctx, val.GetOperator()) | ||||||||||||||
return false | ||||||||||||||
}, | ||||||||||||||
) | ||||||||||||||
err := app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { | ||||||||||||||
valBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator()) | ||||||||||||||
if err != nil { | ||||||||||||||
panic(err) | ||||||||||||||
} | ||||||||||||||
_, _ = app.DistrKeeper.WithdrawValidatorCommission(ctx, valBz) | ||||||||||||||
return false | ||||||||||||||
}) | ||||||||||||||
if err != nil { | ||||||||||||||
panic(err) | ||||||||||||||
} | ||||||||||||||
|
||||||||||||||
// withdraw all delegator rewards | ||||||||||||||
dels := app.StakingKeeper.GetAllDelegations(ctx) | ||||||||||||||
dels, err := app.StakingKeeper.GetAllDelegations(ctx) | ||||||||||||||
if err != nil { | ||||||||||||||
panic(err) | ||||||||||||||
} | ||||||||||||||
|
||||||||||||||
for _, delegation := range dels { | ||||||||||||||
valAddr, err := sdk.ValAddressFromBech32(delegation.ValidatorAddress) | ||||||||||||||
if err != nil { | ||||||||||||||
|
@@ -104,21 +115,30 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [] | |||||||||||||
ctx = ctx.WithBlockHeight(0) | ||||||||||||||
|
||||||||||||||
// reinitialize all validators | ||||||||||||||
app.StakingKeeper.IterateValidators( | ||||||||||||||
ctx, | ||||||||||||||
func(_ int64, val stakingtypes.ValidatorI) (stop bool) { | ||||||||||||||
// donate any unwithdrawn outstanding reward fraction tokens to the community pool | ||||||||||||||
scraps := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, val.GetOperator()) | ||||||||||||||
feePool := app.DistrKeeper.GetFeePool(ctx) | ||||||||||||||
feePool.CommunityPool = feePool.CommunityPool.Add(scraps...) | ||||||||||||||
app.DistrKeeper.SetFeePool(ctx, feePool) | ||||||||||||||
|
||||||||||||||
if err := app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, val.GetOperator()); err != nil { | ||||||||||||||
panic(err) | ||||||||||||||
} | ||||||||||||||
return false | ||||||||||||||
}, | ||||||||||||||
) | ||||||||||||||
err = app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) { | ||||||||||||||
valBz, err := app.StakingKeeper.ValidatorAddressCodec().StringToBytes(val.GetOperator()) | ||||||||||||||
if err != nil { | ||||||||||||||
panic(err) | ||||||||||||||
} | ||||||||||||||
// donate any unwithdrawn outstanding reward fraction tokens to the community pool | ||||||||||||||
scraps, err := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, valBz) | ||||||||||||||
if err != nil { | ||||||||||||||
panic(err) | ||||||||||||||
} | ||||||||||||||
feePool, err := app.DistrKeeper.FeePool.Get(ctx) | ||||||||||||||
if err != nil { | ||||||||||||||
panic(err) | ||||||||||||||
} | ||||||||||||||
feePool.CommunityPool = feePool.CommunityPool.Add(scraps...) | ||||||||||||||
if err := app.DistrKeeper.FeePool.Set(ctx, feePool); err != nil { | ||||||||||||||
panic(err) | ||||||||||||||
} | ||||||||||||||
|
||||||||||||||
if err := app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, valBz); err != nil { | ||||||||||||||
panic(err) | ||||||||||||||
} | ||||||||||||||
return false | ||||||||||||||
}) | ||||||||||||||
|
||||||||||||||
// reinitialize all delegations | ||||||||||||||
for _, del := range dels { | ||||||||||||||
|
@@ -145,39 +165,45 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [] | |||||||||||||
/* Handle staking state. */ | ||||||||||||||
|
||||||||||||||
// iterate through redelegations, reset creation height | ||||||||||||||
app.StakingKeeper.IterateRedelegations( | ||||||||||||||
ctx, | ||||||||||||||
func(_ int64, red stakingtypes.Redelegation) (stop bool) { | ||||||||||||||
for i := range red.Entries { | ||||||||||||||
red.Entries[i].CreationHeight = 0 | ||||||||||||||
} | ||||||||||||||
app.StakingKeeper.SetRedelegation(ctx, red) | ||||||||||||||
return false | ||||||||||||||
}, | ||||||||||||||
) | ||||||||||||||
err = app.StakingKeeper.IterateRedelegations(ctx, func(_ int64, red stakingtypes.Redelegation) (stop bool) { | ||||||||||||||
for i := range red.Entries { | ||||||||||||||
red.Entries[i].CreationHeight = 0 | ||||||||||||||
} | ||||||||||||||
err = app.StakingKeeper.SetRedelegation(ctx, red) | ||||||||||||||
if err != nil { | ||||||||||||||
panic(err) | ||||||||||||||
} | ||||||||||||||
return false | ||||||||||||||
}) | ||||||||||||||
if err != nil { | ||||||||||||||
panic(err) | ||||||||||||||
} | ||||||||||||||
|
||||||||||||||
// iterate through unbonding delegations, reset creation height | ||||||||||||||
app.StakingKeeper.IterateUnbondingDelegations( | ||||||||||||||
ctx, | ||||||||||||||
func(_ int64, ubd stakingtypes.UnbondingDelegation) (stop bool) { | ||||||||||||||
for i := range ubd.Entries { | ||||||||||||||
ubd.Entries[i].CreationHeight = 0 | ||||||||||||||
} | ||||||||||||||
app.StakingKeeper.SetUnbondingDelegation(ctx, ubd) | ||||||||||||||
return false | ||||||||||||||
}, | ||||||||||||||
) | ||||||||||||||
err = app.StakingKeeper.IterateUnbondingDelegations(ctx, func(_ int64, ubd stakingtypes.UnbondingDelegation) (stop bool) { | ||||||||||||||
for i := range ubd.Entries { | ||||||||||||||
ubd.Entries[i].CreationHeight = 0 | ||||||||||||||
} | ||||||||||||||
err = app.StakingKeeper.SetUnbondingDelegation(ctx, ubd) | ||||||||||||||
if err != nil { | ||||||||||||||
panic(err) | ||||||||||||||
} | ||||||||||||||
return false | ||||||||||||||
}) | ||||||||||||||
if err != nil { | ||||||||||||||
panic(err) | ||||||||||||||
} | ||||||||||||||
|
||||||||||||||
// Iterate through validators by power descending, reset bond heights, and | ||||||||||||||
// update bond intra-tx counters. | ||||||||||||||
store := ctx.KVStore(app.GetKey(stakingtypes.StoreKey)) | ||||||||||||||
iter := sdk.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey) | ||||||||||||||
iter := storetypes.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey) | ||||||||||||||
counter := int16(0) | ||||||||||||||
|
||||||||||||||
for ; iter.Valid(); iter.Next() { | ||||||||||||||
addr := sdk.ValAddress(stakingtypes.AddressFromValidatorsKey(iter.Key())) | ||||||||||||||
validator, found := app.StakingKeeper.GetValidator(ctx, addr) | ||||||||||||||
if !found { | ||||||||||||||
validator, err := app.StakingKeeper.GetValidator(ctx, addr) | ||||||||||||||
if err != nil { | ||||||||||||||
panic("expected validator, not found") | ||||||||||||||
} | ||||||||||||||
|
||||||||||||||
|
@@ -186,30 +212,34 @@ func (app *SimApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [] | |||||||||||||
validator.Jailed = true | ||||||||||||||
} | ||||||||||||||
|
||||||||||||||
app.StakingKeeper.SetValidator(ctx, validator) | ||||||||||||||
if err := app.StakingKeeper.SetValidator(ctx, validator); err != nil { | ||||||||||||||
panic(err) | ||||||||||||||
} | ||||||||||||||
counter++ | ||||||||||||||
} | ||||||||||||||
|
||||||||||||||
iter.Close() | ||||||||||||||
if err := iter.Close(); err != nil { | ||||||||||||||
app.Logger().Error("error while closing the key-value store reverse prefix iterator: ", err) | ||||||||||||||
return | ||||||||||||||
} | ||||||||||||||
|
||||||||||||||
_, err := app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) | ||||||||||||||
_, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx) | ||||||||||||||
if err != nil { | ||||||||||||||
log.Fatal(err) | ||||||||||||||
Comment on lines
+226
to
228
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Avoid using Using As a follow-up, modify the error handling: _, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx)
if err != nil {
- log.Fatal(err)
+ return err
}
Ensure that the calling function handles the returned error appropriately. 📝 Committable suggestion
Suggested change
|
||||||||||||||
} | ||||||||||||||
|
||||||||||||||
/* Handle slashing state. */ | ||||||||||||||
|
||||||||||||||
// reset start height on signing infos | ||||||||||||||
app.SlashingKeeper.IterateValidatorSigningInfos( | ||||||||||||||
if err := app.SlashingKeeper.IterateValidatorSigningInfos( | ||||||||||||||
ctx, | ||||||||||||||
func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool) { | ||||||||||||||
info.StartHeight = 0 | ||||||||||||||
app.SlashingKeeper.SetValidatorSigningInfo(ctx, addr, info) | ||||||||||||||
_ = app.SlashingKeeper.SetValidatorSigningInfo(ctx, addr, info) | ||||||||||||||
return false | ||||||||||||||
}, | ||||||||||||||
) | ||||||||||||||
// htlc.PrepForZeroHeightGenesis(ctx, app.HTLCKeeper) | ||||||||||||||
// random.PrepForZeroHeightGenesis(ctx, app.RandomKeeper) | ||||||||||||||
// oracle.PrepForZeroHeightGenesis(ctx, app.OracleKeeper) | ||||||||||||||
// service.PrepForZeroHeightGenesis(ctx, app.ServiceKeeper) | ||||||||||||||
); err != nil { | ||||||||||||||
log.Fatal(err) | ||||||||||||||
} | ||||||||||||||
Comment on lines
+234
to
+243
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Consistent error handling in Errors in As a follow-up, adjust the error handling: ); err != nil {
- log.Fatal(err)
+ return err
}
Update the function signature if necessary and handle the error in the caller.
|
||||||||||||||
|
||||||||||||||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Enhance error handling for streaming service registration
The application now registers streaming services and handles errors by logging and exiting if registration fails:
Consider whether using
os.Exit(1)
is appropriate here. Exiting immediately may not allow for proper resource cleanup or graceful shutdown. It might be better to propagate the error upwards or handle it in a way that maintains application stability.Consider refactoring the error handling to allow the application to shut down gracefully or to retry the registration.