From e5be99baa1059a54df58e513836463506098b52e Mon Sep 17 00:00:00 2001 From: David Terpay <35130517+davidterpay@users.noreply.github.com> Date: Mon, 24 Apr 2023 12:26:29 -0400 Subject: [PATCH] fix: [ENG-754] Refactor of Mempool Dep to Interfaces (#81) --- abci/abci.go | 29 ++++++++++++++++++++--------- x/builder/ante/ante.go | 30 +++++++++++++++++++++--------- 2 files changed, 41 insertions(+), 18 deletions(-) diff --git a/abci/abci.go b/abci/abci.go index 366f577..de218e4 100644 --- a/abci/abci.go +++ b/abci/abci.go @@ -2,6 +2,7 @@ package abci import ( "bytes" + "context" "crypto/sha256" "encoding/hex" "errors" @@ -11,19 +12,29 @@ import ( "github.com/cometbft/cometbft/libs/log" sdk "github.com/cosmos/cosmos-sdk/types" sdkmempool "github.com/cosmos/cosmos-sdk/types/mempool" - "github.com/skip-mev/pob/mempool" ) -type ProposalHandler struct { - mempool *mempool.AuctionMempool - logger log.Logger - anteHandler sdk.AnteHandler - txEncoder sdk.TxEncoder - txDecoder sdk.TxDecoder -} +type ( + Mempool interface { + sdkmempool.Mempool + AuctionBidSelect(ctx context.Context) sdkmempool.Iterator + GetBundledTransactions(tx sdk.Tx) ([][]byte, error) + WrapBundleTransaction(tx []byte) (sdk.Tx, error) + IsAuctionTx(tx sdk.Tx) (bool, error) + RemoveWithoutRefTx(tx sdk.Tx) error + } + + ProposalHandler struct { + mempool Mempool + logger log.Logger + anteHandler sdk.AnteHandler + txEncoder sdk.TxEncoder + txDecoder sdk.TxDecoder + } +) func NewProposalHandler( - mp *mempool.AuctionMempool, + mp Mempool, logger log.Logger, anteHandler sdk.AnteHandler, txEncoder sdk.TxEncoder, diff --git a/x/builder/ante/ante.go b/x/builder/ante/ante.go index 9003e91..27f5a4e 100644 --- a/x/builder/ante/ante.go +++ b/x/builder/ante/ante.go @@ -2,6 +2,7 @@ package ante import ( "bytes" + "context" "fmt" "cosmossdk.io/errors" @@ -12,14 +13,25 @@ import ( var _ sdk.AnteDecorator = BuilderDecorator{} -type BuilderDecorator struct { - builderKeeper keeper.Keeper - txDecoder sdk.TxDecoder - txEncoder sdk.TxEncoder - mempool *mempool.AuctionMempool -} +type ( + Mempool interface { + Contains(tx sdk.Tx) (bool, error) + IsAuctionTx(tx sdk.Tx) (bool, error) + GetAuctionBidInfo(tx sdk.Tx) (mempool.AuctionBidInfo, error) + GetBundleSigners(txs [][]byte) ([]map[string]struct{}, error) + GetTopAuctionTx(ctx context.Context) sdk.Tx + GetTimeout(tx sdk.Tx) (uint64, error) + } -func NewBuilderDecorator(ak keeper.Keeper, txDecoder sdk.TxDecoder, txEncoder sdk.TxEncoder, mempool *mempool.AuctionMempool) BuilderDecorator { + BuilderDecorator struct { + builderKeeper keeper.Keeper + txDecoder sdk.TxDecoder + txEncoder sdk.TxEncoder + mempool Mempool + } +) + +func NewBuilderDecorator(ak keeper.Keeper, txDecoder sdk.TxDecoder, txEncoder sdk.TxEncoder, mempool Mempool) BuilderDecorator { return BuilderDecorator{ builderKeeper: ak, txDecoder: txDecoder, @@ -96,12 +108,12 @@ func (ad BuilderDecorator) GetTopAuctionBid(ctx sdk.Context) (sdk.Coin, error) { return sdk.Coin{}, nil } - bid, err := ad.mempool.GetBid(auctionTx) + auctionBidInfo, err := ad.mempool.GetAuctionBidInfo(auctionTx) if err != nil { return sdk.Coin{}, err } - return bid, nil + return auctionBidInfo.Bid, nil } // IsTopBidTx returns true if the transaction inputted is the highest bidding auction transaction in the mempool.