aboutsummaryrefslogtreecommitdiff
path: root/src/cryptonote_core/cryptonote_core.cpp
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2019-01-09 14:29:28 +0000
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2019-01-28 19:32:31 +0000
commit23813c7160fa1236cc882cae0ae40f3bee339f91 (patch)
treeaab77e7ef5cde1080c7da9a2b15b1abe63710719 /src/cryptonote_core/cryptonote_core.cpp
parentf6db59b011914c2180b42ed4f6f144679a126994 (diff)
downloadmonzero-core-23813c7160fa1236cc882cae0ae40f3bee339f91.tar.gz
monzero-core-23813c7160fa1236cc882cae0ae40f3bee339f91.tar.xz
monzero-core-23813c7160fa1236cc882cae0ae40f3bee339f91.zip
blockchain: add --reorg-notify
This will trigger if a reorg is seen. This may be used to do things like stop automated withdrawals on large reorgs. %s is replaced by the height at the split point %h is replaced by the height of the new chain %n is replaced by the number of new blocks after the reorg
Diffstat (limited to 'src/cryptonote_core/cryptonote_core.cpp')
-rw-r--r--src/cryptonote_core/cryptonote_core.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/cryptonote_core/cryptonote_core.cpp b/src/cryptonote_core/cryptonote_core.cpp
index 48c607ff1..1513bb750 100644
--- a/src/cryptonote_core/cryptonote_core.cpp
+++ b/src/cryptonote_core/cryptonote_core.cpp
@@ -185,6 +185,13 @@ namespace cryptonote
, "Prune blockchain"
, false
};
+ static const command_line::arg_descriptor<std::string> arg_reorg_notify = {
+ "reorg-notify"
+ , "Run a program for each reorg, '%s' will be replaced by the split height, "
+ "'%h' will be replaced by the new blockchain height, and '%n' will be "
+ "replaced by the number of new blocks in the new chain"
+ , ""
+ };
//-----------------------------------------------------------------------------------------------
core::core(i_cryptonote_protocol* pprotocol):
@@ -300,6 +307,7 @@ namespace cryptonote
command_line::add_arg(desc, arg_pad_transactions);
command_line::add_arg(desc, arg_block_notify);
command_line::add_arg(desc, arg_prune_blockchain);
+ command_line::add_arg(desc, arg_reorg_notify);
miner::init_options(desc);
BlockchainDB::init_options(desc);
@@ -582,6 +590,16 @@ namespace cryptonote
MERROR("Failed to parse block notify spec");
}
+ try
+ {
+ if (!command_line::is_arg_defaulted(vm, arg_reorg_notify))
+ m_blockchain_storage.set_reorg_notify(std::shared_ptr<tools::Notify>(new tools::Notify(command_line::get_arg(vm, arg_reorg_notify).c_str())));
+ }
+ catch (const std::exception &e)
+ {
+ MERROR("Failed to parse reorg notify spec");
+ }
+
const std::pair<uint8_t, uint64_t> regtest_hard_forks[3] = {std::make_pair(1, 0), std::make_pair(Blockchain::get_hard_fork_heights(MAINNET).back().version, 1), std::make_pair(0, 0)};
const cryptonote::test_options regtest_test_options = {
regtest_hard_forks