mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-05-16 04:56:36 +00:00
core/txpool/blobpool: fix announced state initialization and tests
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
parent
0e980c6ea2
commit
9c4a1f9008
2 changed files with 17 additions and 2 deletions
|
|
@ -491,6 +491,20 @@ func (p *BlobPool) Init(gasTip uint64, head *types.Header, reserver txpool.Reser
|
||||||
}
|
}
|
||||||
p.evict = newPriceHeap(basefee, blobfee, p.index)
|
p.evict = newPriceHeap(basefee, blobfee, p.index)
|
||||||
|
|
||||||
|
// Guess what was announced. This is needed because we don't want to
|
||||||
|
// participate in the diffusion of transactions where inclusion is blocked by
|
||||||
|
// a low base fee transaction. Since we don't persist that info, the best
|
||||||
|
// we can do is to assume that anything that could have been announced
|
||||||
|
// at current prices, actually was.
|
||||||
|
for addr := range p.index {
|
||||||
|
for _, tx := range p.index[addr] {
|
||||||
|
tx.announced = p.isAnnouncable(tx)
|
||||||
|
if !tx.announced {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Pool initialized, attach the blob limbo to it to track blobs included
|
// Pool initialized, attach the blob limbo to it to track blobs included
|
||||||
// recently but not yet finalized
|
// recently but not yet finalized
|
||||||
p.limbo, err = newLimbo(p.chain.Config(), limbodir)
|
p.limbo, err = newLimbo(p.chain.Config(), limbodir)
|
||||||
|
|
@ -538,6 +552,7 @@ func (p *BlobPool) Close() error {
|
||||||
|
|
||||||
// parseTransaction is a callback method on pool creation that gets called for
|
// parseTransaction is a callback method on pool creation that gets called for
|
||||||
// each transaction on disk to create the in-memory metadata index.
|
// each transaction on disk to create the in-memory metadata index.
|
||||||
|
// Announced state is not initialized here, it needs to be iniitalized seprately.
|
||||||
func (p *BlobPool) parseTransaction(id uint64, size uint32, blob []byte) error {
|
func (p *BlobPool) parseTransaction(id uint64, size uint32, blob []byte) error {
|
||||||
tx := new(types.Transaction)
|
tx := new(types.Transaction)
|
||||||
if err := rlp.DecodeBytes(blob, tx); err != nil {
|
if err := rlp.DecodeBytes(blob, tx); err != nil {
|
||||||
|
|
|
||||||
|
|
@ -1751,8 +1751,8 @@ func TestAdd(t *testing.T) {
|
||||||
// Create a blob pool out of the pre-seeded dats
|
// Create a blob pool out of the pre-seeded dats
|
||||||
chain := &testBlockChain{
|
chain := &testBlockChain{
|
||||||
config: params.MainnetChainConfig,
|
config: params.MainnetChainConfig,
|
||||||
basefee: uint256.NewInt(1050),
|
basefee: uint256.NewInt(1),
|
||||||
blobfee: uint256.NewInt(105),
|
blobfee: uint256.NewInt(1),
|
||||||
statedb: statedb,
|
statedb: statedb,
|
||||||
}
|
}
|
||||||
pool := New(Config{Datadir: storage}, chain, nil)
|
pool := New(Config{Datadir: storage}, chain, nil)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue