Prettify ledger constants (#4793)
This commit is contained in:
		
					parent
					
						
							
								b00064b5a7
							
						
					
				
			
			
				commit
				
					
						e69f9f1084
					
				
			
		
					 4 changed files with 214 additions and 41 deletions
				
			
		| 
						 | 
					@ -32,6 +32,26 @@ uint8_t account_decode (char value)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * public_key
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					nano::public_key nano::public_key::from_account (std::string const & text)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						nano::public_key result;
 | 
				
			||||||
 | 
						bool error = result.decode_account (text);
 | 
				
			||||||
 | 
						release_assert (!error);
 | 
				
			||||||
 | 
						return result;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					nano::public_key nano::public_key::from_node_id (std::string const & text)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						nano::public_key result;
 | 
				
			||||||
 | 
						bool error = result.decode_node_id (text);
 | 
				
			||||||
 | 
						release_assert (!error);
 | 
				
			||||||
 | 
						return result;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void nano::public_key::encode_account (std::string & destination_a) const
 | 
					void nano::public_key::encode_account (std::string & destination_a) const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	debug_assert (destination_a.empty ());
 | 
						debug_assert (destination_a.empty ());
 | 
				
			||||||
| 
						 | 
					@ -138,6 +158,10 @@ bool nano::public_key::decode_account (std::string const & source_a)
 | 
				
			||||||
	return error;
 | 
						return error;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * uint256_union
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Construct a uint256_union = AES_ENC_CTR (cleartext, key, iv)
 | 
					// Construct a uint256_union = AES_ENC_CTR (cleartext, key, iv)
 | 
				
			||||||
void nano::uint256_union::encrypt (nano::raw_key const & cleartext, nano::raw_key const & key, uint128_union const & iv)
 | 
					void nano::uint256_union::encrypt (nano::raw_key const & cleartext, nano::raw_key const & key, uint128_union const & iv)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,7 @@
 | 
				
			||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <nano/lib/assert.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <boost/functional/hash_fwd.hpp>
 | 
					#include <boost/functional/hash_fwd.hpp>
 | 
				
			||||||
#include <boost/multiprecision/cpp_int.hpp>
 | 
					#include <boost/multiprecision/cpp_int.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,6 +9,7 @@
 | 
				
			||||||
#include <compare>
 | 
					#include <compare>
 | 
				
			||||||
#include <limits>
 | 
					#include <limits>
 | 
				
			||||||
#include <ostream>
 | 
					#include <ostream>
 | 
				
			||||||
 | 
					#include <string_view>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <fmt/ostream.h>
 | 
					#include <fmt/ostream.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -236,6 +239,18 @@ public:
 | 
				
			||||||
	std::string to_node_id () const;
 | 
						std::string to_node_id () const;
 | 
				
			||||||
	std::string to_account () const;
 | 
						std::string to_account () const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Decode from account string
 | 
				
			||||||
 | 
						 * @warning Aborts at runtime if the input is invalid
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						static public_key from_account (std::string const &);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * Decode from node id string
 | 
				
			||||||
 | 
						 * @warning Aborts at runtime if the input is invalid
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						static public_key from_node_id (std::string const &);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public: // Keep operators inlined
 | 
					public: // Keep operators inlined
 | 
				
			||||||
	auto operator<=> (nano::public_key const & other) const
 | 
						auto operator<=> (nano::public_key const & other) const
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
| 
						 | 
					@ -338,6 +353,12 @@ class link final : public hash_or_account
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
	using hash_or_account::hash_or_account;
 | 
						using hash_or_account::hash_or_account;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						explicit link (std::string_view str)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							release_assert (str.size () <= bytes.size ());
 | 
				
			||||||
 | 
							std::copy_n (str.data (), str.size (), bytes.begin ());
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public: // Keep operators inlined
 | 
					public: // Keep operators inlined
 | 
				
			||||||
	auto operator<=> (nano::link const & other) const
 | 
						auto operator<=> (nano::link const & other) const
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -77,17 +77,40 @@ std::shared_ptr<nano::block> parse_block_from_genesis_data (std::string const &
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * nano::dev constants
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nano::keypair nano::dev::genesis_key{ dev_private_key_data };
 | 
					nano::keypair nano::dev::genesis_key{ dev_private_key_data };
 | 
				
			||||||
nano::network_params nano::dev::network_params{ nano::networks::nano_dev_network };
 | 
					nano::network_params nano::dev::network_params{ nano::networks::nano_dev_network };
 | 
				
			||||||
nano::ledger_constants & nano::dev::constants{ nano::dev::network_params.ledger };
 | 
					nano::ledger_constants & nano::dev::constants{ nano::dev::network_params.ledger };
 | 
				
			||||||
std::shared_ptr<nano::block> & nano::dev::genesis = nano::dev::constants.genesis;
 | 
					std::shared_ptr<nano::block> & nano::dev::genesis = nano::dev::constants.genesis;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nano::network_params::network_params (nano::networks network_a) :
 | 
					/*
 | 
				
			||||||
	work{ network_a == nano::networks::nano_live_network ? nano::work_thresholds::publish_full : network_a == nano::networks::nano_beta_network ? nano::work_thresholds::publish_beta
 | 
					 *
 | 
				
			||||||
		: network_a == nano::networks::nano_test_network                                                                                        ? nano::work_thresholds::publish_test
 | 
					 */
 | 
				
			||||||
																																				: nano::work_thresholds::publish_dev },
 | 
					
 | 
				
			||||||
	network{ work, network_a },
 | 
					nano::work_thresholds const & nano::work_thresholds_for_network (nano::networks network_type)
 | 
				
			||||||
	ledger{ work, network_a },
 | 
					{
 | 
				
			||||||
 | 
						switch (network_type)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							case nano::networks::nano_live_network:
 | 
				
			||||||
 | 
								return nano::work_thresholds::publish_full;
 | 
				
			||||||
 | 
							case nano::networks::nano_beta_network:
 | 
				
			||||||
 | 
								return nano::work_thresholds::publish_beta;
 | 
				
			||||||
 | 
							case nano::networks::nano_dev_network:
 | 
				
			||||||
 | 
								return nano::work_thresholds::publish_dev;
 | 
				
			||||||
 | 
							case nano::networks::nano_test_network:
 | 
				
			||||||
 | 
								return nano::work_thresholds::publish_test;
 | 
				
			||||||
 | 
							default:
 | 
				
			||||||
 | 
								release_assert (false, "invalid network");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					nano::network_params::network_params (nano::networks network_type) :
 | 
				
			||||||
 | 
						work{ work_thresholds_for_network (network_type) },
 | 
				
			||||||
 | 
						network{ work, network_type },
 | 
				
			||||||
 | 
						ledger{ work, network_type },
 | 
				
			||||||
	voting{ network },
 | 
						voting{ network },
 | 
				
			||||||
	node{ network },
 | 
						node{ network },
 | 
				
			||||||
	portmapping{ network },
 | 
						portmapping{ network },
 | 
				
			||||||
| 
						 | 
					@ -98,44 +121,116 @@ nano::network_params::network_params (nano::networks network_a) :
 | 
				
			||||||
	kdf_work = network.is_dev_network () ? kdf_dev_work : kdf_full_work;
 | 
						kdf_work = network.is_dev_network () ? kdf_dev_work : kdf_full_work;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nano::ledger_constants::ledger_constants (nano::work_thresholds & work, nano::networks network_a) :
 | 
					/*
 | 
				
			||||||
	work{ work },
 | 
					 *
 | 
				
			||||||
	zero_key ("0"),
 | 
					 */
 | 
				
			||||||
	nano_beta_account (beta_public_key_data),
 | 
					 | 
				
			||||||
	nano_live_account (live_public_key_data),
 | 
					 | 
				
			||||||
	nano_test_account (test_public_key_data),
 | 
					 | 
				
			||||||
	nano_dev_genesis (parse_block_from_genesis_data (dev_genesis_data)),
 | 
					 | 
				
			||||||
	nano_beta_genesis (parse_block_from_genesis_data (beta_genesis_data)),
 | 
					 | 
				
			||||||
	nano_live_genesis (parse_block_from_genesis_data (live_genesis_data)),
 | 
					 | 
				
			||||||
	nano_test_genesis (parse_block_from_genesis_data (test_genesis_data)),
 | 
					 | 
				
			||||||
	genesis (network_a == nano::networks::nano_dev_network ? nano_dev_genesis : network_a == nano::networks::nano_beta_network ? nano_beta_genesis
 | 
					 | 
				
			||||||
	: network_a == nano::networks::nano_test_network                                                                           ? nano_test_genesis
 | 
					 | 
				
			||||||
																															   : nano_live_genesis),
 | 
					 | 
				
			||||||
	genesis_amount{ std::numeric_limits<nano::uint128_t>::max () },
 | 
					 | 
				
			||||||
	burn_account{}
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	nano_beta_genesis->sideband_set (nano::block_sideband (nano_beta_genesis->account_field ().value (), 0, std::numeric_limits<nano::uint128_t>::max (), 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_field ().value (), 0, std::numeric_limits<nano::uint128_t>::max (), 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_field ().value (), 0, std::numeric_limits<nano::uint128_t>::max (), 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_field ().value (), 0, std::numeric_limits<nano::uint128_t>::max (), 1, nano::seconds_since_epoch (), nano::epoch::epoch_0, false, false, false, nano::epoch::epoch_0));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	nano::link epoch_link_v1;
 | 
					nano::ledger_constants::ledger_constants (nano::work_thresholds & work, nano::networks network_type) :
 | 
				
			||||||
	char const * epoch_message_v1 ("epoch v1 block");
 | 
						work{ work },
 | 
				
			||||||
	strncpy ((char *)epoch_link_v1.bytes.data (), epoch_message_v1, epoch_link_v1.bytes.size ());
 | 
						zero_key{ "0" },
 | 
				
			||||||
 | 
						nano_beta_account{ beta_public_key_data },
 | 
				
			||||||
 | 
						nano_live_account{ live_public_key_data },
 | 
				
			||||||
 | 
						nano_test_account{ test_public_key_data },
 | 
				
			||||||
 | 
						nano_dev_genesis{ parse_block_from_genesis_data (dev_genesis_data) },
 | 
				
			||||||
 | 
						nano_beta_genesis{ parse_block_from_genesis_data (beta_genesis_data) },
 | 
				
			||||||
 | 
						nano_live_genesis{ parse_block_from_genesis_data (live_genesis_data) },
 | 
				
			||||||
 | 
						nano_test_genesis{ parse_block_from_genesis_data (test_genesis_data) },
 | 
				
			||||||
 | 
						genesis_amount{ std::numeric_limits<nano::uint128_t>::max () },
 | 
				
			||||||
 | 
						burn_account{ nano::account{ 0 } }
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						nano_beta_genesis->sideband_set (nano::block_sideband{
 | 
				
			||||||
 | 
						/* account */ nano_beta_genesis->account_field ().value (),
 | 
				
			||||||
 | 
						/* successor (block_hash) */ nano::block_hash{ 0 },
 | 
				
			||||||
 | 
						/* balance (amount) */ nano::amount{ std::numeric_limits<nano::uint128_t>::max () },
 | 
				
			||||||
 | 
						/* height */ uint64_t{ 1 },
 | 
				
			||||||
 | 
						/* local_timestamp */ nano::seconds_since_epoch (),
 | 
				
			||||||
 | 
						/* epoch */ nano::epoch::epoch_0,
 | 
				
			||||||
 | 
						/* is_send */ false,
 | 
				
			||||||
 | 
						/* is_receive */ false,
 | 
				
			||||||
 | 
						/* is_epoch */ false,
 | 
				
			||||||
 | 
						/* source_epoch */ nano::epoch::epoch_0 });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						nano_dev_genesis->sideband_set (nano::block_sideband{
 | 
				
			||||||
 | 
						/* account */ nano_dev_genesis->account_field ().value (),
 | 
				
			||||||
 | 
						/* successor (block_hash) */ nano::block_hash{ 0 },
 | 
				
			||||||
 | 
						/* balance (amount) */ nano::amount{ std::numeric_limits<nano::uint128_t>::max () },
 | 
				
			||||||
 | 
						/* height */ uint64_t{ 1 },
 | 
				
			||||||
 | 
						/* local_timestamp */ nano::seconds_since_epoch (),
 | 
				
			||||||
 | 
						/* epoch */ nano::epoch::epoch_0,
 | 
				
			||||||
 | 
						/* is_send */ false,
 | 
				
			||||||
 | 
						/* is_receive */ false,
 | 
				
			||||||
 | 
						/* is_epoch */ false,
 | 
				
			||||||
 | 
						/* source_epoch */ nano::epoch::epoch_0 });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						nano_live_genesis->sideband_set (nano::block_sideband{
 | 
				
			||||||
 | 
						/* account */ nano_live_genesis->account_field ().value (),
 | 
				
			||||||
 | 
						/* successor (block_hash) */ nano::block_hash{ 0 },
 | 
				
			||||||
 | 
						/* balance (amount) */ nano::amount{ std::numeric_limits<nano::uint128_t>::max () },
 | 
				
			||||||
 | 
						/* height */ uint64_t{ 1 },
 | 
				
			||||||
 | 
						/* local_timestamp */ nano::seconds_since_epoch (),
 | 
				
			||||||
 | 
						/* epoch */ nano::epoch::epoch_0,
 | 
				
			||||||
 | 
						/* is_send */ false,
 | 
				
			||||||
 | 
						/* is_receive */ false,
 | 
				
			||||||
 | 
						/* is_epoch */ false,
 | 
				
			||||||
 | 
						/* source_epoch */ nano::epoch::epoch_0 });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						nano_test_genesis->sideband_set (nano::block_sideband{
 | 
				
			||||||
 | 
						/* account */ nano_test_genesis->account_field ().value (),
 | 
				
			||||||
 | 
						/* successor (block_hash) */ nano::block_hash{ 0 },
 | 
				
			||||||
 | 
						/* balance (amount) */ nano::amount{ std::numeric_limits<nano::uint128_t>::max () },
 | 
				
			||||||
 | 
						/* height */ uint64_t{ 1 },
 | 
				
			||||||
 | 
						/* local_timestamp */ nano::seconds_since_epoch (),
 | 
				
			||||||
 | 
						/* epoch */ nano::epoch::epoch_0,
 | 
				
			||||||
 | 
						/* is_send */ false,
 | 
				
			||||||
 | 
						/* is_receive */ false,
 | 
				
			||||||
 | 
						/* is_epoch */ false,
 | 
				
			||||||
 | 
						/* source_epoch */ nano::epoch::epoch_0 });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						nano::account epoch_v2_signer;
 | 
				
			||||||
 | 
						switch (network_type)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							case networks::nano_dev_network:
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								genesis = nano_dev_genesis;
 | 
				
			||||||
 | 
								epoch_v2_signer = nano::dev::genesis_key.pub;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
							case networks::nano_live_network:
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								genesis = nano_live_genesis;
 | 
				
			||||||
 | 
								epoch_v2_signer = nano::account::from_account ("nano_3qb6o6i1tkzr6jwr5s7eehfxwg9x6eemitdinbpi7u8bjjwsgqfj4wzser3x");
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
							case networks::nano_beta_network:
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								genesis = nano_beta_genesis;
 | 
				
			||||||
 | 
								epoch_v2_signer = nano_beta_account;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
							case networks::nano_test_network:
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								genesis = nano_test_genesis;
 | 
				
			||||||
 | 
								epoch_v2_signer = nano_test_account;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
							default:
 | 
				
			||||||
 | 
								release_assert (false, "invalid network");
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						release_assert (genesis != nullptr);
 | 
				
			||||||
 | 
						release_assert (!epoch_v2_signer.is_zero ());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						nano::link const epoch_link_v1{ "epoch v1 block" };
 | 
				
			||||||
	epochs.add (nano::epoch::epoch_1, genesis->account (), epoch_link_v1);
 | 
						epochs.add (nano::epoch::epoch_1, genesis->account (), epoch_link_v1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	nano::link epoch_link_v2;
 | 
						nano::link const epoch_link_v2{ "epoch v2 block" };
 | 
				
			||||||
	nano::account nano_live_epoch_v2_signer;
 | 
					 | 
				
			||||||
	auto error (nano_live_epoch_v2_signer.decode_account ("nano_3qb6o6i1tkzr6jwr5s7eehfxwg9x6eemitdinbpi7u8bjjwsgqfj4wzser3x"));
 | 
					 | 
				
			||||||
	debug_assert (!error);
 | 
					 | 
				
			||||||
	auto epoch_v2_signer (network_a == nano::networks::nano_dev_network ? nano::dev::genesis_key.pub : network_a == nano::networks::nano_beta_network ? nano_beta_account
 | 
					 | 
				
			||||||
	: network_a == nano::networks::nano_test_network                                                                                                  ? nano_test_account
 | 
					 | 
				
			||||||
																																					  : nano_live_epoch_v2_signer);
 | 
					 | 
				
			||||||
	char const * epoch_message_v2 ("epoch v2 block");
 | 
					 | 
				
			||||||
	strncpy ((char *)epoch_link_v2.bytes.data (), epoch_message_v2, epoch_link_v2.bytes.size ());
 | 
					 | 
				
			||||||
	epochs.add (nano::epoch::epoch_2, epoch_v2_signer, epoch_link_v2);
 | 
						epochs.add (nano::epoch::epoch_2, epoch_v2_signer, epoch_link_v2);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nano::hardened_constants & nano::hardened_constants::get ()
 | 
					nano::hardened_constants & nano::hardened_constants::get ()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	static hardened_constants instance{};
 | 
						static hardened_constants instance{};
 | 
				
			||||||
| 
						 | 
					@ -150,6 +245,10 @@ nano::hardened_constants::hardened_constants () :
 | 
				
			||||||
	nano::random_pool::generate_block (random_128.bytes.data (), random_128.bytes.size ());
 | 
						nano::random_pool::generate_block (random_128.bytes.data (), random_128.bytes.size ());
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nano::node_constants::node_constants (nano::network_constants & network_constants)
 | 
					nano::node_constants::node_constants (nano::network_constants & network_constants)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	backup_interval = std::chrono::minutes (5);
 | 
						backup_interval = std::chrono::minutes (5);
 | 
				
			||||||
| 
						 | 
					@ -160,18 +259,30 @@ nano::node_constants::node_constants (nano::network_constants & network_constant
 | 
				
			||||||
	weight_period = 5 * 60; // 5 minutes
 | 
						weight_period = 5 * 60; // 5 minutes
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nano::voting_constants::voting_constants (nano::network_constants & network_constants) :
 | 
					nano::voting_constants::voting_constants (nano::network_constants & network_constants) :
 | 
				
			||||||
	max_cache{ network_constants.is_dev_network () ? 256U : 128U * 1024 },
 | 
						max_cache{ network_constants.is_dev_network () ? 256U : 128U * 1024 },
 | 
				
			||||||
	delay{ network_constants.is_dev_network () ? 1 : 15 }
 | 
						delay{ network_constants.is_dev_network () ? 1 : 15 }
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nano::portmapping_constants::portmapping_constants (nano::network_constants & network_constants)
 | 
					nano::portmapping_constants::portmapping_constants (nano::network_constants & network_constants)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	lease_duration = std::chrono::seconds (1787); // ~30 minutes
 | 
						lease_duration = std::chrono::seconds (1787); // ~30 minutes
 | 
				
			||||||
	health_check_period = std::chrono::seconds (53);
 | 
						health_check_period = std::chrono::seconds (53);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nano::bootstrap_constants::bootstrap_constants (nano::network_constants & network_constants)
 | 
					nano::bootstrap_constants::bootstrap_constants (nano::network_constants & network_constants)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	lazy_max_pull_blocks = network_constants.is_dev_network () ? 2 : 512;
 | 
						lazy_max_pull_blocks = network_constants.is_dev_network () ? 2 : 512;
 | 
				
			||||||
| 
						 | 
					@ -183,6 +294,10 @@ nano::bootstrap_constants::bootstrap_constants (nano::network_constants & networ
 | 
				
			||||||
	default_frontiers_age_seconds = network_constants.is_dev_network () ? 1 : 24 * 60 * 60; // 1 second for dev network, 24 hours for live/beta
 | 
						default_frontiers_age_seconds = network_constants.is_dev_network () ? 1 : 24 * 60 * 60; // 1 second for dev network, 24 hours for live/beta
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * keypair
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Create a new random keypair
 | 
					// Create a new random keypair
 | 
				
			||||||
nano::keypair::keypair ()
 | 
					nano::keypair::keypair ()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -205,6 +320,10 @@ nano::keypair::keypair (std::string const & prv_a)
 | 
				
			||||||
	ed25519_publickey (prv.bytes.data (), pub.bytes.data ());
 | 
						ed25519_publickey (prv.bytes.data (), pub.bytes.data ());
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * unchecked_info
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nano::unchecked_info::unchecked_info (std::shared_ptr<nano::block> const & block_a) :
 | 
					nano::unchecked_info::unchecked_info (std::shared_ptr<nano::block> const & block_a) :
 | 
				
			||||||
	block (block_a),
 | 
						block (block_a),
 | 
				
			||||||
	modified_m (nano::seconds_since_epoch ())
 | 
						modified_m (nano::seconds_since_epoch ())
 | 
				
			||||||
| 
						 | 
					@ -317,6 +436,10 @@ nano::wallet_id nano::random_wallet_id ()
 | 
				
			||||||
	return wallet_id;
 | 
						return wallet_id;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * unchecked_key
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nano::unchecked_key::unchecked_key (nano::hash_or_account const & dependency) :
 | 
					nano::unchecked_key::unchecked_key (nano::hash_or_account const & dependency) :
 | 
				
			||||||
	unchecked_key{ dependency, 0 }
 | 
						unchecked_key{ dependency, 0 }
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -365,6 +488,10 @@ nano::block_hash const & nano::unchecked_key::key () const
 | 
				
			||||||
	return previous;
 | 
						return previous;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
std::string_view nano::to_string (nano::block_status code)
 | 
					std::string_view nano::to_string (nano::block_status code)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return nano::enum_util::name (code);
 | 
						return nano::enum_util::name (code);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -163,7 +163,7 @@ class network_params;
 | 
				
			||||||
class ledger_constants
 | 
					class ledger_constants
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
	ledger_constants (nano::work_thresholds & work, nano::networks network_a);
 | 
						ledger_constants (nano::work_thresholds &, nano::networks);
 | 
				
			||||||
	nano::work_thresholds & work;
 | 
						nano::work_thresholds & work;
 | 
				
			||||||
	nano::keypair zero_key;
 | 
						nano::keypair zero_key;
 | 
				
			||||||
	nano::account nano_beta_account;
 | 
						nano::account nano_beta_account;
 | 
				
			||||||
| 
						 | 
					@ -248,12 +248,13 @@ public:
 | 
				
			||||||
	uint32_t default_frontiers_age_seconds;
 | 
						uint32_t default_frontiers_age_seconds;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					nano::work_thresholds const & work_thresholds_for_network (nano::networks);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Constants whose value depends on the active network */
 | 
					/** Constants whose value depends on the active network */
 | 
				
			||||||
class network_params
 | 
					class network_params
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
	/** Populate values based on \p network_a */
 | 
						explicit network_params (nano::networks);
 | 
				
			||||||
	network_params (nano::networks network_a);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	unsigned kdf_work;
 | 
						unsigned kdf_work;
 | 
				
			||||||
	nano::work_thresholds work;
 | 
						nano::work_thresholds work;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue