From 303c3cdcaa3c830aafa7b82c50cb7cf1cb7741ed Mon Sep 17 00:00:00 2001 From: clemahieu Date: Wed, 25 Apr 2018 20:17:21 +0200 Subject: [PATCH] Adding manual block confirmation function. --- rai/core_test/node.cpp | 22 ++++++++++++++++++++++ rai/node/node.cpp | 7 +++++++ rai/node/node.hpp | 1 + 3 files changed, 30 insertions(+) diff --git a/rai/core_test/node.cpp b/rai/core_test/node.cpp index e689d220..0106a383 100644 --- a/rai/core_test/node.cpp +++ b/rai/core_test/node.cpp @@ -1475,3 +1475,25 @@ TEST (node, online_reps) ASSERT_LT (iterations, 200); } } + +TEST (node, block_confirm) +{ + rai::system system (24000, 1); + rai::genesis genesis; + system.nodes [0]->ledger.state_block_parse_canary = genesis.hash (); + system.wallet (0)->insert_adhoc (rai::test_genesis_key.prv); + auto send1 (std::make_shared (rai::test_genesis_key.pub, genesis.hash (), rai::test_genesis_key.pub, rai::genesis_amount - rai::Gxrb_ratio, rai::test_genesis_key.pub, rai::test_genesis_key.prv, rai::test_genesis_key.pub, system.nodes [0]->generate_work (genesis.hash ()))); + { + rai::transaction transaction (system.nodes [0]->store.environment, nullptr, true); + ASSERT_EQ (rai::process_result::progress, system.nodes [0]->ledger.process (transaction, *send1).code); + } + system.nodes [0]->block_confirm (send1); + ASSERT_TRUE (system.nodes [0]->active.confirmed.empty ()); + auto iterations (0); + while (system.nodes [0]->active.confirmed.empty ()) + { + system.poll (); + ++iterations; + ASSERT_LT (iterations, 200); + } +} diff --git a/rai/node/node.cpp b/rai/node/node.cpp index 45d02058..51b28926 100644 --- a/rai/node/node.cpp +++ b/rai/node/node.cpp @@ -2394,6 +2394,13 @@ void rai::node::add_initial_peers () { } +void rai::node::block_confirm (std::shared_ptr block_a) +{ + rai::transaction transaction (store.environment, nullptr, false); + active.start (transaction, block_a); + network.broadcast_confirm_req (block_a); +} + namespace { class confirmed_visitor : public rai::block_visitor diff --git a/rai/node/node.hpp b/rai/node/node.hpp index d459b1f5..d0192995 100644 --- a/rai/node/node.hpp +++ b/rai/node/node.hpp @@ -549,6 +549,7 @@ public: uint64_t generate_work (rai::uint256_union const &); void generate_work (rai::uint256_union const &, std::function); void add_initial_peers (); + void block_confirm (std::shared_ptr ); boost::asio::io_service & service; rai::node_config config; rai::alarm & alarm;