mirror of
https://github.com/Chia-Network/chia-blockchain.git
synced 2024-09-20 16:08:51 +03:00
Call method to process transactions added to mempool in Fee Estimator (#14290)
This commit is contained in:
parent
5fd468df15
commit
b71eaa0a8e
@ -26,6 +26,7 @@ class BitcoinFeeEstimator(FeeEstimatorInterface):
|
||||
self.fee_rate_estimator: SmartFeeEstimator = smart_fee_estimator
|
||||
self.tracker: FeeTracker = fee_tracker
|
||||
self.last_mempool_info: FeeMempoolInfo = EmptyFeeMempoolInfo
|
||||
self.block_height: uint32 = uint32(0)
|
||||
|
||||
def new_block_height(self, block_height: uint32) -> None:
|
||||
self.block_height = block_height
|
||||
@ -36,6 +37,7 @@ class BitcoinFeeEstimator(FeeEstimatorInterface):
|
||||
|
||||
def add_mempool_item(self, mempool_info: FeeMempoolInfo, mempool_item: MempoolItem) -> None:
|
||||
self.last_mempool_info = mempool_info
|
||||
self.tracker.add_tx(mempool_item)
|
||||
|
||||
def remove_mempool_item(self, mempool_info: FeeMempoolInfo, mempool_item: MempoolItem) -> None:
|
||||
self.last_mempool_info = mempool_info
|
||||
|
@ -519,6 +519,18 @@ class FeeTracker:
|
||||
self.med_horizon.tx_confirmed(blocks_to_confirm, item)
|
||||
self.long_horizon.tx_confirmed(blocks_to_confirm, item)
|
||||
|
||||
def add_tx(self, item: MempoolItem) -> None:
|
||||
|
||||
if item.height_added_to_mempool < self.latest_seen_height:
|
||||
self.log.info(f"Processing Item from pending pool: cost={item.cost} fee={item.fee}")
|
||||
|
||||
fee_rate = item.fee_per_cost * 1000
|
||||
bucket_index: int = get_bucket_index(self.sorted_buckets, fee_rate)
|
||||
|
||||
self.short_horizon.new_mempool_tx(self.latest_seen_height, bucket_index)
|
||||
self.med_horizon.new_mempool_tx(self.latest_seen_height, bucket_index)
|
||||
self.long_horizon.new_mempool_tx(self.latest_seen_height, bucket_index)
|
||||
|
||||
def remove_tx(self, item: MempoolItem) -> None:
|
||||
bucket_index = get_bucket_index(self.sorted_buckets, item.fee_per_cost * 1000)
|
||||
self.short_horizon.remove_tx(self.latest_seen_height, item, bucket_index)
|
||||
|
@ -16,6 +16,7 @@ from chia.full_node.fee_estimation import (
|
||||
MempoolInfo,
|
||||
)
|
||||
from chia.full_node.fee_estimator_interface import FeeEstimatorInterface
|
||||
from chia.full_node.fee_tracker import FeeTracker
|
||||
from chia.full_node.mempool import Mempool, MempoolRemoveReason
|
||||
from chia.simulator.block_tools import test_constants
|
||||
from chia.simulator.wallet_tools import WalletTool
|
||||
@ -235,3 +236,25 @@ async def test_mm_calls_new_block_height() -> None:
|
||||
block2 = create_test_block_record(height=uint32(2))
|
||||
await mempool_manager.new_peak(block2, None)
|
||||
assert new_block_height_called
|
||||
|
||||
|
||||
def test_add_tx_called() -> None:
|
||||
max_block_cost = uint64(1000 * 1000)
|
||||
fee_estimator = create_bitcoin_fee_estimator(max_block_cost)
|
||||
mempool = Mempool(test_mempool_info, fee_estimator)
|
||||
item = make_mempoolitem()
|
||||
|
||||
add_tx_called = False
|
||||
|
||||
def add_tx_called_fun(self: FeeTracker, mitem: MempoolItem) -> None:
|
||||
nonlocal add_tx_called
|
||||
add_tx_called = True
|
||||
|
||||
# Replace with test method
|
||||
mempool.fee_estimator.tracker.add_tx = types.MethodType( # type: ignore[attr-defined]
|
||||
add_tx_called_fun, mempool.fee_estimator.tracker # type: ignore[attr-defined]
|
||||
)
|
||||
|
||||
mempool.add_to_pool(item)
|
||||
|
||||
assert add_tx_called
|
||||
|
Loading…
Reference in New Issue
Block a user