Skip to content
Merged
2 changes: 2 additions & 0 deletions app/ante.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,15 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) {
wasmkeeper.NewLimitSimulationGasDecorator(options.WasmConfig.SimulationGasLimit),
wasmkeeper.NewCountTXDecorator(options.TxCounterStoreKey),
ante.NewRejectExtensionOptionsDecorator(),
passageante.NewValidateMinGasPricesDecorator(),
ante.NewMempoolFeeDecorator(),
ante.NewValidateBasicDecorator(),
ante.NewTxTimeoutHeightDecorator(),
ante.NewValidateMemoDecorator(options.AccountKeeper),
ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper),
ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper),
passageante.NewBlockAccountDecorator(),
passageante.NewValidateMinCommissionDecorator(),
// SetPubKeyDecorator must be called before all signature verification decorators
ante.NewSetPubKeyDecorator(options.AccountKeeper),
ante.NewValidateSigCountDecorator(options.AccountKeeper),
Expand Down
70 changes: 70 additions & 0 deletions app/ante/min_commission.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package ante

import (
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
authztypes "github.com/cosmos/cosmos-sdk/x/authz"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
)

var MinCommissionRate = sdk.MustNewDecFromStr("0.05")

// ValidateMinCommissionDecorator validates the minimum commission rate of validator
// to be not less than minimum commission rate when creating or editing validator.
type ValidateMinCommissionDecorator struct{}

func NewValidateMinCommissionDecorator() ValidateMinCommissionDecorator {
return ValidateMinCommissionDecorator{}
}

func (mcd ValidateMinCommissionDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool,
next sdk.AnteHandler,
) (sdk.Context, error) {
msgs := tx.GetMsgs()

// handle msg based on type
if err := mcd.handleMsgs(msgs); err != nil {
return ctx, err
}

return next(ctx, tx, simulate)
}

func (mcd ValidateMinCommissionDecorator) handleMsgs(msgs []sdk.Msg) error {
for _, msg := range msgs {
switch m := msg.(type) {
case *stakingtypes.MsgCreateValidator:
if err := validateMinCommissionRate(m.Commission.Rate); err != nil {
return err
}

case *stakingtypes.MsgEditValidator:
if m.CommissionRate != nil {
if err := validateMinCommissionRate(*m.CommissionRate); err != nil {
return err
}
}

case *authztypes.MsgExec:
execMsgs, err := m.GetMessages()
if err != nil {
return err
}

if err := mcd.handleMsgs(execMsgs); err != nil {
return err
}

}
}
return nil
}

func validateMinCommissionRate(rate sdk.Dec) error {
if rate.IsNil() || rate.LT(MinCommissionRate) {
return sdkerrors.ErrInvalidRequest.Wrapf(
"cannot set validator commission to less than minimum rate of %s", MinCommissionRate)
}

return nil
}
40 changes: 40 additions & 0 deletions app/ante/min_gas_prices.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package ante

import (
"fmt"

sdk "github.com/cosmos/cosmos-sdk/types"
)

const (
BaseDenom string = "upasg"
DefaultMinGasPrice string = "12.5"
)

type ValidateMinGasPricesDecorator struct{}

func NewValidateMinGasPricesDecorator() ValidateMinGasPricesDecorator {
return ValidateMinGasPricesDecorator{}
}

func (mgp ValidateMinGasPricesDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) {
// Ensure that the min gas prices is not less than default minimum gas price
if ctx.IsCheckTx() && !simulate {
minGasPrices := ctx.MinGasPrices()
if err := ValidateMinGasPrices(minGasPrices); err != nil {
return ctx, err
}
}

return next(ctx, tx, simulate)
}

// ValidateMinGasPrices validates given minimum gas prices
func ValidateMinGasPrices(minGasPrices sdk.DecCoins) error {
if minGasPrices.AmountOf(BaseDenom).LT(sdk.MustNewDecFromStr(DefaultMinGasPrice)) {
return fmt.Errorf("minimum-gas-prices value should be greater than or equal to %s%s",
DefaultMinGasPrice, BaseDenom)
}

return nil
}
15 changes: 10 additions & 5 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/envadiv/Passage3D/app/upgrades"
"github.com/envadiv/Passage3D/app/upgrades/v2.2.0"
v3 "github.com/envadiv/Passage3D/app/upgrades/v2.4.0"
v2_5 "github.com/envadiv/Passage3D/app/upgrades/v2.5.0"
"github.com/envadiv/Passage3D/x/claim"

