chia-blockchain 2.5.8rc1__py3-none-any.whl → 2.6.0rc2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. chia/_tests/blockchain/test_blockchain_transactions.py +5 -2
  2. chia/_tests/conftest.py +8 -2
  3. chia/_tests/core/full_node/test_full_node.py +48 -8
  4. chia/_tests/core/full_node/test_hard_fork_utils.py +92 -0
  5. chia/_tests/core/full_node/test_prev_tx_block.py +6 -6
  6. chia/_tests/core/full_node/test_tx_processing_queue.py +92 -8
  7. chia/_tests/core/mempool/test_mempool.py +27 -15
  8. chia/_tests/core/mempool/test_mempool_manager.py +25 -15
  9. chia/_tests/util/test_replace_str_to_bytes.py +1 -0
  10. chia/_tests/util/test_testnet_overrides.py +3 -3
  11. chia/_tests/wallet/sync/test_wallet_sync.py +20 -13
  12. chia/_tests/wallet/test_new_wallet_protocol.py +14 -12
  13. chia/_tests/wallet/test_wallet_node.py +2 -1
  14. chia/apis/full_node_stub.py +4 -2
  15. chia/consensus/block_header_validation.py +1 -1
  16. chia/consensus/blockchain.py +2 -2
  17. chia/consensus/default_constants.py +3 -0
  18. chia/consensus/get_block_challenge.py +14 -6
  19. chia/consensus/multiprocess_validation.py +2 -2
  20. chia/full_node/full_node.py +3 -1
  21. chia/full_node/full_node_api.py +16 -14
  22. chia/full_node/full_node_rpc_api.py +6 -26
  23. chia/full_node/hard_fork_utils.py +44 -0
  24. chia/full_node/tx_processing_queue.py +101 -38
  25. chia/full_node/weight_proof.py +1 -1
  26. chia/simulator/block_tools.py +3 -3
  27. chia/util/initial-config.yaml +1 -0
  28. chia/util/streamable.py +2 -2
  29. chia/wallet/conditions.py +22 -1
  30. {chia_blockchain-2.5.8rc1.dist-info → chia_blockchain-2.6.0rc2.dist-info}/METADATA +2 -2
  31. {chia_blockchain-2.5.8rc1.dist-info → chia_blockchain-2.6.0rc2.dist-info}/RECORD +34 -32
  32. {chia_blockchain-2.5.8rc1.dist-info → chia_blockchain-2.6.0rc2.dist-info}/WHEEL +0 -0
  33. {chia_blockchain-2.5.8rc1.dist-info → chia_blockchain-2.6.0rc2.dist-info}/entry_points.txt +0 -0
  34. {chia_blockchain-2.5.8rc1.dist-info → chia_blockchain-2.6.0rc2.dist-info}/licenses/LICENSE +0 -0
