Skip to content

Commit 092df0d

Browse files
committed
restore SpendBundleAddInfo to have an optional cost. remove unused max_cost parameter from get_deduplication_info()
1 parent eda986d commit 092df0d

File tree

4 files changed

+14
-17
lines changed

4 files changed

+14
-17
lines changed

chia/_tests/core/mempool/test_mempool_manager.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ def spend_bundle_from_conditions(
534534

535535
async def add_spendbundle(
536536
mempool_manager: MempoolManager, sb: SpendBundle, sb_name: bytes32
537-
) -> tuple[uint64, MempoolInclusionStatus, Optional[Err]]:
537+
) -> tuple[Optional[uint64], MempoolInclusionStatus, Optional[Err]]:
538538
sbc = await mempool_manager.pre_validate_spendbundle(sb, sb_name)
539539
ret = await mempool_manager.add_spend_bundle(sb, sbc, sb_name, TEST_HEIGHT)
540540
invariant_check_mempool(mempool_manager.mempool)
@@ -546,7 +546,7 @@ async def generate_and_add_spendbundle(
546546
conditions: list[list[Any]],
547547
coin: Coin = TEST_COIN,
548548
aggsig: G2Element = G2Element(),
549-
) -> tuple[SpendBundle, bytes32, tuple[uint64, MempoolInclusionStatus, Optional[Err]]]:
549+
) -> tuple[SpendBundle, bytes32, tuple[Optional[uint64], MempoolInclusionStatus, Optional[Err]]]:
550550
sb = spend_bundle_from_conditions(conditions, coin, aggsig)
551551
sb_name = sb.name()
552552
result = await add_spendbundle(mempool_manager, sb, sb_name)
@@ -703,7 +703,7 @@ async def get_coin_records(_: Collection[bytes32]) -> list[CoinRecord]:
703703
mempool_manager = await instantiate_mempool_manager(get_coin_records)
704704
conditions = [[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, 1]]
705705
_, _, result = await generate_and_add_spendbundle(mempool_manager, conditions)
706-
assert result == (0, MempoolInclusionStatus.FAILED, Err.UNKNOWN_UNSPENT)
706+
assert result == (None, MempoolInclusionStatus.FAILED, Err.UNKNOWN_UNSPENT)
707707

708708

709709
@pytest.mark.anyio
@@ -1594,7 +1594,7 @@ def test_dedup_info_nothing_to_do() -> None:
15941594
mempool_item = mempool_item_from_spendbundle(sb)
15951595
dedup_coin_spends = IdenticalSpendDedup()
15961596
unique_coin_spends, cost_saving, unique_additions = dedup_coin_spends.get_deduplication_info(
1597-
bundle_coin_spends=mempool_item.bundle_coin_spends, max_cost=mempool_item.conds.cost
1597+
bundle_coin_spends=mempool_item.bundle_coin_spends
15981598
)
15991599
assert unique_coin_spends == sb.coin_spends
16001600
assert cost_saving == 0
@@ -1614,7 +1614,7 @@ def test_dedup_info_eligible_1st_time() -> None:
16141614
dedup_coin_spends = IdenticalSpendDedup()
16151615
solution = SerializedProgram.to(conditions)
16161616
unique_coin_spends, cost_saving, unique_additions = dedup_coin_spends.get_deduplication_info(
1617-
bundle_coin_spends=mempool_item.bundle_coin_spends, max_cost=mempool_item.conds.cost
1617+
bundle_coin_spends=mempool_item.bundle_coin_spends
16181618
)
16191619
assert unique_coin_spends == sb.coin_spends
16201620
assert cost_saving == 0
@@ -1639,9 +1639,7 @@ def test_dedup_info_eligible_but_different_solution() -> None:
16391639
sb = spend_bundle_from_conditions(conditions, TEST_COIN)
16401640
mempool_item = mempool_item_from_spendbundle(sb)
16411641
with pytest.raises(SkipDedup, match="Solution is different from what we're deduplicating on"):
1642-
dedup_coin_spends.get_deduplication_info(
1643-
bundle_coin_spends=mempool_item.bundle_coin_spends, max_cost=mempool_item.conds.cost
1644-
)
1642+
dedup_coin_spends.get_deduplication_info(bundle_coin_spends=mempool_item.bundle_coin_spends)
16451643

16461644

