@@ -828,7 +828,13 @@ fn replay_block(
828
828
true ,
829
829
) {
830
830
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}" ) ;
832
838
}
833
839
Err ( e) => {
834
840
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
863
869
None ,
864
870
true ,
865
871
)
866
- . unwrap ( ) ;
872
+ . unwrap_or_else ( |err| {
873
+ eprintln ! ( "SortitionDB::connect failed: {:?}" , err) ;
874
+ panic ! ( "SortitionDB::connect failed" ) ; // still panic like unwrap()
875
+ } ) ;
867
876
868
877
let ( block, block_size) = chainstate
869
878
. nakamoto_blocks_db ( )
@@ -1137,6 +1146,15 @@ fn replay_block_nakamoto(
1137
1146
Err ( e) => ( None , Some ( e) ) ,
1138
1147
} ;
1139
1148
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
+
1140
1158
if let Some ( e) = err_opt {
1141
1159
// force rollback
1142
1160
drop ( chainstate_tx) ;
0 commit comments