"github.com/gorilla/mux"
Expand Down Expand Up @@ -189,7 +190,7 @@ var (
wasm.ModuleName: {authtypes.Burner},
}

Upgrades = []upgrades.Upgrade{v2.Upgrade, v3.Upgrade}
Upgrades = []upgrades.Upgrade{v2.Upgrade, v3.Upgrade, v2_5.Upgrade}
)

var (
Expand Down Expand Up @@ -266,7 +267,6 @@ func NewPassageApp(
homePath string, invCheckPeriod uint, encodingConfig appparams.EncodingConfig, enabledProposals []wasm.ProposalType,
appOpts servertypes.AppOptions, wasmOpts []wasm.Option, baseAppOptions ...func(*baseapp.BaseApp),
) *PassageApp {

appCodec := encodingConfig.Marshaler
legacyAmino := encodingConfig.Amino
interfaceRegistry := encodingConfig.InterfaceRegistry
Expand Down Expand Up @@ -402,7 +402,7 @@ func NewPassageApp(
// The last arguments can contain custom message handlers, and custom query handlers,
// if we want to allow any custom callbacks
// See https://github.com/CosmWasm/cosmwasm/blob/main/docs/CAPABILITIES-BUILT-IN.md
availableCapabilities := "iterator,staking,stargate,cosmwasm_1_1,cosmwasm_1_2"
availableCapabilities := "iterator,staking,stargate,cosmwasm_1_1,cosmwasm_1_2,cosmwasm_1_3"
app.WasmKeeper = wasm.NewKeeper(
appCodec,
keys[wasm.StoreKey],
Expand All @@ -411,6 +411,7 @@ func NewPassageApp(
app.BankKeeper,
app.StakingKeeper,
app.DistrKeeper,
app.IBCKeeper.ChannelKeeper, // may be replaced with IBC fee middleware
app.IBCKeeper.ChannelKeeper,
&app.IBCKeeper.PortKeeper,
scopedWasmKeeper,
Expand Down Expand Up @@ -454,7 +455,7 @@ func NewPassageApp(

// NOTE: we may consider parsing `appOpts` inside module constructors. For the moment
// we prefer to be more strict in what arguments the modules expect.
var skipGenesisInvariants = cast.ToBool(appOpts.Get(crisis.FlagSkipGenesisInvariants))
skipGenesisInvariants := cast.ToBool(appOpts.Get(crisis.FlagSkipGenesisInvariants))

// NOTE: Any module instantiated in the module manager that is later modified
// must be passed by reference here.
Expand Down Expand Up @@ -628,7 +629,6 @@ func NewPassageApp(
TxCounterStoreKey: keys[wasm.StoreKey],
},
)

if err != nil {
panic(err)
}
Expand Down Expand Up @@ -662,9 +662,14 @@ func (app *PassageApp) setupUpgradeHandlers() {
upgrade.CreateUpgradeHandler(
app.mm,
app.configurator,
app.appCodec,
app.DistrKeeper,
app.BankKeeper,
app.AccountKeeper,
app.StakingKeeper,
app.GovKeeper,
app.AuthzKeeper,
app.FeeGrantKeeper,
app.ClaimKeeper,
),
)
Expand Down
9 changes: 8 additions & 1 deletion app/upgrades/types.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
package upgrades

import (
"github.com/cosmos/cosmos-sdk/codec"
store "github.com/cosmos/cosmos-sdk/store/types"
"github.com/cosmos/cosmos-sdk/types/module"
auth "github.com/cosmos/cosmos-sdk/x/auth/keeper"
authz "github.com/cosmos/cosmos-sdk/x/authz/keeper"
bank "github.com/cosmos/cosmos-sdk/x/bank/keeper"
distribution "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
feegrant "github.com/cosmos/cosmos-sdk/x/feegrant/keeper"
gov "github.com/cosmos/cosmos-sdk/x/gov/keeper"
staking "github.com/cosmos/cosmos-sdk/x/staking/keeper"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
claim "github.com/envadiv/Passage3D/x/claim/keeper"
)
Expand All @@ -19,7 +24,9 @@ type Upgrade struct {
UpgradeName string

// CreateUpgradeHandler defines the function that creates an upgrade handler
CreateUpgradeHandler func(*module.Manager, module.Configurator, distribution.Keeper, bank.Keeper, auth.AccountKeeper, claim.Keeper) upgradetypes.UpgradeHandler
CreateUpgradeHandler func(*module.Manager, module.Configurator, codec.Codec, distribution.Keeper,
bank.Keeper, auth.AccountKeeper, staking.Keeper, gov.Keeper, authz.Keeper, feegrant.Keeper, claim.Keeper,
) upgradetypes.UpgradeHandler

// Store upgrades, should be used for any new modules introduced, new modules deleted, or store names renamed.
StoreUpgrades store.StoreUpgrades
Expand Down
19 changes: 15 additions & 4 deletions app/upgrades/v2.2.0/upgrade.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,29 @@ import (
"fmt"
"time"

"github.com/cosmos/cosmos-sdk/codec"
storetypes "github.com/cosmos/cosmos-sdk/store/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
auth "github.com/cosmos/cosmos-sdk/x/auth/keeper"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
authz "github.com/cosmos/cosmos-sdk/x/authz/keeper"
bank "github.com/cosmos/cosmos-sdk/x/bank/keeper"
distribution "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
feegrant "github.com/cosmos/cosmos-sdk/x/feegrant/keeper"
gov "github.com/cosmos/cosmos-sdk/x/gov/keeper"
staking "github.com/cosmos/cosmos-sdk/x/staking/keeper"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
"github.com/envadiv/Passage3D/app/upgrades"
claim "github.com/envadiv/Passage3D/x/claim/keeper"
claimtypes "github.com/envadiv/Passage3D/x/claim/types"
)

const Name = "v2.2.0"
const upasgDenom = "upasg"
const (
Name = "v2.2.0"
upasgDenom = "upasg"
)

// 150,000,000 $PASG tokens
var amount = sdk.NewCoins(sdk.NewCoin(upasgDenom, sdk.NewInt(150000000000000)))
Expand All @@ -33,12 +40,16 @@ var Upgrade = upgrades.Upgrade{
func CreateUpgradeHandler(
mm *module.Manager,
configurator module.Configurator,
_ codec.Codec,
dk distribution.Keeper,
bk bank.Keeper,
ak auth.AccountKeeper,
_ staking.Keeper,
_ gov.Keeper,
_ authz.Keeper,
_ feegrant.Keeper,
ck claim.Keeper,
) upgradetypes.UpgradeHandler {

return func(ctx sdk.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) {
if err := ExecuteProposal(ctx, ak, bk, ck, dk); err != nil {
return nil, err
Expand All @@ -49,7 +60,7 @@ func CreateUpgradeHandler(
}

func ExecuteProposal(ctx sdk.Context, ak auth.AccountKeeper, bk bank.Keeper, ck claim.Keeper, dk distribution.Keeper) error {
var sixMonths = time.Hour * 24 * 180
sixMonths := time.Hour * 24 * 180

vestingAcc, err := sdk.AccAddressFromBech32("pasg105488mw9t3qtp62jhllde28v40xqxpjksjqmvx")
if err != nil {
Expand Down
11 changes: 10 additions & 1 deletion app/upgrades/v2.4.0/upgrade.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
package v2

import (
"github.com/cosmos/cosmos-sdk/codec"
storetypes "github.com/cosmos/cosmos-sdk/store/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
auth "github.com/cosmos/cosmos-sdk/x/auth/keeper"
authz "github.com/cosmos/cosmos-sdk/x/authz/keeper"
bank "github.com/cosmos/cosmos-sdk/x/bank/keeper"
distribution "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
feegrant "github.com/cosmos/cosmos-sdk/x/feegrant/keeper"
gov "github.com/cosmos/cosmos-sdk/x/gov/keeper"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
staking "github.com/cosmos/cosmos-sdk/x/staking/keeper"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
"github.com/envadiv/Passage3D/app/upgrades"
claim "github.com/envadiv/Passage3D/x/claim/keeper"
Expand All @@ -25,12 +30,16 @@ var Upgrade = upgrades.Upgrade{
func CreateUpgradeHandler(
mm *module.Manager,
configurator module.Configurator,
_ codec.Codec,
_ distribution.Keeper,
bk bank.Keeper,
ak auth.AccountKeeper,
_ staking.Keeper,
_ gov.Keeper,
_ authz.Keeper,
_ feegrant.Keeper,
_ claim.Keeper,
) upgradetypes.UpgradeHandler {

return func(ctx sdk.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) {
if err := ExecuteProposal(ctx, ak, bk); err != nil {
return nil, err
Expand Down
Loading
Loading