Skip to content

Commit 72028b7

Browse files
authored
avoid recursive_replace() in block_creation.py (#16708)
1 parent 65dfbbb commit 72028b7

File tree

1 file changed

+30
-27
lines changed

1 file changed

+30
-27
lines changed

chia/consensus/block_creation.py

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
from chia.util.hash import std_hash
3232
from chia.util.ints import uint8, uint32, uint64, uint128
3333
from chia.util.prev_transaction_block import get_prev_transaction_block
34-
from chia.util.recursive_replace import recursive_replace
3534

3635
log = logging.getLogger(__name__)
3736

@@ -452,7 +451,6 @@ def unfinished_block_to_full_block(
452451
is_transaction_block = True
453452
new_weight = uint128(difficulty)
454453
new_height = uint32(0)
455-
new_foliage = unfinished_block.foliage
456454
new_foliage_transaction_block = unfinished_block.foliage_transaction_block
457455
new_tx_info = unfinished_block.transactions_info
458456
new_generator = unfinished_block.transactions_generator
@@ -462,44 +460,54 @@ def unfinished_block_to_full_block(
462460
new_weight = uint128(prev_block.weight + difficulty)
463461
new_height = uint32(prev_block.height + 1)
464462
if is_transaction_block:
465-
new_fbh = unfinished_block.foliage.foliage_transaction_block_hash
466-
new_fbs = unfinished_block.foliage.foliage_transaction_block_signature
467463
new_foliage_transaction_block = unfinished_block.foliage_transaction_block
468464
new_tx_info = unfinished_block.transactions_info
469465
new_generator = unfinished_block.transactions_generator
470466
new_generator_ref_list = unfinished_block.transactions_generator_ref_list
471467
else:
472-
new_fbh = None
473-
new_fbs = None
474468
new_foliage_transaction_block = None
475469
new_tx_info = None
476470
new_generator = None
477471
new_generator_ref_list = []
472+
reward_chain_block = RewardChainBlock(
473+
new_weight,
474+
new_height,
475+
unfinished_block.reward_chain_block.total_iters,
476+
unfinished_block.reward_chain_block.signage_point_index,
477+
unfinished_block.reward_chain_block.pos_ss_cc_challenge_hash,
478+
unfinished_block.reward_chain_block.proof_of_space,
479+
unfinished_block.reward_chain_block.challenge_chain_sp_vdf,
480+
unfinished_block.reward_chain_block.challenge_chain_sp_signature,
481+
cc_ip_vdf,
482+
unfinished_block.reward_chain_block.reward_chain_sp_vdf,
483+
unfinished_block.reward_chain_block.reward_chain_sp_signature,
484+
rc_ip_vdf,
485+
icc_ip_vdf,
486+
is_transaction_block,
487+
)
488+
if prev_block is None:
489+
new_foliage = replace(
490+
unfinished_block.foliage,
491+
reward_block_hash=reward_chain_block.get_hash(),
492+
)
493+
else:
494+
if is_transaction_block:
495+
new_fbh = unfinished_block.foliage.foliage_transaction_block_hash
496+
new_fbs = unfinished_block.foliage.foliage_transaction_block_signature
497+
else:
498+
new_fbh = None
499+
new_fbs = None
478500
assert (new_fbh is None) == (new_fbs is None)
479501
new_foliage = replace(
480502
unfinished_block.foliage,
503+
reward_block_hash=reward_chain_block.get_hash(),
481504
prev_block_hash=prev_block.header_hash,
482505
foliage_transaction_block_hash=new_fbh,
483506
foliage_transaction_block_signature=new_fbs,
484507
)
485508
ret = FullBlock(
486509
finished_sub_slots,
487-
RewardChainBlock(
488-
new_weight,
489-
new_height,
490-
unfinished_block.reward_chain_block.total_iters,
491-
unfinished_block.reward_chain_block.signage_point_index,
492-
unfinished_block.reward_chain_block.pos_ss_cc_challenge_hash,
493-
unfinished_block.reward_chain_block.proof_of_space,
494-
unfinished_block.reward_chain_block.challenge_chain_sp_vdf,
495-
unfinished_block.reward_chain_block.challenge_chain_sp_signature,
496-
cc_ip_vdf,
497-
unfinished_block.reward_chain_block.reward_chain_sp_vdf,
498-
unfinished_block.reward_chain_block.reward_chain_sp_signature,
499-
rc_ip_vdf,
500-
icc_ip_vdf,
501-
is_transaction_block,
502-
),
510+
reward_chain_block,
503511
unfinished_block.challenge_chain_sp_proof,
504512
cc_ip_proof,
505513
unfinished_block.reward_chain_sp_proof,
@@ -511,9 +519,4 @@ def unfinished_block_to_full_block(
511519
new_generator,
512520
new_generator_ref_list,
513521
)
514-
ret = recursive_replace(
515-
ret,
516-
"foliage.reward_block_hash",
517-
ret.reward_chain_block.get_hash(),
518-
)
519522
return ret

0 commit comments

Comments
 (0)