@@ -34,7 +34,7 @@ def process_block(node_block)
3434 update_tx_fee_related_data ( local_block , input_capacities )
3535 calculate_tx_fee ( local_block , ckb_transactions , input_capacities , outputs . group_by ( &:ckb_transaction_id ) )
3636
37- update_miner_pending_rewards ( local_block . miner_address )
37+ update_current_block_mining_info ( local_block )
3838 update_block_contained_address_info ( local_block )
3939 update_block_reward_info ( local_block )
4040 dao_events = build_new_dao_depositor_events ( new_dao_depositor_events )
@@ -121,7 +121,6 @@ def update_block_reward_info(current_block)
121121
122122 ApplicationRecord . transaction do
123123 issue_block_reward! ( current_block )
124- CkbUtils . update_target_block_miner_address_pending_rewards ( current_block )
125124 end
126125 end
127126
@@ -131,7 +130,6 @@ def issue_block_reward!(current_block)
131130 end
132131
133132 def revert_block_rewards ( local_tip_block )
134- revert_miner_pending_reward_blocks_count ( local_tip_block )
135133 target_block = local_tip_block . target_block
136134 target_block_number = local_tip_block . target_block_number
137135 return if target_block_number < 1 || target_block . blank?
@@ -149,17 +147,10 @@ def revert_reward_status(target_block)
149147 target_block . update! ( received_tx_fee_status : "pending" )
150148 end
151149
152- def revert_miner_pending_reward_blocks_count ( local_tip_block )
153- miner_address = local_tip_block . miner_address
154- Address . decrement_counter ( :pending_reward_blocks_count , miner_address . id , touch : true ) if miner_address . present?
155- end
156-
157150 def invalid_block ( local_tip_block )
158151 ApplicationRecord . transaction do
159- dao_events = DaoEvent . where ( block : local_tip_block ) . processed
160- dao_contract = DaoContract . default_contract
161- revert_dao_contract_related_operations ( dao_contract , dao_events )
162-
152+ revert_dao_contract_related_operations ( local_tip_block )
153+ revert_mining_info ( local_tip_block )
163154 local_tip_block . invalid!
164155 local_tip_block . contained_addresses . each ( &method ( :update_address_balance_and_ckb_transactions_count ) )
165156 revert_block_rewards ( local_tip_block )
@@ -168,7 +159,15 @@ def invalid_block(local_tip_block)
168159 end
169160 end
170161
171- def revert_dao_contract_related_operations ( dao_contract , dao_events )
162+ def revert_mining_info ( local_tip_block )
163+ local_tip_block . mining_infos . first . reverted!
164+ miner_address = local_tip_block . miner_address
165+ miner_address . decrement! ( :mined_blocks_count )
166+ end
167+
168+ def revert_dao_contract_related_operations ( local_tip_block )
169+ dao_events = DaoEvent . where ( block : local_tip_block ) . processed
170+ dao_contract = DaoContract . default_contract
172171 revert_withdraw_from_dao ( dao_contract , dao_events )
173172 revert_issue_interest ( dao_contract , dao_events )
174173 revert_deposit_to_dao ( dao_contract , dao_events )
@@ -489,6 +488,7 @@ def update_previous_cell_output_status(ckb_transaction_id, previous_cell_output)
489488 def update_address_balance_and_ckb_transactions_count ( address )
490489 address . balance = address . cell_outputs . live . sum ( :capacity )
491490 address . ckb_transactions_count = AccountBook . where ( address : address ) . select ( :ckb_transaction_id ) . distinct . count
491+ address . live_cells_count = address . cell_outputs . live . count
492492 address . save!
493493 end
494494
@@ -518,8 +518,8 @@ def update_transaction_fee(ckb_transaction, input_capacities, output_capacities)
518518 ckb_transaction . transaction_fee = [ transaction_fee , 0 ] . max
519519 end
520520
521- def update_miner_pending_rewards ( miner_address )
522- CkbUtils . update_current_block_miner_address_pending_rewards ( miner_address )
521+ def update_current_block_mining_info ( block )
522+ CkbUtils . update_current_block_mining_info ( block )
523523 end
524524 end
525525end
0 commit comments