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.
- chia/_tests/blockchain/test_blockchain_transactions.py +5 -2
- chia/_tests/conftest.py +8 -2
- chia/_tests/core/full_node/test_full_node.py +48 -8
- chia/_tests/core/full_node/test_hard_fork_utils.py +92 -0
- chia/_tests/core/full_node/test_prev_tx_block.py +6 -6
- chia/_tests/core/full_node/test_tx_processing_queue.py +92 -8
- chia/_tests/core/mempool/test_mempool.py +27 -15
- chia/_tests/core/mempool/test_mempool_manager.py +25 -15
- chia/_tests/util/test_replace_str_to_bytes.py +1 -0
- chia/_tests/util/test_testnet_overrides.py +3 -3
- chia/_tests/wallet/sync/test_wallet_sync.py +20 -13
- chia/_tests/wallet/test_new_wallet_protocol.py +14 -12
- chia/_tests/wallet/test_wallet_node.py +2 -1
- chia/apis/full_node_stub.py +4 -2
- chia/consensus/block_header_validation.py +1 -1
- chia/consensus/blockchain.py +2 -2
- chia/consensus/default_constants.py +3 -0
- chia/consensus/get_block_challenge.py +14 -6
- chia/consensus/multiprocess_validation.py +2 -2
- chia/full_node/full_node.py +3 -1
- chia/full_node/full_node_api.py +16 -14
- chia/full_node/full_node_rpc_api.py +6 -26
- chia/full_node/hard_fork_utils.py +44 -0
- chia/full_node/tx_processing_queue.py +101 -38
- chia/full_node/weight_proof.py +1 -1
- chia/simulator/block_tools.py +3 -3
- chia/util/initial-config.yaml +1 -0
- chia/util/streamable.py +2 -2
- chia/wallet/conditions.py +22 -1
- {chia_blockchain-2.5.8rc1.dist-info → chia_blockchain-2.6.0rc2.dist-info}/METADATA +2 -2
- {chia_blockchain-2.5.8rc1.dist-info → chia_blockchain-2.6.0rc2.dist-info}/RECORD +34 -32
- {chia_blockchain-2.5.8rc1.dist-info → chia_blockchain-2.6.0rc2.dist-info}/WHEEL +0 -0
- {chia_blockchain-2.5.8rc1.dist-info → chia_blockchain-2.6.0rc2.dist-info}/entry_points.txt +0 -0
- {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
|
-
|
|
494
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
if
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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
|
chia/full_node/weight_proof.py
CHANGED
|
@@ -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
|
-
|
|
1342
|
+
finished_sub_slots=len(block.finished_sub_slots),
|
|
1343
1343
|
),
|
|
1344
1344
|
)
|
|
1345
1345
|
if required_iters is None:
|
chia/simulator/block_tools.py
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
chia/util/initial-config.yaml
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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=
|
|
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
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
660
|
-
chia/full_node/full_node_api.py,sha256=
|
|
661
|
-
chia/full_node/full_node_rpc_api.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
1014
|
-
chia_blockchain-2.
|
|
1015
|
-
chia_blockchain-2.
|
|
1016
|
-
chia_blockchain-2.
|
|
1017
|
-
chia_blockchain-2.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|