Skip to content

Commit

Permalink
Merge pull request #1855 from mesg-foundation/feature/add-modules
Browse files Browse the repository at this point in the history
Add modules gov, upgrade, evidence and crisis
  • Loading branch information
antho1404 authored Jun 3, 2020
2 parents b0e9959 + 7f9f829 commit 44b3aab
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 6 deletions.
76 changes: 73 additions & 3 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,18 @@ import (
"github.com/cosmos/cosmos-sdk/x/auth"
"github.com/cosmos/cosmos-sdk/x/auth/vesting"
"github.com/cosmos/cosmos-sdk/x/bank"
"github.com/cosmos/cosmos-sdk/x/crisis"
distr "github.com/cosmos/cosmos-sdk/x/distribution"
"github.com/cosmos/cosmos-sdk/x/evidence"
"github.com/cosmos/cosmos-sdk/x/genutil"
"github.com/cosmos/cosmos-sdk/x/gov"
"github.com/cosmos/cosmos-sdk/x/params"
paramsclient "github.com/cosmos/cosmos-sdk/x/params/client"
"github.com/cosmos/cosmos-sdk/x/slashing"
"github.com/cosmos/cosmos-sdk/x/staking"
"github.com/cosmos/cosmos-sdk/x/supply"
"github.com/cosmos/cosmos-sdk/x/upgrade"
upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client"
"github.com/mesg-foundation/engine/protobuf/types"
"github.com/mesg-foundation/engine/x/credit"
"github.com/mesg-foundation/engine/x/execution"
Expand Down Expand Up @@ -55,6 +61,10 @@ var (
params.AppModuleBasic{},
slashing.AppModuleBasic{},
supply.AppModuleBasic{},
gov.NewAppModuleBasic(paramsclient.ProposalHandler, distr.ProposalHandler, upgradeclient.ProposalHandler),
upgrade.AppModuleBasic{},
evidence.AppModuleBasic{},
crisis.AppModuleBasic{},

// Engine's AppModuleBasic
credit.AppModuleBasic{},
Expand All @@ -72,6 +82,7 @@ var (
distr.ModuleName: nil,
staking.BondedPoolName: {supply.Burner, supply.Staking},
staking.NotBondedPoolName: {supply.Burner, supply.Staking},
gov.ModuleName: {supply.Burner},
}
)

Expand Down Expand Up @@ -111,6 +122,10 @@ type NewApp struct {
distrKeeper distr.Keeper
supplyKeeper supply.Keeper
paramsKeeper params.Keeper
govKeeper gov.Keeper
upgradeKeeper upgrade.Keeper
evidenceKeeper evidence.Keeper
crisisKeeper crisis.Keeper

// Engine's keepers
creditKeeper credit.Keeper
Expand All @@ -134,7 +149,7 @@ var _ simapp.App = (*NewApp)(nil)
// NewInitApp is a constructor function for engineApp
func NewInitApp(
logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest bool,
invCheckPeriod uint, baseAppOptions ...func(*bam.BaseApp),
invCheckPeriod uint, skipUpgradeHeights map[int64]bool, baseAppOptions ...func(*bam.BaseApp),
) (*NewApp, error) {
// First define the top level codec that will be shared by the different modules
cdc := MakeCodec()
Expand All @@ -152,6 +167,9 @@ func NewInitApp(
distr.StoreKey,
slashing.StoreKey,
params.StoreKey,
gov.StoreKey,
upgrade.StoreKey,
evidence.StoreKey,

// Engine's module keys
credit.ModuleName,
Expand Down Expand Up @@ -183,6 +201,9 @@ func NewInitApp(
app.subspaces[staking.ModuleName] = app.paramsKeeper.Subspace(staking.DefaultParamspace)
app.subspaces[distr.ModuleName] = app.paramsKeeper.Subspace(distr.DefaultParamspace)
app.subspaces[slashing.ModuleName] = app.paramsKeeper.Subspace(slashing.DefaultParamspace)
app.subspaces[gov.ModuleName] = app.paramsKeeper.Subspace(gov.DefaultParamspace)
app.subspaces[evidence.ModuleName] = app.paramsKeeper.Subspace(evidence.DefaultParamspace)
app.subspaces[crisis.ModuleName] = app.paramsKeeper.Subspace(crisis.DefaultParamspace)

// The AccountKeeper handles address -> account lookups
app.accountKeeper = auth.NewAccountKeeper(
Expand Down Expand Up @@ -233,6 +254,48 @@ func NewInitApp(
app.subspaces[slashing.ModuleName],
)

app.crisisKeeper = crisis.NewKeeper(
app.subspaces[crisis.ModuleName],
invCheckPeriod,
app.supplyKeeper,
auth.FeeCollectorName,
)

app.upgradeKeeper = upgrade.NewKeeper(
skipUpgradeHeights,
keys[upgrade.StoreKey],
app.cdc,
)

// create evidence keeper with evidence router
evidenceKeeper := evidence.NewKeeper(
app.cdc,
keys[evidence.StoreKey],
app.subspaces[evidence.ModuleName],
&stakingKeeper,
app.slashingKeeper,
)
evidenceRouter := evidence.NewRouter()
// register evidence routes
evidenceKeeper.SetRouter(evidenceRouter)
app.evidenceKeeper = *evidenceKeeper

// register the proposal types
govRouter := gov.NewRouter()
govRouter.
AddRoute(gov.RouterKey, gov.ProposalHandler).
AddRoute(params.RouterKey, params.NewParamChangeProposalHandler(app.paramsKeeper)).
AddRoute(distr.RouterKey, distr.NewCommunityPoolSpendProposalHandler(app.distrKeeper)).
AddRoute(upgrade.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.upgradeKeeper))
app.govKeeper = gov.NewKeeper(
app.cdc,
keys[gov.StoreKey],
app.subspaces[gov.ModuleName].WithKeyTable(gov.ParamKeyTable()),
app.supplyKeeper,
&stakingKeeper,
govRouter,
)

// register the staking hooks
// NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks
app.stakingKeeper = *stakingKeeper.SetHooks(
Expand Down Expand Up @@ -264,7 +327,9 @@ func NewInitApp(
genutil.NewAppModule(app.accountKeeper, app.stakingKeeper, app.BaseApp.DeliverTx),
auth.NewAppModule(app.accountKeeper),
bank.NewAppModule(app.bankKeeper, app.accountKeeper),
crisis.NewAppModule(&app.crisisKeeper),
supply.NewAppModule(app.supplyKeeper, app.accountKeeper),
gov.NewAppModule(app.govKeeper, app.accountKeeper, app.supplyKeeper),
distr.NewAppModule(app.distrKeeper, app.accountKeeper, app.supplyKeeper, app.stakingKeeper),
slashing.NewAppModule(app.slashingKeeper, app.accountKeeper, app.stakingKeeper),

Expand All @@ -278,13 +343,15 @@ func NewInitApp(
execution.NewAppModule(app.executionKeeper),

staking.NewAppModule(app.stakingKeeper, app.accountKeeper, app.supplyKeeper),
upgrade.NewAppModule(app.upgradeKeeper),
evidence.NewAppModule(app.evidenceKeeper),
)
// During begin block slashing happens after distr.BeginBlocker so that
// there is nothing left over in the validator fee pool, so as to keep the
// CanWithdrawInvariant invariant.

app.mm.SetOrderBeginBlockers(distr.ModuleName, slashing.ModuleName)
app.mm.SetOrderEndBlockers(staking.ModuleName)
app.mm.SetOrderBeginBlockers(upgrade.ModuleName, distr.ModuleName, slashing.ModuleName)
app.mm.SetOrderEndBlockers(crisis.ModuleName, gov.ModuleName, staking.ModuleName)

// Sets the order of Genesis - Order matters, genutil is to always come last
// NOTE: The genutils module must occur after staking so that pools are
Expand All @@ -295,6 +362,7 @@ func NewInitApp(
auth.ModuleName,
bank.ModuleName,
slashing.ModuleName,
gov.ModuleName,

// Engine's modules
credit.ModuleName,
Expand All @@ -306,7 +374,9 @@ func NewInitApp(
execution.ModuleName,

supply.ModuleName,
crisis.ModuleName,
genutil.ModuleName,
evidence.ModuleName,
)

// register all module routes and module queriers
Expand Down
11 changes: 8 additions & 3 deletions cmd/mesg-daemon/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,13 @@ func newApp(logger log.Logger, db dbm.DB, traceStore io.Writer) abci.Application
cache = store.NewCommitKVStoreCacheManager()
}

skipUpgradeHeights := make(map[int64]bool)
for _, h := range viper.GetIntSlice(server.FlagUnsafeSkipUpgrades) {
skipUpgradeHeights[int64(h)] = true
}

initApp, err := app.NewInitApp(
logger, db, traceStore, true, invCheckPeriod,
logger, db, traceStore, true, invCheckPeriod, skipUpgradeHeights,
baseapp.SetPruning(store.NewPruningOptionsFromString(viper.GetString("pruning"))),
baseapp.SetMinGasPrices(viper.GetString(server.FlagMinGasPrices)),
baseapp.SetHaltHeight(viper.GetUint64(server.FlagHaltHeight)),
Expand All @@ -114,7 +119,7 @@ func exportAppStateAndTMValidators(
logger log.Logger, db dbm.DB, traceStore io.Writer, height int64, forZeroHeight bool, jailWhiteList []string,
) (json.RawMessage, []tmtypes.GenesisValidator, error) {
if height != -1 {
aApp, err := app.NewInitApp(logger, db, traceStore, false, uint(1))
aApp, err := app.NewInitApp(logger, db, traceStore, false, uint(1), map[int64]bool{})
if err != nil {
return nil, nil, err
}
Expand All @@ -124,7 +129,7 @@ func exportAppStateAndTMValidators(
return aApp.ExportAppStateAndValidators(forZeroHeight, jailWhiteList)
}

aApp, err := app.NewInitApp(logger, db, traceStore, true, uint(1))
aApp, err := app.NewInitApp(logger, db, traceStore, true, uint(1), map[int64]bool{})
if err != nil {
return nil, nil, err
}
Expand Down

0 comments on commit 44b3aab

Please sign in to comment.