@@ -15,7 +15,6 @@ from chia_rs import (
15
15
  PlotParam,
16
16
  SpendBundle,
17
17
  SpendBundleConditions,
18
- get_flags_for_height_and_constants,
19
18
  get_spends_for_trusted_block,
20
19
  get_spends_for_trusted_block_with_conditions,
21
20
  run_block_generator2,
@@ -25,11 +24,11 @@ from chia_rs.sized_bytes import bytes32
25
24
  from chia_rs.sized_ints import uint32, uint64, uint128
26
25
 
27
26
  from chia.consensus.blockchain import Blockchain, BlockchainMutexPriority
28
- from chia.consensus.get_block_challenge import pre_sp_tx_block_height
29
27
  from chia.consensus.get_block_generator import get_block_generator
30
28
  from chia.consensus.pos_quality import UI_ACTUAL_SPACE_CONSTANT_FACTOR
31
29
  from chia.full_node.fee_estimator_interface import FeeEstimatorInterface
32
30
  from chia.full_node.full_node import FullNode
31
+ from chia.full_node.hard_fork_utils import get_flags
33
32
  from chia.protocols.outbound_message import NodeType
34
33
  from chia.rpc.rpc_server import Endpoint, EndpointResult
35
34
  from chia.types.blockchain_format.proof_of_space import calculate_prefix_bits
@@ -490,14 +489,8 @@ class FullNodeRpcApi:
490
489
  if block_generator is None: # if block is not a transaction block.
491
490
  return {"block_spends": []}
492
491
 
493
- prev_tx_height = pre_sp_tx_block_height(
494
- constants=self.service.constants,
495
- blocks=self.service.blockchain,
496
- prev_b_hash=full_block.prev_header_hash,
497
- sp_index=full_block.reward_chain_block.signage_point_index,
498
- first_in_sub_slot=len(full_block.finished_sub_slots) > 0,
499
- )
500
- flags = get_flags_for_height_and_constants(prev_tx_height, self.service.constants)
492
+ flags = await get_flags(constants=self.service.constants, blocks=self.service.blockchain, block=full_block)
493
+
501
494
  spends = await asyncio.get_running_loop().run_in_executor(
502
495
  self.executor,
503
496
  get_spends_for_trusted_block,
@@ -521,14 +514,7 @@ class FullNodeRpcApi:
521
514
  if block_generator is None: # if block is not a transaction block.
522
515
  return {"block_spends_with_conditions": []}
523
516
 
524
- prev_tx_height = pre_sp_tx_block_height(
525
- constants=self.service.constants,
526
- blocks=self.service.blockchain,
527
- prev_b_hash=full_block.prev_header_hash,
528
- sp_index=full_block.reward_chain_block.signage_point_index,
529
- first_in_sub_slot=len(full_block.finished_sub_slots) > 0,
530
- )
531
- flags = get_flags_for_height_and_constants(prev_tx_height, self.service.constants)
517
+ flags = await get_flags(constants=self.service.constants, blocks=self.service.blockchain, block=full_block)
532
518
  spends_with_conditions = await asyncio.get_running_loop().run_in_executor(
533
519
  self.executor,
534
520
  get_spends_for_trusted_block_with_conditions,
@@ -807,19 +793,13 @@ class FullNodeRpcApi:
807
793
  assert block_generator is not None
808
794
 
809
795
  try:
810
- prev_tx_height = pre_sp_tx_block_height(
811
- constants=self.service.constants,
812
- blocks=self.service.blockchain,
813
- prev_b_hash=block.prev_header_hash,
814
- sp_index=block.reward_chain_block.signage_point_index,
815
- first_in_sub_slot=len(block.finished_sub_slots) > 0,
816
- )
796
+ flags = await get_flags(constants=self.service.constants, blocks=self.service.blockchain, block=block)
817
797
  puzzle, solution = get_puzzle_and_solution_for_coin(
818
798
  block_generator.program,
819
799
  block_generator.generator_refs,
820
800
  self.service.constants.MAX_BLOCK_COST_CLVM,
821
801
  coin_record.coin,
822
- get_flags_for_height_and_constants(prev_tx_height, self.service.constants),
802
+ flags,
823
803
  )
824
804
  return {"coin_solution": CoinSpend(coin_record.coin, puzzle, solution)}
825
805
  except Exception as e:
@@ -0,0 +1,44 @@
1
+ # Returns the previous transaction block up to the blocks signage point
2
+ # we use this for block validation since when the block is farmed we do not know the latest transaction block
3
+ # since a new one might be infused by the time the block is infused
4
+ from __future__ import annotations
5
+
6
+ from chia_rs import ConsensusConstants, FullBlock, get_flags_for_height_and_constants
7
+
8
+ from chia.consensus.blockchain_interface import BlocksProtocol
9
+ from chia.consensus.pot_iterations import is_overflow_block
10
+
11
+
12
+ async def get_flags(
13
+ constants: ConsensusConstants,
14
+ blocks: BlocksProtocol,
15
+ block: FullBlock,
16
+ ) -> int:
17
+ if block.height < constants.HARD_FORK2_HEIGHT:
18
+ return get_flags_for_height_and_constants(block.height, constants)
19
+ if block.height >= constants.HARD_FORK2_HEIGHT + constants.SUB_EPOCH_BLOCKS:
20
+ return get_flags_for_height_and_constants(block.height, constants)
21
+
22
+ if block.prev_header_hash == constants.GENESIS_CHALLENGE:
23
+ return get_flags_for_height_and_constants(0, constants)
24
+
25
+ sp_index = block.reward_chain_block.signage_point_index
26
+ # For overflow blocks, the SP is in the previous sub-slot, so we need to cross
27
+ # one extra slot boundary before we're past the SP's slot
28
+ overflow = is_overflow_block(constants, sp_index)
29
+ slots_crossed = len(block.finished_sub_slots)
30
+ curr = await blocks.get_block_record_from_db(block.prev_header_hash)
31
+ assert curr is not None
32
+ while curr.height > 0:
33
+ if not overflow:
34
+ before_sp = curr.signage_point_index < sp_index or slots_crossed > 0
35
+ else:
36
+ before_sp = slots_crossed >= 2 or (slots_crossed == 1 and curr.signage_point_index < sp_index)
37
+
38
+ if curr.is_transaction_block and before_sp:
39
+ break
40
+ if curr.first_in_sub_slot:
41
+ slots_crossed += 1
42
+ curr = await blocks.get_block_record_from_db(curr.prev_hash)
43
+ assert curr is not None
44
+ return get_flags_for_height_and_constants(curr.height, constants)
@@ -73,6 +73,16 @@ class TransactionQueueEntry:
73
73
  )
74
74
 
75
75
 
76
+ @dataclass
77
+ class PeerTransactionsQueue:
78
+ # Peer's priority queue of the form (negative fee per cost, entry).
79
+ # We sort like this because PriorityQueue returns lowest first.
80
+ priority_queue: PriorityQueue[tuple[float, TransactionQueueEntry]] = field(default_factory=PriorityQueue)
81
+ # Peer's deficit in the context of deficit round robin algorithm. The unit
82
+ # here is in CLVM cost.
83
+ deficit: int = field(default=0, init=False)
84
+
85
+
76
86
  @dataclass
77
87
  class TransactionQueue:
78
88
  """
@@ -85,63 +95,116 @@ class TransactionQueue:
85
95
  _list_cursor: int # this is which index
86
96
  _queue_length: asyncio.Semaphore
87
97
  _index_to_peer_map: list[bytes32]
88
- _queue_dict: dict[bytes32, PriorityQueue[tuple[float, TransactionQueueEntry]]]
98
+ _peers_transactions_queues: dict[bytes32, PeerTransactionsQueue]
89
99
  _high_priority_queue: SimpleQueue[TransactionQueueEntry]
90
100
  peer_size_limit: int
91
101
  log: logging.Logger
102
+ # Fallback cost for transactions without cost information
103
+ _max_tx_clvm_cost: uint64
104
+ # Each 100 pops we do a cleanup of empty peer queues
105
+ _cleanup_counter: int
92
106
 
93
- def __init__(self, peer_size_limit: int, log: logging.Logger) -> None:
107
+ def __init__(self, peer_size_limit: int, log: logging.Logger, *, max_tx_clvm_cost: uint64) -> None:
94
108
  self._list_cursor = 0
95
109
  self._queue_length = asyncio.Semaphore(0) # default is 1
96
110
  self._index_to_peer_map = []
97
- self._queue_dict = {}
111
+ self._peers_transactions_queues = {}
98
112
  self._high_priority_queue = SimpleQueue() # we don't limit the number of high priority transactions
99
113
  self.peer_size_limit = peer_size_limit
100
114
  self.log = log
115
+ self._max_tx_clvm_cost = max_tx_clvm_cost
116
+ self._cleanup_counter = 0
101
117
 
102
118
  def put(self, tx: TransactionQueueEntry, peer_id: bytes32 | None, high_priority: bool = False) -> None:
103
119
  if peer_id is None or high_priority: # when it's local there is no peer_id.
104
120
  self._high_priority_queue.put(tx)
121
+ self._queue_length.release()
122
+ return
123
+ peer_queue = self._peers_transactions_queues.get(peer_id)
124
+ if peer_queue is None:
125
+ peer_queue = PeerTransactionsQueue()
126
+ self._peers_transactions_queues[peer_id] = peer_queue
127
+ self._index_to_peer_map.append(peer_id)
128
+ if self._peers_transactions_queues[peer_id].priority_queue.qsize() >= self.peer_size_limit:
129
+ self.log.warning(f"Transaction queue full for peer {peer_id}")
130
+ raise TransactionQueueFull(f"Transaction queue full for peer {peer_id}")
131
+ tx_info = tx.peers_with_tx.get(peer_id)
132
+ if tx_info is not None and tx_info.advertised_cost > 0:
133
+ fpc = tx_info.advertised_fee / tx_info.advertised_cost
134
+ # PriorityQueue returns lowest first so we invert
135
+ priority = -fpc
105
136
  else:
106
- if peer_id not in self._queue_dict:
107
- self._queue_dict[peer_id] = PriorityQueue()
108
- self._index_to_peer_map.append(peer_id)
109
- if self._queue_dict[peer_id].qsize() < self.peer_size_limit:
110
- tx_info = tx.peers_with_tx.get(peer_id)
111
- if tx_info is not None and tx_info.advertised_cost > 0:
112
- fpc = tx_info.advertised_fee / tx_info.advertised_cost
113
- # PriorityQueue returns lowest first so we invert
114
- priority = -fpc
115
- else:
116
- # This peer didn't advertise cost and fee information for
117
- # this transaction (it sent a `RespondTransaction` message
118
- # instead of a `NewTransaction` one).
119
- priority = float("inf")
120
- self._queue_dict[peer_id].put((priority, tx))
121
- else:
122
- self.log.warning(f"Transaction queue full for peer {peer_id}")
123
- raise TransactionQueueFull(f"Transaction queue full for peer {peer_id}")
137
+ # This peer didn't advertise cost and fee information for
138
+ # this transaction (it sent a `RespondTransaction` message
139
+ # instead of a `NewTransaction` one).
140
+ priority = float("inf")
141
+ peer_queue.priority_queue.put((priority, tx))
124
142
  self._queue_length.release() # increment semaphore to indicate that we have a new item in the queue
125
143
 
144
+ def _cleanup_peer_queues(self) -> None:
145
+ """
146
+ Removes empty peer queues and updates the cursor accordingly.
147
+ """
148
+ new_peer_map = []
149
+ for idx, peer_id in enumerate(self._index_to_peer_map):
150
+ if self._peers_transactions_queues[peer_id].priority_queue.empty():
151
+ self._peers_transactions_queues.pop(peer_id, None)
152
+ if idx < self._list_cursor:
153
+ self._list_cursor -= 1
154
+ else:
155
+ new_peer_map.append(peer_id)
156
+ self._index_to_peer_map = new_peer_map
157
+ if self._list_cursor >= len(self._index_to_peer_map):
158
+ self._list_cursor = 0
159
+
126
160
  async def pop(self) -> TransactionQueueEntry:
127
161
  await self._queue_length.acquire()
128
162
  if not self._high_priority_queue.empty():
129
163
  return self._high_priority_queue.get()
130
- result: TransactionQueueEntry | None = None
131
164
  while True:
132
- peer_queue = self._queue_dict[self._index_to_peer_map[self._list_cursor]]
133
- if not peer_queue.empty():
134
- _, result = peer_queue.get()
135
- self._list_cursor += 1
136
- if self._list_cursor > len(self._index_to_peer_map) - 1:
137
- # reset iterator
138
- self._list_cursor = 0
139
- new_peer_map = []
140
- for peer_id in self._index_to_peer_map:
141
- if self._queue_dict[peer_id].empty():
142
- self._queue_dict.pop(peer_id)
143
- else:
144
- new_peer_map.append(peer_id)
145
- self._index_to_peer_map = new_peer_map
146
- if result is not None:
147
- return result
165
+ # Map of peer ID to its top transaction's advertised cost. We want
166
+ # to service transactions fairly between peers, based on cost, so
167
+ # we need to find the lowest cost transaction among the top ones.
168
+ top_txs_advertised_costs: dict[bytes32, uint64] = {}
169
+ # Let's see if a peer can afford to send its top transaction
170
+ num_peers = len(self._index_to_peer_map)
171
+ assert num_peers != 0
172
+ start = self._list_cursor
173
+ for offset in range(num_peers):
174
+ peer_index = (start + offset) % num_peers
175
+ peer_id = self._index_to_peer_map[peer_index]
176
+ peer_queue = self._peers_transactions_queues[peer_id]
177
+ if peer_queue.priority_queue.empty():
178
+ continue
179
+ # There is no peek method so we access the internal `queue`
180
+ _, entry = peer_queue.priority_queue.queue[0]
181
+ tx_info = entry.peers_with_tx.get(peer_id)
182
+ # If we don't know the cost information for this transaction
183
+ # we fallback to the highest cost.
184
+ if tx_info is not None:
185
+ # At this point we have no transactions with zero cost
186
+ assert tx_info.advertised_cost > 0
187
+ top_tx_advertised_cost = tx_info.advertised_cost
188
+ else:
189
+ top_tx_advertised_cost = self._max_tx_clvm_cost
190
+ top_txs_advertised_costs[peer_id] = top_tx_advertised_cost
191
+ if peer_queue.deficit >= top_tx_advertised_cost:
192
+ # This peer can afford its top transaction
193
+ _, entry = peer_queue.priority_queue.get()
194
+ peer_queue.deficit -= top_tx_advertised_cost
195
+ if peer_queue.priority_queue.empty():
196
+ peer_queue.deficit = 0
197
+ # Let's advance the cursor to the next peer
198
+ self._list_cursor = (peer_index + 1) % num_peers
199
+ # See if we need to perform the periodic cleanup
200
+ self._cleanup_counter = (self._cleanup_counter + 1) % 100
201
+ if self._cleanup_counter == 0:
202
+ self._cleanup_peer_queues()
203
+ return entry
204
+ # None of the peers could afford to send their top transactions, so
205
+ # let's add the lowest cost among transactions to all the deficit
206
+ # counters for the next iteration.
207
+ assert len(top_txs_advertised_costs) != 0
208
+ lowest_cost_among_txs = min(top_txs_advertised_costs.values())
209
+ for peer_id in top_txs_advertised_costs:
210
+ self._peers_transactions_queues[peer_id].deficit += lowest_cost_among_txs
@@ -1339,7 +1339,7 @@ def _validate_pospace_recent_chain(
1339
1339
  blocks=blocks,
1340
1340
  prev_b_hash=block.prev_header_hash,
1341
1341
  sp_index=block.reward_chain_block.signage_point_index,
1342
- first_in_sub_slot=len(block.finished_sub_slots) > 0,
1342
+ finished_sub_slots=len(block.finished_sub_slots),
1343
1343
  ),
1344
1344
  )
1345
1345
  if required_iters is None:
@@ -951,7 +951,7 @@ class BlockTools:
951
951
  blocks=BlockCache(blocks),
952
952
  prev_b_hash=latest_block.header_hash,
953
953
  sp_index=uint8(signage_point_index),
954
- first_in_sub_slot=len(finished_sub_slots_at_ip) > 0,
954
+ finished_sub_slots=len(finished_sub_slots_at_ip),
955
955
  )
956
956
 
957
957
  qualified_proofs: list[tuple[uint64, ProofOfSpace]] = self.get_pospaces_for_challenge(
@@ -1266,7 +1266,7 @@ class BlockTools:
1266
1266
  blocks=BlockCache(blocks),
1267
1267
  prev_b_hash=latest_block.header_hash,
1268
1268
  sp_index=uint8(signage_point_index),
1269
- first_in_sub_slot=len(finished_sub_slots_at_ip) > 0,
1269
+ finished_sub_slots=len(finished_sub_slots_at_ip),
1270
1270
  )
1271
1271
 
1272
1272
  qualified_proofs = self.get_pospaces_for_challenge(
@@ -1917,7 +1917,7 @@ def load_block_list(
1917
1917
  blocks=cache,
1918
1918
  prev_b_hash=full_block.prev_header_hash,
1919
1919
  sp_index=full_block.reward_chain_block.signage_point_index,
1920
- first_in_sub_slot=len(full_block.finished_sub_slots) > 0,
1920
+ finished_sub_slots=len(full_block.finished_sub_slots),
1921
1921
  )
1922
1922
  required_iters = validate_pospace_and_get_required_iters(
1923
1923
  constants,
@@ -38,6 +38,7 @@ network_overrides: &network_overrides
38
38
  SUB_SLOT_ITERS_STARTING: 67108864
39
39
  # Forks activated from the beginning on this network
40
40
  HARD_FORK_HEIGHT: 0
41
+ SOFT_FORK8_HEIGHT: 3680000
41
42
  PLOT_FILTER_128_HEIGHT: 6029568
42
43
  PLOT_FILTER_64_HEIGHT: 11075328
43
44
  PLOT_FILTER_32_HEIGHT: 16121088
chia/util/streamable.py CHANGED
@@ -668,12 +668,12 @@ class Streamable:
668
668
  def parse(cls, f: BinaryIO) -> Self:
669
669
  # Create the object without calling __init__() to avoid unnecessary post-init checks in strictdataclass
670
670
  obj: Self = object.__new__(cls)
671
- for field in cls._streamable_fields:
671
+ for field in cls.streamable_fields():
672
672
  object.__setattr__(obj, field.name, field.parse_function(f))
673
673
  return obj
674
674
 
675
675
  def stream(self, f: BinaryIO) -> None:
676
- for field in self._streamable_fields:
676
+ for field in self.streamable_fields():
677
677
  field.stream_function(getattr(self, field.name), f)
678
678
 
679
679
  def get_hash(self) -> bytes32:
chia/wallet/conditions.py CHANGED
@@ -14,7 +14,7 @@ from chia.types.blockchain_format.program import Program
14
14
  from chia.types.condition_opcodes import ConditionOpcode
15
15
  from chia.util.casts import int_from_bytes, int_to_bytes
16
16
  from chia.util.hash import std_hash
17
- from chia.util.streamable import Streamable, streamable
17
+ from chia.util.streamable import Streamable, StreamableFields, streamable
18
18
 
19
19
  _T_Condition = TypeVar("_T_Condition", bound="Condition")
20
20
 
@@ -1433,6 +1433,27 @@ class ConditionValidTimes(ConditionValidTimesAbsolute):
1433
1433
  max_secs_after_created: uint64 | None = None # ASSERT_BEFORE_SECONDS_RELATIVE
1434
1434
  max_blocks_after_created: uint32 | None = None # ASSERT_BEFORE_HEIGHT_RELATIVE
1435
1435
 
1436
+ @classmethod
1437
+ def streamable_fields(cls) -> StreamableFields:
1438
+ # A hack to serialize the fields in the order before this was inherited
1439
+ order_map = {
1440
+ name: i
1441
+ for i, name in enumerate(
1442
+ [
1443
+ "min_secs_since_created",
1444
+ "min_time",
1445
+ "min_blocks_since_created",
1446
+ "min_height",
1447
+ "max_secs_after_created",
1448
+ "max_time",
1449
+ "max_blocks_after_created",
1450
+ "max_height",
1451
+ ]
1452
+ )
1453
+ }
1454
+
1455
+ return tuple(sorted(cls._streamable_fields, key=lambda item: order_map[item.name]))
1456
+
1436
1457
  def to_conditions(self) -> list[Condition]:
1437
1458
  final_condition_list = super().to_conditions()
1438
1459
  if self.min_secs_since_created is not None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chia-blockchain
3
- Version: 2.5.8rc1
3
+ Version: 2.6.0rc2
4
4
  Summary: Chia blockchain full node, farmer, timelord, and wallet.
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE
@@ -26,7 +26,7 @@ Requires-Dist: bitstring (>=4.1.4)
26
26
  Requires-Dist: boto3 (>=1.35.43)
27
27
  Requires-Dist: build ; extra == "dev"
28
28
  Requires-Dist: chia-puzzles-py (>=0.20.1)
29
- Requires-Dist: chia_rs (>=0.35,<0.36)
29
+ Requires-Dist: chia_rs (>=0.35.1,<0.36)
30
30
  Requires-Dist: chiabip158 (>=1.5.2)
31
31
  Requires-Dist: chialisp (>=0.4.1)
32
32
  Requires-Dist: chiapos (>=2.0.10)
@@ -7,7 +7,7 @@ chia/_tests/blockchain/blockchain_test_utils.py,sha256=c7MgWA3XA5_oYmrcV0XL0xvPZ
7
7
  chia/_tests/blockchain/config.py,sha256=-QDaKNLwW6cClNS-Z7kEP0TodZDKnvPAGuKn0FBcmQQ,86
8
8
  chia/_tests/blockchain/test_augmented_chain.py,sha256=kdH8HcchMkWYvyG8N5dvKQauGEa0pxBLhp2FNt_ZDhE,8022
9
9
  chia/_tests/blockchain/test_blockchain.py,sha256=-8yiLsOf1iuDYpk2TX_jniDhk6756JbSfZDo2DeLRGM,202734
10
- chia/_tests/blockchain/test_blockchain_transactions.py,sha256=2LZp5mut738CIJulV01GY-RXNQHkHDdFQ0FK_mQ7w0U,40907
10
+ chia/_tests/blockchain/test_blockchain_transactions.py,sha256=b2XpKyQJtuumoE0zmukhgfplgVw2BE-ePmZEoxUfeuM,41176
11
11
  chia/_tests/blockchain/test_build_chains.py,sha256=HDgvdlI3hOOWWHwR_qgvaPyMH3wWYDMnLg4g2guyO3U,8469
12
12
  chia/_tests/blockchain/test_get_block_generator.py,sha256=g3XHzmfcMwsU-7G9ApTXkxJCpobFljK0wdGYYWYOIVU,1898
13
13
  chia/_tests/blockchain/test_lookup_fork_chain.py,sha256=U2fDN1PxPfoW8pIkFsE5EV-PJVkAs2AQKpmLQpBYf5E,5742
@@ -54,7 +54,7 @@ chia/_tests/cmds/wallet/test_tx_decorators.py,sha256=dycU7zZ8bZcOAOlY8gV3Ae1_wzD
54
54
  chia/_tests/cmds/wallet/test_vcs.py,sha256=60_1sJN89WLtCPWqMowqfilnjP6XzBm5zl5tuLP7csI,14467
55
55
  chia/_tests/cmds/wallet/test_wallet.py,sha256=1BZPE2ntC75O11II-2JR7vWWQgqTfke6cPZgSQARoVY,52696
56
56
  chia/_tests/cmds/wallet/test_wallet_check.py,sha256=656YE0zC2YT34hqqRcqvHEmfi9DINH6IIlDpw4chQOk,3393
57
- chia/_tests/conftest.py,sha256=dEiO7gk40nQKTp9pxm1NKQgG0WpXok9Ju6gGbRGXy6E,54688
57
+ chia/_tests/conftest.py,sha256=-rrdjdDDXZOdq8Aq2aYEZjDl8pn7qPWtMUjk_GOUY2M,54872
58
58
  chia/_tests/connection_utils.py,sha256=L0VEWGFW764fA-I6_WVUHEBPG-ywix66ckp0A6sjRk8,4830
59
59
  chia/_tests/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
60
  chia/_tests/core/cmds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -211,24 +211,25 @@ chia/_tests/core/full_node/stores/test_sync_store.py,sha256=3UAWBrU4STQdSyILsWNY
211
211
  chia/_tests/core/full_node/test_address_manager.py,sha256=te51gguX_AgSO-PGYMoZSVDYokprX3_Oc3KkXzmoWgs,31806
212
212
  chia/_tests/core/full_node/test_block_height_map.py,sha256=5LKwLo76KuoUivIHHA7JoHG201BFoAcgC5xEA0t2UJc,24733
213
213
  chia/_tests/core/full_node/test_conditions.py,sha256=7lLBXz3PZI6kuB1i35fQm2EEJADeUNmT_QNX8fpwFOE,25818
214
- chia/_tests/core/full_node/test_full_node.py,sha256=1sRVu7LhQ7Y69GLHA15UGpDl8D58mydskkysfgr43ps,149931
214
+ chia/_tests/core/full_node/test_full_node.py,sha256=aX8k730uNtPMYd6YyX9k_Jvt3rSam8T8-wj503NryyM,151531
215
215
  chia/_tests/core/full_node/test_generator_tools.py,sha256=Ft38N9nioI-6P9ZXUzhle5tJViek1a8dwMHRM3gSq5Q,3771
216
+ chia/_tests/core/full_node/test_hard_fork_utils.py,sha256=XNIi66_1Lew_OqL5bp9sMeszjL9dJWdSjjBr_IofJts,3815
216
217
  chia/_tests/core/full_node/test_hint_management.py,sha256=QqbvtiztYHSTZBBqdSAo4kv9ROLi70LnDbg_lw_I3fA,4499
217
218
  chia/_tests/core/full_node/test_node_load.py,sha256=AMoaX1Tzy6Wy2TClZs-DKe-z6vJAXajmPBBkn6lSz3E,1367
218
219
  chia/_tests/core/full_node/test_performance.py,sha256=z2qpVt2FJyThGz62FW09CGsPBoKjZiKBMjxcutFp3r8,6764
219
- chia/_tests/core/full_node/test_prev_tx_block.py,sha256=NA8L_tRaCqtuUWmaTY4DHap_HNSrThMvPaTwO3BIT9g,4332
220
+ chia/_tests/core/full_node/test_prev_tx_block.py,sha256=GZkn7OTGOs7XdO2QruzFGUozA0StLjzC7bwU9xo-V3A,4315
220
221
  chia/_tests/core/full_node/test_subscriptions.py,sha256=ZnHLTphkTbGbnyPCbvG2W0TIRlFVJHwnpiQLxeBQWQ4,16754
221
222
  chia/_tests/core/full_node/test_transactions.py,sha256=AWkg4V2B7Pgo9OMHBNZkkHnf7qLaBS6g_kHavh7dZPo,7729
222
- chia/_tests/core/full_node/test_tx_processing_queue.py,sha256=b41IcBKVR3HC_FmMixIRqvvtz6ylGQZPZBCs1ix1LMk,9212
223
+ chia/_tests/core/full_node/test_tx_processing_queue.py,sha256=VZp4hHJOAvnWCkzmvxJAx58PW37izNalKDobnL1gy0w,13911
223
224
  chia/_tests/core/large_block.py,sha256=xG7-LxMCyTR07qkEKEyY_4VWSDqMYDP13avdUIuqGKU,187858
224
225
  chia/_tests/core/make_block_generator.py,sha256=uRm01a4nqls_wiNw-oSRoOyqcwajXtKsPLDHObuRL6Y,2768
225
226
  chia/_tests/core/mempool/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
226
227
  chia/_tests/core/mempool/config.py,sha256=-GncDnWBQwvk5MHfOhjQ4DnUD3VlxrD8lLrt8Gd2D5c,86
227
- chia/_tests/core/mempool/test_mempool.py,sha256=RBl_NcxkWQhhXflXh-KaIsWWuKFn0qKirPH8RcaCCjM,145902
228
+ chia/_tests/core/mempool/test_mempool.py,sha256=g4vZRUnplL9KFWaCflqgm_xC2yCQoth3zsazJ9926wg,146524
228
229
  chia/_tests/core/mempool/test_mempool_fee_estimator.py,sha256=QcCpuCwbYYAlQ3toVHQfTP1MffPBWDnWV2XCAOycmvU,3824
229
230
  chia/_tests/core/mempool/test_mempool_fee_protocol.py,sha256=0_lj2VlUIsEXOLKDG6zF8suyUPSL7GlakFmDdWHUkYg,2071
230
231
  chia/_tests/core/mempool/test_mempool_item_queries.py,sha256=9PgMxWV05pInH8aXD88BsLQ3tPiEMcOFcwAHktAvNVo,6988
231
- chia/_tests/core/mempool/test_mempool_manager.py,sha256=kyDQJlAPB0sU5XVpNaDtqc7foDAm2K5Y4A1ze1-oOM4,157254
232
+ chia/_tests/core/mempool/test_mempool_manager.py,sha256=l9qvKTeGFivu9LpOCFzydOlJ5kQl90BZECYm8Sej1yQ,157791
232
233
  chia/_tests/core/mempool/test_mempool_performance.py,sha256=a5bLSJ_Q_EVYnUHn96I5RC7VZl7niizBK47yVnzvWn4,2935
233
234
  chia/_tests/core/mempool/test_singleton_fast_forward.py,sha256=_oq3QWvKRm4E0Qoo_DnY_LB2aWzIhnUDWK9H-NgxFLM,33890
234
235
  chia/_tests/core/node_height.py,sha256=yfkEmmYCsAb3cIe1ZhtE9J2SFB9lG_49SgjxsITdrZk,917
@@ -414,10 +415,10 @@ chia/_tests/util/test_paginator.py,sha256=IXiFXy9dccLsQNL1q_N4R4uMx42w2IZegIRmBF
414
415
  chia/_tests/util/test_pprint.py,sha256=sgi0nIJjJopbxZV5VVQmurorsi6spTpTHpIdgaPlKls,660
415
416
  chia/_tests/util/test_priority_mutex.py,sha256=L9S4mz1kPC7ds8Hae5mkloTdNWi1GSymgwVFLutxHfk,16214
416
417
  chia/_tests/util/test_recursive_replace.py,sha256=6T5kMQbayHsKPz_oHxuee3HHgxt4pMQMapZa4xsk_Ns,3509
417
- chia/_tests/util/test_replace_str_to_bytes.py,sha256=jYToJeFW2WyW1vMLJCvZnGneDPYhynVkzQU80h_1V2k,6265
418
+ chia/_tests/util/test_replace_str_to_bytes.py,sha256=1vlJDDxF8HLowL-MaszxCssoah1WzxrP6iMitPFwxZY,6304
418
419
  chia/_tests/util/test_service_groups.py,sha256=y_3cERNInZigI2FM-NKm6o6byLC-G4os03x2NU4Bz6k,403
419
420
  chia/_tests/util/test_ssl_check.py,sha256=CfkR0nmy_Qx7otG0ufpKFUKQUmwlRY4Ac4wnoq5FYBU,933
420
- chia/_tests/util/test_testnet_overrides.py,sha256=FIyq0ZaMr6o9f516nfKQD3y5mPqbrRWAUZRbakVLVq8,862
421
+ chia/_tests/util/test_testnet_overrides.py,sha256=fvipqXOJvc7H7HgjAxQM7So6GBM4o7LEhRi8KMCygYI,952
421
422
  chia/_tests/util/test_tests_misc.py,sha256=-OZTLfSFRrjdIe1-bP9YTCytBGzgUPmLzhD7X67D3ag,891
422
423
  chia/_tests/util/test_timing.py,sha256=cm8nUA57HkhhGzWYeTKusTF1aX5C7RXOnkYED3v1aNw,1044
423
424
  chia/_tests/util/test_trusted_peer.py,sha256=NXoHKNQl7T0zV2w0EnKh_OamgOuegeOe_ex5zfxMCjk,2428
@@ -463,7 +464,7 @@ chia/_tests/wallet/simple_sync/config.py,sha256=fTDhByaME5cEDbtyTKCWUf69F4kajs75
463
464
  chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py,sha256=E82Wti3EkAgNlY3JGc5YLcQlgg2ahys1ENvs7_UVhYA,33372
464
465
  chia/_tests/wallet/sync/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
465
466
  chia/_tests/wallet/sync/config.py,sha256=M1xAhuIIIfyN3blwX_J0oQAXsMyNfbD2ZGZUPaxw6go,86
466
- chia/_tests/wallet/sync/test_wallet_sync.py,sha256=0v_OTRpRwIquvsSrOUWFRpVKzrR9lzvUfpqV1fGoB28,83789
467
+ chia/_tests/wallet/sync/test_wallet_sync.py,sha256=4AYFLEukoRgt8uKgXkDFuJVNu2TokPBjpyICmOWeQMo,84124
467
468
  chia/_tests/wallet/test_address_type.py,sha256=Isq-oc-6Hw6ziEcWEyUxjXQi6dVf5hIcCc7tGRnQLTE,7264
468
469
  chia/_tests/wallet/test_bech32m.py,sha256=HCFNL5WVXb6Ke0MclJ8f4UaisohDSa5PKAws-KL6LPo,1385
469
470
  chia/_tests/wallet/test_clvm_casts.py,sha256=nOsIzYiNUlpgwRD3V9yLlDSD6jNIXu9gymPC72deFpo,1909
@@ -472,7 +473,7 @@ chia/_tests/wallet/test_coin_management.py,sha256=AG2UQqvQn2tTuuxwYR7haEpOIzol-q
472
473
  chia/_tests/wallet/test_coin_selection.py,sha256=UVm4F3olsvZzRnSthoys--gWZ3ur-eOQrLFZLDt49PI,24395
473
474
  chia/_tests/wallet/test_conditions.py,sha256=pgobdJ_8YvvGDFS_RdvWri11KkbFW1BIfVIFOGfY8iI,16399
474
475
  chia/_tests/wallet/test_debug_spend_bundle.py,sha256=xMH6-thcsexfLGNq4KhkHY2JJrk0RfxQaIHpRl4lh0U,11581
475
- chia/_tests/wallet/test_new_wallet_protocol.py,sha256=7zE4cBB5F93wfqqQlWxtqyPOCDlEVbYXYBp6w7E8zU8,45537
476
+ chia/_tests/wallet/test_new_wallet_protocol.py,sha256=f5nb78ynCaz4wnYURXNTrSvBpeIiRw7BIV0uHkQ_21k,45633
476
477
  chia/_tests/wallet/test_nft_store.py,sha256=tQqLuj_b2zAz79ua59eaLItrlvqY8KXzlo8N43IXdfo,8577
477
478
  chia/_tests/wallet/test_notifications.py,sha256=OweH8xtQByWo7rPAgnXGIjpn3S_kOhddcJrLBCibXBI,8908
478
479
  chia/_tests/wallet/test_offer_parsing_performance.py,sha256=LSZwvY33hsccy1_UfsJPN8_gPxFafgOY8us0OCLwb24,14309
@@ -491,7 +492,7 @@ chia/_tests/wallet/test_wallet_blockchain.py,sha256=E9zPVx8vkdLam9pK0OTRxZYsfsZq
491
492
  chia/_tests/wallet/test_wallet_coin_store.py,sha256=nGFr8ziaQdwNdU5-7EF4alYFgU-Jo9CsgwUQIlcEJaM,43150
492
493
  chia/_tests/wallet/test_wallet_interested_store.py,sha256=_A_Du0VmWlnFOZ3qnjWs81LyfeZPVWZwXkNe1RBBIYI,2223
493
494
  chia/_tests/wallet/test_wallet_key_val_store.py,sha256=x-hojv3ufIJH6_LqJgZDbTTOJvUbzk-I-Md_RyiMt68,1541
494
- chia/_tests/wallet/test_wallet_node.py,sha256=AVFkEYxeOdSKXV44t-G_DL_Ps9I6uJ33xzqxTE-Toxk,34126
495
+ chia/_tests/wallet/test_wallet_node.py,sha256=nFAr1sXrSM_LYBwRKb4oIwavYkJqsTU5PdiRLBXAMY8,34205
495
496
  chia/_tests/wallet/test_wallet_retry.py,sha256=-L5v5z2p1AiLzByR_IFdX9PCZHYCNLWISuXMsX_itn0,4409
496
497
  chia/_tests/wallet/test_wallet_state_manager.py,sha256=VDQjyVIbYM_NpLMukuD4W2bWg27TnwXd93WeJ3SkaAs,18804
497
498
  chia/_tests/wallet/test_wallet_test_framework.py,sha256=h2I75gSKHB3lf2fvP6FtaugvihILccokBXDHUijlvr4,9361
@@ -509,7 +510,7 @@ chia/_tests/weight_proof/config.py,sha256=G8n1BcJ41Cct9EU-gRtSozX6ojHKJMXX092b79
509
510
  chia/_tests/weight_proof/test_weight_proof.py,sha256=dWWeOeuKPLPGIgCW7KvU5Yu8u8ij6-b4DpnOdAdmB8s,21669
510
511
  chia/apis/__init__.py,sha256=KsYOquzSI865EMDBWSy6MsIfmguserLy8DidoB6u0-8,670
511
512
  chia/apis/farmer_stub.py,sha256=_gsxsKfwsPKKWJqd_0sMZjPcSMRkE1aybG-q4ExiwNY,3612
512
- chia/apis/full_node_stub.py,sha256=LrePp0k3VukdKvj3b9UlTeINxmE05smL6FdKMdDDyNE,13933
513
+ chia/apis/full_node_stub.py,sha256=jzJEF9IoQhgsr9ufh-2YKM0ZprE4-C24-L2fhAaxtPE,13989
513
514
  chia/apis/harvester_stub.py,sha256=fM-HItGCoeXeMCS709p-3wt1LAuUtREI1L80Ts9fBGg,1991
514
515
  chia/apis/introducer_stub.py,sha256=r0bUHf2yO0ADH_5tRB-PkB2uoUemcKUAMxcLAQ8Fn2o,1050
515
516
  chia/apis/solver_stub.py,sha256=8rBU-bCeWnKifmrMyjhPzOIJ4vn8ycSJ-ej7kyLNgfI,863
@@ -579,12 +580,12 @@ chia/consensus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
579
580
  chia/consensus/augmented_chain.py,sha256=W4TgR5HIwMwi3tZLbXxr34KQTQTJwtAAhjhz-ho60MQ,5923
580
581
  chia/consensus/block_body_validation.py,sha256=YsTXTfOUIqnv2I8gToPRtG3FDYE3clhx5eafzE2IcPE,25015
581
582
  chia/consensus/block_creation.py,sha256=cvJHJY1WVhCybnsONWbRoXqP_6jGJWpdPdn6Kzor8T8,20813
582
- chia/consensus/block_header_validation.py,sha256=O7VOUV1xBQxeD5aWGg9jIT0_HLHprBp-EV5LimnI5kI,50929
583
+ chia/consensus/block_header_validation.py,sha256=1k5HJsg6fMBTZOMjFXgKPhfdqSpNiFWiEdHV0St_To4,50926
583
584
  chia/consensus/block_height_map.py,sha256=j6s1b2PDyH4EBaMCHOaEWYSVJdhcNVxIG_jLWGqmPtE,11530
584
585
  chia/consensus/block_height_map_protocol.py,sha256=b-uukFfcl9Ad7q6tgL3htX_5aSzSz-BA5TQkamDxgfU,615
585
586
  chia/consensus/block_record.py,sha256=8VPyZyT9x1Hk_UMDNiyVuCu3tjFm60ls73U9BJnzC5Y,585
586
587
  chia/consensus/block_rewards.py,sha256=Ii4XYBayjjLJAEMQl7kS2yj9yi26PFaDnLhskhzJPco,2190
587
- chia/consensus/blockchain.py,sha256=UdopeuuGwrINZAC4yfJzvrEFr8HVj5gVef5akGqsOuE,47739
588
+ chia/consensus/blockchain.py,sha256=_EPI6npNdLvPXnQi_PN-LiECUv1XLEPPpGMxDFtWz3E,47733
588
589
  chia/consensus/blockchain_interface.py,sha256=VLTGSXgvUby4XiyStZorH_lFqagZXhjj-L3Ozt0j-cU,2362
589
590
  chia/consensus/coin_store_protocol.py,sha256=f0goO9Bc4Nasl4zFnYCSHqSE980gLkObwrHGVxomlMg,4422
590
591
  chia/consensus/coinbase.py,sha256=f_x70YKIuMg-hPei2WH658qzFWyrUrPXgIYDSC4Oj1Y,966
@@ -592,16 +593,16 @@ chia/consensus/condition_costs.py,sha256=wkfKGf8W4vttSSQJ7i5Xl7bYdt1IGUo9LHb7DFC
592
593
  chia/consensus/condition_tools.py,sha256=uBChm-hnDGhcVIGx_Fqm_hgX6Nn1hT35iZ7T67g4y8Q,7815
593
594
  chia/consensus/constants.py,sha256=FKW8_40uVLaN79_EiVNs-_tQOgO5BOf6CXz7g6JCHtE,2390
594
595
  chia/consensus/cost_calculator.py,sha256=EdyWeBBJG-wF91PmAwU9o5iMP0oVFLXppwwp-MTKeYM,340
595
- chia/consensus/default_constants.py,sha256=eklct3tshdJmElTd3aEFg4Js1XCrTrGNEVgUIDIA8KA,6279
596
+ chia/consensus/default_constants.py,sha256=_v3kkoMXEhPPj8-McS5cc6mFMblQdcjk2SaCEUgcIgw,6420
596
597
  chia/consensus/deficit.py,sha256=_7Py_y-9BD6_9iZgudU0WlNsCH1KXvZ8QWxxD-ygTTI,2099
597
598
  chia/consensus/difficulty_adjustment.py,sha256=-n7ZBEmHcf4aJmBsTFZr62zGZtzEM98k79PFTv8_uX4,18325
598
599
  chia/consensus/find_fork_point.py,sha256=ShZ9b88tsxb8do83pE7ClxWpqr-yqj3okvvZ2nylnqk,3193
599
600
  chia/consensus/full_block_to_block_record.py,sha256=gMlfPsQrkQYe-VScdyRdMYKkF06_wCsRLf3Xj6Xuheo,6127
600
601
  chia/consensus/generator_tools.py,sha256=rThevzMnGNXfjxfxpIWM-SAs49X-NOhhxtrmOOE1x8g,2445
601
- chia/consensus/get_block_challenge.py,sha256=IPlcIejHXLGlH3QV88hykSqiUlEfA16DR65OEEluJBo,5980
602
+ chia/consensus/get_block_challenge.py,sha256=dm_tQnD0xMAaDKvKMe0ZyM13JtTuGapOk_JoLIGSZlg,6428
602
603
  chia/consensus/get_block_generator.py,sha256=uUrKhi0oKFpl2tDE-kMpREHY12IpmAQPQflDyys90j4,982
603
604
  chia/consensus/make_sub_epoch_summary.py,sha256=XZ-qrl6H4iHFVcAxIm4yATofvdEbdPkCyYrUSY7QrDI,7914
604
- chia/consensus/multiprocess_validation.py,sha256=xnlPpw4yx3PPOVAfadGXaGKJekK1ZxVUn3Y_9Wqeam4,11091
605
+ chia/consensus/multiprocess_validation.py,sha256=A4GSi6HYWCzdhXgkrt8ZXJplrAWEumCvYfF1HYBSd6A,11085
605
606
  chia/consensus/pos_quality.py,sha256=JMcsWAyLQ2kG6mFxzyj3oYIWQLOxN-nqmMBmA5UJGEw,1202
606
607
  chia/consensus/pot_iterations.py,sha256=akJNZ-79EOo8rOvuIs-8Pvm1ihYbwbeNfuAbMHlLrSM,3781
607
608
  chia/consensus/prev_transaction_block.py,sha256=0ji56jEU4KWUHyKIjF1uKK2SPKDM0zB8ks5kSlLiotI,673
@@ -656,12 +657,13 @@ chia/full_node/fee_estimator_interface.py,sha256=3yE7-IfFhP1HnReSIOnULUReXXgxIGL
656
657
  chia/full_node/fee_history.py,sha256=hcLmy3HLuuATidOQ94wD7MAtzZU9PadKaKt8q3m8fVI,591
657
658
  chia/full_node/fee_tracker.py,sha256=WYeWUTQSVhrHS12rDl5ITpg8Ppd0Jb3g9VXw70GP2eI,22520
658
659
  chia/full_node/full_block_utils.py,sha256=rss2zZooEYCrflffOzqBmYhaFSiVut9JRDOkt1VJKBo,13231
659
- chia/full_node/full_node.py,sha256=bzBHLZamZLtnoyqoczjpJx-fcdt3rVvlmy1Zm0Qqq5w,168802
660
- chia/full_node/full_node_api.py,sha256=1nG6FsOp72Ivd3xupTBDoNIgircFubaqqIjRu0WBwVg,99698
661
- chia/full_node/full_node_rpc_api.py,sha256=_IUiA-PG6pAvFgfcQCOKPfAKANQdPPNIZDGfw6Y60wg,49571
660
+ chia/full_node/full_node.py,sha256=v4Isa9zm-7Nwkj1MhAWqB7GnX01g10G87sUKOIsc_XU,168906
661
+ chia/full_node/full_node_api.py,sha256=XQAmLYtpOZkVuWUGUOe5wsMvVDKApY4XhYgLrmhg2PQ,99777
662
+ chia/full_node/full_node_rpc_api.py,sha256=fWYwh7VbYMoUVtjcAjBdHSIEhiba-MzoEm8dwsC8ifk,48566
662
663
  chia/full_node/full_node_rpc_client.py,sha256=6alfL1AFn8tkvjA6CB4ekGSSZqoRF1GkQz2cEuSnSwQ,13384
663
664
  chia/full_node/full_node_service.py,sha256=fD3mAV3Ud74MNl4g9xCnkhw_QIb4MwOGkoQKngVMiWA,307
664
665
  chia/full_node/full_node_store.py,sha256=PRKcZdLI3oQRNrxBVbS4FRJebwE5cxffHVAA9q6dDw4,48130
666
+ chia/full_node/hard_fork_utils.py,sha256=RgiXIfBg1fVQBjaCUa2cYwVrJwzgad4RVhX8vx9uSkc,1996
665
667
  chia/full_node/hint_management.py,sha256=UJPTSIWnCXG7hO3QfuLMV1WAaBuHUdC1gok7zdz-9BA,2281
666
668
  chia/full_node/hint_store.py,sha256=0m6y0_f0rhGIKqfAmhFSGEeyM3LCN-dv-bR1OfIr4Uo,3666
667
669
  chia/full_node/mempool.py,sha256=oQk9aZyYC-qUESRUsHD4647JnyZnRHa6e5plE20DCgM,33917
@@ -670,9 +672,9 @@ chia/full_node/pending_tx_cache.py,sha256=3iIsoKBGtqi2N58ndu3WmGbb9HCW72fhaN3bm5
670
672
  chia/full_node/start_full_node.py,sha256=8jBRHlxy86gUQb-9UzTlZlRLSVDBaOtOEVVeg-vhlEI,4263
671
673
  chia/full_node/subscriptions.py,sha256=TvV_dgUOF-6CjILFZ86rCxUzkdgFUlQZcwjUcZLXB2U,8641
672
674
  chia/full_node/sync_store.py,sha256=ZuJvNA46odRGFa4WYHh6ARXhBlWscXtUG8TgiVgpbfs,5169
673
- chia/full_node/tx_processing_queue.py,sha256=JXN5YOUktanNeWBDddwd-qyxY3vZQ9pxwS1OhWu5DhE,5758
675
+ chia/full_node/tx_processing_queue.py,sha256=5tnvVaQjEFth4-PHYdHhpwvpjtxEbhmp9ZvRtCcivwk,9222
674
676
  chia/full_node/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
675
- chia/full_node/weight_proof.py,sha256=BNn5ULhsPqmwT6YqU5-1fjJWpuDNftpMpYgKVivic2A,71821
677
+ chia/full_node/weight_proof.py,sha256=3uO_r8nblVC7n0_OxTtK3hhete7arDDh6NzBbCZckyk,71818
676
678
  chia/harvester/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
677
679
  chia/harvester/harvester.py,sha256=KEIdJrnoyztKMtLXlxqGKMP1BauYYc9lT9XiJs6qLXw,12065
678
680
  chia/harvester/harvester_api.py,sha256=lFcGMeqGSVn4pzWPtRk5cqMUvK0MpxqOyp_3AwrlFyA,26509
@@ -759,7 +761,7 @@ chia/server/upnp.py,sha256=X8BOD4U1SNl6YHx0CyV9u0KnS5-B_04kCsnxYK1HCo8,3687
759
761
  chia/server/ws_connection.py,sha256=nsnpeo4KM8rorsdCcVre0vyolj3VT2EimDh0xjNP9BY,34322
760
762
  chia/simulator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
761
763
  chia/simulator/add_blocks_in_batches.py,sha256=blE-55iuROoFlFQ9TPy4o13zp61hcxcgI2tYuGEUci0,2419
762
- chia/simulator/block_tools.py,sha256=Bh2Vpi5REKZ30i3SogLZdbENw3Us627XT1bbqXIlGs4,97926
764
+ chia/simulator/block_tools.py,sha256=uQ9MlyuPU7onZs4c28e5NEGFHlxTtPipb5J9qLkImGM,97917
763
765
  chia/simulator/full_node_simulator.py,sha256=1dyFetLGaPbaBbocuPJwT54Ie_ELu0rX15TRsOk4hRo,37167
764
766
  chia/simulator/keyring.py,sha256=cZJUKc8705zBhMWwO_nexESpCnWvHOkR7wmMoqVXlOw,5033
765
767
  chia/simulator/setup_services.py,sha256=Qe3pzV0sLd0i_SNj4pvIAjNX3fVCc-Z_vhbDkz6CYx8,20713
@@ -857,7 +859,7 @@ chia/util/errors.py,sha256=Xiwr6cgqR4qv3Cuy92fBxWCh49qfSw0DsCnDfQOShgk,10348
857
859
  chia/util/file_keyring.py,sha256=IL7E4LggtgRh9yArbBcfWZwrOlSwYpwcdIzhYRKkrTE,18423
858
860
  chia/util/files.py,sha256=LBPRLUFRwwHUT6jVJhWpHNrqf26SK6aiTdgCTHZcLdk,3227
859
861
  chia/util/hash.py,sha256=qrNlq7QVY9vjpoWm9l80V2g7Qy_k6xXYjZtm48G1RAY,814
860
- chia/util/initial-config.yaml,sha256=n0hcYT2oE8zj7PdPRBUn2nFZddo4XEcc-WBtDUKiUH0,27809
862
+ chia/util/initial-config.yaml,sha256=9PCjqsJFmDNcu-C6X0kIFZz4YCItuw8QEZ0cJX9sZdc,27842
861
863
  chia/util/inline_executor.py,sha256=ZII0Z6_e0liIwyP2TyknLrQOrUOuxhDQ7xpwWhrtcDM,691
862
864
  chia/util/ip_address.py,sha256=HSj4CPSTaTiHksgzGkb6ssCFVfKZKXd9FmvDWniyi8Q,832
863
865
  chia/util/json_util.py,sha256=g4d_Qw2tX8iatv2XhHPa8RwqRHRKCHvzLnSkefCAaLI,982
@@ -880,7 +882,7 @@ chia/util/safe_cancel_task.py,sha256=QULgkxQiHI8ZCH3HZ-R8VQ1j1vW8OpYX-ARwwlCJsZE
880
882
  chia/util/service_groups.py,sha256=NlYYJg2xJqSWjBzFh4tyRVom36LkJj1p4MChbkh-33Y,1544
881
883
  chia/util/setproctitle.py,sha256=ortw3_B1J1jhD8mG1_twHPsJxGZvLQ3LbAAkB_Q4N4U,417
882
884
  chia/util/significant_bits.py,sha256=IVH8ZnuxSS152YUcS6hPSHg95pL9m82rsJbAAf2ex8Y,1009
883
- chia/util/streamable.py,sha256=0Z3XVI12DG0o4LT4J12bI5bJ237nR4EB8_dWNO8iqTk,27070
885
+ chia/util/streamable.py,sha256=Bzvxrw37SkSqIfowWxGe2Ty5wMIuZXuFH4d8wePbur0,27072
884
886
  chia/util/task_referencer.py,sha256=bQxGyUiUGShdfNFzcSE92H-kmM-aeXYsU_Fn6Aukxg0,1678
885
887
  chia/util/task_timing.py,sha256=HlDTz8GnjR_EUSzbLcKkwfWLeDF53i-Cdfp9UTBKyXw,10412
886
888
  chia/util/timing.py,sha256=4u5uH93zZeCluuWXD7vk8rLfjEXBeMXu4s0weLVJvYI,1541
@@ -896,7 +898,7 @@ chia/wallet/cat_wallet/cat_wallet.py,sha256=I66-Fv4j3VWpFgzdAI4pMEl4c5w6dDhl8smh
896
898
  chia/wallet/cat_wallet/lineage_store.py,sha256=RnZDZy4BYtpJeyw_LjrHaMO9bDuE40YNzo6M8RVHd7A,3070
897
899
  chia/wallet/cat_wallet/r_cat_wallet.py,sha256=0UrqN7bl5cY8TtA54lo1Oh8zBzX-nMWkag9gBVr8ifE,11267
898
900
  chia/wallet/coin_selection.py,sha256=3Z6Yk1OI7U3ta9BnktTGk-Y_AaH2rOczlqbTY-GbVck,8492
899
- chia/wallet/conditions.py,sha256=vEJGGu_lh9HkYM9xehv_8uifyXjWmnTfEzHPW9wZ5NY,52265
901
+ chia/wallet/conditions.py,sha256=_iCCgcfLpXUxuUOsMrwwSAUv8AT4KpG_0R14ztTUg40,52986
900
902
  chia/wallet/db_wallet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
901
903
  chia/wallet/db_wallet/db_wallet_puzzles.py,sha256=ypfxAvDY5GmIwT5JSgld5dnxUNAYbzqt7ArW71F6OZE,4556
902
904
  chia/wallet/derivation_record.py,sha256=fl6N26bRmiDgaVQg3308KoDmRJAVyko4ILiDGJvV3JI,1612
@@ -1010,8 +1012,8 @@ chia/wallet/wallet_transaction_store.py,sha256=e0RtKV29mfaXsQZg4M3bjUxfPFy_3BAqE
1010
1012
  chia/wallet/wallet_user_store.py,sha256=TFtNVU5E334fK1MCTOAG2SXIia8wBfeVSamDWvjqzAY,4048
1011
1013
  chia/wallet/wallet_weight_proof_handler.py,sha256=Ni42zOX_wkLTcDnicqWJiE9pZJ5gcGyWqMfLiwgEXtM,4856
1012
1014
  chia/wallet/wsm_apis.py,sha256=6LmxbHXC-tqNbRyoiGgz-f19PF1nEfMbfm3BTnsNQ6s,3914
1013
- chia_blockchain-2.5.8rc1.dist-info/METADATA,sha256=CT2VhFq0U10fiShDhy5NNUMRf4dUiwKMTC0BM3IS3ZQ,10366
1014
- chia_blockchain-2.5.8rc1.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
1015
- chia_blockchain-2.5.8rc1.dist-info/entry_points.txt,sha256=ehxlhrA6j4WmQ3W1pZ4GZEX9KCyrmuTsk9c_BNF9NUM,800
1016
- chia_blockchain-2.5.8rc1.dist-info/licenses/LICENSE,sha256=0tuU-jTzeRDJJaxF2YCEpBwbywgpbrVSXq1i6fJq63U,11347
1017
- chia_blockchain-2.5.8rc1.dist-info/RECORD,,
1015
+ chia_blockchain-2.6.0rc2.dist-info/METADATA,sha256=KvoUMb8d8dldI801oImwNnIz3fAVjzwJagPHNqSLWMc,10368
1016
+ chia_blockchain-2.6.0rc2.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
1017
+ chia_blockchain-2.6.0rc2.dist-info/entry_points.txt,sha256=ehxlhrA6j4WmQ3W1pZ4GZEX9KCyrmuTsk9c_BNF9NUM,800
1018
+ chia_blockchain-2.6.0rc2.dist-info/licenses/LICENSE,sha256=0tuU-jTzeRDJJaxF2YCEpBwbywgpbrVSXq1i6fJq63U,11347
1019
+ chia_blockchain-2.6.0rc2.dist-info/RECORD,,