diff --git a/tests/core_tests/chaingen_main.cpp b/tests/core_tests/chaingen_main.cpp index cb529b13..64d259db 100644 --- a/tests/core_tests/chaingen_main.cpp +++ b/tests/core_tests/chaingen_main.cpp @@ -1082,6 +1082,7 @@ int main(int argc, char* argv[]) //GENERATE_AND_PLAY(zarcanum_test_n_inputs_validation); GENERATE_AND_PLAY(zarcanum_gen_time_balance); GENERATE_AND_PLAY(zarcanum_txs_with_big_shuffled_decoy_set_shuffled); + GENERATE_AND_PLAY(zarcanum_pos_block_math); // GENERATE_AND_PLAY(gen_block_reward); // END OF TESTS */ diff --git a/tests/core_tests/zarcanum_test.cpp b/tests/core_tests/zarcanum_test.cpp index d86718ca..7c76006f 100644 --- a/tests/core_tests/zarcanum_test.cpp +++ b/tests/core_tests/zarcanum_test.cpp @@ -393,14 +393,26 @@ bool zarcanum_pos_block_math::generate(std::vector& events) co blk_1_pos = pb.m_block; } + //CHECK_AND_ASSERT_MES(blk_1_pos.miner_tx.signatures.size() == 1, false, "unexpected signatures size"); + //zarcanum_sig& sig = boost::get(blk_1_pos.miner_tx.signatures[0]); + //sig.y0 = 0; // invalidate sig + generator.add_block_info(blk_1_pos, std::list{}); ADD_CUSTOM_EVENT(events, blk_1_pos); + // make a PoS block and than change its nonce, so its hash also changes + // this block should fail std::list miner_stake_sources( {miner_acc} ); MAKE_NEXT_POS_BLOCK(events, blk_2, blk_1_pos, miner_acc, miner_stake_sources); + generator.remove_block_info(blk_2); + events.pop_back(); + blk_2.nonce = 0xc0ffee; // this will change block's hash + generator.add_block_info(blk_2, std::list{}); + DO_CALLBACK(events, "mark_invalid_block"); + ADD_CUSTOM_EVENT(events, blk_2); - MAKE_NEXT_POS_BLOCK(events, blk_3, blk_2, miner_acc, miner_stake_sources); - MAKE_NEXT_POS_BLOCK(events, blk_4, blk_3, miner_acc, miner_stake_sources); + //MAKE_NEXT_POS_BLOCK(events, blk_3, blk_2, miner_acc, miner_stake_sources); + //MAKE_NEXT_POS_BLOCK(events, blk_4, blk_3, miner_acc, miner_stake_sources); return true; }