Cache cemented count (#2259)
This commit is contained in:
parent
255f5dc772
commit
e3abade132
20 changed files with 189 additions and 143 deletions
|
@ -259,8 +259,9 @@ TEST (block_store, genesis)
|
|||
nano::genesis genesis;
|
||||
auto hash (genesis.hash ());
|
||||
nano::rep_weights rep_weights;
|
||||
std::atomic<uint64_t> cemented_count{ 0 };
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, rep_weights);
|
||||
store->initialize (transaction, genesis, rep_weights, cemented_count);
|
||||
nano::account_info info;
|
||||
ASSERT_FALSE (store->account_get (transaction, nano::genesis_account, info));
|
||||
ASSERT_EQ (hash, info.head);
|
||||
|
@ -733,17 +734,17 @@ TEST (block_store, account_count)
|
|||
ASSERT_EQ (1, store->account_count (transaction));
|
||||
}
|
||||
|
||||
TEST (block_store, cemented_count)
|
||||
TEST (block_store, cemented_count_cache)
|
||||
{
|
||||
nano::logger_mt logger;
|
||||
auto store = nano::make_store (logger, nano::unique_path ());
|
||||
ASSERT_TRUE (!store->init_error ());
|
||||
auto transaction (store->tx_begin_write ());
|
||||
ASSERT_EQ (0, store->cemented_count (transaction));
|
||||
nano::genesis genesis;
|
||||
nano::rep_weights rep_weights;
|
||||
store->initialize (transaction, genesis, rep_weights);
|
||||
ASSERT_EQ (1, store->cemented_count (transaction));
|
||||
std::atomic<uint64_t> cemented_count{ 0 };
|
||||
store->initialize (transaction, genesis, rep_weights, cemented_count);
|
||||
ASSERT_EQ (1, cemented_count);
|
||||
}
|
||||
|
||||
TEST (block_store, sequence_increment)
|
||||
|
@ -790,7 +791,7 @@ TEST (mdb_block_store, upgrade_v2_v3)
|
|||
auto hash (genesis.hash ());
|
||||
nano::stat stats;
|
||||
nano::ledger ledger (store, stats);
|
||||
store.initialize (transaction, genesis, ledger.rep_weights);
|
||||
store.initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::change_block change (hash, key1.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (hash));
|
||||
change_hash = change.hash ();
|
||||
|
@ -870,7 +871,7 @@ TEST (mdb_block_store, upgrade_v4_v5)
|
|||
nano::genesis genesis;
|
||||
nano::stat stats;
|
||||
nano::ledger ledger (store, stats);
|
||||
store.initialize (transaction, genesis, ledger.rep_weights);
|
||||
store.initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
store.version_put (transaction, 4);
|
||||
nano::account_info info;
|
||||
ASSERT_FALSE (store.account_get (transaction, nano::test_genesis_key.pub, info));
|
||||
|
@ -900,8 +901,9 @@ TEST (block_store, block_random)
|
|||
nano::genesis genesis;
|
||||
{
|
||||
nano::rep_weights rep_weights;
|
||||
std::atomic<uint64_t> cemented_count{ 0 };
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, rep_weights);
|
||||
store->initialize (transaction, genesis, rep_weights, cemented_count);
|
||||
}
|
||||
auto transaction (store->tx_begin_read ());
|
||||
auto block (store->block_random (transaction));
|
||||
|
@ -919,7 +921,8 @@ TEST (mdb_block_store, upgrade_v5_v6)
|
|||
auto transaction (store.tx_begin_write ());
|
||||
nano::genesis genesis;
|
||||
nano::rep_weights rep_weights;
|
||||
store.initialize (transaction, genesis, rep_weights);
|
||||
std::atomic<uint64_t> cemented_count{ 0 };
|
||||
store.initialize (transaction, genesis, rep_weights, cemented_count);
|
||||
store.version_put (transaction, 5);
|
||||
modify_genesis_account_info_to_v5 (store, transaction);
|
||||
}
|
||||
|
@ -942,7 +945,8 @@ TEST (mdb_block_store, upgrade_v6_v7)
|
|||
auto transaction (store.tx_begin_write ());
|
||||
nano::genesis genesis;
|
||||
nano::rep_weights rep_weights;
|
||||
store.initialize (transaction, genesis, rep_weights);
|
||||
std::atomic<uint64_t> cemented_count{ 0 };
|
||||
store.initialize (transaction, genesis, rep_weights, cemented_count);
|
||||
store.version_put (transaction, 6);
|
||||
modify_account_info_to_v13 (store, transaction, nano::genesis_account);
|
||||
auto send1 (std::make_shared<nano::send_block> (0, 0, 0, nano::test_genesis_key.prv, nano::test_genesis_key.pub, 0));
|
||||
|
@ -1104,7 +1108,8 @@ TEST (block_store, state_block)
|
|||
{
|
||||
auto transaction (store->tx_begin_write ());
|
||||
nano::rep_weights rep_weights;
|
||||
store->initialize (transaction, genesis, rep_weights);
|
||||
std::atomic<uint64_t> cemented_count{ 0 };
|
||||
store->initialize (transaction, genesis, rep_weights, cemented_count);
|
||||
ASSERT_EQ (nano::block_type::state, block1.type ());
|
||||
nano::block_sideband sideband1 (nano::block_type::state, 0, 0, 0, 0, 0);
|
||||
store->block_put (transaction, block1.hash (), block1, sideband1);
|
||||
|
@ -1159,7 +1164,8 @@ TEST (mdb_block_store, upgrade_sideband_genesis)
|
|||
auto transaction (store.tx_begin_write ());
|
||||
store.version_put (transaction, 11);
|
||||
nano::rep_weights rep_weights;
|
||||
store.initialize (transaction, genesis, rep_weights);
|
||||
std::atomic<uint64_t> cemented_count{ 0 };
|
||||
store.initialize (transaction, genesis, rep_weights, cemented_count);
|
||||
modify_account_info_to_v13 (store, transaction, nano::genesis_account);
|
||||
nano::block_sideband sideband;
|
||||
auto genesis_block (store.block_get (transaction, genesis.hash (), &sideband));
|
||||
|
@ -1194,7 +1200,7 @@ TEST (mdb_block_store, upgrade_sideband_two_blocks)
|
|||
nano::ledger ledger (store, stat);
|
||||
auto transaction (store.tx_begin_write ());
|
||||
store.version_put (transaction, 11);
|
||||
store.initialize (transaction, genesis, ledger.rep_weights);
|
||||
store.initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::state_block block (nano::test_genesis_key.pub, genesis.hash (), nano::test_genesis_key.pub, nano::genesis_amount - nano::Gxrb_ratio, nano::test_genesis_key.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
hash2 = block.hash ();
|
||||
|
@ -1232,7 +1238,7 @@ TEST (mdb_block_store, upgrade_sideband_two_accounts)
|
|||
nano::ledger ledger (store, stat);
|
||||
auto transaction (store.tx_begin_write ());
|
||||
store.version_put (transaction, 11);
|
||||
store.initialize (transaction, genesis, ledger.rep_weights);
|
||||
store.initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::state_block block1 (nano::test_genesis_key.pub, genesis.hash (), nano::test_genesis_key.pub, nano::genesis_amount - nano::Gxrb_ratio, key.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
hash2 = block1.hash ();
|
||||
|
@ -1275,7 +1281,7 @@ TEST (mdb_block_store, insert_after_legacy)
|
|||
nano::ledger ledger (store, stat);
|
||||
auto transaction (store.tx_begin_write ());
|
||||
store.version_put (transaction, 11);
|
||||
store.initialize (transaction, genesis, ledger.rep_weights);
|
||||
store.initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
write_legacy_sideband (store, transaction, *genesis.open, 0, store.open_blocks);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::state_block block (nano::test_genesis_key.pub, genesis.hash (), nano::test_genesis_key.pub, nano::genesis_amount - nano::Gxrb_ratio, nano::test_genesis_key.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1292,7 +1298,7 @@ TEST (mdb_block_store, legacy_account_computed)
|
|||
nano::ledger ledger (store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store.tx_begin_write ());
|
||||
store.initialize (transaction, genesis, ledger.rep_weights);
|
||||
store.initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
store.version_put (transaction, 11);
|
||||
write_legacy_sideband (store, transaction, *genesis.open, 0, store.open_blocks);
|
||||
ASSERT_EQ (nano::genesis_account, ledger.account (transaction, genesis.hash ()));
|
||||
|
@ -1313,7 +1319,7 @@ TEST (mdb_block_store, upgrade_sideband_epoch)
|
|||
nano::ledger ledger (store, stat, 42, nano::test_genesis_key.pub);
|
||||
auto transaction (store.tx_begin_write ());
|
||||
store.version_put (transaction, 11);
|
||||
store.initialize (transaction, genesis, ledger.rep_weights);
|
||||
store.initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::state_block block1 (nano::test_genesis_key.pub, genesis.hash (), nano::test_genesis_key.pub, nano::genesis_amount, 42, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
hash2 = block1.hash ();
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, block1).code);
|
||||
|
@ -1352,7 +1358,7 @@ TEST (mdb_block_store, sideband_height)
|
|||
nano::ledger ledger (store, stat);
|
||||
ledger.epoch_signer = epoch_key.pub;
|
||||
auto transaction (store.tx_begin_write ());
|
||||
store.initialize (transaction, genesis, ledger.rep_weights);
|
||||
store.initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::send_block send (genesis.hash (), nano::test_genesis_key.pub, nano::genesis_amount - nano::Gxrb_ratio, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, send).code);
|
||||
|
@ -1551,7 +1557,8 @@ TEST (mdb_block_store, upgrade_v13_v14)
|
|||
nano::mdb_store store (logger, path);
|
||||
auto transaction (store.tx_begin_write ());
|
||||
nano::rep_weights rep_weights;
|
||||
store.initialize (transaction, genesis, rep_weights);
|
||||
std::atomic<uint64_t> cemented_count{ 0 };
|
||||
store.initialize (transaction, genesis, rep_weights, cemented_count);
|
||||
nano::account_info account_info;
|
||||
ASSERT_FALSE (store.account_get (transaction, nano::genesis_account, account_info));
|
||||
uint64_t confirmation_height;
|
||||
|
@ -1604,7 +1611,8 @@ TEST (mdb_block_store, upgrade_v14_v15)
|
|||
nano::mdb_store store (logger, path);
|
||||
auto transaction (store.tx_begin_write ());
|
||||
nano::rep_weights rep_weights;
|
||||
store.initialize (transaction, genesis, rep_weights);
|
||||
std::atomic<uint64_t> cemented_count{ 0 };
|
||||
store.initialize (transaction, genesis, rep_weights, cemented_count);
|
||||
nano::account_info account_info;
|
||||
ASSERT_FALSE (store.account_get (transaction, nano::genesis_account, account_info));
|
||||
uint64_t confirmation_height;
|
||||
|
@ -1745,7 +1753,8 @@ TEST (block_store, upgrade_confirmation_height_many)
|
|||
auto transaction (store.tx_begin_write ());
|
||||
store.version_put (transaction, 13);
|
||||
nano::rep_weights rep_weights;
|
||||
store.initialize (transaction, genesis, rep_weights);
|
||||
std::atomic<uint64_t> cemented_count{ 0 };
|
||||
store.initialize (transaction, genesis, rep_weights, cemented_count);
|
||||
modify_account_info_to_v13 (store, transaction, nano::genesis_account);
|
||||
|
||||
// Add many accounts
|
||||
|
|
|
@ -44,7 +44,7 @@ TEST (ledger, genesis_balance)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
auto balance (ledger.account_balance (transaction, nano::genesis_account));
|
||||
ASSERT_EQ (nano::genesis_amount, balance);
|
||||
auto amount (ledger.amount (transaction, nano::genesis_account));
|
||||
|
@ -81,7 +81,7 @@ TEST (ledger, process_send)
|
|||
nano::ledger ledger (*store, stats);
|
||||
auto transaction (store->tx_begin_write ());
|
||||
nano::genesis genesis;
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::account_info info1;
|
||||
ASSERT_FALSE (store->account_get (transaction, nano::test_genesis_key.pub, info1));
|
||||
|
@ -175,7 +175,7 @@ TEST (ledger, process_receive)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::account_info info1;
|
||||
ASSERT_FALSE (store->account_get (transaction, nano::test_genesis_key.pub, info1));
|
||||
|
@ -233,7 +233,7 @@ TEST (ledger, rollback_receiver)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::account_info info1;
|
||||
ASSERT_FALSE (store->account_get (transaction, nano::test_genesis_key.pub, info1));
|
||||
|
@ -272,7 +272,7 @@ TEST (ledger, rollback_representation)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key5;
|
||||
nano::change_block change1 (genesis.hash (), key5.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -326,7 +326,7 @@ TEST (ledger, receive_rollback)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::send_block send (genesis.hash (), nano::test_genesis_key.pub, nano::genesis_amount - nano::Gxrb_ratio, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, send).code);
|
||||
|
@ -344,7 +344,7 @@ TEST (ledger, process_duplicate)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::account_info info1;
|
||||
ASSERT_FALSE (store->account_get (transaction, nano::test_genesis_key.pub, info1));
|
||||
|
@ -367,7 +367,7 @@ TEST (ledger, representative_genesis)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
auto latest (ledger.latest (transaction, nano::test_genesis_key.pub));
|
||||
ASSERT_FALSE (latest.is_zero ());
|
||||
ASSERT_EQ (genesis.open->hash (), ledger.representative (transaction, latest));
|
||||
|
@ -382,7 +382,7 @@ TEST (ledger, weight)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
ASSERT_EQ (nano::genesis_amount, ledger.weight (transaction, nano::genesis_account));
|
||||
}
|
||||
|
||||
|
@ -396,7 +396,7 @@ TEST (ledger, representative_change)
|
|||
nano::keypair key2;
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
ASSERT_EQ (nano::genesis_amount, ledger.weight (transaction, nano::test_genesis_key.pub));
|
||||
ASSERT_EQ (0, ledger.weight (transaction, key2.pub));
|
||||
|
@ -436,7 +436,7 @@ TEST (ledger, send_fork)
|
|||
nano::keypair key3;
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::account_info info1;
|
||||
ASSERT_FALSE (store->account_get (transaction, nano::test_genesis_key.pub, info1));
|
||||
|
@ -457,7 +457,7 @@ TEST (ledger, receive_fork)
|
|||
nano::keypair key3;
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::account_info info1;
|
||||
ASSERT_FALSE (store->account_get (transaction, nano::test_genesis_key.pub, info1));
|
||||
|
@ -484,7 +484,7 @@ TEST (ledger, open_fork)
|
|||
nano::keypair key3;
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::account_info info1;
|
||||
ASSERT_FALSE (store->account_get (transaction, nano::test_genesis_key.pub, info1));
|
||||
|
@ -614,7 +614,7 @@ TEST (ledger, representation)
|
|||
auto & rep_weights = ledger.rep_weights;
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, rep_weights);
|
||||
store->initialize (transaction, genesis, rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
ASSERT_EQ (nano::genesis_amount, rep_weights.representation_get (nano::test_genesis_key.pub));
|
||||
nano::keypair key2;
|
||||
|
@ -688,7 +688,7 @@ TEST (ledger, double_open)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key2;
|
||||
nano::send_block send1 (genesis.hash (), key2.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -708,7 +708,7 @@ TEST (ledger, double_receive)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key2;
|
||||
nano::send_block send1 (genesis.hash (), key2.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -981,7 +981,7 @@ TEST (ledger, fail_change_old)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::change_block block (genesis.hash (), key1.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1000,7 +1000,7 @@ TEST (ledger, fail_change_gap_previous)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::change_block block (1, key1.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (1));
|
||||
|
@ -1017,7 +1017,7 @@ TEST (ledger, fail_change_bad_signature)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::change_block block (genesis.hash (), key1.pub, nano::keypair ().prv, 0, pool.generate (genesis.hash ()));
|
||||
|
@ -1034,7 +1034,7 @@ TEST (ledger, fail_change_fork)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::change_block block1 (genesis.hash (), key1.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1055,7 +1055,7 @@ TEST (ledger, fail_send_old)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block (genesis.hash (), key1.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1074,7 +1074,7 @@ TEST (ledger, fail_send_gap_previous)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block (1, key1.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (1));
|
||||
|
@ -1091,7 +1091,7 @@ TEST (ledger, fail_send_bad_signature)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block (genesis.hash (), key1.pub, 1, nano::keypair ().prv, 0, pool.generate (genesis.hash ()));
|
||||
|
@ -1108,7 +1108,7 @@ TEST (ledger, fail_send_negative_spend)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block1 (genesis.hash (), key1.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1127,7 +1127,7 @@ TEST (ledger, fail_send_fork)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block1 (genesis.hash (), key1.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1146,7 +1146,7 @@ TEST (ledger, fail_open_old)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block1 (genesis.hash (), key1.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1165,7 +1165,7 @@ TEST (ledger, fail_open_gap_source)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::open_block block2 (1, 1, key1.pub, key1.prv, key1.pub, pool.generate (key1.pub));
|
||||
|
@ -1182,7 +1182,7 @@ TEST (ledger, fail_open_bad_signature)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block1 (genesis.hash (), key1.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1201,7 +1201,7 @@ TEST (ledger, fail_open_fork_previous)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block1 (genesis.hash (), key1.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1223,7 +1223,7 @@ TEST (ledger, fail_open_account_mismatch)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block1 (genesis.hash (), key1.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1242,7 +1242,7 @@ TEST (ledger, fail_receive_old)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block1 (genesis.hash (), key1.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1265,7 +1265,7 @@ TEST (ledger, fail_receive_gap_source)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block1 (genesis.hash (), key1.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1291,7 +1291,7 @@ TEST (ledger, fail_receive_overreceive)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block1 (genesis.hash (), key1.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1314,7 +1314,7 @@ TEST (ledger, fail_receive_bad_signature)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block1 (genesis.hash (), key1.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1340,7 +1340,7 @@ TEST (ledger, fail_receive_gap_previous_opened)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block1 (genesis.hash (), key1.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1366,7 +1366,7 @@ TEST (ledger, fail_receive_gap_previous_unopened)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block1 (genesis.hash (), key1.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1389,7 +1389,7 @@ TEST (ledger, fail_receive_fork_previous)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block1 (genesis.hash (), key1.pub, 1, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1419,7 +1419,7 @@ TEST (ledger, fail_receive_received_source)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key1;
|
||||
nano::send_block block1 (genesis.hash (), key1.pub, 2, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1468,7 +1468,7 @@ TEST (ledger, latest_root)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key;
|
||||
ASSERT_EQ (key.pub, ledger.latest_root (transaction, key.pub));
|
||||
|
@ -1488,7 +1488,7 @@ TEST (ledger, change_representative_move_representation)
|
|||
nano::keypair key1;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
nano::genesis genesis;
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
auto hash1 (genesis.hash ());
|
||||
ASSERT_EQ (nano::genesis_amount, ledger.weight (transaction, nano::test_genesis_key.pub));
|
||||
|
@ -1513,7 +1513,7 @@ TEST (ledger, send_open_receive_rollback)
|
|||
nano::ledger ledger (*store, stats);
|
||||
auto transaction (store->tx_begin_write ());
|
||||
nano::genesis genesis;
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::account_info info1;
|
||||
ASSERT_FALSE (store->account_get (transaction, nano::test_genesis_key.pub, info1));
|
||||
|
@ -1576,7 +1576,7 @@ TEST (ledger, bootstrap_rep_weight)
|
|||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
{
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
ASSERT_FALSE (store->account_get (transaction, nano::test_genesis_key.pub, info1));
|
||||
nano::send_block send (info1.head, key2.pub, std::numeric_limits<nano::uint128_t>::max () - 50, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (info1.head));
|
||||
ledger.process (transaction, send);
|
||||
|
@ -1608,7 +1608,7 @@ TEST (ledger, block_destination_source)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair dest;
|
||||
nano::uint128_t balance (nano::genesis_amount);
|
||||
|
@ -1654,7 +1654,7 @@ TEST (ledger, state_account)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, nano::genesis_account, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, send1).code);
|
||||
|
@ -1670,7 +1670,7 @@ TEST (ledger, state_send_receive)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, nano::genesis_account, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, send1).code);
|
||||
|
@ -1703,7 +1703,7 @@ TEST (ledger, state_receive)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::send_block send1 (genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, send1).code);
|
||||
|
@ -1734,7 +1734,7 @@ TEST (ledger, state_rep_change)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair rep;
|
||||
nano::state_block change1 (nano::genesis_account, genesis.hash (), rep.pub, nano::genesis_amount, 0, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1758,7 +1758,7 @@ TEST (ledger, state_open)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair destination;
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, destination.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1793,7 +1793,7 @@ TEST (ledger, send_after_state_fail)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, nano::genesis_account, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, send1).code);
|
||||
|
@ -1811,7 +1811,7 @@ TEST (ledger, receive_after_state_fail)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, nano::genesis_account, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, send1).code);
|
||||
|
@ -1829,7 +1829,7 @@ TEST (ledger, change_after_state_fail)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, nano::genesis_account, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, send1).code);
|
||||
|
@ -1847,7 +1847,7 @@ TEST (ledger, state_unreceivable_fail)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::send_block send1 (genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, send1).code);
|
||||
|
@ -1871,7 +1871,7 @@ TEST (ledger, state_receive_bad_amount_fail)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::send_block send1 (genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, send1).code);
|
||||
|
@ -1895,7 +1895,7 @@ TEST (ledger, state_no_link_amount_fail)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, nano::genesis_account, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, send1).code);
|
||||
|
@ -1913,7 +1913,7 @@ TEST (ledger, state_receive_wrong_account_fail)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, nano::genesis_account, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, send1).code);
|
||||
|
@ -1938,7 +1938,7 @@ TEST (ledger, state_open_state_fork)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair destination;
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, destination.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1959,7 +1959,7 @@ TEST (ledger, state_state_open_fork)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair destination;
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, destination.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1980,7 +1980,7 @@ TEST (ledger, state_open_previous_fail)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair destination;
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, destination.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -1998,7 +1998,7 @@ TEST (ledger, state_open_source_fail)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair destination;
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, destination.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -2016,7 +2016,7 @@ TEST (ledger, state_send_change)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair rep;
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), rep.pub, nano::genesis_amount - nano::Gxrb_ratio, nano::genesis_account, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -2040,7 +2040,7 @@ TEST (ledger, state_receive_change)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, nano::genesis_account, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, send1).code);
|
||||
|
@ -2073,7 +2073,7 @@ TEST (ledger, state_open_old)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair destination;
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, destination.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -2094,7 +2094,7 @@ TEST (ledger, state_receive_old)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair destination;
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, destination.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -2119,7 +2119,7 @@ TEST (ledger, state_rollback_send)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, nano::genesis_account, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, send1).code);
|
||||
|
@ -2150,7 +2150,7 @@ TEST (ledger, state_rollback_receive)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, nano::genesis_account, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, send1).code);
|
||||
|
@ -2176,7 +2176,7 @@ TEST (ledger, state_rollback_received_send)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key;
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, key.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -2203,7 +2203,7 @@ TEST (ledger, state_rep_change_rollback)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair rep;
|
||||
nano::state_block change1 (nano::genesis_account, genesis.hash (), rep.pub, nano::genesis_amount, 0, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -2224,7 +2224,7 @@ TEST (ledger, state_open_rollback)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair destination;
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, destination.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -2250,7 +2250,7 @@ TEST (ledger, state_send_change_rollback)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair rep;
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), rep.pub, nano::genesis_amount - nano::Gxrb_ratio, nano::genesis_account, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -2271,7 +2271,7 @@ TEST (ledger, state_receive_change_rollback)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, nano::genesis_account, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
ASSERT_EQ (nano::process_result::progress, ledger.process (transaction, send1).code);
|
||||
|
@ -2295,7 +2295,7 @@ TEST (ledger, epoch_blocks_general)
|
|||
nano::ledger ledger (*store, stats, 123, epoch_key.pub);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair destination;
|
||||
nano::state_block epoch1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount, 123, epoch_key.prv, epoch_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -2342,7 +2342,7 @@ TEST (ledger, epoch_blocks_receive_upgrade)
|
|||
nano::ledger ledger (*store, stats, 123, epoch_key.pub);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair destination;
|
||||
nano::state_block send1 (nano::genesis_account, genesis.hash (), nano::genesis_account, nano::genesis_amount - nano::Gxrb_ratio, destination.pub, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -2383,7 +2383,7 @@ TEST (ledger, epoch_blocks_fork)
|
|||
nano::ledger ledger (*store, stats, 123, epoch_key.pub);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair destination;
|
||||
nano::send_block send1 (genesis.hash (), nano::account (0), nano::genesis_amount, nano::test_genesis_key.prv, nano::test_genesis_key.pub, pool.generate (genesis.hash ()));
|
||||
|
@ -2514,7 +2514,7 @@ TEST (ledger, could_fit)
|
|||
ledger.epoch_signer = epoch_signer.pub;
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair destination;
|
||||
// Test legacy and state change blocks could_fit
|
||||
|
@ -2738,7 +2738,7 @@ TEST (ledger, confirmation_height_not_updated)
|
|||
nano::ledger ledger (*store, stats);
|
||||
auto transaction (store->tx_begin_write ());
|
||||
nano::genesis genesis;
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::account_info account_info;
|
||||
ASSERT_FALSE (store->account_get (transaction, nano::test_genesis_key.pub, account_info));
|
||||
|
|
|
@ -1895,6 +1895,7 @@ TEST (confirmation_height, send_receive_between_2_accounts)
|
|||
|
||||
ASSERT_EQ (10, node->stats.count (nano::stat::type::confirmation_height, nano::stat::detail::blocks_confirmed, nano::stat::dir::in));
|
||||
ASSERT_EQ (10, node->stats.count (nano::stat::type::http_callback, nano::stat::detail::http_callback, nano::stat::dir::out));
|
||||
ASSERT_EQ (11, node->ledger.cemented_count);
|
||||
}
|
||||
|
||||
TEST (confirmation_height, send_receive_self)
|
||||
|
@ -1954,6 +1955,7 @@ TEST (confirmation_height, send_receive_self)
|
|||
ASSERT_EQ (8, account_info.block_count);
|
||||
ASSERT_EQ (6, node->stats.count (nano::stat::type::confirmation_height, nano::stat::detail::blocks_confirmed, nano::stat::dir::in));
|
||||
ASSERT_EQ (6, node->stats.count (nano::stat::type::http_callback, nano::stat::detail::http_callback, nano::stat::dir::out));
|
||||
ASSERT_EQ (confirmation_height, node->ledger.cemented_count);
|
||||
}
|
||||
|
||||
TEST (confirmation_height, all_block_types)
|
||||
|
@ -2061,6 +2063,7 @@ TEST (confirmation_height, all_block_types)
|
|||
|
||||
ASSERT_EQ (15, node->stats.count (nano::stat::type::confirmation_height, nano::stat::detail::blocks_confirmed, nano::stat::dir::in));
|
||||
ASSERT_EQ (15, node->stats.count (nano::stat::type::http_callback, nano::stat::detail::http_callback, nano::stat::dir::out));
|
||||
ASSERT_EQ (16, node->ledger.cemented_count);
|
||||
}
|
||||
|
||||
/* Bulk of the this test was taken from the node.fork_flip test */
|
||||
|
@ -2242,6 +2245,7 @@ TEST (confirmation_height, pending_observer_callbacks)
|
|||
// Confirm the callback is not called under this circumstance
|
||||
ASSERT_EQ (2, node->stats.count (nano::stat::type::confirmation_height, nano::stat::detail::blocks_confirmed, nano::stat::dir::in));
|
||||
ASSERT_EQ (0, node->stats.count (nano::stat::type::http_callback, nano::stat::detail::http_callback, nano::stat::dir::out));
|
||||
ASSERT_EQ (3, node->ledger.cemented_count);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3053,8 +3053,9 @@ TEST (node, dont_write_lock_node)
|
|||
{
|
||||
nano::genesis genesis;
|
||||
nano::rep_weights rep_weights;
|
||||
std::atomic<uint64_t> cemented_count{ 0 };
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, rep_weights);
|
||||
store->initialize (transaction, genesis, rep_weights, cemented_count);
|
||||
}
|
||||
|
||||
// Hold write lock open until main thread is done needing it
|
||||
|
|
|
@ -17,7 +17,7 @@ TEST (processor_service, bad_send_signature)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::account_info info1;
|
||||
ASSERT_FALSE (store->account_get (transaction, nano::test_genesis_key.pub, info1));
|
||||
|
@ -36,7 +36,7 @@ TEST (processor_service, bad_receive_signature)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::account_info info1;
|
||||
ASSERT_FALSE (store->account_get (transaction, nano::test_genesis_key.pub, info1));
|
||||
|
|
|
@ -10,7 +10,9 @@ using namespace std::chrono_literals;
|
|||
|
||||
TEST (socket, concurrent_writes)
|
||||
{
|
||||
nano::inactive_node inactivenode (nano::working_path (), 24000, false);
|
||||
auto node_flags = nano::inactive_node_flag_defaults ();
|
||||
node_flags.read_only = false;
|
||||
nano::inactive_node inactivenode (nano::working_path (), 24000, node_flags);
|
||||
auto node = inactivenode.node;
|
||||
|
||||
// This gives more realistic execution than using system#poll, allowing writes to
|
||||
|
|
|
@ -270,7 +270,9 @@ int main (int argc, char * const * argv)
|
|||
}
|
||||
else if (vm.count ("debug_dump_representatives"))
|
||||
{
|
||||
nano::inactive_node node (data_path, 24000, true);
|
||||
auto node_flags = nano::inactive_node_flag_defaults ();
|
||||
node_flags.cache_representative_weights_from_frontiers = true;
|
||||
nano::inactive_node node (data_path, 24000, node_flags);
|
||||
auto transaction (node.node->store.tx_begin_read ());
|
||||
nano::uint128_t total;
|
||||
auto rep_amounts = node.node->ledger.rep_weights.get_rep_amounts ();
|
||||
|
@ -1031,9 +1033,10 @@ int main (int argc, char * const * argv)
|
|||
}
|
||||
else if (vm.count ("debug_cemented_block_count"))
|
||||
{
|
||||
nano::inactive_node node (data_path);
|
||||
auto transaction (node.node->store.tx_begin_read ());
|
||||
std::cout << "Total cemented block count: " << node.node->store.cemented_count (transaction) << std::endl;
|
||||
auto node_flags = nano::inactive_node_flag_defaults ();
|
||||
node_flags.cache_cemented_count_from_frontiers = true;
|
||||
nano::inactive_node node (data_path, 24000, node_flags);
|
||||
std::cout << "Total cemented block count: " << node.node->ledger.cemented_count << std::endl;
|
||||
}
|
||||
else if (vm.count ("debug_sys_logging"))
|
||||
{
|
||||
|
|
|
@ -83,7 +83,9 @@ bool copy_database (boost::filesystem::path const & data_path, boost::program_op
|
|||
bool success = false;
|
||||
bool needs_to_write = vm.count ("unchecked_clear") || vm.count ("clear_send_ids") || vm.count ("online_weight_clear") || vm.count ("peer_clear") || vm.count ("confirmation_height_clear");
|
||||
|
||||
nano::inactive_node node (data_path, 24000, !needs_to_write);
|
||||
auto node_flags = nano::inactive_node_flag_defaults ();
|
||||
node_flags.read_only = !needs_to_write;
|
||||
nano::inactive_node node (data_path, 24000, node_flags);
|
||||
if (!node.node->init_error ())
|
||||
{
|
||||
if (vm.count ("unchecked_clear"))
|
||||
|
@ -290,7 +292,9 @@ std::error_code nano::handle_node_options (boost::program_options::variables_map
|
|||
else if (vm.count ("unchecked_clear"))
|
||||
{
|
||||
boost::filesystem::path data_path = vm.count ("data_path") ? boost::filesystem::path (vm["data_path"].as<std::string> ()) : nano::working_path ();
|
||||
inactive_node node (data_path, 24000, false);
|
||||
auto node_flags = nano::inactive_node_flag_defaults ();
|
||||
node_flags.read_only = false;
|
||||
nano::inactive_node node (data_path, 24000, node_flags);
|
||||
if (!node.node->init_error ())
|
||||
{
|
||||
auto transaction (node.node->store.tx_begin_write ());
|
||||
|
@ -305,7 +309,9 @@ std::error_code nano::handle_node_options (boost::program_options::variables_map
|
|||
else if (vm.count ("clear_send_ids"))
|
||||
{
|
||||
boost::filesystem::path data_path = vm.count ("data_path") ? boost::filesystem::path (vm["data_path"].as<std::string> ()) : nano::working_path ();
|
||||
inactive_node node (data_path, 24000, false);
|
||||
auto node_flags = nano::inactive_node_flag_defaults ();
|
||||
node_flags.read_only = false;
|
||||
nano::inactive_node node (data_path, 24000, node_flags);
|
||||
if (!node.node->init_error ())
|
||||
{
|
||||
auto transaction (node.node->wallets.tx_begin_write ());
|
||||
|
@ -320,7 +326,9 @@ std::error_code nano::handle_node_options (boost::program_options::variables_map
|
|||
else if (vm.count ("online_weight_clear"))
|
||||
{
|
||||
boost::filesystem::path data_path = vm.count ("data_path") ? boost::filesystem::path (vm["data_path"].as<std::string> ()) : nano::working_path ();
|
||||
inactive_node node (data_path, 24000, false);
|
||||
auto node_flags = nano::inactive_node_flag_defaults ();
|
||||
node_flags.read_only = false;
|
||||
nano::inactive_node node (data_path, 24000, node_flags);
|
||||
if (!node.node->init_error ())
|
||||
{
|
||||
auto transaction (node.node->store.tx_begin_write ());
|
||||
|
@ -335,7 +343,9 @@ std::error_code nano::handle_node_options (boost::program_options::variables_map
|
|||
else if (vm.count ("peer_clear"))
|
||||
{
|
||||
boost::filesystem::path data_path = vm.count ("data_path") ? boost::filesystem::path (vm["data_path"].as<std::string> ()) : nano::working_path ();
|
||||
inactive_node node (data_path, 24000, false);
|
||||
auto node_flags = nano::inactive_node_flag_defaults ();
|
||||
node_flags.read_only = false;
|
||||
nano::inactive_node node (data_path, 24000, node_flags);
|
||||
if (!node.node->init_error ())
|
||||
{
|
||||
auto transaction (node.node->store.tx_begin_write ());
|
||||
|
@ -350,7 +360,9 @@ std::error_code nano::handle_node_options (boost::program_options::variables_map
|
|||
else if (vm.count ("confirmation_height_clear"))
|
||||
{
|
||||
boost::filesystem::path data_path = vm.count ("data_path") ? boost::filesystem::path (vm["data_path"].as<std::string> ()) : nano::working_path ();
|
||||
inactive_node node (data_path, 24000, false);
|
||||
auto node_flags = nano::inactive_node_flag_defaults ();
|
||||
node_flags.read_only = false;
|
||||
nano::inactive_node node (data_path, 24000, node_flags);
|
||||
if (!node.node->init_error ())
|
||||
{
|
||||
auto account_it = vm.find ("account");
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
#include <cassert>
|
||||
#include <numeric>
|
||||
|
||||
nano::confirmation_height_processor::confirmation_height_processor (nano::pending_confirmation_height & pending_confirmation_height_a, nano::block_store & store_a, nano::stat & stats_a, nano::active_transactions & active_a, nano::block_hash const & epoch_link_a, nano::write_database_queue & write_database_queue_a, std::chrono::milliseconds batch_separate_pending_min_time_a, nano::logger_mt & logger_a) :
|
||||
nano::confirmation_height_processor::confirmation_height_processor (nano::pending_confirmation_height & pending_confirmation_height_a, nano::block_store & store_a, nano::stat & stats_a, nano::active_transactions & active_a, nano::block_hash const & epoch_link_a, nano::write_database_queue & write_database_queue_a, std::chrono::milliseconds batch_separate_pending_min_time_a, nano::logger_mt & logger_a, std::atomic<uint64_t> & cemented_count_a) :
|
||||
pending_confirmations (pending_confirmation_height_a),
|
||||
store (store_a),
|
||||
stats (stats_a),
|
||||
|
@ -22,6 +22,7 @@ epoch_link (epoch_link_a),
|
|||
logger (logger_a),
|
||||
write_database_queue (write_database_queue_a),
|
||||
batch_separate_pending_min_time (batch_separate_pending_min_time_a),
|
||||
cemented_count (cemented_count_a),
|
||||
thread ([this]() {
|
||||
nano::thread_role::set (nano::thread_role::name::confirmation_height_processing);
|
||||
this->run ();
|
||||
|
@ -303,6 +304,7 @@ bool nano::confirmation_height_processor::write_pending (std::deque<conf_height_
|
|||
stats.add (nano::stat::type::confirmation_height, nano::stat::detail::blocks_confirmed, nano::stat::dir::in, pending.height - confirmation_height);
|
||||
assert (pending.num_blocks_confirmed == pending.height - confirmation_height);
|
||||
confirmation_height = pending.height;
|
||||
cemented_count += pending.num_blocks_confirmed;
|
||||
store.confirmation_height_put (transaction, pending.account, confirmation_height);
|
||||
}
|
||||
total_pending_write_block_count -= pending.num_blocks_confirmed;
|
||||
|
|
|
@ -38,7 +38,7 @@ std::unique_ptr<seq_con_info_component> collect_seq_con_info (pending_confirmati
|
|||
class confirmation_height_processor final
|
||||
{
|
||||
public:
|
||||
confirmation_height_processor (pending_confirmation_height &, nano::block_store &, nano::stat &, nano::active_transactions &, nano::block_hash const &, nano::write_database_queue &, std::chrono::milliseconds, nano::logger_mt &);
|
||||
confirmation_height_processor (pending_confirmation_height &, nano::block_store &, nano::stat &, nano::active_transactions &, nano::block_hash const &, nano::write_database_queue &, std::chrono::milliseconds, nano::logger_mt &, std::atomic<uint64_t> &);
|
||||
~confirmation_height_processor ();
|
||||
void add (nano::block_hash const &);
|
||||
void stop ();
|
||||
|
@ -96,6 +96,7 @@ private:
|
|||
nano::timer<std::chrono::milliseconds> timer;
|
||||
nano::write_database_queue & write_database_queue;
|
||||
std::chrono::milliseconds batch_separate_pending_min_time;
|
||||
std::atomic<uint64_t> & cemented_count;
|
||||
std::thread thread;
|
||||
|
||||
void run ();
|
||||
|
|
|
@ -1206,7 +1206,7 @@ void nano::json_handler::block_count ()
|
|||
auto transaction (node.store.tx_begin_read ());
|
||||
response_l.put ("count", std::to_string (node.store.block_count (transaction).sum ()));
|
||||
response_l.put ("unchecked", std::to_string (node.store.unchecked_count (transaction)));
|
||||
response_l.put ("cemented", std::to_string (node.store.cemented_count (transaction)));
|
||||
response_l.put ("cemented", std::to_string (node.ledger.cemented_count));
|
||||
response_errors ();
|
||||
}
|
||||
|
||||
|
|
|
@ -145,7 +145,7 @@ block_processor_thread ([this]() {
|
|||
online_reps (*this, config.online_weight_minimum.number ()),
|
||||
vote_uniquer (block_uniquer),
|
||||
active (*this),
|
||||
confirmation_height_processor (pending_confirmation_height, store, ledger.stats, active, ledger.epoch_link, write_database_queue, config.conf_height_processor_batch_min_time, logger),
|
||||
confirmation_height_processor (pending_confirmation_height, store, ledger.stats, active, ledger.epoch_link, write_database_queue, config.conf_height_processor_batch_min_time, logger, ledger.cemented_count),
|
||||
payment_observer_processor (observers.blocks),
|
||||
wallets (wallets_store.init_error (), *this),
|
||||
startup_time (std::chrono::steady_clock::now ())
|
||||
|
@ -391,7 +391,7 @@ startup_time (std::chrono::steady_clock::now ())
|
|||
release_assert (!flags.read_only);
|
||||
auto transaction (store.tx_begin_write ());
|
||||
// Store was empty meaning we just created it, add the genesis block
|
||||
store.initialize (transaction, genesis, ledger.rep_weights);
|
||||
store.initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
}
|
||||
|
||||
auto transaction (store.tx_begin_read ());
|
||||
|
@ -1639,7 +1639,7 @@ bool nano::node::init_error () const
|
|||
return store.init_error () || wallets_store.init_error ();
|
||||
}
|
||||
|
||||
nano::inactive_node::inactive_node (boost::filesystem::path const & path_a, uint16_t peering_port_a, bool read_only_a, bool cache_reps_a) :
|
||||
nano::inactive_node::inactive_node (boost::filesystem::path const & path_a, uint16_t peering_port_a, nano::node_flags const & node_flags) :
|
||||
path (path_a),
|
||||
io_context (std::make_shared<boost::asio::io_context> ()),
|
||||
alarm (*io_context),
|
||||
|
@ -1655,9 +1655,6 @@ peering_port (peering_port_a)
|
|||
nano::set_secure_perm_directory (path, error_chmod);
|
||||
logging.max_size = std::numeric_limits<std::uintmax_t>::max ();
|
||||
logging.init (path);
|
||||
nano::node_flags node_flags;
|
||||
node_flags.read_only = read_only_a;
|
||||
node_flags.cache_representative_weights_from_frontiers = cache_reps_a;
|
||||
node = std::make_shared<nano::node> (*io_context, peering_port, path, alarm, logging, work, node_flags);
|
||||
node->active.stop ();
|
||||
}
|
||||
|
@ -1667,6 +1664,15 @@ nano::inactive_node::~inactive_node ()
|
|||
node->stop ();
|
||||
}
|
||||
|
||||
nano::node_flags const & nano::inactive_node_flag_defaults ()
|
||||
{
|
||||
static nano::node_flags node_flags;
|
||||
node_flags.read_only = true;
|
||||
node_flags.cache_representative_weights_from_frontiers = false;
|
||||
node_flags.cache_cemented_count_from_frontiers = false;
|
||||
return node_flags;
|
||||
}
|
||||
|
||||
std::unique_ptr<nano::block_store> nano::make_store (nano::logger_mt & logger, boost::filesystem::path const & path, bool read_only, bool add_db_postfix, nano::txn_tracking_config const & txn_tracking_config_a, std::chrono::milliseconds block_processor_batch_max_time_a, int lmdb_max_dbs, bool drop_unchecked, size_t batch_size, bool backup_before_upgrade)
|
||||
{
|
||||
#if NANO_ROCKSDB
|
||||
|
|
|
@ -186,10 +186,12 @@ public:
|
|||
|
||||
std::unique_ptr<seq_con_info_component> collect_seq_con_info (node & node, const std::string & name);
|
||||
|
||||
nano::node_flags const & inactive_node_flag_defaults ();
|
||||
|
||||
class inactive_node final
|
||||
{
|
||||
public:
|
||||
inactive_node (boost::filesystem::path const & path = nano::working_path (), uint16_t = 24000, bool = true, bool = false);
|
||||
inactive_node (boost::filesystem::path const & path = nano::working_path (), uint16_t = 24000, nano::node_flags const & = nano::inactive_node_flag_defaults ());
|
||||
~inactive_node ();
|
||||
boost::filesystem::path path;
|
||||
std::shared_ptr<boost::asio::io_context> io_context;
|
||||
|
|
|
@ -119,6 +119,8 @@ public:
|
|||
bool read_only{ false };
|
||||
/** Whether to read all frontiers and construct the representative weights */
|
||||
bool cache_representative_weights_from_frontiers{ true };
|
||||
/** Whether to read all frontiers and construct the total cemented count */
|
||||
bool cache_cemented_count_from_frontiers{ true };
|
||||
size_t sideband_batch_size{ 512 };
|
||||
size_t block_processor_batch_size{ 0 };
|
||||
size_t block_processor_full_size{ 65536 };
|
||||
|
|
|
@ -481,7 +481,7 @@ TEST (history, short_text)
|
|||
nano::ledger ledger (store, system.nodes[0]->stats);
|
||||
{
|
||||
auto transaction (store.tx_begin_write ());
|
||||
store.initialize (transaction, genesis, ledger.rep_weights);
|
||||
store.initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::keypair key;
|
||||
auto latest (ledger.latest (transaction, nano::test_genesis_key.pub));
|
||||
nano::send_block send (latest, nano::test_genesis_key.pub, 0, nano::test_genesis_key.prv, nano::test_genesis_key.pub, system.work.generate (latest));
|
||||
|
|
|
@ -574,7 +574,7 @@ class block_store
|
|||
{
|
||||
public:
|
||||
virtual ~block_store () = default;
|
||||
virtual void initialize (nano::write_transaction const &, nano::genesis const &, nano::rep_weights &) = 0;
|
||||
virtual void initialize (nano::write_transaction const &, nano::genesis const &, nano::rep_weights &, std::atomic<uint64_t> &) = 0;
|
||||
virtual void block_put (nano::write_transaction const &, nano::block_hash const &, nano::block const &, nano::block_sideband const &, nano::epoch version = nano::epoch::epoch_0) = 0;
|
||||
virtual nano::block_hash block_successor (nano::transaction const &, nano::block_hash const &) const = 0;
|
||||
virtual void block_successor_clear (nano::write_transaction const &, nano::block_hash const &) = 0;
|
||||
|
@ -599,7 +599,6 @@ public:
|
|||
virtual size_t account_count (nano::transaction const &) = 0;
|
||||
virtual void confirmation_height_clear (nano::write_transaction const &, nano::account const & account, uint64_t existing_confirmation_height) = 0;
|
||||
virtual void confirmation_height_clear (nano::write_transaction const &) = 0;
|
||||
virtual uint64_t cemented_count (nano::transaction const &) = 0;
|
||||
virtual nano::store_iterator<nano::account, nano::account_info> latest_v0_begin (nano::transaction const &, nano::account const &) = 0;
|
||||
virtual nano::store_iterator<nano::account, nano::account_info> latest_v0_begin (nano::transaction const &) = 0;
|
||||
virtual nano::store_iterator<nano::account, nano::account_info> latest_v0_end () = 0;
|
||||
|
|
|
@ -24,7 +24,7 @@ public:
|
|||
* If using a different store version than the latest then you may need
|
||||
* to modify some of the objects in the store to be appropriate for the version before an upgrade.
|
||||
*/
|
||||
void initialize (nano::write_transaction const & transaction_a, nano::genesis const & genesis_a, nano::rep_weights & rep_weights) override
|
||||
void initialize (nano::write_transaction const & transaction_a, nano::genesis const & genesis_a, nano::rep_weights & rep_weights, std::atomic<uint64_t> & cemented_count) override
|
||||
{
|
||||
auto hash_l (genesis_a.hash ());
|
||||
assert (latest_v0_begin (transaction_a) == latest_v0_end ());
|
||||
|
@ -32,6 +32,7 @@ public:
|
|||
nano::block_sideband sideband (nano::block_type::open, network_params.ledger.genesis_account, 0, network_params.ledger.genesis_amount, 1, nano::seconds_since_epoch ());
|
||||
block_put (transaction_a, hash_l, *genesis_a.open, sideband);
|
||||
confirmation_height_put (transaction_a, network_params.ledger.genesis_account, 1);
|
||||
++cemented_count;
|
||||
account_put (transaction_a, network_params.ledger.genesis_account, { hash_l, genesis_a.open->hash (), genesis_a.open->hash (), std::numeric_limits<nano::uint128_t>::max (), nano::seconds_since_epoch (), 1, nano::epoch::epoch_0 });
|
||||
rep_weights.representation_put (network_params.ledger.genesis_account, std::numeric_limits<nano::uint128_t>::max ());
|
||||
frontier_put (transaction_a, hash_l, network_params.ledger.genesis_account);
|
||||
|
@ -244,16 +245,6 @@ public:
|
|||
block_raw_put (transaction_a, data, type, version, hash_a);
|
||||
}
|
||||
|
||||
uint64_t cemented_count (nano::transaction const & transaction_a) override
|
||||
{
|
||||
uint64_t sum = 0;
|
||||
for (auto i (confirmation_height_begin (transaction_a)), n (confirmation_height_end ()); i != n; ++i)
|
||||
{
|
||||
sum += i->second;
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
void unchecked_put (nano::write_transaction const & transaction_a, nano::block_hash const & hash_a, std::shared_ptr<nano::block> const & block_a) override
|
||||
{
|
||||
nano::unchecked_key key (hash_a, block_a->hash ());
|
||||
|
|
|
@ -677,22 +677,33 @@ bool nano::shared_ptr_block_hash::operator() (std::shared_ptr<nano::block> const
|
|||
return lhs->hash () == rhs->hash ();
|
||||
}
|
||||
|
||||
nano::ledger::ledger (nano::block_store & store_a, nano::stat & stat_a, nano::uint256_union const & epoch_link_a, nano::account const & epoch_signer_a, bool cache_reps_a) :
|
||||
nano::ledger::ledger (nano::block_store & store_a, nano::stat & stat_a, nano::uint256_union const & epoch_link_a, nano::account const & epoch_signer_a, bool cache_reps_a, bool cache_cemented_count_a) :
|
||||
store (store_a),
|
||||
stats (stat_a),
|
||||
check_bootstrap_weights (true),
|
||||
epoch_link (epoch_link_a),
|
||||
epoch_signer (epoch_signer_a)
|
||||
{
|
||||
if (!store.init_error () && cache_reps_a)
|
||||
if (!store.init_error ())
|
||||
{
|
||||
auto transaction = store.tx_begin_read ();
|
||||
for (auto i (store.latest_begin (transaction)), n (store.latest_end ()); i != n; ++i)
|
||||
if (cache_reps_a)
|
||||
{
|
||||
nano::account_info const & info (i->second);
|
||||
auto block (store.block_get (transaction, info.rep_block));
|
||||
assert (block != nullptr);
|
||||
rep_weights.representation_add (block->representative (), info.balance.number ());
|
||||
for (auto i (store.latest_begin (transaction)), n (store.latest_end ()); i != n; ++i)
|
||||
{
|
||||
nano::account_info const & info (i->second);
|
||||
auto block (store.block_get (transaction, info.rep_block));
|
||||
assert (block != nullptr);
|
||||
rep_weights.representation_add (block->representative (), info.balance.number ());
|
||||
}
|
||||
}
|
||||
|
||||
if (cache_cemented_count_a)
|
||||
{
|
||||
for (auto i (store.confirmation_height_begin (transaction)), n (store.confirmation_height_end ()); i != n; ++i)
|
||||
{
|
||||
cemented_count += i->second;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ using tally_t = std::map<nano::uint128_t, std::shared_ptr<nano::block>, std::gre
|
|||
class ledger final
|
||||
{
|
||||
public:
|
||||
ledger (nano::block_store &, nano::stat &, nano::uint256_union const & = 1, nano::account const & = 0, bool = true);
|
||||
ledger (nano::block_store &, nano::stat &, nano::uint256_union const & = 1, nano::account const & = 0, bool = true, bool = true);
|
||||
nano::account account (nano::transaction const &, nano::block_hash const &) const;
|
||||
nano::uint128_t amount (nano::transaction const &, nano::block_hash const &);
|
||||
nano::uint128_t balance (nano::transaction const &, nano::block_hash const &) const;
|
||||
|
@ -51,6 +51,7 @@ public:
|
|||
static nano::uint128_t const unit;
|
||||
nano::network_params network_params;
|
||||
nano::block_store & store;
|
||||
std::atomic<uint64_t> cemented_count{ 0 };
|
||||
nano::rep_weights rep_weights;
|
||||
nano::stat & stats;
|
||||
std::unordered_map<nano::account, nano::uint128_t> bootstrap_weights;
|
||||
|
|
|
@ -95,7 +95,7 @@ TEST (ledger, deep_account_compute)
|
|||
nano::ledger ledger (*store, stats);
|
||||
nano::genesis genesis;
|
||||
auto transaction (store->tx_begin_write ());
|
||||
store->initialize (transaction, genesis, ledger.rep_weights);
|
||||
store->initialize (transaction, genesis, ledger.rep_weights, ledger.cemented_count);
|
||||
nano::work_pool pool (std::numeric_limits<unsigned>::max ());
|
||||
nano::keypair key;
|
||||
auto balance (nano::genesis_amount - 1);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue