Skip to content

Commit 8315f62

Browse files
matt-o-howarvidnQuexington
authored
Import check_time_locks() and CoinRecord (#19848)
* initial commit * fix int to bool map * another int bool map * cast error to Err class * cast to Err in a couple other places * remaining couple * ruff * inline coinstore bool * typing fixes * import directly from rust and remove legacy file * fix lingering ref to coinrecord * another outdated import * ruff * typping fix * minor simplifications * Fix test * fix import merge * address comments * undo coin_store change --------- Co-authored-by: Arvid Norberg <[email protected]> Co-authored-by: Matt <[email protected]>
1 parent 9242a5c commit 8315f62

31 files changed

+64
-173
lines changed

benchmarks/mempool-long-lived.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@
55
from dataclasses import dataclass
66
from time import monotonic
77

8-
from chia_rs import CoinSpend, G2Element, SpendBundle
8+
from chia_rs import CoinRecord, CoinSpend, G2Element, SpendBundle
99
from chia_rs.sized_bytes import bytes32
1010
from chia_rs.sized_ints import uint32, uint64
1111

1212
from chia.consensus.default_constants import DEFAULT_CONSTANTS
1313
from chia.full_node.mempool_manager import MempoolManager
1414
from chia.types.blockchain_format.coin import Coin
1515
from chia.types.blockchain_format.serialized_program import SerializedProgram
16-
from chia.types.coin_record import CoinRecord
1716
from chia.types.condition_opcodes import ConditionOpcode
1817
from chia.types.mempool_item import UnspentLineageInfo
1918
from chia.util.casts import int_to_bytes

benchmarks/mempool.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from subprocess import check_call
99
from time import monotonic
1010

11-
from chia_rs import SpendBundle
11+
from chia_rs import CoinRecord, SpendBundle
1212
from chia_rs.sized_bytes import bytes32
1313
from chia_rs.sized_ints import uint32, uint64
1414

@@ -17,7 +17,6 @@
1717
from chia.full_node.mempool_manager import MempoolManager
1818
from chia.simulator.wallet_tools import WalletTool
1919
from chia.types.blockchain_format.coin import Coin
20-
from chia.types.coin_record import CoinRecord
2120
from chia.types.mempool_inclusion_status import MempoolInclusionStatus
2221
from chia.types.mempool_item import UnspentLineageInfo
2322
from chia.util.batches import to_batches

chia/_tests/clvm/coin_store.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,16 @@
22

33
from collections import defaultdict
44
from collections.abc import Iterator
5-
from dataclasses import dataclass, replace
5+
from dataclasses import dataclass
66

7-
from chia_rs import ConsensusConstants, SpendBundle
7+
from chia_rs import CoinRecord, ConsensusConstants, SpendBundle, check_time_locks
88
from chia_rs.sized_bytes import bytes32
99
from chia_rs.sized_ints import uint32, uint64
1010

1111
from chia._tests.util.get_name_puzzle_conditions import get_name_puzzle_conditions
12-
from chia.consensus.check_time_locks import check_time_locks
1312
from chia.consensus.cost_calculator import NPCResult
1413
from chia.full_node.bundle_tools import simple_solution_generator
1514
from chia.types.blockchain_format.coin import Coin
16-
from chia.types.coin_record import CoinRecord
1715
from chia.util.errors import Err
1816

1917
MAX_COST = 11000000000
@@ -114,7 +112,7 @@ def update_coin_store_for_spend_bundle(
114112
for spent_coin in removals:
115113
coin_name = spent_coin.name()
116114
coin_record = self._db[coin_name]
117-
self._db[coin_name] = replace(coin_record, spent_block_index=now.height)
115+
self._db[coin_name] = coin_record.replace(spent_block_index=now.height)
118116
return additions, spend_bundle.coin_spends
119117

120118
def coins_for_puzzle_hash(self, puzzle_hash: bytes32) -> Iterator[Coin]:

chia/_tests/clvm/test_spend_sim.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ async def test_all_endpoints():
7373
assert len(coin_records) == 2
7474
coin_records = await sim_client.get_coin_records_by_hint(non_existent_hint)
7575
assert len(coin_records) == 0
76-
coin_records = await sim_client.get_coin_records_by_puzzle_hash(acs.get_tree_hash())
77-
next_coin = coin_records[-1].coin
76+
coin_records = await sim_client.get_coin_records_by_puzzle_hash(acs.get_tree_hash(), include_spent_coins=False)
77+
next_coin = next(cr.coin for cr in coin_records if cr.coin.amount >= 2)
7878
height = sim.get_height()
7979
acs_hint_next_coin = make_spend(
8080
next_coin,

chia/_tests/core/full_node/stores/test_coin_store.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import aiosqlite
88
import pytest
9-
from chia_rs import CoinState, FullBlock, additions_and_removals, get_flags_for_height_and_constants
9+
from chia_rs import CoinRecord, CoinState, FullBlock, additions_and_removals, get_flags_for_height_and_constants
1010
from chia_rs.sized_bytes import bytes32
1111
from chia_rs.sized_ints import uint32, uint64
1212

@@ -25,7 +25,6 @@
2525
from chia.simulator.block_tools import BlockTools, test_constants
2626
from chia.simulator.wallet_tools import WalletTool
2727
from chia.types.blockchain_format.coin import Coin
28-
from chia.types.coin_record import CoinRecord
2928
from chia.types.mempool_item import UnspentLineageInfo
3029
from chia.util.casts import int_to_bytes
3130
from chia.util.db_wrapper import DBWrapper2

chia/_tests/core/full_node/test_conditions.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import logging
99

1010
import pytest
11-
from chia_rs import AugSchemeMPL, FullBlock, G2Element, SpendBundle
11+
from chia_rs import AugSchemeMPL, CoinRecord, FullBlock, G2Element, SpendBundle
1212
from chia_rs.sized_ints import uint32, uint64
1313
from clvm_tools.binutils import assemble
1414

@@ -21,7 +21,6 @@
2121
from chia.simulator.keyring import TempKeyring
2222
from chia.types.blockchain_format.program import Program
2323
from chia.types.blockchain_format.serialized_program import SerializedProgram
24-
from chia.types.coin_record import CoinRecord
2524
from chia.types.coin_spend import make_spend
2625
from chia.types.condition_opcodes import ConditionOpcode
2726
from chia.util.casts import int_to_bytes

chia/_tests/core/full_node/test_full_node.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from chia_rs import (
1414
AugSchemeMPL,
1515
Coin,
16+
CoinRecord,
1617
ConsensusConstants,
1718
Foliage,
1819
FoliageTransactionBlock,
@@ -92,7 +93,6 @@
9293
)
9394
from chia.types.blockchain_format.serialized_program import SerializedProgram
9495
from chia.types.blockchain_format.vdf import CompressibleVDFField, VDFProof
95-
from chia.types.coin_record import CoinRecord
9696
from chia.types.coin_spend import make_spend
9797
from chia.types.condition_opcodes import ConditionOpcode
9898
from chia.types.condition_with_args import ConditionWithArgs

chia/_tests/core/mempool/test_mempool_manager.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@
1111
ELIGIBLE_FOR_DEDUP,
1212
ELIGIBLE_FOR_FF,
1313
AugSchemeMPL,
14+
CoinRecord,
1415
CoinSpend,
1516
ConsensusConstants,
1617
G2Element,
1718
SpendBundle,
1819
SpendBundleConditions,
1920
SpendConditions,
21+
check_time_locks,
2022
get_conditions_from_spendbundle,
2123
run_block_generator2,
2224
)
@@ -27,7 +29,6 @@
2729
from chia._tests.conftest import ConsensusMode
2830
from chia._tests.util.misc import Marks, datacases, invariant_check_mempool
2931
from chia._tests.util.setup_nodes import OldSimulatorsAndWallets, setup_simulators_and_wallets
30-
from chia.consensus.check_time_locks import check_time_locks
3132
from chia.consensus.condition_costs import ConditionCost
3233
from chia.consensus.default_constants import DEFAULT_CONSTANTS
3334
from chia.full_node.eligible_coin_spends import (
@@ -60,7 +61,6 @@
6061
from chia.types.blockchain_format.program import DEFAULT_FLAGS, INFINITE_COST, Program
6162
from chia.types.blockchain_format.serialized_program import SerializedProgram
6263
from chia.types.clvm_cost import CLVMCost
63-
from chia.types.coin_record import CoinRecord
6464
from chia.types.coin_spend import make_spend
6565
from chia.types.condition_opcodes import ConditionOpcode
6666
from chia.types.condition_with_args import ConditionWithArgs
@@ -436,15 +436,17 @@ def test_conditions(
436436
conds: SpendBundleConditions,
437437
expected: Err | None,
438438
) -> None:
439-
assert (
440-
check_time_locks(
441-
dict(self.REMOVALS),
442-
conds,
443-
self.PREV_BLOCK_HEIGHT,
444-
self.PREV_BLOCK_TIMESTAMP,
445-
)
446-
== expected
439+
res: int | None = check_time_locks(
440+
dict(self.REMOVALS),
441+
conds,
442+
self.PREV_BLOCK_HEIGHT,
443+
self.PREV_BLOCK_TIMESTAMP,
447444
)
445+
e: Err | None = None
446+
if res is not None:
447+
# TODO: remove when Rust errors and Python Errors are the same
448+
e = Err(res)
449+
assert e == expected
448450

449451

450452
def expect(
@@ -2348,7 +2350,7 @@ def __init__(self, coins: list[Coin], lineage: dict[bytes32, Coin]) -> None:
23482350
self.lineage_info[ph] = UnspentLineageInfo(c.name(), c.parent_coin_info, bytes32([42] * 32))
23492351

23502352
def spend_coin(self, coin_id: bytes32, height: uint32 = uint32(10)) -> None:
2351-
self.coin_records[coin_id] = dataclasses.replace(self.coin_records[coin_id], spent_block_index=height)
2353+
self.coin_records[coin_id] = self.coin_records[coin_id].replace(spent_block_index=height)
23522354

23532355
def update_lineage(self, puzzle_hash: bytes32, coin: Coin | None) -> None:
23542356
if coin is None:

chia/_tests/util/coin_store.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
from __future__ import annotations
22

3+
from chia_rs import CoinRecord
4+
35
from chia.consensus.coin_store_protocol import CoinStoreProtocol
4-
from chia.types.coin_record import CoinRecord
56
from chia.util.db_wrapper import DBWrapper2
67

78

chia/_tests/util/spend_sim.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import anyio
1313
from chia_rs import (
1414
DONT_VALIDATE_SIGNATURE,
15+
CoinRecord,
1516
CoinSpend,
1617
ConsensusConstants,
1718
G2Element,
@@ -34,7 +35,6 @@
3435
from chia.full_node.mempool_manager import MempoolManager
3536
from chia.types.blockchain_format.coin import Coin
3637
from chia.types.blockchain_format.program import INFINITE_COST
37-
from chia.types.coin_record import CoinRecord
3838
from chia.types.generator_types import BlockGenerator
3939
from chia.types.mempool_inclusion_status import MempoolInclusionStatus
4040
from chia.types.mempool_item import MempoolItem

0 commit comments

Comments
 (0)