Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 10 additions & 30 deletions ante/ante.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ type HandlerOptions struct {
// NewAnteHandler returns an AnteHandler that checks and increments sequence
// numbers, checks signatures & account numbers, and deducts fees from the first
// signer.
func NewAnteHandler(options HandlerOptions, experimental bool) (sdk.AnteHandler, error) {
func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) {
if options.AccountKeeper == nil {
return nil, sdkerrors.ErrLogic.Wrap("account keeper is required for ante builder")
}
Expand All @@ -42,42 +42,22 @@ func NewAnteHandler(options HandlerOptions, experimental bool) (sdk.AnteHandler,
return nil, sdkerrors.ErrLogic.Wrap("sign mode handler is required for ante builder")
}

if experimental {
// cosmwasm ante decorators
return sdk.ChainAnteDecorators(
cosmosante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first
wasmkeeper.NewLimitSimulationGasDecorator(
options.WasmConfig.SimulationGasLimit,
), // after setup context to enforce limits early
wasmkeeper.NewCountTXDecorator(options.TXCounterStoreKey),
cosmosante.NewExtensionOptionsDecorator(nil), // nil=reject extensions
NewSpamPreventionDecorator(options.OracleKeeper), // spam prevention
cosmosante.NewValidateBasicDecorator(),
cosmosante.NewTxTimeoutHeightDecorator(),
cosmosante.NewValidateMemoDecorator(options.AccountKeeper),
cosmosante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper),
cosmosante.NewDeductFeeDecorator(options.AccountKeeper,
options.BankKeeper, options.FeegrantKeeper, FeeAndPriority,
),
// SetPubKeyDecorator must be called before all signature verification decorators
cosmosante.NewSetPubKeyDecorator(options.AccountKeeper),
cosmosante.NewValidateSigCountDecorator(options.AccountKeeper),
cosmosante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer),
cosmosante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler),
cosmosante.NewIncrementSequenceDecorator(options.AccountKeeper),
ibcante.NewRedundantRelayDecorator(options.IBCKeeper),
), nil
}

// cosmwasm ante decorators
return sdk.ChainAnteDecorators(
cosmosante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first
cosmosante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first
wasmkeeper.NewLimitSimulationGasDecorator(
options.WasmConfig.SimulationGasLimit,
), // after setup context to enforce limits early
wasmkeeper.NewCountTXDecorator(options.TXCounterStoreKey),
cosmosante.NewExtensionOptionsDecorator(nil), // nil=reject extensions
NewSpamPreventionDecorator(options.OracleKeeper), // spam prevention
cosmosante.NewValidateBasicDecorator(),
cosmosante.NewTxTimeoutHeightDecorator(),
cosmosante.NewValidateMemoDecorator(options.AccountKeeper),
cosmosante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper),
cosmosante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, FeeAndPriority),
cosmosante.NewDeductFeeDecorator(options.AccountKeeper,
options.BankKeeper, options.FeegrantKeeper, FeeAndPriority,
),
// SetPubKeyDecorator must be called before all signature verification decorators
cosmosante.NewSetPubKeyDecorator(options.AccountKeeper),
cosmosante.NewValidateSigCountDecorator(options.AccountKeeper),
Expand Down
131 changes: 78 additions & 53 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,9 @@ import (
"github.com/umee-network/umee/v4/x/oracle"
oraclekeeper "github.com/umee-network/umee/v4/x/oracle/keeper"
oracletypes "github.com/umee-network/umee/v4/x/oracle/types"
"github.com/umee-network/umee/v4/x/ugov"
ugovkeeper "github.com/umee-network/umee/v4/x/ugov/keeper"
ugovmodule "github.com/umee-network/umee/v4/x/ugov/module"

// umee ibc-transfer and quota for ibc-transfer
"github.com/umee-network/umee/v4/x/uibc"
Expand Down Expand Up @@ -187,14 +190,15 @@ func init() {
// ibcfee.AppModuleBasic{},
gravity.AppModuleBasic{},
leverage.AppModuleBasic{},
incentivemodule.AppModuleBasic{},
oracle.AppModuleBasic{},
bech32ibc.AppModuleBasic{},
uibcmodule.AppModuleBasic{},
ugovmodule.AppModuleBasic{},
wasm.AppModuleBasic{},
}

if Experimental {
moduleBasics = append(moduleBasics, wasm.AppModuleBasic{})
moduleBasics = append(moduleBasics, incentivemodule.AppModuleBasic{})
}

ModuleBasics = module.NewBasicManager(moduleBasics...)
Expand All @@ -210,15 +214,14 @@ func init() {

ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
icatypes.ModuleName: nil,
gravitytypes.ModuleName: {authtypes.Minter, authtypes.Burner},
leveragetypes.ModuleName: {authtypes.Minter, authtypes.Burner},
incentive.ModuleName: nil,
oracletypes.ModuleName: nil,
uibc.ModuleName: nil,
}

if Experimental {
maccPerms[wasm.ModuleName] = []string{authtypes.Burner}
gravitytypes.ModuleName: {authtypes.Minter, authtypes.Burner},
leveragetypes.ModuleName: {authtypes.Minter, authtypes.Burner},
wasm.ModuleName: {authtypes.Burner},

oracletypes.ModuleName: nil,
uibc.ModuleName: nil,
ugov.ModuleName: nil,
}
}

