@@ -828,7 +828,13 @@ fn replay_block(
828828 true ,
829829 ) {
830830 Ok ( ( receipt, _, _) ) => {
831- info ! ( "Cost check skipped. Block processed successfully! block = {block_id}" ) ;
831+ if receipt. anchored_block_cost != cost {
832+ println ! ( "Failed processing block! block = {block_id}. Unexpected cost. expected = {cost}, evaluated = {}" ,
833+ receipt. anchored_block_cost) ;
834+ process:: exit ( 1 ) ;
835+ }
836+
837+ info ! ( "Block processed successfully! block = {block_id}" ) ;
832838 }
833839 Err ( e) => {
834840 println ! ( "Failed processing block! block = {block_id}, error = {e:?}" ) ;
@@ -863,7 +869,10 @@ fn replay_naka_staging_block(db_path: &str, index_block_hash_hex: &str, conf: &C
863869 None ,
864870 true ,
865871 )
866- . unwrap ( ) ;
872+ . unwrap_or_else ( |err| {
873+ eprintln ! ( "SortitionDB::connect failed: {:?}" , err) ;
874+ panic ! ( "SortitionDB::connect failed" ) ; // still panic like unwrap()
875+ } ) ;
867876
868877 let ( block, block_size) = chainstate
869878 . nakamoto_blocks_db ( )
@@ -1137,6 +1146,15 @@ fn replay_block_nakamoto(
11371146 Err ( e) => ( None , Some ( e) ) ,
11381147 } ;
11391148
1149+ if let Some ( receipt) = ok_opt {
1150+ // check the cost
1151+ let evaluated_cost = receipt. anchored_block_cost . clone ( ) ;
1152+ if evaluated_cost != expected_cost {
1153+ println ! ( "Failed processing block! block = {block_id}. Unexpected cost. expected = {expected_cost}, evaluated = {evaluated_cost}" ) ;
1154+ process:: exit ( 1 ) ;
1155+ }
1156+ }
1157+
11401158 if let Some ( e) = err_opt {
11411159 // force rollback
11421160 drop ( chainstate_tx) ;
0 commit comments