diff --git a/libraries/chain/pbft.cpp b/libraries/chain/pbft.cpp index 8ac97cb1c49..69be56b67d2 100644 --- a/libraries/chain/pbft.cpp +++ b/libraries/chain/pbft.cpp @@ -301,7 +301,9 @@ namespace eosio { set_view_change_timer(0); set_current(std::make_shared(*this, pbft_db)); - emit(pbft_transit_to_committed, true); + if (!get_prepare_cache().empty()) { + emit(pbft_transit_to_committed, true); + } } void psm_machine::transit_to_prepared_state() { diff --git a/libraries/chain/pbft_database.cpp b/libraries/chain/pbft_database.cpp index 5bf4a743bd1..84c7a70bcca 100644 --- a/libraries/chain/pbft_database.cpp +++ b/libraries/chain/pbft_database.cpp @@ -223,7 +223,8 @@ namespace eosio { if (high_watermark_block_num <= lib) return prepares_to_be_cached; - if (auto hwbs = ctrl.fork_db().get_block_in_current_chain_by_num(high_watermark_block_num)) { + auto hwbs = ctrl.fork_db().get_block_in_current_chain_by_num(high_watermark_block_num); + if ( hwbs && hwbs->id != my_prepare) { auto sent = false; for (const auto& sp : my_sps) { pbft_prepare new_p;