Expand Down Expand Up @@ -267,6 +270,7 @@ type UmeeApp struct {
OracleKeeper oraclekeeper.Keeper
bech32IbcKeeper bech32ibckeeper.Keeper
UIbcQuotaKeeperB uibcquotakeeper.Builder
UGovKeeperB ugovkeeper.Builder

// make scoped keepers public for testing purposes
ScopedIBCKeeper capabilitykeeper.ScopedKeeper
Expand Down Expand Up @@ -329,10 +333,8 @@ func New(
ibchost.StoreKey, ibctransfertypes.StoreKey, icahosttypes.StoreKey,
gravitytypes.StoreKey,
leveragetypes.StoreKey, incentive.StoreKey, oracletypes.StoreKey,
bech32ibctypes.StoreKey, uibc.StoreKey,
}
if Experimental {
storeKeys = append(storeKeys, wasm.StoreKey)
bech32ibctypes.StoreKey, uibc.StoreKey, ugov.StoreKey,
wasm.StoreKey,
}

keys := sdk.NewKVStoreKeys(storeKeys...)
Expand Down Expand Up @@ -378,10 +380,7 @@ func New(
app.ScopedIBCKeeper = app.CapabilityKeeper.ScopeToModule(ibchost.ModuleName)
app.ScopedTransferKeeper = app.CapabilityKeeper.ScopeToModule(ibctransfertypes.ModuleName)
scopedICAHostKeeper := app.CapabilityKeeper.ScopeToModule(icahosttypes.SubModuleName)

if Experimental {
app.ScopedWasmKeeper = app.CapabilityKeeper.ScopeToModule(wasm.ModuleName)
}
app.ScopedWasmKeeper = app.CapabilityKeeper.ScopeToModule(wasm.ModuleName)

// Applications that wish to enforce statically created ScopedKeepers should call `Seal` after creating
// their scoped modules in `NewApp` with `ScopeToModule`
Expand Down Expand Up @@ -477,7 +476,11 @@ func New(
app.LeverageKeeper,
)
app.LeverageKeeper.SetTokenHooks(app.OracleKeeper.Hooks())
app.LeverageKeeper.SetBondHooks(app.IncentiveKeeper.BondHooks())
if Experimental {
app.LeverageKeeper.SetBondHooks(app.IncentiveKeeper.BondHooks())
}

app.UGovKeeperB = ugovkeeper.NewKeeperBuilder(appCodec, keys[ugov.ModuleName])

app.GravityKeeper = gravitykeeper.NewKeeper(
keys[gravitytypes.StoreKey],
Expand Down Expand Up @@ -612,7 +615,7 @@ func New(
AddRoute(bech32ibctypes.RouterKey, bech32ibc.NewBech32IBCProposalHandler(app.bech32IbcKeeper))

// The wasm gov proposal types can be individually enabled
if Experimental && len(wasmEnabledProposals) != 0 {
if len(wasmEnabledProposals) != 0 {
govRouter.AddRoute(wasm.RouterKey, wasm.NewWasmProposalHandler(app.WasmKeeper, wasmEnabledProposals))
}

Expand All @@ -628,7 +631,34 @@ func New(
),
)

app.customKeepers(bApp, keys, appCodec, govRouter, homePath, appOpts, wasmOpts)
var err error
wasmDir := filepath.Join(homePath, "wasm")
app.wasmCfg, err = wasm.ReadWasmConfig(appOpts)
if err != nil {
panic(fmt.Sprintf("error while reading wasm config: %s", err))
}

// 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,umee"
app.WasmKeeper = wasm.NewKeeper(
appCodec,
keys[wasm.StoreKey],
app.GetSubspace(wasm.ModuleName),
app.AccountKeeper,
app.BankKeeper,
app.StakingKeeper,
app.DistrKeeper,
app.IBCKeeper.ChannelKeeper,
&app.IBCKeeper.PortKeeper,
app.ScopedWasmKeeper, // capabilities
&app.IBCTransferKeeper, // ICS20TransferPortSource
app.MsgServiceRouter(),
wasmDir,
app.wasmCfg,
availableCapabilities,
wasmOpts...,
)

/**** Module Options ****/

Expand Down Expand Up @@ -671,15 +701,16 @@ func New(
ica.NewAppModule(nil, &app.ICAHostKeeper),
gravity.NewAppModule(app.GravityKeeper, app.BankKeeper),
leverage.NewAppModule(appCodec, app.LeverageKeeper, app.AccountKeeper, app.BankKeeper),
incentivemodule.NewAppModule(appCodec, app.IncentiveKeeper, app.BankKeeper, app.LeverageKeeper),
oracle.NewAppModule(appCodec, app.OracleKeeper, app.AccountKeeper, app.BankKeeper),
bech32ibc.NewAppModule(appCodec, app.bech32IbcKeeper),
uibcmodule.NewAppModule(appCodec, app.UIbcQuotaKeeperB),
ugovmodule.NewAppModule(appCodec, app.UGovKeeperB),
wasm.NewAppModule(app.appCodec, &app.WasmKeeper, app.StakingKeeper, app.AccountKeeper, app.BankKeeper),
}
if Experimental {
appModules = append(
appModules,
wasm.NewAppModule(app.appCodec, &app.WasmKeeper, app.StakingKeeper, app.AccountKeeper, app.BankKeeper),
incentivemodule.NewAppModule(appCodec, app.IncentiveKeeper, app.BankKeeper, app.LeverageKeeper),
)
}

Expand All @@ -701,11 +732,12 @@ func New(
paramstypes.ModuleName, vestingtypes.ModuleName,
icatypes.ModuleName, // ibcfeetypes.ModuleName,
leveragetypes.ModuleName,
incentive.ModuleName,
oracletypes.ModuleName,
gravitytypes.ModuleName,
bech32ibctypes.ModuleName,
uibc.ModuleName,
ugov.ModuleName,
wasm.ModuleName,
}

endBlockers := []string{
Expand All @@ -720,10 +752,11 @@ func New(
paramstypes.ModuleName, upgradetypes.ModuleName, vestingtypes.ModuleName,
icatypes.ModuleName, // ibcfeetypes.ModuleName,
leveragetypes.ModuleName,
incentive.ModuleName,
gravitytypes.ModuleName,
bech32ibctypes.ModuleName,
uibc.ModuleName,
ugov.ModuleName,
wasm.ModuleName,
}

// NOTE: The genutils module must occur after staking so that pools are
Expand All @@ -743,10 +776,11 @@ func New(

oracletypes.ModuleName,
leveragetypes.ModuleName,
incentive.ModuleName,
gravitytypes.ModuleName,
bech32ibctypes.ModuleName,
uibc.ModuleName,
ugov.ModuleName,
wasm.ModuleName,
}

orderMigrations := []string{
Expand All @@ -759,17 +793,18 @@ func New(

oracletypes.ModuleName,
leveragetypes.ModuleName,
incentive.ModuleName,
gravitytypes.ModuleName,
bech32ibctypes.ModuleName,
uibc.ModuleName,
ugov.ModuleName,
wasm.ModuleName,
}

if Experimental {
beginBlockers = append(beginBlockers, wasm.ModuleName)
endBlockers = append(endBlockers, wasm.ModuleName)
initGenesis = append(initGenesis, wasm.ModuleName)
orderMigrations = append(orderMigrations, wasm.ModuleName)
beginBlockers = append(beginBlockers, incentive.ModuleName)
endBlockers = append(endBlockers, incentive.ModuleName)
initGenesis = append(initGenesis, incentive.ModuleName)
orderMigrations = append(orderMigrations, incentive.ModuleName)
}

app.mm.SetOrderBeginBlockers(beginBlockers...)
Expand Down Expand Up @@ -835,13 +870,11 @@ func New(
// upgrade.
app.setPostHandler()

if Experimental {
if manager := app.SnapshotManager(); manager != nil {
err := manager.RegisterExtensions(
wasmkeeper.NewWasmSnapshotter(app.CommitMultiStore(), &app.WasmKeeper))
if err != nil {
panic(fmt.Errorf("failed to register snapshot extension: %s", err))
}
if manager := app.SnapshotManager(); manager != nil {
err := manager.RegisterExtensions(
wasmkeeper.NewWasmSnapshotter(app.CommitMultiStore(), &app.WasmKeeper))
if err != nil {
panic(fmt.Errorf("failed to register snapshot extension: %s", err))
}
}

Expand All @@ -850,12 +883,10 @@ func New(
tmos.Exit(fmt.Sprintf("failed to load latest version: %s", err))
}

if Experimental {
// Initialize pinned codes in wasmvm as they are not persisted there
ctx := app.NewUncachedContext(true, tmproto.Header{})
if err := app.WasmKeeper.InitializePinnedCodes(ctx); err != nil {
tmos.Exit(fmt.Sprintf("failed initialize pinned codes %s", err))
}
// Initialize pinned codes in wasmvm as they are not persisted there
ctx := app.NewUncachedContext(true, tmproto.Header{})
if err := app.WasmKeeper.InitializePinnedCodes(ctx); err != nil {
tmos.Exit(fmt.Sprintf("failed initialize pinned codes %s", err))
}
}

Expand All @@ -876,9 +907,7 @@ func (app *UmeeApp) setAnteHandler(txConfig client.TxConfig,
SigGasConsumer: ante.DefaultSigVerificationGasConsumer,
WasmConfig: wasmConfig,
TXCounterStoreKey: wasmStoreKey,
},
Experimental,
)
})
if err != nil {
panic(err)
}
Expand Down Expand Up @@ -1089,9 +1118,7 @@ func initParamsKeeper(
paramsKeeper.Subspace(gravitytypes.ModuleName)
paramsKeeper.Subspace(leveragetypes.ModuleName)
paramsKeeper.Subspace(oracletypes.ModuleName)
if Experimental {
paramsKeeper.Subspace(wasm.ModuleName)
}
paramsKeeper.Subspace(wasm.ModuleName)

return paramsKeeper
}
Expand All @@ -1105,9 +1132,7 @@ func getGovProposalHandlers() []govclient.ProposalHandler {
ibcclientclient.UpdateClientProposalHandler,
ibcclientclient.UpgradeProposalHandler,
}
if Experimental {
handlers = append(handlers, wasmclient.ProposalHandlers...)
}
handlers = append(handlers, wasmclient.ProposalHandlers...)

return handlers
}
Loading