Skip to content
This repository has been archived by the owner on Nov 16, 2022. It is now read-only.

Commit

Permalink
Merge pull request #1459 from bandprotocol/upgrade-cosmos
Browse files Browse the repository at this point in the history
Upgrade cosmos to commit f1fdde5d1b18
  • Loading branch information
Benzbeeb authored Apr 29, 2020
2 parents 39670e1 + f92102d commit 5975867
Show file tree
Hide file tree
Showing 19 changed files with 232 additions and 214 deletions.
115 changes: 66 additions & 49 deletions chain/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ import (
tmos "github.com/tendermint/tendermint/libs/os"
dbm "github.com/tendermint/tm-db"

"github.com/cosmos/cosmos-sdk/baseapp"
bam "github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/codec"
codecstd "github.com/cosmos/cosmos-sdk/codec/std"
"github.com/cosmos/cosmos-sdk/std"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
"github.com/cosmos/cosmos-sdk/version"
Expand All @@ -31,13 +33,11 @@ import (
paramsproposal "github.com/cosmos/cosmos-sdk/x/params/types/proposal"
"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/bandprotocol/bandchain/chain/owasm"
"github.com/bandprotocol/bandchain/chain/x/oracle"
bandsupply "github.com/bandprotocol/bandchain/chain/x/supply"
)

const (
Expand Down Expand Up @@ -67,7 +67,6 @@ var (
params.AppModuleBasic{},
crisis.AppModuleBasic{},
slashing.AppModuleBasic{},
supply.AppModuleBasic{},
ibc.AppModuleBasic{},
upgrade.AppModuleBasic{},
evidence.AppModuleBasic{},
Expand All @@ -78,10 +77,10 @@ var (
maccPerms = map[string][]string{
auth.FeeCollectorName: nil,
distr.ModuleName: nil,
mint.ModuleName: {supply.Minter},
staking.BondedPoolName: {supply.Burner, supply.Staking},
staking.NotBondedPoolName: {supply.Burner, supply.Staking},
gov.ModuleName: {supply.Burner},
mint.ModuleName: {auth.Minter},
staking.BondedPoolName: {auth.Burner, auth.Staking},
staking.NotBondedPoolName: {auth.Burner, auth.Staking},
gov.ModuleName: {auth.Burner},
}
)

Expand All @@ -93,16 +92,16 @@ type BandApp struct {
invCheckPeriod uint

// keys to access the substores
keys map[string]*sdk.KVStoreKey
tKeys map[string]*sdk.TransientStoreKey
keys map[string]*sdk.KVStoreKey
tKeys map[string]*sdk.TransientStoreKey
memKeys map[string]*sdk.MemoryStoreKey

// subspaces
subspaces map[string]params.Subspace

// keepers
AccountKeeper auth.AccountKeeper
BankKeeper bank.Keeper
SupplyKeeper supply.Keeper
StakingKeeper staking.Keeper
CapabilityKeeper *capability.Keeper
SlashingKeeper slashing.Keeper
Expand Down Expand Up @@ -156,19 +155,21 @@ func NewBandApp(
bApp.SetCommitMultiStoreTracer(traceStore)
bApp.SetAppVersion(version.Version)
keys := sdk.NewKVStoreKeys(
bam.MainStoreKey, capability.StoreKey, auth.StoreKey, bank.StoreKey, staking.StoreKey,
supply.StoreKey, mint.StoreKey, distr.StoreKey, slashing.StoreKey,
gov.StoreKey, params.StoreKey, ibc.StoreKey, evidence.StoreKey,
upgrade.StoreKey, oracle.StoreKey,
auth.StoreKey, bank.StoreKey, staking.StoreKey,
mint.StoreKey, distr.StoreKey, slashing.StoreKey,
gov.StoreKey, params.StoreKey, ibc.StoreKey, upgrade.StoreKey,
evidence.StoreKey, capability.StoreKey, oracle.StoreKey,
)
tKeys := sdk.NewTransientStoreKeys(params.TStoreKey)
memKeys := sdk.NewMemoryStoreKeys(capability.MemStoreKey)

app := &BandApp{
BaseApp: bApp,
cdc: cdc,
invCheckPeriod: invCheckPeriod,
keys: keys,
tKeys: tKeys,
memKeys: memKeys,
subspaces: make(map[string]params.Subspace),
TxDecoder: auth.DefaultTxDecoder(cdc),
}
Expand All @@ -183,57 +184,55 @@ func NewBandApp(
app.subspaces[slashing.ModuleName] = app.ParamsKeeper.Subspace(slashing.DefaultParamspace)
app.subspaces[gov.ModuleName] = app.ParamsKeeper.Subspace(gov.DefaultParamspace).WithKeyTable(gov.ParamKeyTable())
app.subspaces[crisis.ModuleName] = app.ParamsKeeper.Subspace(crisis.DefaultParamspace)
app.subspaces[evidence.ModuleName] = app.ParamsKeeper.Subspace(evidence.DefaultParamspace)
app.subspaces[oracle.ModuleName] = app.ParamsKeeper.Subspace(oracle.DefaultParamspace)

// set the BaseApp's parameter store
bApp.SetParamStore(app.ParamsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(std.ConsensusParamsKeyTable()))

// add capability keeper and ScopeToModule for ibc module
app.CapabilityKeeper = capability.NewKeeper(appCodec, keys[capability.StoreKey])
app.CapabilityKeeper = capability.NewKeeper(appCodec, keys[capability.StoreKey], memKeys[capability.MemStoreKey])
scopedIBCKeeper := app.CapabilityKeeper.ScopeToModule(ibc.ModuleName)
scopedOracleKeeper := app.CapabilityKeeper.ScopeToModule(oracle.ModuleName)

// add keepers
app.AccountKeeper = auth.NewAccountKeeper(
appCodec, keys[auth.StoreKey], app.subspaces[auth.ModuleName], auth.ProtoBaseAccount,
appCodec, keys[auth.StoreKey], app.subspaces[auth.ModuleName], auth.ProtoBaseAccount, maccPerms,
)
app.BankKeeper = bank.NewBaseKeeper(
appCodec, keys[bank.StoreKey], app.AccountKeeper, app.subspaces[bank.ModuleName], app.ModuleAccountAddrs(),
)
app.SupplyKeeper = supply.NewKeeper(
appCodec, keys[supply.StoreKey], app.AccountKeeper, app.BankKeeper, maccPerms,
)

// TODO: Revisit wrap supply of new version and test
// Wrapped supply keeper allows burned tokens to be transferred to community pool
wrappedSupplyKeeper := bandsupply.WrapSupplyKeeperBurnToCommunityPool(app.SupplyKeeper)
// wrappedSupplyKeeper := bandsupply.WrapSupplyKeeperBurnToCommunityPool(app.SupplyKeeper)

stakingKeeper := staking.NewKeeper(
appCodec, keys[staking.StoreKey], app.BankKeeper, wrappedSupplyKeeper, app.subspaces[staking.ModuleName],
appCodec, keys[staking.StoreKey], app.AccountKeeper, app.BankKeeper, app.subspaces[staking.ModuleName],
)
app.MintKeeper = mint.NewKeeper(
appCodec, keys[mint.StoreKey], app.subspaces[mint.ModuleName], &stakingKeeper,
app.SupplyKeeper, auth.FeeCollectorName,
app.AccountKeeper, app.BankKeeper, auth.FeeCollectorName,
)
app.DistrKeeper = distr.NewKeeper(
appCodec, keys[distr.StoreKey], app.subspaces[distr.ModuleName], app.BankKeeper, &stakingKeeper,
app.SupplyKeeper, auth.FeeCollectorName, app.ModuleAccountAddrs(),
appCodec, keys[distr.StoreKey], app.subspaces[distr.ModuleName], app.AccountKeeper, app.BankKeeper,
&stakingKeeper, auth.FeeCollectorName, app.ModuleAccountAddrs(),
)

// DistrKeeper must be set afterward due to the circular reference of supply-staking-distr
wrappedSupplyKeeper.SetDistrKeeper(&app.DistrKeeper)
// wrappedSupplyKeeper.SetDistrKeeper(&app.DistrKeeper)

app.MintKeeper = mint.NewKeeper(appCodec, keys[mint.StoreKey], app.subspaces[mint.ModuleName], &stakingKeeper, app.SupplyKeeper, auth.FeeCollectorName)
app.DistrKeeper = distr.NewKeeper(appCodec, keys[distr.StoreKey], app.subspaces[distr.ModuleName], app.BankKeeper, &stakingKeeper, app.SupplyKeeper, auth.FeeCollectorName, app.ModuleAccountAddrs())
app.SlashingKeeper = slashing.NewKeeper(
appCodec, keys[slashing.StoreKey], &stakingKeeper, app.subspaces[slashing.ModuleName],
)

app.CrisisKeeper = crisis.NewKeeper(
app.subspaces[crisis.ModuleName], invCheckPeriod, app.SupplyKeeper, auth.FeeCollectorName,
app.subspaces[crisis.ModuleName], invCheckPeriod, app.BankKeeper, auth.FeeCollectorName,
)
app.UpgradeKeeper = upgrade.NewKeeper(skipUpgradeHeights, keys[upgrade.StoreKey], appCodec, home)

// create evidence keeper with evidence router
evidenceKeeper := evidence.NewKeeper(
appCodec, keys[evidence.StoreKey], app.subspaces[evidence.ModuleName], &stakingKeeper, app.SlashingKeeper,
appCodec, keys[evidence.StoreKey], &stakingKeeper, app.SlashingKeeper,
)
evidenceRouter := evidence.NewRouter()

Expand All @@ -250,7 +249,7 @@ func NewBandApp(
AddRoute(upgrade.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.UpgradeKeeper))
app.GovKeeper = gov.NewKeeper(
appCodec, keys[gov.StoreKey], app.subspaces[gov.ModuleName],
app.SupplyKeeper, &stakingKeeper, govRouter,
app.AccountKeeper, app.BankKeeper, &stakingKeeper, govRouter,
)

// register the staking hooks
Expand All @@ -276,33 +275,37 @@ func NewBandApp(
// must be passed by reference here.
app.mm = module.NewManager(
genutil.NewAppModule(app.AccountKeeper, app.StakingKeeper, app.DeliverTx),
auth.NewAppModule(app.AccountKeeper, app.SupplyKeeper),
bank.NewAppModule(app.BankKeeper, app.AccountKeeper),
auth.NewAppModule(appCodec, app.AccountKeeper),
bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper),
capability.NewAppModule(*app.CapabilityKeeper),
crisis.NewAppModule(&app.CrisisKeeper),
supply.NewAppModule(app.SupplyKeeper, app.BankKeeper, app.AccountKeeper),
gov.NewAppModule(app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.SupplyKeeper),
mint.NewAppModule(app.MintKeeper, app.SupplyKeeper),
slashing.NewAppModule(app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper),
distr.NewAppModule(app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.SupplyKeeper, app.StakingKeeper),
staking.NewAppModule(app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.SupplyKeeper),
gov.NewAppModule(appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper),
mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper),
slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper),
distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper),
staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper),
upgrade.NewAppModule(app.UpgradeKeeper),
evidence.NewAppModule(app.EvidenceKeeper),
evidence.NewAppModule(appCodec, app.EvidenceKeeper),
ibc.NewAppModule(app.IBCKeeper),
params.NewAppModule(app.ParamsKeeper),
oracle.NewAppModule(app.OracleKeeper),
)
// 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(upgrade.ModuleName, mint.ModuleName, distr.ModuleName, slashing.ModuleName, staking.ModuleName)
app.mm.SetOrderBeginBlockers(
upgrade.ModuleName, mint.ModuleName, distr.ModuleName,
slashing.ModuleName, staking.ModuleName, ibc.ModuleName,
)
app.mm.SetOrderEndBlockers(crisis.ModuleName, gov.ModuleName, oracle.ModuleName, staking.ModuleName)

// NOTE: The genutils module must occur after staking so that pools are
// properly initialized with tokens from genesis accounts.
app.mm.SetOrderInitGenesis(
distr.ModuleName, staking.ModuleName, auth.ModuleName, bank.ModuleName,
slashing.ModuleName, gov.ModuleName, mint.ModuleName, supply.ModuleName,
crisis.ModuleName, genutil.ModuleName, evidence.ModuleName, oracle.ModuleName,
capability.ModuleName, auth.ModuleName, distr.ModuleName, staking.ModuleName, bank.ModuleName,
slashing.ModuleName, gov.ModuleName, mint.ModuleName, crisis.ModuleName,
ibc.ModuleName, genutil.ModuleName, evidence.ModuleName, oracle.ModuleName,
)

app.mm.RegisterInvariants(&app.CrisisKeeper)
Expand All @@ -311,20 +314,34 @@ func NewBandApp(
// initialize stores
app.MountKVStores(keys)
app.MountTransientStores(tKeys)
app.MountMemoryStores(memKeys)

// initialize BaseApp
app.SetInitChainer(app.InitChainer)
app.SetBeginBlocker(app.BeginBlocker)
app.SetAnteHandler(ante.NewAnteHandler(app.AccountKeeper, app.SupplyKeeper, *app.IBCKeeper, ante.DefaultSigVerificationGasConsumer))
app.SetAnteHandler(
ante.NewAnteHandler(
app.AccountKeeper, app.BankKeeper, *app.IBCKeeper,
ante.DefaultSigVerificationGasConsumer,
),
)
app.SetEndBlocker(app.EndBlocker)

if loadLatest {
err := app.LoadLatestVersion(app.keys[bam.MainStoreKey])
err := app.LoadLatestVersion()
if err != nil {
tmos.Exit(err.Error())
}
}

// Initialize and seal the capability keeper so all persistent capabilities
// are loaded in-memory and prevent any further modules from creating scoped
// sub-keepers.
// This must be done during creation of baseapp rather than in InitChain so
// that in-memory capabilities get regenerated on app restart
ctx := app.BaseApp.NewContext(true, abci.Header{})
app.CapabilityKeeper.InitializeAndSeal(ctx)

return app
}

Expand Down Expand Up @@ -356,7 +373,7 @@ func (app *BandApp) DeliverTx(req abci.RequestDeliverTx) (res abci.ResponseDeliv
}
}
if isAllReportTxs && !stdTx.Fee.Amount.IsZero() {
err := app.SupplyKeeper.SendCoinsFromModuleToAccount(
err := app.BankKeeper.SendCoinsFromModuleToAccount(
app.DeliverContext,
auth.FeeCollectorName,
stdTx.GetSigners()[0],
Expand Down Expand Up @@ -392,14 +409,14 @@ func (app *BandApp) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci

// LoadHeight loads a particular height
func (app *BandApp) LoadHeight(height int64) error {
return app.LoadVersion(height, app.keys[bam.MainStoreKey])
return app.LoadVersion(height)
}

// ModuleAccountAddrs returns all the app's module account addresses.
func (app *BandApp) ModuleAccountAddrs() map[string]bool {
modAccAddrs := make(map[string]bool)
for acc := range maccPerms {
modAccAddrs[supply.NewModuleAddress(acc).String()] = true
modAccAddrs[auth.NewModuleAddress(acc).String()] = true
}

return modAccAddrs
Expand Down
2 changes: 1 addition & 1 deletion chain/app/db_app.go
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ func (app *dbBandApp) EndBlock(req abci.RequestEndBlock) (res abci.ResponseEndBl
panic(err)
}

totalSupply := app.BandApp.SupplyKeeper.GetSupply(app.DeliverContext).GetTotal()
totalSupply := app.BandApp.BankKeeper.GetSupply(app.DeliverContext).GetTotal()
err = app.dbBand.SetTotalSupply(totalSupply)
if err != nil {
panic(err)
Expand Down
6 changes: 3 additions & 3 deletions chain/app/export.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (

// ExportAppStateAndValidators export the state of band for a genesis file
func (app *BandApp) ExportAppStateAndValidators(forZeroHeight bool, jailWhiteList []string,
) (appState json.RawMessage, validators []tmtypes.GenesisValidator, err error) {
) (appState json.RawMessage, validators []tmtypes.GenesisValidator, cp *abci.ConsensusParams, err error) {
// as if they could withdraw from the start of the next block
ctx := app.NewContext(true, abci.Header{Height: app.LastBlockHeight()})

Expand All @@ -26,10 +26,10 @@ func (app *BandApp) ExportAppStateAndValidators(forZeroHeight bool, jailWhiteLis
genState := app.mm.ExportGenesis(ctx, app.cdc)
appState, err = codec.MarshalJSONIndent(app.cdc, genState)
if err != nil {
return nil, nil, err
return nil, nil, nil, err
}
validators = staking.WriteValidators(ctx, app.StakingKeeper)
return appState, validators, nil
return appState, validators, app.BaseApp.GetConsensusParams(ctx), nil
}

// prepare for fresh start at zero height
Expand Down
32 changes: 16 additions & 16 deletions chain/app/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/auth"
"github.com/cosmos/cosmos-sdk/x/bank"
"github.com/cosmos/cosmos-sdk/x/capability"
"github.com/cosmos/cosmos-sdk/x/crisis"
distr "github.com/cosmos/cosmos-sdk/x/distribution"
"github.com/cosmos/cosmos-sdk/x/evidence"
Expand All @@ -19,7 +20,6 @@ import (
"github.com/cosmos/cosmos-sdk/x/mint"
"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"

"github.com/bandprotocol/bandchain/chain/x/oracle"
Expand Down Expand Up @@ -52,21 +52,21 @@ func NewDefaultGenesisState() GenesisState {
slashingGenesis.Params.SlashFractionDowntime = sdk.NewDecWithPrec(1, 4) // 0.01%

return GenesisState{
genutil.ModuleName: genutil.AppModuleBasic{}.DefaultGenesis(cdc),
auth.ModuleName: auth.AppModuleBasic{}.DefaultGenesis(cdc),
bank.ModuleName: bank.AppModuleBasic{}.DefaultGenesis(cdc),
staking.ModuleName: cdc.MustMarshalJSON(stakingGenesis),
mint.ModuleName: cdc.MustMarshalJSON(mintGenesis),
distr.ModuleName: distr.AppModuleBasic{}.DefaultGenesis(cdc),
gov.ModuleName: cdc.MustMarshalJSON(govGenesis),
crisis.ModuleName: cdc.MustMarshalJSON(crisisGenesis),
slashing.ModuleName: cdc.MustMarshalJSON(slashingGenesis),
supply.ModuleName: supply.AppModuleBasic{}.DefaultGenesis(cdc),
ibc.ModuleName: ibc.AppModuleBasic{}.DefaultGenesis(cdc),
upgrade.ModuleName: upgrade.AppModuleBasic{}.DefaultGenesis(cdc),
evidence.ModuleName: evidence.AppModuleBasic{}.DefaultGenesis(cdc),
transfer.ModuleName: transfer.AppModuleBasic{}.DefaultGenesis(cdc),
oracle.ModuleName: oracle.AppModuleBasic{}.DefaultGenesis(cdc),
genutil.ModuleName: genutil.AppModuleBasic{}.DefaultGenesis(cdc),
auth.ModuleName: auth.AppModuleBasic{}.DefaultGenesis(cdc),
bank.ModuleName: bank.AppModuleBasic{}.DefaultGenesis(cdc),
staking.ModuleName: cdc.MustMarshalJSON(stakingGenesis),
mint.ModuleName: cdc.MustMarshalJSON(mintGenesis),
distr.ModuleName: distr.AppModuleBasic{}.DefaultGenesis(cdc),
gov.ModuleName: cdc.MustMarshalJSON(govGenesis),
crisis.ModuleName: cdc.MustMarshalJSON(crisisGenesis),
slashing.ModuleName: cdc.MustMarshalJSON(slashingGenesis),
ibc.ModuleName: ibc.AppModuleBasic{}.DefaultGenesis(cdc),
capability.ModuleName: capability.AppModuleBasic{}.DefaultGenesis(cdc),
upgrade.ModuleName: upgrade.AppModuleBasic{}.DefaultGenesis(cdc),
evidence.ModuleName: evidence.AppModuleBasic{}.DefaultGenesis(cdc),
transfer.ModuleName: transfer.AppModuleBasic{}.DefaultGenesis(cdc),
oracle.ModuleName: oracle.AppModuleBasic{}.DefaultGenesis(cdc),
}
}

Expand Down
4 changes: 2 additions & 2 deletions chain/bandlib/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ import (
authclient "github.com/cosmos/cosmos-sdk/x/auth/client"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
"github.com/tendermint/tendermint/crypto"
rpcclient "github.com/tendermint/tendermint/rpc/client"
rpchttp "github.com/tendermint/tendermint/rpc/client/http"
)

func NewCLIContext(nodeURI string, fromAddress sdk.AccAddress) context.CLIContext {
rpc, err := rpcclient.NewHTTP(nodeURI, "/websocket")
rpc, err := rpchttp.New(nodeURI, "/websocket")
if err != nil {
panic(err)
}
Expand Down
Loading

0 comments on commit 5975867

Please sign in to comment.