Skip to content

Commit

Permalink
Merge pull request #54 from cosmic-horizon/groups_module_upgrade
Browse files Browse the repository at this point in the history
Groups module upgrade fixes
  • Loading branch information
dpdanpittman authored Jul 28, 2023
2 parents ac6e30a + d10267b commit c006a87
Show file tree
Hide file tree
Showing 6 changed files with 103 additions and 88 deletions.
101 changes: 52 additions & 49 deletions app/app.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package app

import (
"github.com/cosmos/cosmos-sdk/x/group"
"fmt"
"io"
"net/http"
"os"
Expand All @@ -15,6 +15,10 @@ import (
tmjson "github.com/cometbft/cometbft/libs/json"
"github.com/cometbft/cometbft/libs/log"
tmos "github.com/cometbft/cometbft/libs/os"
keepers "github.com/cosmic-horizon/qwoyn/app/keepers"
"github.com/cosmic-horizon/qwoyn/app/upgrades"
v5_1 "github.com/cosmic-horizon/qwoyn/app/upgrades/v5_1"
v5_2 "github.com/cosmic-horizon/qwoyn/app/upgrades/v5_2"
intertx "github.com/cosmic-horizon/qwoyn/x/intertx"
intertxkeeper "github.com/cosmic-horizon/qwoyn/x/intertx/keeper"
intertxtypes "github.com/cosmic-horizon/qwoyn/x/intertx/types"
Expand Down Expand Up @@ -76,6 +80,7 @@ import (
govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
"github.com/cosmos/cosmos-sdk/x/group"
groupkeeper "github.com/cosmos/cosmos-sdk/x/group/keeper"
groupmodule "github.com/cosmos/cosmos-sdk/x/group/module"
"github.com/cosmos/cosmos-sdk/x/params"
Expand Down Expand Up @@ -173,6 +178,7 @@ func getGovProposalHandlers() []govclient.ProposalHandler {

govProposalHandlers = append(govProposalHandlers,
paramsclient.ProposalHandler,
upgradeclient.LegacyProposalHandler,
upgradeclient.LegacyCancelProposalHandler,
ibcclientclient.UpdateClientProposalHandler,
ibcclientclient.UpdateClientProposalHandler,
Expand All @@ -186,6 +192,8 @@ var (
// DefaultNodeHome default home directories for the application daemon
DefaultNodeHome string

Upgrades = []upgrades.Upgrade{v5_1.Upgrade, v5_2.Upgrade}

// ModuleBasics defines the module BasicManager is in charge of setting up basic,
// non-dependant module elements, such as codec registration
// and genesis verification.
Expand Down Expand Up @@ -256,6 +264,7 @@ func init() {
// capabilities aren't needed for testing.
type App struct {
*baseapp.BaseApp
keepers.AppKeepers

legacyAmino *codec.LegacyAmino
appCodec codec.Codec
Expand All @@ -266,50 +275,9 @@ type App struct {
tkeys map[string]*storetypes.TransientStoreKey
memKeys map[string]*storetypes.MemoryStoreKey

// keepers
AccountKeeper authkeeper.AccountKeeper
BankKeeper bankkeeper.Keeper
CapabilityKeeper *capabilitykeeper.Keeper
StakingKeeper *stakingkeeper.Keeper
SlashingKeeper slashingkeeper.Keeper
MintKeeper mintkeeper.Keeper
DistrKeeper distrkeeper.Keeper
GovKeeper govkeeper.Keeper
CrisisKeeper *crisiskeeper.Keeper
UpgradeKeeper *upgradekeeper.Keeper
ParamsKeeper paramskeeper.Keeper
IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly
IBCFeeKeeper ibcfeekeeper.Keeper
ICAHostKeeper icahostkeeper.Keeper
ICAControllerKeeper icacontrollerkeeper.Keeper
InterTxKeeper intertxkeeper.Keeper
EvidenceKeeper evidencekeeper.Keeper
TransferKeeper ibctransferkeeper.Keeper
FeeGrantKeeper feegrantkeeper.Keeper
AuthzKeeper authzkeeper.Keeper
GroupKeeper groupkeeper.Keeper
ConsensusParamsKeeper consensusparamkeeper.Keeper

// make scoped keepers public for test purposes
ScopedIBCKeeper capabilitykeeper.ScopedKeeper
ScopedTransferKeeper capabilitykeeper.ScopedKeeper
ScopedIBCFeeKeeper capabilitykeeper.ScopedKeeper
ScopedICAControllerKeeper capabilitykeeper.ScopedKeeper
ScopedInterTxKeeper capabilitykeeper.ScopedKeeper
ScopedAquiferKeeper capabilitykeeper.ScopedKeeper

WasmKeeper wasm.Keeper
scopedWasmKeeper capabilitykeeper.ScopedKeeper

StimulusKeeper stimuluskeeper.Keeper
AquiferKeeper aquiferkeeper.Keeper
GameKeeper gamekeeper.Keeper

// mm is the module manager
mm *module.Manager

// sm is the simulation manager
sm *module.SimulationManager
mm *module.Manager
sm *module.SimulationManager
configurator module.Configurator
}

// New returns a reference to an initialized blockchain app
Expand Down Expand Up @@ -382,7 +350,7 @@ func New(
scopedICAHostKeeper := app.CapabilityKeeper.ScopeToModule(icahosttypes.SubModuleName)
app.ScopedICAControllerKeeper = app.CapabilityKeeper.ScopeToModule(icacontrollertypes.SubModuleName)
app.ScopedInterTxKeeper = app.CapabilityKeeper.ScopeToModule(intertxtypes.ModuleName)
app.scopedWasmKeeper = app.CapabilityKeeper.ScopeToModule(wasm.ModuleName)
app.ScopedWasmKeeper = app.CapabilityKeeper.ScopeToModule(wasm.ModuleName)
app.ScopedAquiferKeeper = app.CapabilityKeeper.ScopeToModule(aquifertypes.ModuleName)

// add keepers
Expand Down Expand Up @@ -532,7 +500,6 @@ func New(
)
interTxModule := intertx.NewAppModule(appCodec, app.InterTxKeeper)
interTxIBCModule := intertx.NewIBCModule(app.InterTxKeeper)
_ = interTxIBCModule

app.AquiferKeeper = *aquiferkeeper.NewKeeper(
appCodec,
Expand Down Expand Up @@ -567,6 +534,8 @@ func New(
panic("error while reading wasm config: " + err.Error())
}

app.setupUpgradeStoreLoaders()

// The last arguments can contain custom message handlers, and custom query handlers,
// if we want to allow any custom callbacks
availableCapabilities := "iterator,staking,stargate,cosmwasm_1_1,cosmwasm_1_2"
Expand All @@ -580,7 +549,7 @@ func New(
app.IBCFeeKeeper, // ISC4 Wrapper: fee IBC middleware
app.IBCKeeper.ChannelKeeper,
&app.IBCKeeper.PortKeeper,
app.scopedWasmKeeper,
app.ScopedWasmKeeper,
app.TransferKeeper,
app.MsgServiceRouter(),
app.GRPCQueryRouter(),
Expand Down Expand Up @@ -775,7 +744,8 @@ func New(
)

app.mm.RegisterInvariants(app.CrisisKeeper)
app.mm.RegisterServices(module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()))
app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter())
app.mm.RegisterServices(app.configurator)

autocliv1.RegisterQueryServer(app.GRPCQueryRouter(), runtimeservices.NewAutoCLIQueryService(app.mm.Modules))

Expand All @@ -785,6 +755,8 @@ func New(
}
reflectionv1.RegisterReflectionServiceServer(app.GRPCQueryRouter(), reflectionSvc)

app.setupUpgradeHandlers()

overrideModules := map[string]module.AppModuleSimulation{
authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
}
Expand Down Expand Up @@ -1022,3 +994,34 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino
func (app *App) SimulationManager() *module.SimulationManager {
return app.sm
}

// configure store loader that checks if version == upgradeHeight and applies store upgrades
func (app *App) setupUpgradeStoreLoaders() {
upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk()
if err != nil {
panic(fmt.Sprintf("failed to read upgrade info from disk %s", err))
}

if app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
return
}

for _, upgrade := range Upgrades {
if upgradeInfo.Name == upgrade.UpgradeName {
app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &upgrade.StoreUpgrades))
}
}
}

func (app *App) setupUpgradeHandlers() {
for _, upgrade := range Upgrades {
app.UpgradeKeeper.SetUpgradeHandler(
upgrade.UpgradeName,
upgrade.CreateUpgradeHandler(
app.mm,
app.configurator,
app.AppKeepers,
),
)
}
}
2 changes: 2 additions & 0 deletions app/keepers/keepers.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
evidencekeeper "github.com/cosmos/cosmos-sdk/x/evidence/keeper"
feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper"
govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
groupkeeper "github.com/cosmos/cosmos-sdk/x/group/keeper"
paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
Expand Down Expand Up @@ -49,6 +50,7 @@ type AppKeepers struct {
TransferKeeper ibctransferkeeper.Keeper
FeeGrantKeeper feegrantkeeper.Keeper
AuthzKeeper authzkeeper.Keeper
GroupKeeper groupkeeper.Keeper
ConsensusParamsKeeper consensusparamkeeper.Keeper
WasmKeeper wasm.Keeper
StimulusKeeper stimuluskeeper.Keeper
Expand Down
20 changes: 20 additions & 0 deletions app/upgrades/v5_2/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package v5_2

import (
"github.com/cosmic-horizon/qwoyn/app/upgrades"
store "github.com/cosmos/cosmos-sdk/store/types"
"github.com/cosmos/cosmos-sdk/x/group"
)

const (
// UpgradeName defines the on-chain upgrade name.
UpgradeName = "v5.2.0"
)

var Upgrade = upgrades.Upgrade{
UpgradeName: UpgradeName,
CreateUpgradeHandler: CreateUpgradeHandler,
StoreUpgrades: store.StoreUpgrades{
Added: []string{group.ModuleName},
},
}
30 changes: 10 additions & 20 deletions app/upgrades/v5_2/upgrades.go
Original file line number Diff line number Diff line change
@@ -1,28 +1,18 @@
package v5_2 //nolint:revive,stylecheck
package v5_2

import (
storetypes "github.com/cosmos/cosmos-sdk/store/types"
"github.com/cosmic-horizon/qwoyn/app/keepers"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
"github.com/cosmos/cosmos-sdk/x/group"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"

"github.com/cosmic-horizon/QWOYN/v5_2/app/upgrades"
)

const Name = "v5.2.0"

var Upgrade = upgrades.Upgrade{
UpgradeName: Name,
CreateUpgradeHandler: func(mm *module.Manager, cfg module.Configurator) upgradetypes.UpgradeHandler {
return func(ctx sdk.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) {

return mm.RunMigrations(ctx, cfg, fromVM)
}
},
StoreUpgrades: storetypes.StoreUpgrades{
Added: []string{
group.ModuleName,
},
},
func CreateUpgradeHandler(
mm *module.Manager,
configurator module.Configurator,
keepers keepers.AppKeepers,
) upgradetypes.UpgradeHandler {
return func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
return mm.RunMigrations(ctx, configurator, vm)
}
}
26 changes: 13 additions & 13 deletions start50.sh → start51.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,25 @@ echo "weather leader certain hard busy blouse click patient balcony return eleph
echo "never chuckle bird almost jacket veteran weekend original rare habit point scorpion place gadget net train more plug upon pear renew mule material dynamic" > mnemonic2.txt;

# Build genesis
qwoynd50 init --chain-id=qwoyn-1 test
qwoynd50 keys add validator --keyring-backend="test" < validator.txt;
qwoynd50 keys add maintainer --recover --keyring-backend=test < mnemonic.txt;
qwoynd50 keys add user1 --recover --keyring-backend=test < mnemonic2.txt;
qwoynd51 init --chain-id=qwoyn-1 test
qwoynd51 keys add validator --keyring-backend="test" < validator.txt;
qwoynd51 keys add maintainer --recover --keyring-backend=test < mnemonic.txt;
qwoynd51 keys add user1 --recover --keyring-backend=test < mnemonic2.txt;

VALIDATOR=$(qwoynd50 keys show validator -a --keyring-backend="test")
MAINTAINER=$(qwoynd50 keys show maintainer -a --keyring-backend="test")
USER1=$(qwoynd50 keys show user1 -a --keyring-backend="test")
VALIDATOR=$(qwoynd51 keys show validator -a --keyring-backend="test")
MAINTAINER=$(qwoynd51 keys show maintainer -a --keyring-backend="test")
USER1=$(qwoynd51 keys show user1 -a --keyring-backend="test")
# VALIDATOR=qwoyn1hzqg4r2e789930hs88wqle25ef94xajuqay93r
# MAINTAINER=qwoyn1h9krsew6kpg9huzcqgmgmns0n48jx9yd5vr0n5
# USER1=qwoyn13tqzdukugulllnk3p5js3w7hzw8gclkeenzp6e
qwoynd50 genesis add-genesis-account $VALIDATOR 1000000000000uqwoyn,1000000000000ucoho,1000000000000stake
qwoynd50 genesis add-genesis-account $MAINTAINER 1000000000000uqwoyn,1000000000000ucoho,1000000000000stake
qwoynd50 genesis add-genesis-account $USER1 1000000000000uqwoyn,1000000000000ucoho,1000000000000stake
qwoynd50 genesis gentx validator 100000000stake --keyring-backend="test" --chain-id=qwoyn-1
qwoynd50 genesis collect-gentxs
qwoynd51 genesis add-genesis-account $VALIDATOR 1000000000000uqwoyn,1000000000000ucoho,1000000000000stake
qwoynd51 genesis add-genesis-account $MAINTAINER 1000000000000uqwoyn,1000000000000ucoho,1000000000000stake
qwoynd51 genesis add-genesis-account $USER1 1000000000000uqwoyn,1000000000000ucoho,1000000000000stake
qwoynd51 genesis gentx validator 100000000stake --keyring-backend="test" --chain-id=qwoyn-1
qwoynd51 genesis collect-gentxs
sed -i '' 's/"voting_period": "172800s"/"voting_period": "20s"/g' $HOME/.qwoynd/config/genesis.json

# sed -i 's/stake/uqwoyn/g' $HOME/.qwoynd/config/genesis.json

# Start node
qwoynd50 start --pruning=nothing --minimum-gas-prices="0stake"
qwoynd51 start --pruning=nothing --minimum-gas-prices="0stake"
12 changes: 6 additions & 6 deletions upgrade.sh
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
#!/bin/sh

qwoynd51 tx gov submit-legacy-proposal software-upgrade "v5.1.0" \
qwoynd51 tx gov submit-legacy-proposal software-upgrade "v5.2.0" \
--upgrade-height=12 \
--title="Upgrade to v5.1.0" --description="Upgrade to v5.1.0" --no-validate \
--title="Upgrade to v5.2.0" --description="Upgrade to v5.2.0" --no-validate \
--from=validator --keyring-backend=test \
--chain-id=qwoyn-1 --yes -b sync --deposit="100000000stake"

qwoynd50 tx gov vote 1 yes --from validator --chain-id qwoyn-1 \
qwoynd51 tx gov vote 1 yes --from validator --chain-id qwoyn-1 \
-b sync -y --keyring-backend test

qwoynd50 query gov proposals
qwoynd51 query gov proposals

qwoynd51 start --pruning=nothing --minimum-gas-prices="0stake"
qwoynd52 start --pruning=nothing --minimum-gas-prices="0stake"

qwoynd51 query bank total
qwoynd52 query bank total

0 comments on commit c006a87

Please sign in to comment.