16471645
def test_dedup_info_eligible_2nd_time_and_another_1st_time() -> None:
@@ -1662,7 +1660,7 @@ def test_dedup_info_eligible_2nd_time_and_another_1st_time() -> None:
16621660
mempool_item = mempool_item_from_spendbundle(sb)
16631661
assert mempool_item.conds is not None
16641662
unique_coin_spends, cost_saving, unique_additions = dedup_coin_spends.get_deduplication_info(
1665-
bundle_coin_spends=mempool_item.bundle_coin_spends, max_cost=mempool_item.conds.cost
1663+
bundle_coin_spends=mempool_item.bundle_coin_spends
16661664
)
16671665
# Only the eligible one that we encountered more than once gets deduplicated
16681666
assert unique_coin_spends == sb2.coin_spends
@@ -1709,7 +1707,7 @@ def test_dedup_info_eligible_3rd_time_another_2nd_time_and_one_non_eligible() ->
17091707
mempool_item = mempool_item_from_spendbundle(sb)
17101708
assert mempool_item.conds is not None
17111709
unique_coin_spends, cost_saving, unique_additions = dedup_coin_spends.get_deduplication_info(
1712-
bundle_coin_spends=mempool_item.bundle_coin_spends, max_cost=mempool_item.conds.cost
1710+
bundle_coin_spends=mempool_item.bundle_coin_spends
17131711
)
17141712
assert unique_coin_spends == sb3.coin_spends
17151713
saved_cost2 = uint64(1337)
@@ -2153,7 +2151,7 @@ async def get_coin_records(coin_ids: Collection[bytes32]) -> list[CoinRecord]:
21532151
result = await add_spendbundle(mempool_manager, bundle, bundle_name)
21542152
print(result)
21552153
if expected is not None:
2156-
assert result == (0, MempoolInclusionStatus.FAILED, expected)
2154+
assert result == (None, MempoolInclusionStatus.FAILED, expected)
21572155
else:
21582156
assert result[0] is not None
21592157
assert result[1] != MempoolInclusionStatus.FAILED

chia/full_node/eligible_coin_spends.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ class IdenticalSpendDedup:
116116
deduplication_spends: dict[bytes32, DedupCoinSpend] = dataclasses.field(default_factory=dict)
117117

118118
def get_deduplication_info(
119-
self, *, bundle_coin_spends: dict[bytes32, BundleCoinSpend], max_cost: int
119+
self, *, bundle_coin_spends: dict[bytes32, BundleCoinSpend]
120120
) -> tuple[list[CoinSpend], uint64, list[Coin]]:
121121
"""
122122
Checks all coin spends of a mempool item for deduplication eligibility and
@@ -125,7 +125,6 @@ def get_deduplication_info(
125125
126126
Args:
127127
bundle_coin_spends: the mempool item's coin spends data
128-
max_cost: the maximum limit when running for cost
129128
130129
Returns:
131130
list[CoinSpend]: list of unique coin spends in this mempool item

chia/full_node/mempool.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -627,7 +627,7 @@ def create_bundle_from_mempool_items(
627627
mempool_item=item, height=height, constants=constants
628628
)
629629
unique_coin_spends, cost_saving, unique_additions = dedup_coin_spends.get_deduplication_info(
630-
bundle_coin_spends=bundle_coin_spends, max_cost=cost
630+
bundle_coin_spends=bundle_coin_spends
631631
)
632632
item_cost = cost - cost_saving
633633
log.info(
@@ -726,7 +726,7 @@ def create_block_generator2(
726726
mempool_item=item, height=height, constants=constants
727727
)
728728
unique_coin_spends, cost_saving, unique_additions = dedup_coin_spends.get_deduplication_info(
729-
bundle_coin_spends=bundle_coin_spends, max_cost=cost
729+
bundle_coin_spends=bundle_coin_spends
730730
)
731731
new_fee_sum = fee_sum + fee
732732
if new_fee_sum > DEFAULT_CONSTANTS.MAX_COIN_AMOUNT:

chia/full_node/mempool_manager.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ def compute_assert_height(
124124

125125
@dataclass
126126
class SpendBundleAddInfo:
127-
cost: uint64
127+
cost: Optional[uint64]
128128
status: MempoolInclusionStatus
129129
removals: list[MempoolRemoveInfo]
130130
error: Optional[Err]
@@ -545,7 +545,7 @@ async def add_spend_bundle(
545545
return SpendBundleAddInfo(item.cost, MempoolInclusionStatus.PENDING, [], err)
546546
else:
547547
# Cannot add to the mempool or pending pool.
548-
return SpendBundleAddInfo(uint64(0), MempoolInclusionStatus.FAILED, [], err)
548+
return SpendBundleAddInfo(None, MempoolInclusionStatus.FAILED, [], err)
549549

550550
async def validate_spend_bundle(
551551
self,

0 commit comments

Comments
 (0)