From 4ed86338f8d4a214474f68da8bccc26b420af0d8 Mon Sep 17 00:00:00 2001 From: likhita-809 Date: Wed, 10 Apr 2024 15:56:19 +0530 Subject: [PATCH 1/4] wip --- x/auth/ante/expected_keepers.go | 2 ++ x/auth/ante/fee.go | 46 +++++++++++++++++++++------------ x/auth/keeper/keeper.go | 5 ++++ x/feegrant/module/module.go | 20 +++++++++++++- 4 files changed, 56 insertions(+), 17 deletions(-) diff --git a/x/auth/ante/expected_keepers.go b/x/auth/ante/expected_keepers.go index c33dcaa685d3..f9e5d5164e29 100644 --- a/x/auth/ante/expected_keepers.go +++ b/x/auth/ante/expected_keepers.go @@ -4,6 +4,7 @@ import ( "context" "cosmossdk.io/core/address" + "cosmossdk.io/core/appmodule" "cosmossdk.io/x/auth/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -18,6 +19,7 @@ type AccountKeeper interface { GetModuleAddress(moduleName string) sdk.AccAddress AddressCodec() address.Codec NewAccountWithAddress(ctx context.Context, addr sdk.AccAddress) sdk.AccountI + Environment() appmodule.Environment } // FeegrantKeeper defines the expected feegrant keeper. diff --git a/x/auth/ante/fee.go b/x/auth/ante/fee.go index 6e140e690581..ceb76526a019 100644 --- a/x/auth/ante/fee.go +++ b/x/auth/ante/fee.go @@ -2,8 +2,11 @@ package ante import ( "bytes" + "context" "fmt" + "cosmossdk.io/core/event" + "cosmossdk.io/core/transaction" errorsmod "cosmossdk.io/errors" "cosmossdk.io/x/auth/types" @@ -39,32 +42,43 @@ func NewDeductFeeDecorator(ak AccountKeeper, bk types.BankKeeper, fk FeegrantKee } } -func (dfd DeductFeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, _ bool, next sdk.AnteHandler) (sdk.Context, error) { +// ValidateTx implements an TxValidator decorator for the DeductFeeDecorator +func (dfd DeductFeeDecorator) ValidateTx(ctx context.Context, tx sdk.Tx) error { + txService := dfd.accountKeeper.Environment().TransactionService feeTx, ok := tx.(sdk.FeeTx) if !ok { - return ctx, errorsmod.Wrap(sdkerrors.ErrTxDecode, "Tx must be a FeeTx") + return errorsmod.Wrap(sdkerrors.ErrTxDecode, "Tx must be a FeeTx") } - if ctx.ExecMode() != sdk.ExecModeSimulate && ctx.BlockHeight() > 0 && feeTx.GetGas() == 0 { - return ctx, errorsmod.Wrap(sdkerrors.ErrInvalidGasLimit, "must provide positive gas") + headerInfo := dfd.accountKeeper.Environment().HeaderService.GetHeaderInfo(ctx) + if txService.ExecMode(ctx) != transaction.ExecModeSimulate && headerInfo.Height > 0 && feeTx.GetGas() == 0 { + return errorsmod.Wrap(sdkerrors.ErrInvalidGasLimit, "must provide positive gas") } var err error fee := feeTx.GetFee() - if ctx.ExecMode() != sdk.ExecModeSimulate { + if txService.ExecMode(ctx) != transaction.ExecModeSimulate { fee, err = dfd.txFeeChecker(ctx, tx) if err != nil { - return ctx, err + return err } } if err := dfd.checkDeductFee(ctx, tx, fee); err != nil { + return err + } + + return nil +} + +func (dfd DeductFeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, _ bool, next sdk.AnteHandler) (sdk.Context, error) { + if err := dfd.ValidateTx(ctx, tx); err != nil { return ctx, err } - return next(ctx, tx, ctx.ExecMode() == sdk.ExecModeSimulate) + return next(ctx, tx, false) } -func (dfd DeductFeeDecorator) checkDeductFee(ctx sdk.Context, sdkTx sdk.Tx, fee sdk.Coins) error { +func (dfd DeductFeeDecorator) checkDeductFee(ctx context.Context, sdkTx sdk.Tx, fee sdk.Coins) error { feeTx, ok := sdkTx.(sdk.FeeTx) if !ok { return errorsmod.Wrap(sdkerrors.ErrTxDecode, "Tx must be a FeeTx") @@ -103,20 +117,20 @@ func (dfd DeductFeeDecorator) checkDeductFee(ctx sdk.Context, sdkTx sdk.Tx, fee } } - events := sdk.Events{ - sdk.NewEvent( - sdk.EventTypeTx, - sdk.NewAttribute(sdk.AttributeKeyFee, fee.String()), - sdk.NewAttribute(sdk.AttributeKeyFeePayer, sdk.AccAddress(deductFeesFrom).String()), - ), + eventManager := dfd.accountKeeper.Environment().EventService.EventManager(ctx) + if err := eventManager.EmitKV( + sdk.EventTypeTx, + event.NewAttribute(sdk.AttributeKeyFee, fee.String()), + event.NewAttribute(sdk.AttributeKeyFeePayer, sdk.AccAddress(deductFeesFrom).String()), + ); err != nil { + return err } - ctx.EventManager().EmitEvents(events) return nil } // DeductFees deducts fees from the given account. -func DeductFees(bankKeeper types.BankKeeper, ctx sdk.Context, acc []byte, fees sdk.Coins) error { +func DeductFees(bankKeeper types.BankKeeper, ctx context.Context, acc []byte, fees sdk.Coins) error { if !fees.IsValid() { return errorsmod.Wrapf(sdkerrors.ErrInsufficientFee, "invalid fee amount: %s", fees) } diff --git a/x/auth/keeper/keeper.go b/x/auth/keeper/keeper.go index 9f03b175fcb4..5dce7a5f4a42 100644 --- a/x/auth/keeper/keeper.go +++ b/x/auth/keeper/keeper.go @@ -275,3 +275,8 @@ func (ak AccountKeeper) GetParams(ctx context.Context) (params types.Params) { } return params } + +// Environment returns the module's environment. +func (ak AccountKeeper) Environment() appmodule.Environment { + return ak.environment +} diff --git a/x/feegrant/module/module.go b/x/feegrant/module/module.go index 6096023daf2f..af2ac31a3bc9 100644 --- a/x/feegrant/module/module.go +++ b/x/feegrant/module/module.go @@ -14,6 +14,7 @@ import ( "cosmossdk.io/core/registry" "cosmossdk.io/core/transaction" "cosmossdk.io/errors" + "cosmossdk.io/x/auth/ante" "cosmossdk.io/x/feegrant" "cosmossdk.io/x/feegrant/client/cli" "cosmossdk.io/x/feegrant/keeper" @@ -21,6 +22,7 @@ import ( sdkclient "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" cdctypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" ) @@ -160,6 +162,22 @@ func (am AppModule) EndBlock(ctx context.Context) error { // TxValidator implements appmodulev2.HasTxValidator. // It replaces auth ante handlers for server/v2 func (am AppModule) TxValidator(ctx context.Context, tx transaction.Tx) error { - // TODO in follow-up + validators := []interface { + ValidateTx(ctx context.Context, tx sdk.Tx) error + }{ + ante.NewDeductFeeDecorator(am.accountKeeper, am.bankKeeper, am.keeper, nil), + } + + sdkTx, ok := tx.(sdk.Tx) + if !ok { + return fmt.Errorf("invalid tx type %T, expected sdk.Tx", tx) + } + + for _, validator := range validators { + if err := validator.ValidateTx(ctx, sdkTx); err != nil { + return err + } + } + return nil } From 0d4800cb4be26360764a5c404e7b1ac645be6e8c Mon Sep 17 00:00:00 2001 From: likhita-809 Date: Wed, 10 Apr 2024 15:56:40 +0530 Subject: [PATCH 2/4] wip --- core/gas/service.go | 21 +++++++++++++++++++++ runtime/gas.go | 11 +++++++++++ x/auth/ante/fee.go | 4 ++-- x/auth/ante/validator_tx_fee.go | 11 ++++++++--- 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/core/gas/service.go b/core/gas/service.go index 07fda0cbf235..4437dd2f27e5 100644 --- a/core/gas/service.go +++ b/core/gas/service.go @@ -5,6 +5,8 @@ import ( "context" "errors" "math" + + cosmossdk_io_math "cosmossdk.io/math" ) // ErrOutOfGas must be used by GasMeter implementers to signal @@ -20,6 +22,23 @@ type Gas = uint64 // NoGasLimit signals that no gas limit must be applied. const NoGasLimit Gas = math.MaxUint64 +type DecCoins []DecCoin + +type DecCoin struct { + Denom string + Amount cosmossdk_io_math.LegacyDec +} + +// IsZero returns whether all coins are zero +func (coins DecCoins) IsZero() bool { + for _, coin := range coins { + if !coin.Amount.IsZero() { + return false + } + } + return true +} + // Service represents a gas service which can retrieve and set a gas meter in a context. // gas.Service is a core API type that should be provided by the runtime module being used to // build an app via depinject. @@ -41,6 +60,8 @@ type Service interface { WithBlockGasMeter(ctx context.Context, meter Meter) context.Context GetGasConfig(ctx context.Context) GasConfig + + MinGasPrices(ctx context.Context) DecCoins } // Meter represents a gas meter for modules consumption diff --git a/runtime/gas.go b/runtime/gas.go index e5f2c89d8c22..57b1a6067085 100644 --- a/runtime/gas.go +++ b/runtime/gas.go @@ -34,6 +34,17 @@ func (g GasService) GetGasConfig(ctx context.Context) gas.GasConfig { return gas.GasConfig(sdk.UnwrapSDKContext(ctx).KVGasConfig()) } +func (g GasService) MinGasPrices(ctx context.Context) gas.DecCoins { + sdkCtx := sdk.UnwrapSDKContext(ctx) + minGasPrice := sdkCtx.MinGasPrices() + txDecCoins := make(gas.DecCoins, len(minGasPrice)) + for i, s := range minGasPrice { + txDecCoins[i].Amount = s.Amount + txDecCoins[i].Denom = s.Denom + } + return txDecCoins +} + // ______________________________________________________________________________________________ // Gas Meter Wrappers // ______________________________________________________________________________________________ diff --git a/x/auth/ante/fee.go b/x/auth/ante/fee.go index ceb76526a019..6b8172fed482 100644 --- a/x/auth/ante/fee.go +++ b/x/auth/ante/fee.go @@ -16,7 +16,7 @@ import ( // TxFeeChecker check if the provided fee is enough and returns the effective fee and tx priority, // the effective fee should be deducted later, and the priority should be returned in abci response. -type TxFeeChecker func(ctx sdk.Context, tx sdk.Tx) (sdk.Coins, error) +type TxFeeChecker func(ctx context.Context, tx sdk.Tx, accountKeeper AccountKeeper) (sdk.Coins, error) // DeductFeeDecorator deducts fees from the fee payer. The fee payer is the fee granter (if specified) or first signer of the tx. // If the fee payer does not have the funds to pay for the fees, return an InsufficientFunds error. @@ -58,7 +58,7 @@ func (dfd DeductFeeDecorator) ValidateTx(ctx context.Context, tx sdk.Tx) error { var err error fee := feeTx.GetFee() if txService.ExecMode(ctx) != transaction.ExecModeSimulate { - fee, err = dfd.txFeeChecker(ctx, tx) + fee, err = dfd.txFeeChecker(ctx, tx, dfd.accountKeeper) if err != nil { return err } diff --git a/x/auth/ante/validator_tx_fee.go b/x/auth/ante/validator_tx_fee.go index 46df31032d17..cbc4cf3f78ad 100644 --- a/x/auth/ante/validator_tx_fee.go +++ b/x/auth/ante/validator_tx_fee.go @@ -1,6 +1,9 @@ package ante import ( + "context" + + "cosmossdk.io/core/transaction" errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" @@ -10,7 +13,7 @@ import ( // checkTxFeeWithValidatorMinGasPrices implements the default fee logic, where the minimum price per // unit of gas is fixed and set by each validator. -func checkTxFeeWithValidatorMinGasPrices(ctx sdk.Context, tx sdk.Tx) (sdk.Coins, error) { +func checkTxFeeWithValidatorMinGasPrices(ctx context.Context, tx sdk.Tx, accountKeeper AccountKeeper) (sdk.Coins, error) { feeTx, ok := tx.(sdk.FeeTx) if !ok { return nil, errorsmod.Wrap(sdkerrors.ErrTxDecode, "Tx must be a FeeTx") @@ -19,11 +22,13 @@ func checkTxFeeWithValidatorMinGasPrices(ctx sdk.Context, tx sdk.Tx) (sdk.Coins, feeCoins := feeTx.GetFee() gas := feeTx.GetGas() + gasService := accountKeeper.Environment().GasService + txService := accountKeeper.Environment().TransactionService // Ensure that the provided fees meet a minimum threshold for the validator, // if this is a CheckTx. This is only for local mempool purposes, and thus // is only ran on check tx. - if ctx.ExecMode() == sdk.ExecModeCheck { - minGasPrices := ctx.MinGasPrices() + if txService.ExecMode(ctx) == transaction.ExecModeCheck { + minGasPrices := gasService.MinGasPrices(ctx) if !minGasPrices.IsZero() { requiredFees := make(sdk.Coins, len(minGasPrices)) From 6820d524d8d3d4c75001b707a3f8ce86bfcfffd7 Mon Sep 17 00:00:00 2001 From: likhita-809 Date: Wed, 10 Apr 2024 16:21:00 +0530 Subject: [PATCH 3/4] fix few tests --- server/v2/stf/core_gas_service.go | 4 + .../ante/testutil/expected_keepers_mocks.go | 15 ++++ x/feegrant/expected_keepers.go | 5 ++ x/feegrant/testutil/expected_keepers_mocks.go | 89 ++++++++++++++++--- 4 files changed, 100 insertions(+), 13 deletions(-) diff --git a/server/v2/stf/core_gas_service.go b/server/v2/stf/core_gas_service.go index a669f8e12341..1e92b6045627 100644 --- a/server/v2/stf/core_gas_service.go +++ b/server/v2/stf/core_gas_service.go @@ -32,3 +32,7 @@ func (g gasService) WithGasMeter(ctx context.Context, meter gas.Meter) context.C func (g gasService) WithBlockGasMeter(ctx context.Context, meter gas.Meter) context.Context { panic("unimplemented") } + +func (g gasService) MinGasPrices(ctx context.Context) gas.DecCoins { + panic("unimplemented") +} diff --git a/x/auth/ante/testutil/expected_keepers_mocks.go b/x/auth/ante/testutil/expected_keepers_mocks.go index 091ae6477359..1e1667d0f4b0 100644 --- a/x/auth/ante/testutil/expected_keepers_mocks.go +++ b/x/auth/ante/testutil/expected_keepers_mocks.go @@ -9,6 +9,7 @@ import ( reflect "reflect" address "cosmossdk.io/core/address" + appmodule "cosmossdk.io/core/appmodule" types "cosmossdk.io/x/auth/types" types0 "github.com/cosmos/cosmos-sdk/types" gomock "github.com/golang/mock/gomock" @@ -51,6 +52,20 @@ func (mr *MockAccountKeeperMockRecorder) AddressCodec() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddressCodec", reflect.TypeOf((*MockAccountKeeper)(nil).AddressCodec)) } +// Environment mocks base method. +func (m *MockAccountKeeper) Environment() appmodule.Environment { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Environment") + ret0, _ := ret[0].(appmodule.Environment) + return ret0 +} + +// Environment indicates an expected call of Environment. +func (mr *MockAccountKeeperMockRecorder) Environment() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Environment", reflect.TypeOf((*MockAccountKeeper)(nil).Environment)) +} + // GetAccount mocks base method. func (m *MockAccountKeeper) GetAccount(ctx context.Context, addr types0.AccAddress) types0.AccountI { m.ctrl.T.Helper() diff --git a/x/feegrant/expected_keepers.go b/x/feegrant/expected_keepers.go index ce6a2d0a5698..006f747520fe 100644 --- a/x/feegrant/expected_keepers.go +++ b/x/feegrant/expected_keepers.go @@ -4,12 +4,16 @@ import ( "context" "cosmossdk.io/core/address" + "cosmossdk.io/x/auth/ante" + authtypes "cosmossdk.io/x/auth/types" sdk "github.com/cosmos/cosmos-sdk/types" ) // AccountKeeper defines the expected auth Account Keeper (noalias) type AccountKeeper interface { + ante.AccountKeeper + AddressCodec() address.Codec GetModuleAddress(moduleName string) sdk.AccAddress @@ -22,6 +26,7 @@ type AccountKeeper interface { // BankKeeper defines the expected supply Keeper (noalias) type BankKeeper interface { + authtypes.BankKeeper SpendableCoins(ctx context.Context, addr sdk.AccAddress) sdk.Coins SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error } diff --git a/x/feegrant/testutil/expected_keepers_mocks.go b/x/feegrant/testutil/expected_keepers_mocks.go index d7567b8266d3..ceb6d8a42b6b 100644 --- a/x/feegrant/testutil/expected_keepers_mocks.go +++ b/x/feegrant/testutil/expected_keepers_mocks.go @@ -9,7 +9,9 @@ import ( reflect "reflect" address "cosmossdk.io/core/address" - types "github.com/cosmos/cosmos-sdk/types" + appmodule "cosmossdk.io/core/appmodule" + types "cosmossdk.io/x/auth/types" + types0 "github.com/cosmos/cosmos-sdk/types" gomock "github.com/golang/mock/gomock" ) @@ -50,11 +52,25 @@ func (mr *MockAccountKeeperMockRecorder) AddressCodec() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddressCodec", reflect.TypeOf((*MockAccountKeeper)(nil).AddressCodec)) } +// Environment mocks base method. +func (m *MockAccountKeeper) Environment() appmodule.Environment { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Environment") + ret0, _ := ret[0].(appmodule.Environment) + return ret0 +} + +// Environment indicates an expected call of Environment. +func (mr *MockAccountKeeperMockRecorder) Environment() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Environment", reflect.TypeOf((*MockAccountKeeper)(nil).Environment)) +} + // GetAccount mocks base method. -func (m *MockAccountKeeper) GetAccount(ctx context.Context, addr types.AccAddress) types.AccountI { +func (m *MockAccountKeeper) GetAccount(ctx context.Context, addr types0.AccAddress) types0.AccountI { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetAccount", ctx, addr) - ret0, _ := ret[0].(types.AccountI) + ret0, _ := ret[0].(types0.AccountI) return ret0 } @@ -65,10 +81,10 @@ func (mr *MockAccountKeeperMockRecorder) GetAccount(ctx, addr interface{}) *gomo } // GetModuleAccount mocks base method. -func (m *MockAccountKeeper) GetModuleAccount(ctx context.Context, moduleName string) types.ModuleAccountI { +func (m *MockAccountKeeper) GetModuleAccount(ctx context.Context, moduleName string) types0.ModuleAccountI { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetModuleAccount", ctx, moduleName) - ret0, _ := ret[0].(types.ModuleAccountI) + ret0, _ := ret[0].(types0.ModuleAccountI) return ret0 } @@ -79,10 +95,10 @@ func (mr *MockAccountKeeperMockRecorder) GetModuleAccount(ctx, moduleName interf } // GetModuleAddress mocks base method. -func (m *MockAccountKeeper) GetModuleAddress(moduleName string) types.AccAddress { +func (m *MockAccountKeeper) GetModuleAddress(moduleName string) types0.AccAddress { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetModuleAddress", moduleName) - ret0, _ := ret[0].(types.AccAddress) + ret0, _ := ret[0].(types0.AccAddress) return ret0 } @@ -92,11 +108,25 @@ func (mr *MockAccountKeeperMockRecorder) GetModuleAddress(moduleName interface{} return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetModuleAddress", reflect.TypeOf((*MockAccountKeeper)(nil).GetModuleAddress), moduleName) } +// GetParams mocks base method. +func (m *MockAccountKeeper) GetParams(ctx context.Context) types.Params { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetParams", ctx) + ret0, _ := ret[0].(types.Params) + return ret0 +} + +// GetParams indicates an expected call of GetParams. +func (mr *MockAccountKeeperMockRecorder) GetParams(ctx interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetParams", reflect.TypeOf((*MockAccountKeeper)(nil).GetParams), ctx) +} + // NewAccountWithAddress mocks base method. -func (m *MockAccountKeeper) NewAccountWithAddress(ctx context.Context, addr types.AccAddress) types.AccountI { +func (m *MockAccountKeeper) NewAccountWithAddress(ctx context.Context, addr types0.AccAddress) types0.AccountI { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "NewAccountWithAddress", ctx, addr) - ret0, _ := ret[0].(types.AccountI) + ret0, _ := ret[0].(types0.AccountI) return ret0 } @@ -107,7 +137,7 @@ func (mr *MockAccountKeeperMockRecorder) NewAccountWithAddress(ctx, addr interfa } // SetAccount mocks base method. -func (m *MockAccountKeeper) SetAccount(ctx context.Context, acc types.AccountI) { +func (m *MockAccountKeeper) SetAccount(ctx context.Context, acc types0.AccountI) { m.ctrl.T.Helper() m.ctrl.Call(m, "SetAccount", ctx, acc) } @@ -141,8 +171,41 @@ func (m *MockBankKeeper) EXPECT() *MockBankKeeperMockRecorder { return m.recorder } +// IsSendEnabledCoins mocks base method. +func (m *MockBankKeeper) IsSendEnabledCoins(ctx context.Context, coins ...types0.Coin) error { + m.ctrl.T.Helper() + varargs := []interface{}{ctx} + for _, a := range coins { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "IsSendEnabledCoins", varargs...) + ret0, _ := ret[0].(error) + return ret0 +} + +// IsSendEnabledCoins indicates an expected call of IsSendEnabledCoins. +func (mr *MockBankKeeperMockRecorder) IsSendEnabledCoins(ctx interface{}, coins ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{ctx}, coins...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsSendEnabledCoins", reflect.TypeOf((*MockBankKeeper)(nil).IsSendEnabledCoins), varargs...) +} + +// SendCoins mocks base method. +func (m *MockBankKeeper) SendCoins(ctx context.Context, from, to types0.AccAddress, amt types0.Coins) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SendCoins", ctx, from, to, amt) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendCoins indicates an expected call of SendCoins. +func (mr *MockBankKeeperMockRecorder) SendCoins(ctx, from, to, amt interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendCoins", reflect.TypeOf((*MockBankKeeper)(nil).SendCoins), ctx, from, to, amt) +} + // SendCoinsFromAccountToModule mocks base method. -func (m *MockBankKeeper) SendCoinsFromAccountToModule(ctx context.Context, senderAddr types.AccAddress, recipientModule string, amt types.Coins) error { +func (m *MockBankKeeper) SendCoinsFromAccountToModule(ctx context.Context, senderAddr types0.AccAddress, recipientModule string, amt types0.Coins) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SendCoinsFromAccountToModule", ctx, senderAddr, recipientModule, amt) ret0, _ := ret[0].(error) @@ -156,10 +219,10 @@ func (mr *MockBankKeeperMockRecorder) SendCoinsFromAccountToModule(ctx, senderAd } // SpendableCoins mocks base method. -func (m *MockBankKeeper) SpendableCoins(ctx context.Context, addr types.AccAddress) types.Coins { +func (m *MockBankKeeper) SpendableCoins(ctx context.Context, addr types0.AccAddress) types0.Coins { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "SpendableCoins", ctx, addr) - ret0, _ := ret[0].(types.Coins) + ret0, _ := ret[0].(types0.Coins) return ret0 } From 72123468e3d6757f4dc1627ec27b91c0f92de4de Mon Sep 17 00:00:00 2001 From: likhita-809 Date: Wed, 10 Apr 2024 16:37:58 +0530 Subject: [PATCH 4/4] fix more tests --- contrib/images/simd-env/Dockerfile | 1 - core/go.mod | 4 ++-- core/go.sum | 9 ++++----- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/contrib/images/simd-env/Dockerfile b/contrib/images/simd-env/Dockerfile index 85442cfc1d82..9b8e1bdf3548 100644 --- a/contrib/images/simd-env/Dockerfile +++ b/contrib/images/simd-env/Dockerfile @@ -23,7 +23,6 @@ COPY x/mint/go.mod x/mint/go.sum /work/x/mint/ COPY x/accounts/go.mod x/accounts/go.sum /work/x/accounts/ COPY runtime/v2/go.mod runtime/v2/go.sum /work/runtime/v2/ COPY server/v2/appmanager/go.mod server/v2/appmanager/go.sum /work/server/v2/appmanager/ -COPY server/v2/core/go.mod server/v2/core/go.sum /work/server/v2/core/ COPY server/v2/stf/go.mod server/v2/stf/go.sum /work/server/v2/stf/ RUN go mod download diff --git a/core/go.mod b/core/go.mod index c996733a843a..b6b9040f3a86 100644 --- a/core/go.mod +++ b/core/go.mod @@ -4,6 +4,7 @@ go 1.21 require ( cosmossdk.io/log v1.3.1 + cosmossdk.io/math v1.3.0 github.com/cosmos/gogoproto v1.4.12 github.com/stretchr/testify v1.9.0 google.golang.org/grpc v1.63.2 @@ -13,7 +14,7 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/pkg/errors v0.9.1 // indirect @@ -25,6 +26,5 @@ require ( golang.org/x/sys v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect - gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/core/go.sum b/core/go.sum index e362ba793403..fc11873b065f 100644 --- a/core/go.sum +++ b/core/go.sum @@ -1,5 +1,7 @@ cosmossdk.io/log v1.3.1 h1:UZx8nWIkfbbNEWusZqzAx3ZGvu54TZacWib3EzUYmGI= cosmossdk.io/log v1.3.1/go.mod h1:2/dIomt8mKdk6vl3OWJcPk2be3pGOS8OQaLUM/3/tCM= +cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= +cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= @@ -9,11 +11,8 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= @@ -22,12 +21,10 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/ github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= @@ -59,3 +56,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=