feat: gRPC mempool service (#275)
* make file nit * base app set up * make file update * makefile nit * adding service test to e2e * lint * type fix * nit * unit test + readme
This commit is contained in:
@@ -2,7 +2,11 @@ package testutils
|
||||
|
||||
import (
|
||||
"math/rand"
|
||||
"testing"
|
||||
|
||||
"cosmossdk.io/log"
|
||||
"cosmossdk.io/math"
|
||||
storetypes "cosmossdk.io/store/types"
|
||||
txsigning "cosmossdk.io/x/tx/signing"
|
||||
"github.com/cosmos/cosmos-sdk/client"
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
@@ -12,6 +16,7 @@ import (
|
||||
"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
|
||||
"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
|
||||
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
|
||||
"github.com/cosmos/cosmos-sdk/testutil"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/types/tx/signing"
|
||||
authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing"
|
||||
@@ -20,6 +25,13 @@ import (
|
||||
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
|
||||
"github.com/cosmos/gogoproto/proto"
|
||||
|
||||
signerextraction "github.com/skip-mev/block-sdk/adapters/signer_extraction_adapter"
|
||||
"github.com/skip-mev/block-sdk/block"
|
||||
"github.com/skip-mev/block-sdk/block/base"
|
||||
"github.com/skip-mev/block-sdk/block/mocks"
|
||||
defaultlane "github.com/skip-mev/block-sdk/lanes/base"
|
||||
"github.com/skip-mev/block-sdk/lanes/free"
|
||||
"github.com/skip-mev/block-sdk/lanes/mev"
|
||||
auctiontypes "github.com/skip-mev/block-sdk/x/auction/types"
|
||||
)
|
||||
|
||||
@@ -30,6 +42,66 @@ type EncodingConfig struct {
|
||||
Amino *codec.LegacyAmino
|
||||
}
|
||||
|
||||
// CreateBaseSDKContext creates a base sdk context with the default store key and transient key.
|
||||
func CreateBaseSDKContext(t *testing.T) sdk.Context {
|
||||
key := storetypes.NewKVStoreKey(auctiontypes.StoreKey)
|
||||
|
||||
testCtx := testutil.DefaultContextWithDB(
|
||||
t,
|
||||
key,
|
||||
storetypes.NewTransientStoreKey("transient_test"),
|
||||
)
|
||||
|
||||
return testCtx.Ctx
|
||||
}
|
||||
|
||||
func CreateMempool() *block.LanedMempool {
|
||||
encodingConfig := CreateTestEncodingConfig()
|
||||
signerExtractor := signerextraction.NewDefaultAdapter()
|
||||
|
||||
mevConfig := base.LaneConfig{
|
||||
SignerExtractor: signerExtractor,
|
||||
Logger: log.NewNopLogger(),
|
||||
TxEncoder: encodingConfig.TxConfig.TxEncoder(),
|
||||
TxDecoder: encodingConfig.TxConfig.TxDecoder(),
|
||||
AnteHandler: nil,
|
||||
MaxBlockSpace: math.LegacyZeroDec(),
|
||||
MaxTxs: 0, // unlimited
|
||||
}
|
||||
factory := mev.NewDefaultAuctionFactory(encodingConfig.TxConfig.TxDecoder(), signerExtractor)
|
||||
mevLane := mev.NewMEVLane(mevConfig, factory, factory.MatchHandler())
|
||||
|
||||
freeConfig := base.LaneConfig{
|
||||
SignerExtractor: signerExtractor,
|
||||
Logger: log.NewNopLogger(),
|
||||
TxEncoder: encodingConfig.TxConfig.TxEncoder(),
|
||||
TxDecoder: encodingConfig.TxConfig.TxDecoder(),
|
||||
AnteHandler: nil,
|
||||
MaxBlockSpace: math.LegacyZeroDec(),
|
||||
MaxTxs: 0, // unlimited
|
||||
}
|
||||
freeLane := free.NewFreeLane[string](freeConfig, base.DefaultTxPriority(), free.DefaultMatchHandler())
|
||||
|
||||
defaultConfig := base.LaneConfig{
|
||||
SignerExtractor: signerExtractor,
|
||||
Logger: log.NewNopLogger(),
|
||||
TxEncoder: encodingConfig.TxConfig.TxEncoder(),
|
||||
TxDecoder: encodingConfig.TxConfig.TxDecoder(),
|
||||
AnteHandler: nil,
|
||||
MaxBlockSpace: math.LegacyZeroDec(),
|
||||
MaxTxs: 0, // unlimited
|
||||
}
|
||||
defaultLane := defaultlane.NewDefaultLane(defaultConfig, base.DefaultMatchHandler())
|
||||
|
||||
lanes := []block.Lane{mevLane, freeLane, defaultLane}
|
||||
mempool, err := block.NewLanedMempool(log.NewNopLogger(), lanes, mocks.MockLaneFetcher{})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return mempool
|
||||
}
|
||||
|
||||
func CreateTestEncodingConfig() EncodingConfig {
|
||||
interfaceRegistry, err := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{
|
||||
ProtoFiles: proto.HybridResolver,
|
||||
|
||||
Reference in New Issue
Block a user