diff --git a/protocol/app/middleware/middleware.go b/protocol/app/middleware/middleware.go index d663ec4cf0..82a80628d6 100644 --- a/protocol/app/middleware/middleware.go +++ b/protocol/app/middleware/middleware.go @@ -2,11 +2,12 @@ package middleware import ( "fmt" - "github.com/cosmos/cosmos-sdk/types/module" "os" "runtime/debug" "strings" + "github.com/cosmos/cosmos-sdk/types/module" + "cosmossdk.io/log" "github.com/cosmos/cosmos-sdk/baseapp" kitlog "github.com/go-kit/log" @@ -28,8 +29,11 @@ func NewRunTxPanicLoggingMiddleware(moduleBasics module.BasicManager) baseapp.Re keyvals = append(keyvals, fullModuleName, "true") } } + if err, isError := recoveryObj.(error); isError { + keyvals = append(keyvals, "error", err) + } - keyvals = append(keyvals, "stack trace", stack) + keyvals = append(keyvals, "stack_trace", stack) Logger.Error( fmt.Sprintf( diff --git a/protocol/app/process/process_proposal.go b/protocol/app/process/process_proposal.go index 8b4b61690a..d75842851e 100644 --- a/protocol/app/process/process_proposal.go +++ b/protocol/app/process/process_proposal.go @@ -1,10 +1,11 @@ package process import ( - "cosmossdk.io/log" + "time" + "github.com/dydxprotocol/v4-chain/protocol/lib" error_lib "github.com/dydxprotocol/v4-chain/protocol/lib/error" - "time" + "github.com/dydxprotocol/v4-chain/protocol/lib/log" abci "github.com/cometbft/cometbft/abci/types" "github.com/cosmos/cosmos-sdk/client" @@ -58,26 +59,29 @@ func ProcessProposalHandler( currentConsensusRound += 1 } ctx = ctx.WithValue(ConsensusRound, currentConsensusRound) - logger := ctx.Logger().With(log.ModuleKey, ModuleName) + ctx = log.AddPersistentTagsToLogger( + ctx, + log.Module, ModuleName, + ) // Perform the update of smoothed prices here to ensure that smoothed prices are updated even if a block is later // rejected by consensus. We want smoothed prices to be updated on fixed cadence, and we are piggybacking on // consensus round to do so. if err := pricesKeeper.UpdateSmoothedPrices(ctx, lib.Uint64LinearInterpolate); err != nil { recordErrorMetricsWithLabel(metrics.UpdateSmoothedPrices) - error_lib.LogErrorWithOptionalContext(logger, "UpdateSmoothedPrices failed", err) + error_lib.LogErrorWithOptionalContext(ctx, "UpdateSmoothedPrices failed", err) } txs, err := DecodeProcessProposalTxs(ctx, txConfig.TxDecoder(), req, bridgeKeeper, pricesKeeper) if err != nil { - error_lib.LogErrorWithOptionalContext(logger, "DecodeProcessProposalTxs failed", err) + error_lib.LogErrorWithOptionalContext(ctx, "DecodeProcessProposalTxs failed", err) recordErrorMetricsWithLabel(metrics.Decode) return &abci.ResponseProcessProposal{Status: abci.ResponseProcessProposal_REJECT}, nil } err = txs.Validate() if err != nil { - error_lib.LogErrorWithOptionalContext(logger, "DecodeProcessProposalTxs.Validate failed", err) + error_lib.LogErrorWithOptionalContext(ctx, "DecodeProcessProposalTxs.Validate failed", err) recordErrorMetricsWithLabel(metrics.Validate) return &abci.ResponseProcessProposal{Status: abci.ResponseProcessProposal_REJECT}, nil } diff --git a/protocol/app/upgrades/v3.0.0/upgrade.go b/protocol/app/upgrades/v3.0.0/upgrade.go index 0da76f3435..6489f0cd1c 100644 --- a/protocol/app/upgrades/v3.0.0/upgrade.go +++ b/protocol/app/upgrades/v3.0.0/upgrade.go @@ -18,6 +18,7 @@ import ( icahosttypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/types" icatypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/types" ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" bridgemoduletypes "github.com/dydxprotocol/v4-chain/protocol/x/bridge/types" clobmoduletypes "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" rewardsmoduletypes "github.com/dydxprotocol/v4-chain/protocol/x/rewards/types" @@ -156,7 +157,7 @@ func CreateUpgradeHandler( ak authkeeper.AccountKeeper, ) upgradetypes.UpgradeHandler { return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - sdkCtx := sdk.UnwrapSDKContext(ctx) + sdkCtx := lib.UnwrapSDKContext(ctx, "app/upgrades") sdkCtx.Logger().Info("Running %s Upgrade...", UpgradeName) InitializeModuleAccs(sdkCtx, ak) diff --git a/protocol/app/upgrades/v4.0.0/upgrade.go b/protocol/app/upgrades/v4.0.0/upgrade.go index 5e6e368826..bc76446967 100644 --- a/protocol/app/upgrades/v4.0.0/upgrade.go +++ b/protocol/app/upgrades/v4.0.0/upgrade.go @@ -5,8 +5,8 @@ import ( "fmt" upgradetypes "cosmossdk.io/x/upgrade/types" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + "github.com/dydxprotocol/v4-chain/protocol/lib" ratelimitkeeper "github.com/dydxprotocol/v4-chain/protocol/x/ratelimit/keeper" ratelimittypes "github.com/dydxprotocol/v4-chain/protocol/x/ratelimit/types" @@ -18,7 +18,7 @@ func CreateUpgradeHandler( rateLimitKeepr ratelimitkeeper.Keeper, ) upgradetypes.UpgradeHandler { return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - sdkCtx := sdk.UnwrapSDKContext(ctx) + sdkCtx := lib.UnwrapSDKContext(ctx, "app/upgrades") sdkCtx.Logger().Info(fmt.Sprintf("Running %s Upgrade...", UpgradeName)) if err := rateLimitKeepr.SetLimitParams( diff --git a/protocol/indexer/off_chain_updates/off_chain_updates.go b/protocol/indexer/off_chain_updates/off_chain_updates.go index 9a83dcd7c6..cfca80ef2e 100644 --- a/protocol/indexer/off_chain_updates/off_chain_updates.go +++ b/protocol/indexer/off_chain_updates/off_chain_updates.go @@ -5,26 +5,22 @@ import ( "errors" "fmt" - "cosmossdk.io/log" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/dydxprotocol/v4-chain/protocol/indexer/common" "github.com/dydxprotocol/v4-chain/protocol/indexer/msgsender" v1 "github.com/dydxprotocol/v4-chain/protocol/indexer/protocol/v1" "github.com/dydxprotocol/v4-chain/protocol/indexer/shared" + "github.com/dydxprotocol/v4-chain/protocol/lib/log" clobtypes "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" satypes "github.com/dydxprotocol/v4-chain/protocol/x/subaccounts/types" ) -const ( - hashErrMsg = "Cannot hash order id." - createErrMsg = "Cannot create message." -) - // MustCreateOrderPlaceMessage invokes CreateOrderPlaceMessage and panics if creation was unsuccessful. func MustCreateOrderPlaceMessage( - logger log.Logger, + ctx sdk.Context, order clobtypes.Order, ) msgsender.Message { - msg, ok := CreateOrderPlaceMessage(logger, order) + msg, ok := CreateOrderPlaceMessage(ctx, order) if !ok { panic(fmt.Errorf("Unable to create place order message for order %+v", order)) } @@ -33,21 +29,30 @@ func MustCreateOrderPlaceMessage( // CreateOrderPlaceMessage creates an off-chain update message for an order. func CreateOrderPlaceMessage( - logger log.Logger, + ctx sdk.Context, order clobtypes.Order, ) (message msgsender.Message, success bool) { errMessage := "Error creating off-chain update message for placing order." - errDetails := fmt.Sprintf("Order: %+v", order) orderIdHash, err := GetOrderIdHash(order.OrderId) if err != nil { - logger.Error(fmt.Sprintf("%s %s Err: %+v %s\n", errMessage, hashErrMsg, err, errDetails)) + log.ErrorLogWithError( + ctx, + errMessage, + err, + log.Order, order, + ) return msgsender.Message{}, false } update, err := newOrderPlaceMessage(order) if err != nil { - logger.Error(fmt.Sprintf("%s %s Err: %+v %s\n", errMessage, createErrMsg, err, errDetails)) + log.ErrorLogWithError( + ctx, + errMessage, + err, + log.Order, order, + ) return msgsender.Message{}, false } @@ -56,11 +61,11 @@ func CreateOrderPlaceMessage( // MustCreateOrderUpdateMessage invokes CreateOrderUpdateMessage and panics if creation was unsuccessful. func MustCreateOrderUpdateMessage( - logger log.Logger, + ctx sdk.Context, orderId clobtypes.OrderId, totalFilled satypes.BaseQuantums, ) msgsender.Message { - msg, ok := CreateOrderUpdateMessage(logger, orderId, totalFilled) + msg, ok := CreateOrderUpdateMessage(ctx, orderId, totalFilled) if !ok { panic(fmt.Errorf("Unable to create place order message for order id %+v", orderId)) } @@ -68,24 +73,34 @@ func MustCreateOrderUpdateMessage( } // CreateOrderUpdateMessage creates an off-chain update message for an order being updated. -// TODO(CLOB-1051) take in ctx, not logger func CreateOrderUpdateMessage( - logger log.Logger, + ctx sdk.Context, orderId clobtypes.OrderId, totalFilled satypes.BaseQuantums, ) (message msgsender.Message, success bool) { errMessage := "Error creating off-chain update message for updating order." - errDetails := fmt.Sprintf("OrderId: %+v, TotalFilled %+v", orderId, totalFilled) orderIdHash, err := GetOrderIdHash(orderId) if err != nil { - logger.Error(fmt.Sprintf("%s %s Err: %+v %s\n", errMessage, hashErrMsg, err, errDetails)) + log.ErrorLogWithError( + ctx, + errMessage, + err, + log.OrderId, orderId, + log.TotalFilled, totalFilled, + ) return msgsender.Message{}, false } update, err := newOrderUpdateMessage(orderId, totalFilled) if err != nil { - logger.Error(fmt.Sprintf("%s %s Err: %+v %s\n", errMessage, createErrMsg, err, errDetails)) + log.ErrorLogWithError( + ctx, + errMessage, + err, + log.OrderId, orderId, + log.TotalFilled, totalFilled, + ) return msgsender.Message{}, false } @@ -95,12 +110,12 @@ func CreateOrderUpdateMessage( // MustCreateOrderRemoveMessageWithReason invokes CreateOrderRemoveMessageWithReason and panics if creation was // unsuccessful. func MustCreateOrderRemoveMessageWithReason( - logger log.Logger, + ctx sdk.Context, orderId clobtypes.OrderId, reason shared.OrderRemovalReason, removalStatus OrderRemoveV1_OrderRemovalStatus, ) msgsender.Message { - msg, ok := CreateOrderRemoveMessageWithReason(logger, orderId, reason, removalStatus) + msg, ok := CreateOrderRemoveMessageWithReason(ctx, orderId, reason, removalStatus) if !ok { panic(fmt.Errorf("Unable to create remove order message with reason for order id %+v", orderId)) } @@ -110,28 +125,36 @@ func MustCreateOrderRemoveMessageWithReason( // CreateOrderRemoveMessageWithReason creates an off-chain update message for an order being removed // with a specific reason for the removal and the resulting removal status of the removed order. func CreateOrderRemoveMessageWithReason( - logger log.Logger, + ctx sdk.Context, orderId clobtypes.OrderId, reason shared.OrderRemovalReason, removalStatus OrderRemoveV1_OrderRemovalStatus, ) (message msgsender.Message, success bool) { errMessage := "Error creating off-chain update message for removing order." - errDetails := fmt.Sprintf( - "OrderId: %+v, Reason %d, Removal status %d", - orderId, - reason, - removalStatus, - ) orderIdHash, err := GetOrderIdHash(orderId) if err != nil { - logger.Error(fmt.Sprintf("%s %s Err: %+v %s\n", errMessage, hashErrMsg, err, errDetails)) + log.ErrorLogWithError( + ctx, + errMessage, + err, + log.OrderId, orderId, + log.Reason, reason, + log.RemovalStatus, removalStatus, + ) return msgsender.Message{}, false } update, err := newOrderRemoveMessage(orderId, reason, removalStatus) if err != nil { - logger.Error(fmt.Sprintf("%s %s Err: %+v %s\n", errMessage, createErrMsg, err, errDetails)) + log.ErrorLogWithError( + ctx, + errMessage, + err, + log.OrderId, orderId, + log.Reason, reason, + log.RemovalStatus, removalStatus, + ) return msgsender.Message{}, false } @@ -139,13 +162,14 @@ func CreateOrderRemoveMessageWithReason( } // MustCreateOrderRemoveMessage invokes CreateOrderRemoveMessage and panics if creation was unsuccessful. -func MustCreateOrderRemoveMessage(logger log.Logger, +func MustCreateOrderRemoveMessage( + ctx sdk.Context, orderId clobtypes.OrderId, orderStatus clobtypes.OrderStatus, orderError error, removalStatus OrderRemoveV1_OrderRemovalStatus, ) msgsender.Message { - msg, ok := CreateOrderRemoveMessage(logger, orderId, orderStatus, orderError, removalStatus) + msg, ok := CreateOrderRemoveMessage(ctx, orderId, orderStatus, orderError, removalStatus) if !ok { panic(fmt.Errorf("Unable to create remove order message for order id %+v", orderId)) } @@ -155,32 +179,25 @@ func MustCreateOrderRemoveMessage(logger log.Logger, // CreateOrderRemoveMessage creates an off-chain update message for an order being removed, with the // order's status and the resulting removal status of the removed order. func CreateOrderRemoveMessage( - logger log.Logger, + ctx sdk.Context, orderId clobtypes.OrderId, orderStatus clobtypes.OrderStatus, orderError error, removalStatus OrderRemoveV1_OrderRemovalStatus, ) (message msgsender.Message, success bool) { - errDetails := fmt.Sprintf( - "OrderId: %+v, Removal status %d", - orderId, - removalStatus, - ) - reason, err := shared.GetOrderRemovalReason(orderStatus, orderError) if err != nil { - logger.Error( - fmt.Sprintf( - "Error creating off-chain update message for removing order. Invalid order removal "+ - "reason. Error: %+v %s\n", - err, - errDetails, - ), + log.ErrorLogWithError( + ctx, + "Error creating off-chain update message for removing order. Invalid order removal reason.", + err, + log.OrderId, orderId, + log.RemovalStatus, removalStatus, ) return msgsender.Message{}, false } - return CreateOrderRemoveMessageWithReason(logger, orderId, reason, removalStatus) + return CreateOrderRemoveMessageWithReason(ctx, orderId, reason, removalStatus) } // CreateOrderRemoveMessageWithDefaultReason creates an off-chain update message for an order being @@ -189,7 +206,7 @@ func CreateOrderRemoveMessage( // and falls back to the defaultRemovalReason. If defaultRemovalReason is ...UNSPECIFIED, it panics. // TODO(CLOB-1051) take in ctx, not logger func CreateOrderRemoveMessageWithDefaultReason( - logger log.Logger, + ctx sdk.Context, orderId clobtypes.OrderId, orderStatus clobtypes.OrderStatus, orderError error, @@ -204,26 +221,20 @@ func CreateOrderRemoveMessageWithDefaultReason( ), ) } - errDetails := fmt.Sprintf( - "OrderId: %+v, Removal status %d", - orderId, - removalStatus, - ) reason, err := shared.GetOrderRemovalReason(orderStatus, orderError) if err != nil { - logger.Error( - fmt.Sprintf( - "Error creating off-chain update message for removing order. Invalid order removal "+ - "reason. Error: %+v %s\n", - err, - errDetails, - ), + log.ErrorLogWithError( + ctx, + "Error creating off-chain update message for removing order. Invalid order removal reason.", + err, + log.OrderId, orderId, + log.RemovalStatus, removalStatus, ) reason = defaultRemovalReason } - return CreateOrderRemoveMessageWithReason(logger, orderId, reason, removalStatus) + return CreateOrderRemoveMessageWithReason(ctx, orderId, reason, removalStatus) } // newOrderPlaceMessage returns an `OffChainUpdate` struct populated with an `OrderPlace` struct diff --git a/protocol/indexer/off_chain_updates/off_chain_updates_test.go b/protocol/indexer/off_chain_updates/off_chain_updates_test.go index c40c4833c5..e45f730162 100644 --- a/protocol/indexer/off_chain_updates/off_chain_updates_test.go +++ b/protocol/indexer/off_chain_updates/off_chain_updates_test.go @@ -6,20 +6,19 @@ import ( errorsmod "cosmossdk.io/errors" - "cosmossdk.io/log" "github.com/cosmos/gogoproto/proto" "github.com/dydxprotocol/v4-chain/protocol/indexer/msgsender" v1 "github.com/dydxprotocol/v4-chain/protocol/indexer/protocol/v1" "github.com/dydxprotocol/v4-chain/protocol/indexer/shared" "github.com/dydxprotocol/v4-chain/protocol/mocks" "github.com/dydxprotocol/v4-chain/protocol/testutil/constants" + "github.com/dydxprotocol/v4-chain/protocol/testutil/sdk" clobtypes "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" satypes "github.com/dydxprotocol/v4-chain/protocol/x/subaccounts/types" "github.com/stretchr/testify/require" ) var ( - noopLogger = log.NewNopLogger() orderIdHash = constants.OrderIdHash_Alice_Number0_Id0 order = constants.Order_Alice_Num0_Id0_Clob0_Buy5_Price10_GTB15 indexerOrder = v1.OrderToIndexerOrder(constants.Order_Alice_Num0_Id0_Clob0_Buy5_Price10_GTB15) @@ -66,8 +65,9 @@ var ( ) func TestCreateOrderPlaceMessage(t *testing.T) { + ctx, _, _ := sdk.NewSdkContextWithMultistore() actualMessage, success := CreateOrderPlaceMessage( - noopLogger, + ctx, order, ) require.True(t, success) @@ -82,7 +82,9 @@ func TestCreateOrderPlaceMessage(t *testing.T) { } func TestCreateOrderUpdateMessage(t *testing.T) { - actualMessage, success := CreateOrderUpdateMessage(noopLogger, order.OrderId, totalFilledAmount) + ctx, _, _ := sdk.NewSdkContextWithMultistore() + + actualMessage, success := CreateOrderUpdateMessage(ctx, order.OrderId, totalFilledAmount) require.True(t, success) updateBytes, err := proto.Marshal(&offchainUpdateOrderUpdate) @@ -95,8 +97,10 @@ func TestCreateOrderUpdateMessage(t *testing.T) { } func TestCreateOrderRemoveWithReason(t *testing.T) { + ctx, _, _ := sdk.NewSdkContextWithMultistore() + actualMessage, success := CreateOrderRemoveMessage( - noopLogger, + ctx, order.OrderId, orderStatus, orderError, @@ -114,6 +118,8 @@ func TestCreateOrderRemoveWithReason(t *testing.T) { } func TestCreateOrderRemoveMessageWithDefaultReason_HappyPath(t *testing.T) { + ctx, _, _ := sdk.NewSdkContextWithMultistore() + require.NotEqual( t, offchainUpdateOrderRemove.GetOrderRemove().Reason, @@ -121,7 +127,7 @@ func TestCreateOrderRemoveMessageWithDefaultReason_HappyPath(t *testing.T) { "defaultRemovalReason must be different than expectedMessage's removal reason for test to "+ "be valid & useful.") actualMessage, success := CreateOrderRemoveMessageWithDefaultReason( - noopLogger, + ctx, order.OrderId, orderStatus, orderError, @@ -140,8 +146,9 @@ func TestCreateOrderRemoveMessageWithDefaultReason_HappyPath(t *testing.T) { } func TestCreateOrderRemoveMessageWithDefaultReason_DefaultReasonReturned(t *testing.T) { + ctx, _, _ := sdk.NewSdkContextWithMultistore() actualMessage, success := CreateOrderRemoveMessageWithDefaultReason( - noopLogger, + ctx, order.OrderId, clobtypes.Success, orderError, @@ -160,12 +167,14 @@ func TestCreateOrderRemoveMessageWithDefaultReason_DefaultReasonReturned(t *test } func TestCreateOrderRemoveMessageWithDefaultReason_InvalidDefault(t *testing.T) { + ctx, _, _ := sdk.NewSdkContextWithMultistore() + require.PanicsWithError( t, "Invalid parameter: defaultRemovalReason cannot be OrderRemove_ORDER_REMOVAL_REASON_UNSPECIFIED", func() { CreateOrderRemoveMessageWithDefaultReason( - noopLogger, + ctx, order.OrderId, clobtypes.Success, orderError, @@ -177,8 +186,10 @@ func TestCreateOrderRemoveMessageWithDefaultReason_InvalidDefault(t *testing.T) } func TestCreateOrderRemoveWithReasonMessage(t *testing.T) { + ctx, _, _ := sdk.NewSdkContextWithMultistore() + actualMessage, success := CreateOrderRemoveMessageWithReason( - noopLogger, + ctx, order.OrderId, reason, status, diff --git a/protocol/lib/error/logging.go b/protocol/lib/error/logging.go index 256fd6f43e..aaceccb9d4 100644 --- a/protocol/lib/error/logging.go +++ b/protocol/lib/error/logging.go @@ -4,9 +4,6 @@ import ( "errors" "fmt" - "cosmossdk.io/log" - "github.com/dydxprotocol/v4-chain/protocol/lib/metrics" - sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -18,10 +15,11 @@ const ( // the LogContextualizer interface. This method is appropriate for logging errors that may or may not be wrapped // in an ErrorWithLogContext. func LogErrorWithOptionalContext( - logger log.Logger, + ctx sdk.Context, msg string, err error, ) { + logger := ctx.Logger() var logContextualizer LogContextualizer if ok := errors.As(err, &logContextualizer); ok { logger = logContextualizer.AddLoggingContext(logger) @@ -40,18 +38,3 @@ func WrapErrorWithSourceModuleContext(err error, module string) error { return NewErrorWithLogContext(err). WithLogKeyValue(SourceModuleKey, fmt.Sprintf("x/%v", module)) } - -// LogDeliverTxError logs an error, appending the block height and ABCI callback to the error message. -func LogDeliverTxError(logger log.Logger, err error, blockHeight int64, handler string, msg sdk.Msg) { - if err != nil { - logger.Error( - err.Error(), - metrics.BlockHeight, blockHeight, - metrics.Handler, handler, - metrics.Callback, metrics.DeliverTx, - metrics.Msg, msg, - ) - } else { - logger.Error("LogErrorWithBlockHeight called with nil error") - } -} diff --git a/protocol/lib/error/logging_test.go b/protocol/lib/error/logging_test.go index c832cfef66..3a5edc1e46 100644 --- a/protocol/lib/error/logging_test.go +++ b/protocol/lib/error/logging_test.go @@ -6,21 +6,22 @@ import ( liberror "github.com/dydxprotocol/v4-chain/protocol/lib/error" "github.com/dydxprotocol/v4-chain/protocol/mocks" - "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" - "github.com/stretchr/testify/mock" + "github.com/dydxprotocol/v4-chain/protocol/testutil/sdk" ) func TestWrapErrorWithSourceModuleContext_ErrorWithLogContext(t *testing.T) { err := fmt.Errorf("test error") wrappedErr := liberror.WrapErrorWithSourceModuleContext(err, "test-module") logger := &mocks.Logger{} + ctx, _, _ := sdk.NewSdkContextWithMultistore() + ctx = ctx.WithLogger(logger) // Expect that source module context will be added to the logger, // and then the original error will be logged. call := logger.On("With", liberror.SourceModuleKey, "x/test-module").Return(logger) logger.On("Error", "test message", "error", err).Return().NotBefore(call) - liberror.LogErrorWithOptionalContext(logger, "test message", wrappedErr) + liberror.LogErrorWithOptionalContext(ctx, "test message", wrappedErr) logger.AssertExpectations(t) } @@ -28,41 +29,13 @@ func TestWrapErrorWithSourceModuleContext_ErrorWithLogContext(t *testing.T) { func TestLogErrorWithOptionalContext_PlainError(t *testing.T) { logger := &mocks.Logger{} err := fmt.Errorf("test error") + ctx, _, _ := sdk.NewSdkContextWithMultistore() + ctx = ctx.WithLogger(logger) // Plain error messages will be logged without any additional context. logger.On("Error", "test message", "error", err).Return() - liberror.LogErrorWithOptionalContext(logger, "test message", err) - - logger.AssertExpectations(t) -} - -func TestLogDeliverTxError(t *testing.T) { - logger := &mocks.Logger{} - err := fmt.Errorf("test error") - - // Expect that the block height will be appended to the error message. - logger.On( - "Error", - []interface{}{ - "test error", - mock.Anything, mock.Anything, mock.Anything, mock.Anything, - mock.Anything, mock.Anything, mock.Anything, mock.Anything, - }..., - ).Return() - - liberror.LogDeliverTxError(logger, err, 123, "foobar", &types.MsgCancelOrder{}) - - logger.AssertExpectations(t) -} - -func TestLogDeliverTxError_NilError(t *testing.T) { - logger := &mocks.Logger{} - - // Expect that the block height will be appended to the error message. - logger.On("Error", "LogErrorWithBlockHeight called with nil error").Return() - - liberror.LogDeliverTxError(logger, nil, 123, "foobar", &types.MsgCancelOrder{}) + liberror.LogErrorWithOptionalContext(ctx, "test message", err) logger.AssertExpectations(t) } diff --git a/protocol/lib/log/constants.go b/protocol/lib/log/constants.go index d2efe0bd41..39f9f419e4 100644 --- a/protocol/lib/log/constants.go +++ b/protocol/lib/log/constants.go @@ -31,6 +31,9 @@ const ( Proposer = "proposer" PrunableBlockHeight = "prunable_block_height" StatusCode = "status_code" + Reason = "reason" + RemovalStatus = "removal_status" + TotalFilled = "total_filled" OrderSizeOptimisticallyFilledFromMatchingQuantums = "order_size_optimistically_filled_from_matching_quantums" NewLocalValidatorOperationsQueue = "new_local_validator_operations_queue" diff --git a/protocol/testutil/memclob/offchain_updates.go b/protocol/testutil/memclob/offchain_updates.go index 22fbc6b7e6..dde67044a9 100644 --- a/protocol/testutil/memclob/offchain_updates.go +++ b/protocol/testutil/memclob/offchain_updates.go @@ -25,7 +25,7 @@ func RequireCancelOrderOffchainUpdate( func RequireCancelOrderMessage(t *testing.T, ctx sdk.Context, message *msgsender.Message, orderId types.OrderId) { expectedMessage, _ := off_chain_updates.CreateOrderRemoveMessageWithReason( - ctx.Logger(), + ctx, orderId, indexershared.OrderRemovalReason_ORDER_REMOVAL_REASON_USER_CANCELED, off_chain_updates.OrderRemoveV1_ORDER_REMOVAL_STATUS_BEST_EFFORT_CANCELED, diff --git a/protocol/x/assets/keeper/grpc_query_asset.go b/protocol/x/assets/keeper/grpc_query_asset.go index 41c5d0d4fb..cedb2bde1c 100644 --- a/protocol/x/assets/keeper/grpc_query_asset.go +++ b/protocol/x/assets/keeper/grpc_query_asset.go @@ -5,8 +5,8 @@ import ( "fmt" "cosmossdk.io/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/assets/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -22,7 +22,7 @@ func (k Keeper) AllAssets( } var assets []types.Asset - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) store := ctx.KVStore(k.storeKey) assetStore := prefix.NewStore(store, []byte(types.AssetKeyPrefix)) @@ -48,7 +48,7 @@ func (k Keeper) Asset(c context.Context, req *types.QueryAssetRequest) (*types.Q if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) val, exists := k.GetAsset( ctx, diff --git a/protocol/x/blocktime/keeper/grpc_query.go b/protocol/x/blocktime/keeper/grpc_query.go index b4cfb2aa6a..0cd62b5e2e 100644 --- a/protocol/x/blocktime/keeper/grpc_query.go +++ b/protocol/x/blocktime/keeper/grpc_query.go @@ -3,7 +3,7 @@ package keeper import ( "context" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/blocktime/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -22,7 +22,7 @@ func (k Keeper) DowntimeParams( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) params := k.GetDowntimeParams(ctx) return &types.QueryDowntimeParamsResponse{ Params: params, @@ -40,7 +40,7 @@ func (k Keeper) PreviousBlockInfo( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) info := k.GetPreviousBlockInfo(ctx) return &types.QueryPreviousBlockInfoResponse{ Info: &info, @@ -58,7 +58,7 @@ func (k Keeper) AllDowntimeInfo( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) info := k.GetAllDowntimeInfo(ctx) return &types.QueryAllDowntimeInfoResponse{ Info: info, diff --git a/protocol/x/blocktime/keeper/msg_server.go b/protocol/x/blocktime/keeper/msg_server.go index f05f8c4e06..e4cac712c7 100644 --- a/protocol/x/blocktime/keeper/msg_server.go +++ b/protocol/x/blocktime/keeper/msg_server.go @@ -5,9 +5,8 @@ import ( errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/blocktime/types" ) @@ -35,7 +34,7 @@ func (k msgServer) UpdateDowntimeParams( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if err := k.SetDowntimeParams(ctx, msg.Params); err != nil { return nil, err } diff --git a/protocol/x/blocktime/module.go b/protocol/x/blocktime/module.go index ea5894459a..a6605aa4b0 100644 --- a/protocol/x/blocktime/module.go +++ b/protocol/x/blocktime/module.go @@ -15,6 +15,7 @@ import ( cdctypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/blocktime/client/cli" "github.com/dydxprotocol/v4-chain/protocol/x/blocktime/keeper" "github.com/dydxprotocol/v4-chain/protocol/x/blocktime/types" @@ -146,14 +147,15 @@ func (AppModule) ConsensusVersion() uint64 { return 1 } // BeginBlock executes all ABCI BeginBlock logic respective to the blocktime module. func (am AppModule) BeginBlock(ctx context.Context) error { - am.keeper.UpdateAllDowntimeInfo(sdk.UnwrapSDKContext(ctx)) + sdkCtx := lib.UnwrapSDKContext(ctx, types.ModuleName) + am.keeper.UpdateAllDowntimeInfo(sdkCtx) return nil } // EndBlock executes all ABCI EndBlock logic respective to the blocktime module. It // returns no validator updates. func (am AppModule) EndBlock(ctx context.Context) error { - sdkCtx := sdk.UnwrapSDKContext(ctx) + sdkCtx := lib.UnwrapSDKContext(ctx, types.ModuleName) am.keeper.SetPreviousBlockInfo(sdkCtx, &types.BlockInfo{ Height: uint32(sdkCtx.BlockHeight()), Timestamp: sdkCtx.BlockTime(), diff --git a/protocol/x/bridge/keeper/grpc_query.go b/protocol/x/bridge/keeper/grpc_query.go index e8de5d22e6..73a77549b8 100644 --- a/protocol/x/bridge/keeper/grpc_query.go +++ b/protocol/x/bridge/keeper/grpc_query.go @@ -3,7 +3,7 @@ package keeper import ( "context" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/bridge/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -23,7 +23,7 @@ func (k Keeper) EventParams( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) params := k.GetEventParams(ctx) return &types.QueryEventParamsResponse{ Params: params, @@ -42,7 +42,7 @@ func (k Keeper) ProposeParams( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) params := k.GetProposeParams(ctx) return &types.QueryProposeParamsResponse{ Params: params, @@ -61,7 +61,7 @@ func (k Keeper) SafetyParams( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) params := k.GetSafetyParams(ctx) return &types.QuerySafetyParamsResponse{ Params: params, @@ -80,7 +80,7 @@ func (k Keeper) AcknowledgedEventInfo( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) acknowledgedEventInfo := k.GetAcknowledgedEventInfo(ctx) return &types.QueryAcknowledgedEventInfoResponse{ Info: acknowledgedEventInfo, @@ -104,7 +104,7 @@ func (k Keeper) RecognizedEventInfo( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) acknowledgedEventInfo := k.GetAcknowledgedEventInfo(ctx) recognizedEventInfo := k.bridgeEventManager.GetRecognizedEventInfo() @@ -130,7 +130,7 @@ func (k Keeper) DelayedCompleteBridgeMessages( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) return &types.QueryDelayedCompleteBridgeMessagesResponse{ Messages: k.GetDelayedCompleteBridgeMessages(ctx, req.Address), }, nil diff --git a/protocol/x/bridge/keeper/msg_server_acknowledge_bridges.go b/protocol/x/bridge/keeper/msg_server_acknowledge_bridges.go index 79d12f39a4..4d34255fb3 100644 --- a/protocol/x/bridge/keeper/msg_server_acknowledge_bridges.go +++ b/protocol/x/bridge/keeper/msg_server_acknowledge_bridges.go @@ -3,7 +3,7 @@ package keeper import ( "context" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/bridge/types" ) @@ -13,7 +13,7 @@ func (k msgServer) AcknowledgeBridges( goCtx context.Context, msg *types.MsgAcknowledgeBridges, ) (*types.MsgAcknowledgeBridgesResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if err := k.Keeper.AcknowledgeBridges(ctx, msg.Events); err != nil { return nil, err diff --git a/protocol/x/bridge/keeper/msg_server_complete_bridge.go b/protocol/x/bridge/keeper/msg_server_complete_bridge.go index b78e04bab6..5551544c56 100644 --- a/protocol/x/bridge/keeper/msg_server_complete_bridge.go +++ b/protocol/x/bridge/keeper/msg_server_complete_bridge.go @@ -4,7 +4,7 @@ import ( "context" errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/bridge/types" ) @@ -21,7 +21,7 @@ func (k msgServer) CompleteBridge( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if err := k.Keeper.CompleteBridge(ctx, msg.Event); err != nil { return nil, err diff --git a/protocol/x/bridge/keeper/msg_server_update_event_params.go b/protocol/x/bridge/keeper/msg_server_update_event_params.go index 303625d7ad..fa64508a4a 100644 --- a/protocol/x/bridge/keeper/msg_server_update_event_params.go +++ b/protocol/x/bridge/keeper/msg_server_update_event_params.go @@ -4,7 +4,7 @@ import ( "context" errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/bridge/types" ) @@ -21,7 +21,7 @@ func (k msgServer) UpdateEventParams( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if err := k.Keeper.UpdateEventParams(ctx, msg.Params); err != nil { return nil, err diff --git a/protocol/x/bridge/keeper/msg_server_update_propose_params.go b/protocol/x/bridge/keeper/msg_server_update_propose_params.go index 923e9be895..67412f8815 100644 --- a/protocol/x/bridge/keeper/msg_server_update_propose_params.go +++ b/protocol/x/bridge/keeper/msg_server_update_propose_params.go @@ -4,7 +4,7 @@ import ( "context" errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/bridge/types" ) @@ -21,7 +21,7 @@ func (k msgServer) UpdateProposeParams( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if err := k.Keeper.UpdateProposeParams(ctx, msg.Params); err != nil { return nil, err diff --git a/protocol/x/bridge/keeper/msg_server_update_safety_params.go b/protocol/x/bridge/keeper/msg_server_update_safety_params.go index 269d552f4b..39e0c81975 100644 --- a/protocol/x/bridge/keeper/msg_server_update_safety_params.go +++ b/protocol/x/bridge/keeper/msg_server_update_safety_params.go @@ -4,7 +4,7 @@ import ( "context" errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/bridge/types" ) @@ -21,7 +21,7 @@ func (k msgServer) UpdateSafetyParams( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if err := k.Keeper.UpdateSafetyParams(ctx, msg.Params); err != nil { return nil, err diff --git a/protocol/x/clob/e2e/long_term_orders_test.go b/protocol/x/clob/e2e/long_term_orders_test.go index 12f333b6e7..4930376a36 100644 --- a/protocol/x/clob/e2e/long_term_orders_test.go +++ b/protocol/x/clob/e2e/long_term_orders_test.go @@ -546,7 +546,7 @@ func TestPlaceLongTermOrder(t *testing.T) { // Order update message, note order place messages are skipped for stateful orders expectedOffchainMessagesAfterBlock: []msgsender.Message{ off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, LongTermPlaceOrder_Alice_Num0_Id0_Clob0_Buy1_Price50000_GTBT5.Order.OrderId, 0, ), @@ -656,14 +656,14 @@ func TestPlaceLongTermOrder(t *testing.T) { // Short term order placement results in Create and Update with 0 fill amount expectedOffchainMessagesCheckTx: []msgsender.Message{ off_chain_updates.MustCreateOrderPlaceMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id0_Clob0_Sell1_Price50000_GTB20.Order, ).AddHeader(msgsender.MessageHeader{ Key: msgsender.TransactionHashHeaderKey, Value: tmhash.Sum(CheckTx_PlaceOrder_Bob_Num0_Id0_Sell1_Price50000_GTB20.Tx), }), off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id0_Clob0_Sell1_Price50000_GTB20.Order.OrderId, 0, ).AddHeader(msgsender.MessageHeader{ @@ -676,13 +676,13 @@ func TestPlaceLongTermOrder(t *testing.T) { expectedOffchainMessagesAfterBlock: []msgsender.Message{ // maker off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id0_Clob0_Sell1_Price50000_GTB20.Order.OrderId, PlaceOrder_Bob_Num0_Id0_Clob0_Sell1_Price50000_GTB20.Order.GetBaseQuantums(), ), // taker off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, LongTermPlaceOrder_Alice_Num0_Id0_Clob0_Buy1_Price50000_GTBT5.Order.OrderId, LongTermPlaceOrder_Alice_Num0_Id0_Clob0_Buy1_Price50000_GTBT5.Order.GetBaseQuantums(), ), @@ -847,14 +847,14 @@ func TestPlaceLongTermOrder(t *testing.T) { }, expectedOffchainMessagesCheckTx: []msgsender.Message{ off_chain_updates.MustCreateOrderPlaceMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id0_Clob0_Sell1_Price50000_GTB20.Order, ).AddHeader(msgsender.MessageHeader{ Key: msgsender.TransactionHashHeaderKey, Value: tmhash.Sum(CheckTx_PlaceOrder_Bob_Num0_Id0_Sell1_Price50000_GTB20.Tx), }), off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id0_Clob0_Sell1_Price50000_GTB20.Order.OrderId, 0, ).AddHeader(msgsender.MessageHeader{ @@ -865,7 +865,7 @@ func TestPlaceLongTermOrder(t *testing.T) { expectedOffchainMessagesAfterBlock: []msgsender.Message{ // post-only shouldn't match and will have 0 fill size in update message off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, LongTermPlaceOrder_Alice_Num0_Id0_Clob0_Buy10_Price49999_GTBT15_PO.Order.OrderId, 0, ), @@ -979,14 +979,14 @@ func TestPlaceLongTermOrder(t *testing.T) { // Short term order placement results in Create and Update with 0 fill amount expectedOffchainMessagesCheckTx: []msgsender.Message{ off_chain_updates.MustCreateOrderPlaceMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id0_Clob0_Sell1_Price50000_GTB20.Order, ).AddHeader(msgsender.MessageHeader{ Key: msgsender.TransactionHashHeaderKey, Value: tmhash.Sum(CheckTx_PlaceOrder_Bob_Num0_Id0_Sell1_Price50000_GTB20.Tx), }), off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id0_Clob0_Sell1_Price50000_GTB20.Order.OrderId, 0, ).AddHeader(msgsender.MessageHeader{ @@ -997,13 +997,13 @@ func TestPlaceLongTermOrder(t *testing.T) { expectedOffchainMessagesAfterBlock: []msgsender.Message{ // maker fully filled off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id0_Clob0_Sell1_Price50000_GTB20.Order.OrderId, PlaceOrder_Bob_Num0_Id0_Clob0_Sell1_Price50000_GTB20.Order.GetBaseQuantums(), ), // taker, partially filled off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, LongTermPlaceOrder_Alice_Num0_Id0_Clob0_Buy2_Price50000_GTBT5.Order.OrderId, PlaceOrder_Bob_Num0_Id0_Clob0_Sell1_Price50000_GTB20.Order.GetBaseQuantums(), ), @@ -1041,7 +1041,7 @@ func TestPlaceLongTermOrder(t *testing.T) { // attempt to replay the stateful order in PrepareCheckState after advancing the block, fill amount // will stay constant off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, LongTermPlaceOrder_Alice_Num0_Id0_Clob0_Buy2_Price50000_GTBT5.Order.OrderId, PlaceOrder_Bob_Num0_Id0_Clob0_Sell1_Price50000_GTB20.Order.GetBaseQuantums(), ), @@ -1171,14 +1171,14 @@ func TestPlaceLongTermOrder(t *testing.T) { // taker and maker expectedOffchainMessagesCheckTx: []msgsender.Message{ off_chain_updates.MustCreateOrderPlaceMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id1_Clob0_Sell1_Price50000_GTB20.Order, ).AddHeader(msgsender.MessageHeader{ Key: msgsender.TransactionHashHeaderKey, Value: tmhash.Sum(CheckTx_PlaceOrder_Bob_Num0_Id1_Sell1_Price50000_GTB20.Tx), }), off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, LongTermPlaceOrder_Alice_Num0_Id0_Clob0_Buy2_Price50000_GTBT5.Order.OrderId, LongTermPlaceOrder_Alice_Num0_Id0_Clob0_Buy2_Price50000_GTBT5.Order.GetBaseQuantums(), ).AddHeader(msgsender.MessageHeader{ @@ -1186,7 +1186,7 @@ func TestPlaceLongTermOrder(t *testing.T) { Value: tmhash.Sum(CheckTx_PlaceOrder_Bob_Num0_Id1_Sell1_Price50000_GTB20.Tx), }), off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id1_Clob0_Sell1_Price50000_GTB20.Order.OrderId, PlaceOrder_Bob_Num0_Id1_Clob0_Sell1_Price50000_GTB20.Order.GetBaseQuantums(), ).AddHeader(msgsender.MessageHeader{ @@ -1547,13 +1547,13 @@ func TestRegression_InvalidTimeInForce(t *testing.T) { expectedOffchainMessagesAfterBlock: []msgsender.Message{ // maker off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, LongTermPlaceOrder_Bob_Num0_Id0_Clob0_Sell1_Price50000_GTB20.Order.OrderId, LongTermPlaceOrder_Bob_Num0_Id0_Clob0_Sell1_Price50000_GTB20.Order.GetBaseQuantums(), ), // taker off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, Invalid_TIF_LongTermPlaceOrder_Alice_Num0_Id0_Clob0_Buy1_Price50000_GTBT5.Order.OrderId, Invalid_TIF_LongTermPlaceOrder_Alice_Num0_Id0_Clob0_Buy1_Price50000_GTBT5.Order.GetBaseQuantums(), ), diff --git a/protocol/x/clob/e2e/short_term_orders_test.go b/protocol/x/clob/e2e/short_term_orders_test.go index f8c985338c..fb11ae827a 100644 --- a/protocol/x/clob/e2e/short_term_orders_test.go +++ b/protocol/x/clob/e2e/short_term_orders_test.go @@ -68,14 +68,14 @@ func TestPlaceOrder(t *testing.T) { orders: []clobtypes.MsgPlaceOrder{PlaceOrder_Alice_Num0_Id0_Clob0_Buy5_Price10_GTB20}, expectedOffchainMessagesAfterPlaceOrder: []msgsender.Message{ off_chain_updates.MustCreateOrderPlaceMessage( - nil, + ctx, PlaceOrder_Alice_Num0_Id0_Clob0_Buy5_Price10_GTB20.Order, ).AddHeader(msgsender.MessageHeader{ Key: msgsender.TransactionHashHeaderKey, Value: tmhash.Sum(CheckTx_PlaceOrder_Alice_Num0_Id0_Buy5_Price10_GTB20.Tx), }), off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Alice_Num0_Id0_Clob0_Buy5_Price10_GTB20.Order.OrderId, 0, ).AddHeader(msgsender.MessageHeader{ @@ -100,14 +100,14 @@ func TestPlaceOrder(t *testing.T) { }, expectedOffchainMessagesAfterPlaceOrder: []msgsender.Message{ off_chain_updates.MustCreateOrderPlaceMessage( - nil, + ctx, PlaceOrder_Alice_Num0_Id0_Clob0_Buy5_Price10_GTB20.Order, ).AddHeader(msgsender.MessageHeader{ Key: msgsender.TransactionHashHeaderKey, Value: tmhash.Sum(CheckTx_PlaceOrder_Alice_Num0_Id0_Buy5_Price10_GTB20.Tx), }), off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Alice_Num0_Id0_Clob0_Buy5_Price10_GTB20.Order.OrderId, 0, ).AddHeader(msgsender.MessageHeader{ @@ -115,14 +115,14 @@ func TestPlaceOrder(t *testing.T) { Value: tmhash.Sum(CheckTx_PlaceOrder_Alice_Num0_Id0_Buy5_Price10_GTB20.Tx), }), off_chain_updates.MustCreateOrderPlaceMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id0_Clob0_Sell5_Price10_GTB20.Order, ).AddHeader(msgsender.MessageHeader{ Key: msgsender.TransactionHashHeaderKey, Value: tmhash.Sum(CheckTx_PlaceOrder_Bob_Num0_Id0_Sell5_Price10_GTB20.Tx), }), off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Alice_Num0_Id0_Clob0_Buy5_Price10_GTB20.Order.OrderId, PlaceOrder_Alice_Num0_Id0_Clob0_Buy5_Price10_GTB20.Order.GetBaseQuantums(), ).AddHeader(msgsender.MessageHeader{ @@ -130,7 +130,7 @@ func TestPlaceOrder(t *testing.T) { Value: tmhash.Sum(CheckTx_PlaceOrder_Bob_Num0_Id0_Sell5_Price10_GTB20.Tx), }), off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id0_Clob0_Sell5_Price10_GTB20.Order.OrderId, PlaceOrder_Bob_Num0_Id0_Clob0_Sell5_Price10_GTB20.Order.GetBaseQuantums(), ).AddHeader(msgsender.MessageHeader{ @@ -252,14 +252,14 @@ func TestPlaceOrder(t *testing.T) { }, expectedOffchainMessagesAfterPlaceOrder: []msgsender.Message{ off_chain_updates.MustCreateOrderPlaceMessage( - nil, + ctx, PlaceOrder_Alice_Num0_Id0_Clob0_Buy6_Price10_GTB20.Order, ).AddHeader(msgsender.MessageHeader{ Key: msgsender.TransactionHashHeaderKey, Value: tmhash.Sum(CheckTx_PlaceOrder_Alice_Num0_Id0_Buy6_Price10_GTB20.Tx), }), off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Alice_Num0_Id0_Clob0_Buy6_Price10_GTB20.Order.OrderId, 0, ).AddHeader(msgsender.MessageHeader{ @@ -267,14 +267,14 @@ func TestPlaceOrder(t *testing.T) { Value: tmhash.Sum(CheckTx_PlaceOrder_Alice_Num0_Id0_Buy6_Price10_GTB20.Tx), }), off_chain_updates.MustCreateOrderPlaceMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id0_Clob0_Sell5_Price10_GTB20.Order, ).AddHeader(msgsender.MessageHeader{ Key: msgsender.TransactionHashHeaderKey, Value: tmhash.Sum(CheckTx_PlaceOrder_Bob_Num0_Id0_Sell5_Price10_GTB20.Tx), }), off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Alice_Num0_Id0_Clob0_Buy6_Price10_GTB20.Order.OrderId, PlaceOrder_Bob_Num0_Id0_Clob0_Sell5_Price10_GTB20.Order.GetBaseQuantums(), ).AddHeader(msgsender.MessageHeader{ @@ -282,7 +282,7 @@ func TestPlaceOrder(t *testing.T) { Value: tmhash.Sum(CheckTx_PlaceOrder_Bob_Num0_Id0_Sell5_Price10_GTB20.Tx), }), off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id0_Clob0_Sell5_Price10_GTB20.Order.OrderId, PlaceOrder_Bob_Num0_Id0_Clob0_Sell5_Price10_GTB20.Order.GetBaseQuantums(), ).AddHeader(msgsender.MessageHeader{ @@ -292,7 +292,7 @@ func TestPlaceOrder(t *testing.T) { }, expectedOffchainMessagesInNextBlock: []msgsender.Message{ off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Alice_Num0_Id0_Clob0_Buy6_Price10_GTB20.Order.OrderId, PlaceOrder_Bob_Num0_Id0_Clob0_Sell5_Price10_GTB20.Order.GetBaseQuantums(), ), @@ -411,14 +411,14 @@ func TestPlaceOrder(t *testing.T) { }, expectedOffchainMessagesAfterPlaceOrder: []msgsender.Message{ off_chain_updates.MustCreateOrderPlaceMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id0_Clob0_Sell5_Price10_GTB20.Order, ).AddHeader(msgsender.MessageHeader{ Key: msgsender.TransactionHashHeaderKey, Value: tmhash.Sum(CheckTx_PlaceOrder_Bob_Num0_Id0_Sell5_Price10_GTB20.Tx), }), off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id0_Clob0_Sell5_Price10_GTB20.Order.OrderId, 0, ).AddHeader(msgsender.MessageHeader{ @@ -426,14 +426,14 @@ func TestPlaceOrder(t *testing.T) { Value: tmhash.Sum(CheckTx_PlaceOrder_Bob_Num0_Id0_Sell5_Price10_GTB20.Tx), }), off_chain_updates.MustCreateOrderPlaceMessage( - nil, + ctx, PlaceOrder_Alice_Num0_Id0_Clob0_Buy6_Price10_GTB20.Order, ).AddHeader(msgsender.MessageHeader{ Key: msgsender.TransactionHashHeaderKey, Value: tmhash.Sum(CheckTx_PlaceOrder_Alice_Num0_Id0_Buy6_Price10_GTB20.Tx), }), off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Bob_Num0_Id0_Clob0_Sell5_Price10_GTB20.Order.OrderId, PlaceOrder_Bob_Num0_Id0_Clob0_Sell5_Price10_GTB20.Order.GetBaseQuantums(), ).AddHeader(msgsender.MessageHeader{ @@ -441,7 +441,7 @@ func TestPlaceOrder(t *testing.T) { Value: tmhash.Sum(CheckTx_PlaceOrder_Alice_Num0_Id0_Buy6_Price10_GTB20.Tx), }), off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Alice_Num0_Id0_Clob0_Buy6_Price10_GTB20.Order.OrderId, PlaceOrder_Bob_Num0_Id0_Clob0_Sell5_Price10_GTB20.Order.GetBaseQuantums(), ).AddHeader(msgsender.MessageHeader{ @@ -451,7 +451,7 @@ func TestPlaceOrder(t *testing.T) { }, expectedOffchainMessagesInNextBlock: []msgsender.Message{ off_chain_updates.MustCreateOrderUpdateMessage( - nil, + ctx, PlaceOrder_Alice_Num0_Id0_Clob0_Buy6_Price10_GTB20.Order.OrderId, PlaceOrder_Bob_Num0_Id0_Clob0_Sell5_Price10_GTB20.Order.GetBaseQuantums(), ), diff --git a/protocol/x/clob/keeper/orders.go b/protocol/x/clob/keeper/orders.go index 0c42a75fec..e796917c54 100644 --- a/protocol/x/clob/keeper/orders.go +++ b/protocol/x/clob/keeper/orders.go @@ -480,7 +480,7 @@ func (k Keeper) PlaceStatefulOrdersFromLastBlock( // In this case, Indexer could be learning of this order for the first // time with this removal. if message, success := off_chain_updates.CreateOrderRemoveMessageWithDefaultReason( - k.Logger(ctx), + ctx, order.OrderId, orderStatus, err, diff --git a/protocol/x/clob/keeper/process_single_match.go b/protocol/x/clob/keeper/process_single_match.go index 6180caae6e..8a74c90dd2 100644 --- a/protocol/x/clob/keeper/process_single_match.go +++ b/protocol/x/clob/keeper/process_single_match.go @@ -544,7 +544,7 @@ func (k Keeper) setOrderFillAmountsAndPruning( if _, exists := k.MemClob.GetOrder(ctx, order.OrderId); exists { // Generate an off-chain update message updating the total filled amount of order. if message, success := off_chain_updates.CreateOrderUpdateMessage( - k.Logger(ctx), + ctx, order.OrderId, newTotalFillAmount, ); success { diff --git a/protocol/x/clob/memclob/memclob.go b/protocol/x/clob/memclob/memclob.go index 2336b1c1b1..3f6679cf26 100644 --- a/protocol/x/clob/memclob/memclob.go +++ b/protocol/x/clob/memclob/memclob.go @@ -125,7 +125,7 @@ func (m *MemClobPriceTimePriority) CancelOrder( offchainUpdates = types.NewOffchainUpdates() if m.generateOffchainUpdates { if message, success := off_chain_updates.CreateOrderRemoveMessageWithReason( - m.clobKeeper.Logger(ctx), + ctx, orderIdToCancel, indexershared.OrderRemovalReason_ORDER_REMOVAL_REASON_USER_CANCELED, off_chain_updates.OrderRemoveV1_ORDER_REMOVAL_STATUS_BEST_EFFORT_CANCELED, @@ -461,7 +461,7 @@ func (m *MemClobPriceTimePriority) PlaceOrder( orderId := order.OrderId if _, found := m.openOrders.getOrder(ctx, orderId); found { if message, success := off_chain_updates.CreateOrderRemoveMessageWithReason( - m.clobKeeper.Logger(ctx), + ctx, orderId, indexershared.OrderRemovalReason_ORDER_REMOVAL_REASON_REPLACED, off_chain_updates.OrderRemoveV1_ORDER_REMOVAL_STATUS_BEST_EFFORT_CANCELED, @@ -470,7 +470,7 @@ func (m *MemClobPriceTimePriority) PlaceOrder( } } if message, success := off_chain_updates.CreateOrderPlaceMessage( - m.clobKeeper.Logger(ctx), + ctx, order, ); success { offchainUpdates.AddPlaceMessage(order.OrderId, message) @@ -511,7 +511,7 @@ func (m *MemClobPriceTimePriority) PlaceOrder( // Send an off-chain update message indicating the order should be removed from the orderbook // on the Indexer. if message, success := off_chain_updates.CreateOrderRemoveMessage( - m.clobKeeper.Logger(ctx), + ctx, order.OrderId, takerOrderStatus.OrderStatus, err, @@ -533,7 +533,7 @@ func (m *MemClobPriceTimePriority) PlaceOrder( // Send an off-chain update message indicating the order should be removed from the orderbook // on the Indexer. if message, success := off_chain_updates.CreateOrderRemoveMessage( - m.clobKeeper.Logger(ctx), + ctx, order.OrderId, takerOrderStatus.OrderStatus, nil, @@ -563,7 +563,7 @@ func (m *MemClobPriceTimePriority) PlaceOrder( // during uncrossing. if m.generateOffchainUpdates { if message, success := off_chain_updates.CreateOrderUpdateMessage( - m.clobKeeper.Logger(ctx), + ctx, order.OrderId, order.GetBaseQuantums(), ); success { @@ -580,7 +580,7 @@ func (m *MemClobPriceTimePriority) PlaceOrder( // Send an off-chain update message indicating the order should be removed from the orderbook // on the Indexer. if message, success := off_chain_updates.CreateOrderRemoveMessage( - m.clobKeeper.Logger(ctx), + ctx, order.OrderId, orderStatus, nil, @@ -615,7 +615,7 @@ func (m *MemClobPriceTimePriority) PlaceOrder( // Send an off-chain update message indicating the order should be removed from the orderbook // on the Indexer. if message, success := off_chain_updates.CreateOrderRemoveMessage( - m.clobKeeper.Logger(ctx), + ctx, order.OrderId, addOrderOrderStatus, nil, @@ -652,7 +652,7 @@ func (m *MemClobPriceTimePriority) PlaceOrder( // the total filled size of the order (size of order - remaining size). if m.generateOffchainUpdates { if message, success := off_chain_updates.CreateOrderUpdateMessage( - m.clobKeeper.Logger(ctx), + ctx, order.OrderId, order.GetBaseQuantums()-remainingSize, ); success { @@ -788,7 +788,7 @@ func (m *MemClobPriceTimePriority) matchOrder( makerOrderWithRemovalReason.RemovalReason, ) if message, success := off_chain_updates.CreateOrderRemoveMessageWithReason( - branchedContext.Logger(), + branchedContext, makerOrderId, reason, off_chain_updates.OrderRemoveV1_ORDER_REMOVAL_STATUS_BEST_EFFORT_CANCELED, @@ -1112,7 +1112,7 @@ func (m *MemClobPriceTimePriority) GenerateOffchainUpdatesForReplayPlaceOrder( // message for the order. if m.generateOffchainUpdates && off_chain_updates.ShouldSendOrderRemovalOnReplay(err) { if message, success := off_chain_updates.CreateOrderRemoveMessageWithDefaultReason( - m.clobKeeper.Logger(ctx), + ctx, orderId, orderStatus, err, @@ -1264,7 +1264,7 @@ func (m *MemClobPriceTimePriority) PurgeInvalidMemclobState( // orderbook on the Indexer. As the order is expired, the status of the order is canceled // and not best-effort-canceled. if message, success := off_chain_updates.CreateOrderRemoveMessageWithReason( - m.clobKeeper.Logger(ctx), + ctx, statefulOrderId, indexershared.OrderRemovalReason_ORDER_REMOVAL_REASON_EXPIRED, off_chain_updates.OrderRemoveV1_ORDER_REMOVAL_STATUS_CANCELED, @@ -1283,7 +1283,7 @@ func (m *MemClobPriceTimePriority) PurgeInvalidMemclobState( // orderbook on the Indexer. As the order is expired, the status of the order is canceled // and not best-effort-canceled. if message, success := off_chain_updates.CreateOrderRemoveMessageWithReason( - m.clobKeeper.Logger(ctx), + ctx, shortTermOrderId, indexershared.OrderRemovalReason_ORDER_REMOVAL_REASON_EXPIRED, off_chain_updates.OrderRemoveV1_ORDER_REMOVAL_STATUS_CANCELED, @@ -1971,7 +1971,7 @@ func (m *MemClobPriceTimePriority) mustUpdateOrderbookStateWithMatchedMakerOrder // Send an off-chain update message to the indexer to update the total filled size of the maker // order. if message, success := off_chain_updates.CreateOrderUpdateMessage( - m.clobKeeper.Logger(ctx), + ctx, makerOrder.OrderId, newTotalFilledAmount, ); success { @@ -2097,7 +2097,7 @@ func (m *MemClobPriceTimePriority) maybeCancelReduceOnlyOrders( } if m.generateOffchainUpdates { if message, success := off_chain_updates.CreateOrderRemoveMessageWithReason( - m.clobKeeper.Logger(ctx), + ctx, orderId, indexershared.OrderRemovalReason_ORDER_REMOVAL_REASON_REDUCE_ONLY_RESIZE, off_chain_updates.OrderRemoveV1_ORDER_REMOVAL_STATUS_BEST_EFFORT_CANCELED, diff --git a/protocol/x/clob/memclob/memclob_place_order_reduce_only_test.go b/protocol/x/clob/memclob/memclob_place_order_reduce_only_test.go index baafbdbb4d..3a2f4f184e 100644 --- a/protocol/x/clob/memclob/memclob_place_order_reduce_only_test.go +++ b/protocol/x/clob/memclob/memclob_place_order_reduce_only_test.go @@ -1372,6 +1372,7 @@ func TestPlaceOrder_ReduceOnly(t *testing.T) { // Verify the correct offchain update messages were returned. assertPlaceOrderOffchainMessages( t, + ctx, offchainUpdates, order, tc.placedMatchableOrders, @@ -1655,6 +1656,7 @@ func TestPlaceOrder_LongTermReduceOnlyRemovals(t *testing.T) { // Verify the correct offchain update messages were returned. assertPlaceOrderOffchainMessages( t, + ctx, offchainUpdates, order, tc.placedMatchableOrders, diff --git a/protocol/x/clob/memclob/memclob_place_order_test.go b/protocol/x/clob/memclob/memclob_place_order_test.go index 05ced24a1e..7c75444223 100644 --- a/protocol/x/clob/memclob/memclob_place_order_test.go +++ b/protocol/x/clob/memclob/memclob_place_order_test.go @@ -395,6 +395,7 @@ func TestPlaceOrder_AddOrderToOrderbook(t *testing.T) { // Verify the correct offchain update messages were returned. assertPlaceOrderOffchainMessages( t, + ctx, offchainUpdates, tc.order, tc.existingOrders, @@ -2291,6 +2292,7 @@ func TestPlaceOrder_MatchOrders_PreexistingMatches(t *testing.T) { // Verify the correct offchain update messages were returned. assertPlaceOrderOffchainMessages( t, + ctx, offchainUpdates, tc.order, tc.placedMatchableOrders, @@ -3286,6 +3288,7 @@ func TestPlaceOrder_PostOnly(t *testing.T) { // Verify the correct offchain update messages were returned. assertPlaceOrderOffchainMessages( t, + ctx, offchainUpdates, order, tc.placedMatchableOrders, @@ -3428,6 +3431,7 @@ func TestPlaceOrder_ImmediateOrCancel(t *testing.T) { // Verify the correct offchain update messages were returned. assertPlaceOrderOffchainMessages( t, + ctx, offchainUpdates, order, tc.placedMatchableOrders, @@ -4101,6 +4105,7 @@ func TestPlaceOrder_FillOrKill(t *testing.T) { assertPlaceOrderOffchainMessages( t, + ctx, offchainUpdates, order, tc.placedMatchableOrders, diff --git a/protocol/x/clob/memclob/memclob_place_perpetual_liquidation_test.go b/protocol/x/clob/memclob/memclob_place_perpetual_liquidation_test.go index af341c32cf..e389beae5d 100644 --- a/protocol/x/clob/memclob/memclob_place_perpetual_liquidation_test.go +++ b/protocol/x/clob/memclob/memclob_place_perpetual_liquidation_test.go @@ -553,6 +553,7 @@ func TestPlacePerpetualLiquidation_CollatCheckFailure(t *testing.T) { // Verify the correct offchain update messages were returned. assertPlacePerpetualLiquidationOffchainMessages( t, + ctx, offchainUpdates, tc.order, tc.placedMatchableOrders, diff --git a/protocol/x/clob/memclob/memclob_test_util.go b/protocol/x/clob/memclob/memclob_test_util.go index 722bc70818..57c8ff1696 100644 --- a/protocol/x/clob/memclob/memclob_test_util.go +++ b/protocol/x/clob/memclob/memclob_test_util.go @@ -6,7 +6,6 @@ import ( "math" "testing" - "cosmossdk.io/log" sdk "github.com/cosmos/cosmos-sdk/types" mapset "github.com/deckarep/golang-set/v2" "github.com/dydxprotocol/v4-chain/protocol/indexer/msgsender" @@ -1303,6 +1302,7 @@ func placeOrderAndVerifyExpectationsOperations( // non-success status func assertPlaceOrderOffchainMessages( t *testing.T, + ctx sdk.Context, offchainUpdates *types.OffchainUpdates, order types.Order, placedMatchableOrders []types.MatchableOrder, @@ -1315,7 +1315,6 @@ func assertPlaceOrderOffchainMessages( expectedCancelledReduceOnlyOrders []types.OrderId, expectedToReplaceOrder bool, ) { - noopLogger := log.NewNopLogger() actualOffchainMessages := offchainUpdates.GetMessages() expectedOffchainMessages := []msgsender.Message{} seenCancelledReduceOnlyOrders := mapset.NewSet[types.OrderId]() @@ -1324,7 +1323,7 @@ func assertPlaceOrderOffchainMessages( if expectedErr == nil || doesErrorProduceOffchainMessages(expectedErr) { if expectedToReplaceOrder { updateMessage := off_chain_updates.MustCreateOrderRemoveMessageWithReason( - noopLogger, + ctx, order.OrderId, indexershared.OrderRemovalReason_ORDER_REMOVAL_REASON_REPLACED, off_chain_updates.OrderRemoveV1_ORDER_REMOVAL_STATUS_BEST_EFFORT_CANCELED, @@ -1337,7 +1336,7 @@ func assertPlaceOrderOffchainMessages( } updateMessage := off_chain_updates.MustCreateOrderPlaceMessage( - noopLogger, + ctx, order, ) expectedOffchainMessages = append( @@ -1353,7 +1352,7 @@ func assertPlaceOrderOffchainMessages( // as the taker order. for _, orderId := range expectedCancelledReduceOnlyOrders { cancelMessage := off_chain_updates.MustCreateOrderRemoveMessageWithReason( - noopLogger, + ctx, orderId, indexershared.OrderRemovalReason_ORDER_REMOVAL_REASON_REDUCE_ONLY_RESIZE, off_chain_updates.OrderRemoveV1_ORDER_REMOVAL_STATUS_BEST_EFFORT_CANCELED, @@ -1382,7 +1381,7 @@ func assertPlaceOrderOffchainMessages( if subaccountFailures, exists := collatCheckFailures[i]; exists { if _, exists = subaccountFailures[matchOrder.OrderId.SubaccountId]; exists { updateMessage := off_chain_updates.MustCreateOrderRemoveMessageWithReason( - noopLogger, + ctx, matchOrder.OrderId, indexershared.OrderRemovalReason_ORDER_REMOVAL_REASON_UNDERCOLLATERALIZED, off_chain_updates.OrderRemoveV1_ORDER_REMOVAL_STATUS_BEST_EFFORT_CANCELED, @@ -1419,7 +1418,7 @@ func assertPlaceOrderOffchainMessages( } updateMessage := off_chain_updates.MustCreateOrderUpdateMessage( - noopLogger, + ctx, makerOrderId, totalFilled, ) @@ -1440,7 +1439,7 @@ func assertPlaceOrderOffchainMessages( continue } cancelMessage := off_chain_updates.MustCreateOrderRemoveMessageWithReason( - noopLogger, + ctx, orderId, indexershared.OrderRemovalReason_ORDER_REMOVAL_REASON_REDUCE_ONLY_RESIZE, off_chain_updates.OrderRemoveV1_ORDER_REMOVAL_STATUS_BEST_EFFORT_CANCELED, @@ -1456,7 +1455,7 @@ func assertPlaceOrderOffchainMessages( // message sent for it. if expectedErr == nil && expectedOrderStatus.IsSuccess() { updateMessage := off_chain_updates.MustCreateOrderUpdateMessage( - noopLogger, + ctx, order.OrderId, expectedTotalFilledSize, ) @@ -1472,7 +1471,7 @@ func assertPlaceOrderOffchainMessages( if doesErrorProduceOffchainMessages(expectedErr) || (expectedErr == nil && !expectedOrderStatus.IsSuccess() && expectedOrderStatus != types.ReduceOnlyResized) { updateMessage := off_chain_updates.MustCreateOrderRemoveMessage( - noopLogger, + ctx, order.OrderId, expectedOrderStatus, expectedErr, @@ -1492,6 +1491,7 @@ func assertPlaceOrderOffchainMessages( // were generated by a liquidation order. func assertPlacePerpetualLiquidationOffchainMessages( t *testing.T, + ctx sdk.Context, offchainUpdates *types.OffchainUpdates, liquidationOrder types.LiquidationOrder, placedMatchableOrders []types.MatchableOrder, @@ -1500,6 +1500,7 @@ func assertPlacePerpetualLiquidationOffchainMessages( ) { expectedOffchainMessages := getExpectedPlacePerpetualLiquidationOffchainMessages( t, + ctx, liquidationOrder, placedMatchableOrders, collatCheckFailures, @@ -1516,12 +1517,12 @@ func assertPlacePerpetualLiquidationOffchainMessages( // - `OrderUpdate` message generated for any maker orders that match with the liquidation order func getExpectedPlacePerpetualLiquidationOffchainMessages( t *testing.T, + ctx sdk.Context, liquidationOrder types.LiquidationOrder, placedMatchableOrders []types.MatchableOrder, collatCheckFailures map[int]map[satypes.SubaccountId]satypes.UpdateResult, expectedMatches []expectedMatch, ) []msgsender.Message { - noopLogger := log.NewNopLogger() expectedOffchainMessages := []msgsender.Message(nil) orderIdx := 0 @@ -1537,7 +1538,7 @@ func getExpectedPlacePerpetualLiquidationOffchainMessages( if order.OrderId.SubaccountId == liquidationOrder.GetSubaccountId() && doesLiquidationCrossOrder(liquidationOrder, order) { updateMessage := off_chain_updates.MustCreateOrderRemoveMessageWithReason( - noopLogger, + ctx, order.OrderId, indexershared.OrderRemovalReason_ORDER_REMOVAL_REASON_SELF_TRADE_ERROR, off_chain_updates.OrderRemoveV1_ORDER_REMOVAL_STATUS_BEST_EFFORT_CANCELED, @@ -1552,7 +1553,7 @@ func getExpectedPlacePerpetualLiquidationOffchainMessages( } else if subaccountFailures, exists := collatCheckFailures[orderIdx]; exists { if _, exists = subaccountFailures[order.OrderId.SubaccountId]; exists { updateMessage := off_chain_updates.MustCreateOrderRemoveMessageWithReason( - noopLogger, + ctx, order.OrderId, indexershared.OrderRemovalReason_ORDER_REMOVAL_REASON_UNDERCOLLATERALIZED, off_chain_updates.OrderRemoveV1_ORDER_REMOVAL_STATUS_BEST_EFFORT_CANCELED, @@ -1578,7 +1579,7 @@ func getExpectedPlacePerpetualLiquidationOffchainMessages( totalFilled := match.matchedQuantums updateMessage := off_chain_updates.MustCreateOrderUpdateMessage( - noopLogger, + ctx, makerOrderId, totalFilled, ) diff --git a/protocol/x/epochs/module.go b/protocol/x/epochs/module.go index 058dfd2cbf..03535e9248 100644 --- a/protocol/x/epochs/module.go +++ b/protocol/x/epochs/module.go @@ -147,8 +147,8 @@ func (AppModule) ConsensusVersion() uint64 { return 1 } // BeginBlock executes all ABCI BeginBlock logic respective to the epochs module. func (am AppModule) BeginBlock(ctx context.Context) error { - sdkCtx := lib.UnwrapSDKContext(ctx, types.ModuleName) defer telemetry.ModuleMeasureSince(am.Name(), time.Now(), telemetry.MetricKeyBeginBlocker) + sdkCtx := lib.UnwrapSDKContext(ctx, types.ModuleName) BeginBlocker(sdkCtx, am.keeper) return nil } diff --git a/protocol/x/feetiers/keeper/grpc_query.go b/protocol/x/feetiers/keeper/grpc_query.go index ba8ec0e0b3..f0fde6e447 100644 --- a/protocol/x/feetiers/keeper/grpc_query.go +++ b/protocol/x/feetiers/keeper/grpc_query.go @@ -3,7 +3,7 @@ package keeper import ( "context" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/feetiers/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -23,7 +23,7 @@ func (k Keeper) PerpetualFeeParams( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) params := k.GetPerpetualFeeParams(ctx) return &types.QueryPerpetualFeeParamsResponse{ Params: params, @@ -41,7 +41,7 @@ func (k Keeper) UserFeeTier( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) index, tier := k.getUserFeeTier(ctx, req.User) return &types.QueryUserFeeTierResponse{ Index: index, diff --git a/protocol/x/feetiers/keeper/msg_server.go b/protocol/x/feetiers/keeper/msg_server.go index cdd4c703d8..cde5a2950e 100644 --- a/protocol/x/feetiers/keeper/msg_server.go +++ b/protocol/x/feetiers/keeper/msg_server.go @@ -2,10 +2,11 @@ package keeper import ( "context" + errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/feetiers/types" ) @@ -33,7 +34,7 @@ func (k msgServer) UpdatePerpetualFeeParams( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if err := k.SetPerpetualFeeParams(ctx, msg.Params); err != nil { return nil, err } diff --git a/protocol/x/perpetuals/keeper/msg_server_update_perpetual_params.go b/protocol/x/perpetuals/keeper/msg_server_update_perpetual_params.go index 8fca986e6b..2de7e9bd42 100644 --- a/protocol/x/perpetuals/keeper/msg_server_update_perpetual_params.go +++ b/protocol/x/perpetuals/keeper/msg_server_update_perpetual_params.go @@ -4,8 +4,8 @@ import ( "context" errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/perpetuals/types" ) @@ -21,7 +21,7 @@ func (k msgServer) UpdatePerpetualParams( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) _, err := k.Keeper.ModifyPerpetual( ctx, diff --git a/protocol/x/rewards/keeper/grpc_query.go b/protocol/x/rewards/keeper/grpc_query.go index 911c750aee..8e7df67b70 100644 --- a/protocol/x/rewards/keeper/grpc_query.go +++ b/protocol/x/rewards/keeper/grpc_query.go @@ -3,7 +3,7 @@ package keeper import ( "context" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/rewards/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -15,7 +15,7 @@ func (k Keeper) Params(goCtx context.Context, req *types.QueryParamsRequest) (*t if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) return &types.QueryParamsResponse{Params: k.GetParams(ctx)}, nil } diff --git a/protocol/x/rewards/keeper/msg_server.go b/protocol/x/rewards/keeper/msg_server.go index a9e6d03540..33f9dd3fe5 100644 --- a/protocol/x/rewards/keeper/msg_server.go +++ b/protocol/x/rewards/keeper/msg_server.go @@ -2,10 +2,11 @@ package keeper import ( "context" + errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/rewards/types" ) @@ -33,7 +34,7 @@ func (k msgServer) UpdateParams( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if err := k.SetParams(ctx, msg.Params); err != nil { return nil, err } diff --git a/protocol/x/rewards/module.go b/protocol/x/rewards/module.go index a17a3e1c47..810b14660c 100644 --- a/protocol/x/rewards/module.go +++ b/protocol/x/rewards/module.go @@ -6,8 +6,8 @@ import ( "fmt" "cosmossdk.io/core/appmodule" - "github.com/dydxprotocol/v4-chain/protocol/daemons/pricefeed/client/constants" "github.com/dydxprotocol/v4-chain/protocol/lib" + "github.com/dydxprotocol/v4-chain/protocol/lib/log" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" @@ -158,9 +158,9 @@ func (am AppModule) EndBlock(ctx context.Context) error { if err := am.keeper.ProcessRewardsForBlock(sdkCtx); err != nil { // Panicking here will only happen due to misconfiguration of the rewards module, // and will lead to consensus failure. - am.keeper.Logger(sdkCtx).Error( + log.ErrorLogWithError( + sdkCtx, "failed to process rewards for block", - constants.ErrorLogKey, err, ) } diff --git a/protocol/x/sending/keeper/msg_server_create_transfer.go b/protocol/x/sending/keeper/msg_server_create_transfer.go index ef6c50473b..cec8c127ca 100644 --- a/protocol/x/sending/keeper/msg_server_create_transfer.go +++ b/protocol/x/sending/keeper/msg_server_create_transfer.go @@ -7,6 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/lib/metrics" "github.com/dydxprotocol/v4-chain/protocol/x/sending/types" gometrics "github.com/hashicorp/go-metrics" @@ -18,7 +19,7 @@ func (k msgServer) CreateTransfer( goCtx context.Context, msg *types.MsgCreateTransfer, ) (*types.MsgCreateTransferResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) // Process the transfer by applying subaccount updates. err := k.Keeper.ProcessTransfer(ctx, msg.Transfer) @@ -48,7 +49,7 @@ func (k msgServer) DepositToSubaccount( goCtx context.Context, msg *types.MsgDepositToSubaccount, ) (*types.MsgDepositToSubaccountResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) // Process deposit from account to subaccount. err := k.Keeper.ProcessDepositToSubaccount(ctx, msg) @@ -77,7 +78,7 @@ func (k msgServer) WithdrawFromSubaccount( goCtx context.Context, msg *types.MsgWithdrawFromSubaccount, ) (*types.MsgWithdrawFromSubaccountResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) // Process withdrawal from subaccount to account. err := k.Keeper.ProcessWithdrawFromSubaccount(ctx, msg) @@ -113,7 +114,7 @@ func (k msgServer) SendFromModuleToAccount( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if err := k.Keeper.SendFromModuleToAccount(ctx, msg); err != nil { telemetry.IncrCounterWithLabels( diff --git a/protocol/x/sending/keeper/msg_server_create_transfer_test.go b/protocol/x/sending/keeper/msg_server_create_transfer_test.go index f0ec98fcc5..d60bd86a1a 100644 --- a/protocol/x/sending/keeper/msg_server_create_transfer_test.go +++ b/protocol/x/sending/keeper/msg_server_create_transfer_test.go @@ -2,12 +2,13 @@ package keeper_test import ( "context" - sdkmath "cosmossdk.io/math" "errors" "fmt" - "github.com/dydxprotocol/v4-chain/protocol/lib" "testing" + sdkmath "cosmossdk.io/math" + "github.com/dydxprotocol/v4-chain/protocol/lib" + abci "github.com/cometbft/cometbft/abci/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/dydxprotocol/v4-chain/protocol/mocks" @@ -99,7 +100,7 @@ func TestCreateTransfer(t *testing.T) { require.NoError(t, err) require.NotNil(t, resp) - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) require.Len(t, ctx.EventManager().Events(), 1) event := ctx.EventManager().Events()[0] require.Equal(t, event.Type, types.EventTypeCreateTransfer) @@ -163,7 +164,7 @@ func TestDepositToSubaccount(t *testing.T) { require.NoError(t, err) require.NotNil(t, resp) - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) require.Len(t, ctx.EventManager().Events(), 1) event := ctx.EventManager().Events()[0] require.Equal(t, event.Type, types.EventTypeDepositToSubaccount) @@ -223,7 +224,7 @@ func TestWithdrawFromSubaccount(t *testing.T) { require.NoError(t, err) require.NotNil(t, resp) - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) require.Len(t, ctx.EventManager().Events(), 1) event := ctx.EventManager().Events()[0] require.Equal(t, event.Type, types.EventTypeWithdrawFromSubaccount) diff --git a/protocol/x/stats/keeper/grpc_query.go b/protocol/x/stats/keeper/grpc_query.go index 14d4195eca..fc189de124 100644 --- a/protocol/x/stats/keeper/grpc_query.go +++ b/protocol/x/stats/keeper/grpc_query.go @@ -3,7 +3,7 @@ package keeper import ( "context" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/stats/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -23,7 +23,7 @@ func (k Keeper) Params( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) params := k.GetParams(ctx) return &types.QueryParamsResponse{ Params: params, @@ -41,7 +41,7 @@ func (k Keeper) StatsMetadata( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) statsMetadata := k.GetStatsMetadata(ctx) return &types.QueryStatsMetadataResponse{ Metadata: statsMetadata, @@ -59,7 +59,7 @@ func (k Keeper) GlobalStats( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) globalStats := k.GetGlobalStats(ctx) return &types.QueryGlobalStatsResponse{ Stats: globalStats, @@ -77,7 +77,7 @@ func (k Keeper) UserStats( return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) userStats := k.GetUserStats(ctx, req.User) return &types.QueryUserStatsResponse{ Stats: userStats, diff --git a/protocol/x/stats/keeper/msg_server.go b/protocol/x/stats/keeper/msg_server.go index 1a3c2c2568..ea4d710201 100644 --- a/protocol/x/stats/keeper/msg_server.go +++ b/protocol/x/stats/keeper/msg_server.go @@ -2,10 +2,11 @@ package keeper import ( "context" + errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/stats/types" ) @@ -33,7 +34,7 @@ func (k msgServer) UpdateParams( ) } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) if err := k.SetParams(ctx, msg.Params); err != nil { return nil, err } diff --git a/protocol/x/stats/module.go b/protocol/x/stats/module.go index fc1f5db280..517560fe10 100644 --- a/protocol/x/stats/module.go +++ b/protocol/x/stats/module.go @@ -2,10 +2,11 @@ package stats import ( "context" - "cosmossdk.io/core/appmodule" "encoding/json" "fmt" + "cosmossdk.io/core/appmodule" + "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" @@ -14,6 +15,7 @@ import ( cdctypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/stats/client/cli" "github.com/dydxprotocol/v4-chain/protocol/x/stats/keeper" "github.com/dydxprotocol/v4-chain/protocol/x/stats/types" @@ -145,7 +147,8 @@ func (AppModule) ConsensusVersion() uint64 { return 1 } // EndBlock executes all ABCI EndBlock logic respective to the stats module. It // returns no validator updates. func (am AppModule) EndBlock(ctx context.Context) error { - sdkCtx := sdk.UnwrapSDKContext(ctx) + sdkCtx := lib.UnwrapSDKContext(ctx, types.ModuleName) + am.keeper.ProcessBlockStats(sdkCtx) am.keeper.ExpireOldStats(sdkCtx) return nil diff --git a/protocol/x/subaccounts/keeper/grpc_query_subaccount.go b/protocol/x/subaccounts/keeper/grpc_query_subaccount.go index 1fd364a85a..5910e83d16 100644 --- a/protocol/x/subaccounts/keeper/grpc_query_subaccount.go +++ b/protocol/x/subaccounts/keeper/grpc_query_subaccount.go @@ -4,8 +4,8 @@ import ( "context" "cosmossdk.io/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/subaccounts/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -20,7 +20,7 @@ func (k Keeper) SubaccountAll( } var subaccounts []types.Subaccount - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) store := ctx.KVStore(k.storeKey) subaccountStore := prefix.NewStore(store, []byte(types.SubaccountKeyPrefix)) @@ -49,7 +49,7 @@ func (k Keeper) Subaccount( if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(c) + ctx := lib.UnwrapSDKContext(c, types.ModuleName) val := k.GetSubaccount( ctx, diff --git a/protocol/x/vest/keeper/grpc_query.go b/protocol/x/vest/keeper/grpc_query.go index eb19371ddb..45c7e3f63c 100644 --- a/protocol/x/vest/keeper/grpc_query.go +++ b/protocol/x/vest/keeper/grpc_query.go @@ -3,7 +3,7 @@ package keeper import ( "context" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" "github.com/dydxprotocol/v4-chain/protocol/x/vest/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -16,7 +16,7 @@ func (k Keeper) VestEntry( if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) vestEntry, err := k.GetVestEntry(ctx, req.VesterAccount) if err != nil { return nil, err diff --git a/protocol/x/vest/keeper/msg_server_test.go b/protocol/x/vest/keeper/msg_server_test.go index 9ae1b6304f..3bae32397c 100644 --- a/protocol/x/vest/keeper/msg_server_test.go +++ b/protocol/x/vest/keeper/msg_server_test.go @@ -7,7 +7,7 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/dydxprotocol/v4-chain/protocol/lib" testapp "github.com/dydxprotocol/v4-chain/protocol/testutil/app" "github.com/dydxprotocol/v4-chain/protocol/x/vest/keeper" @@ -120,7 +120,7 @@ func TestMsgDeleteVestEntry(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { k, ms, goCtx := setupMsgServer(t) - ctx := sdk.UnwrapSDKContext(goCtx) + ctx := lib.UnwrapSDKContext(goCtx, types.ModuleName) // Set up valid entry err := k.SetVestEntry(ctx, TestValidEntry)