diff --git a/nano/secure/common.cpp b/nano/secure/common.cpp index 58c02c9c..c75f5d1d 100644 --- a/nano/secure/common.cpp +++ b/nano/secure/common.cpp @@ -80,19 +80,10 @@ char const * live_canary_public_key_data = "7CBAF192A3763DAEC9F9BAC1B2CDF665D836 std::string const test_canary_public_key_data = nano::get_env_or_default ("NANO_TEST_CANARY_PUB", "3BAD2C554ACE05F5E528FBBCE79D51E552C55FA765CCFD89B289C4835DE5F04A"); // nano_1gxf7jcnomi7yqkkjyxwwygo5sckrohtgsgezp6u74g6ifgydw4cajwbk8bf } -nano::ledger_constants nano::dev::constants{ nano::networks::nano_dev_network }; -std::shared_ptr & nano::dev::genesis = nano::dev::constants.genesis; nano::keypair nano::dev::genesis_key{ dev_private_key_data }; nano::uint128_t nano::dev::genesis_amount{ std::numeric_limits::max () }; -namespace { -struct genesis_sideband_initializer { -genesis_sideband_initializer () -{ - nano::dev::genesis->sideband_set (nano::block_sideband (nano::dev::genesis->account (), 0, nano::dev::genesis_amount, 1, nano::seconds_since_epoch (), nano::epoch::epoch_0, false, false, false, nano::epoch::epoch_0)); -} -}; -genesis_sideband_initializer initializer; -} +nano::ledger_constants nano::dev::constants{ nano::networks::nano_dev_network }; +std::shared_ptr & nano::dev::genesis = nano::dev::constants.genesis; nano::network_params::network_params () : network_params (network_constants::active_network) @@ -139,6 +130,11 @@ nano::ledger_constants::ledger_constants (nano::networks network_a) : nano_test_final_votes_canary_height (1), final_votes_canary_height (network_a == nano::networks::nano_dev_network ? nano_dev_final_votes_canary_height : network_a == nano::networks::nano_beta_network ? nano_beta_final_votes_canary_height : network_a == nano::networks::nano_test_network ? nano_test_final_votes_canary_height : nano_live_final_votes_canary_height) { + nano_beta_genesis->sideband_set (nano::block_sideband (nano_beta_genesis->account (), 0, nano::dev::genesis_amount, 1, nano::seconds_since_epoch (), nano::epoch::epoch_0, false, false, false, nano::epoch::epoch_0)); + nano_dev_genesis->sideband_set (nano::block_sideband (nano_dev_genesis->account (), 0, nano::dev::genesis_amount, 1, nano::seconds_since_epoch (), nano::epoch::epoch_0, false, false, false, nano::epoch::epoch_0)); + nano_live_genesis->sideband_set (nano::block_sideband (nano_live_genesis->account (), 0, nano::dev::genesis_amount, 1, nano::seconds_since_epoch (), nano::epoch::epoch_0, false, false, false, nano::epoch::epoch_0)); + nano_test_genesis->sideband_set (nano::block_sideband (nano_test_genesis->account (), 0, nano::dev::genesis_amount, 1, nano::seconds_since_epoch (), nano::epoch::epoch_0, false, false, false, nano::epoch::epoch_0)); + nano::link epoch_link_v1; const char * epoch_message_v1 ("epoch v1 block"); strncpy ((char *)epoch_link_v1.bytes.data (), epoch_message_v1, epoch_link_v1.bytes.size ()); diff --git a/nano/secure/common.hpp b/nano/secure/common.hpp index 57253606..96f2ebc6 100644 --- a/nano/secure/common.hpp +++ b/nano/secure/common.hpp @@ -395,10 +395,10 @@ public: namespace dev { - extern nano::ledger_constants constants; - extern std::shared_ptr & genesis; extern nano::keypair genesis_key; extern nano::uint128_t genesis_amount; + extern nano::ledger_constants constants; + extern std::shared_ptr & genesis; } /** Constants which depend on random values (this class should never be used globally due to CryptoPP globals potentially not being initialized) */ diff --git a/nano/secure/store_partial.hpp b/nano/secure/store_partial.hpp index 666a9b8d..950fd26f 100644 --- a/nano/secure/store_partial.hpp +++ b/nano/secure/store_partial.hpp @@ -105,16 +105,15 @@ public: */ void initialize (nano::write_transaction const & transaction_a, nano::ledger_cache & ledger_cache_a) override { - auto & genesis = *network_params.ledger.genesis; - auto hash_l (genesis.hash ()); + debug_assert (network_params.ledger.genesis->has_sideband ()); debug_assert (account.begin (transaction_a) == account.end ()); - genesis.sideband_set (nano::block_sideband (network_params.ledger.genesis_account (), 0, nano::dev::genesis_amount, 1, nano::seconds_since_epoch (), nano::epoch::epoch_0, false, false, false, nano::epoch::epoch_0)); - block.put (transaction_a, hash_l, genesis); + auto hash_l (network_params.ledger.genesis->hash ()); + block.put (transaction_a, hash_l, *network_params.ledger.genesis); ++ledger_cache_a.block_count; - confirmation_height.put (transaction_a, network_params.ledger.genesis_account (), nano::confirmation_height_info{ 1, genesis.hash () }); + confirmation_height.put (transaction_a, network_params.ledger.genesis_account (), nano::confirmation_height_info{ 1, network_params.ledger.genesis->hash () }); ++ledger_cache_a.cemented_count; ledger_cache_a.final_votes_confirmation_canary = (network_params.ledger.final_votes_canary_account == network_params.ledger.genesis_account () && 1 >= network_params.ledger.final_votes_canary_height); - account.put (transaction_a, network_params.ledger.genesis_account (), { hash_l, network_params.ledger.genesis_account (), genesis.hash (), std::numeric_limits::max (), nano::seconds_since_epoch (), 1, nano::epoch::epoch_0 }); + account.put (transaction_a, network_params.ledger.genesis_account (), { hash_l, network_params.ledger.genesis_account (), network_params.ledger.genesis->hash (), std::numeric_limits::max (), nano::seconds_since_epoch (), 1, nano::epoch::epoch_0 }); ++ledger_cache_a.account_count; ledger_cache_a.rep_weights.representation_put (network_params.ledger.genesis_account (), std::numeric_limits::max ()); frontier.put (transaction_a, hash_l, network_params.ledger.genesis_account ());