70 lines
2.1 KiB
Go
70 lines
2.1 KiB
Go
package genexchain
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"cosmossdk.io/log"
|
|
|
|
"github.com/cosmos/cosmos-sdk/baseapp"
|
|
servertypes "github.com/cosmos/cosmos-sdk/server/types"
|
|
sdkmempool "github.com/cosmos/cosmos-sdk/types/mempool"
|
|
|
|
evmconfig "github.com/cosmos/evm/config"
|
|
evmmempool "github.com/cosmos/evm/mempool"
|
|
evmtypes "github.com/cosmos/evm/x/vm/types"
|
|
)
|
|
|
|
// configureEVMMempool sets up the EVM mempool and related handlers
|
|
func (app *GenexApp) configureEVMMempool(appOpts servertypes.AppOptions, logger log.Logger) error {
|
|
if evmtypes.GetChainConfig() == nil {
|
|
logger.Debug("evm chain config is not set, skipping mempool configuration")
|
|
return nil
|
|
}
|
|
|
|
cosmosPoolMaxTx := evmconfig.GetCosmosPoolMaxTx(appOpts, logger)
|
|
if cosmosPoolMaxTx < 0 {
|
|
logger.Debug("app-side mempool is disabled, skipping evm mempool configuration")
|
|
return nil
|
|
}
|
|
|
|
mempoolConfig, err := app.createMempoolConfig(appOpts, logger)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to get mempool config: %w", err)
|
|
}
|
|
|
|
evmMempool := evmmempool.NewExperimentalEVMMempool(
|
|
app.CreateQueryContext,
|
|
logger,
|
|
app.EVMKeeper,
|
|
app.FeeMarketKeeper,
|
|
app.txConfig,
|
|
app.clientCtx,
|
|
mempoolConfig,
|
|
cosmosPoolMaxTx,
|
|
)
|
|
app.EVMMempool = evmMempool
|
|
app.SetMempool(evmMempool)
|
|
checkTxHandler := evmmempool.NewCheckTxHandler(evmMempool)
|
|
app.SetCheckTxHandler(checkTxHandler)
|
|
|
|
abciProposalHandler := baseapp.NewDefaultProposalHandler(evmMempool, app)
|
|
abciProposalHandler.SetSignerExtractionAdapter(
|
|
evmmempool.NewEthSignerExtractionAdapter(
|
|
sdkmempool.NewDefaultSignerExtractionAdapter(),
|
|
),
|
|
)
|
|
app.SetPrepareProposal(abciProposalHandler.PrepareProposalHandler())
|
|
|
|
return nil
|
|
}
|
|
|
|
// createMempoolConfig creates EVMMempoolConfig from app options
|
|
func (app *GenexApp) createMempoolConfig(appOpts servertypes.AppOptions, logger log.Logger) (*evmmempool.EVMMempoolConfig, error) {
|
|
return &evmmempool.EVMMempoolConfig{
|
|
AnteHandler: app.GetAnteHandler(),
|
|
LegacyPoolConfig: evmconfig.GetLegacyPoolConfig(appOpts, logger),
|
|
BlockGasLimit: evmconfig.GetBlockGasLimit(appOpts, logger),
|
|
MinTip: evmconfig.GetMinTip(appOpts, logger),
|
|
}, nil
|
|
}
|