Module global

Source
Expand description

Values that should be shared across all modules, without necessarily having to pass them all over the place, but aren’t consensus values. should be used sparingly.

Structs§

CHAIN_TYPE
The mining parameter mode
EPIC_VERSION
Store the current epic version being executed
FOUNDATION_FILE
The path to the file that contains the foundation
HEADER_SYNC_TIMEOUT
Store the timeout for the header sync
POLICY_CONFIG
The policy parameters
POW_CONTEXT_TYPE
PoW context type to instantiate
Version
Strcut that store the major and minor release versions

Enums§

ChainTypes
Types of chain a server can run with, dictates the genesis block and and mining parameters used.
PoWContextTypes
PoW test mining and verifier context

Constants§

AUTOMATED_TESTING_COINBASE_MATURITY
Automated testing coinbase maturity
AUTOMATED_TESTING_MIN_EDGE_BITS
Automated testing edge_bits
AUTOMATED_TESTING_PROOF_SIZE
Automated testing proof size
COMPACTION_CHECK
Trigger compaction check on average every day for all nodes. Randomized per node - roll the dice on every block to decide. Will compact the txhashset to remove pruned data. Will also remove old blocks and associated data from the database. For a node configured as “archival_mode = true” only the txhashset will be compacted.
CURRENT_HEADER_VERSION
FLOONET_COINBASE_MATURITY
Foonet coinbase maturity
FLOONET_FOUNDATION_JSON_SHA256
MAINNET_FOUNDATION_JSON_SHA256
PEER_EXPIRATION_REMOVE_TIME
Constant that expresses defunct peer timeout in seconds to be used in checks.
PROTOCOL_VERSION
Define these here, as they should be developer-set, not really tweakable by users The default “local” protocol version for this node. We negotiate compatible versions with each peer via Hand/Shake. Note: We also use a specific (possible different) protocol version for both the backend database and MMR data files. This defines the p2p layer protocol version for this node.
STUCK_PEER_KICK_TIME
If a peer’s last updated difficulty is 2 hours ago and its difficulty’s lower than ours, we’re sure this peer is a stuck node, and we will kick out such kind of stuck peers.
TESTING_CUT_THROUGH_HORIZON
Testing cut through horizon in blocks
TESTING_INITIAL_DIFFICULTY
Testing initial block difficulty
TESTING_INITIAL_GRAPH_WEIGHT
Testing initial graph weight
TESTING_MAX_BLOCK_WEIGHT
Testing max_block_weight (artifically low, just enough to support a few txs).
TESTING_STATE_SYNC_THRESHOLD
Testing state sync threshold in blocks
TESTING_TXHASHSET_ARCHIVE_INTERVAL
Number of blocks to reuse a txhashset zip for (automated testing and user testing).
TXHASHSET_ARCHIVE_INTERVAL
Number of blocks to reuse a txhashset zip for.
USER_TESTING_COINBASE_MATURITY
User testing coinbase maturity
USER_TESTING_MIN_EDGE_BITS
User testing edge_bits
USER_TESTING_PROOF_SIZE
User testing proof size

Functions§

add_allowed_policy
base_edge_bits
Reference edge_bits used to compute factor on higher Cuck(at)oo graph sizes, while the min_edge_bits can be changed on a soft fork, changing base_edge_bits is a hard fork.
chain_shortname
Short name representing the current chain type (“floo”, “main”, etc.)
check_foundation
Check if the foundation file is correct
coinbase_maturity
Coinbase maturity for coinbases to be spent
create_pow_context
Return either a cuckoo context or a cuckatoo context Single change point
cut_through_horizon
Horizon at which we can cut-through and do full local pruning
difficulty_data_to_vector
Converts an iterator of block difficulty data to more a more manageable vector and pads if needed (which will) only be needed for the first few blocks after genesis
foundation_json_sha256
get_allowed_policies
get_emitted_policy
get_epic_version
Get the version of the current epic executable
get_file_sha256
Get the sha256 of file
get_foundation_path
Get the current path to the foundation.json file (file with the foundation wallet outputs/kernels)
get_genesis_nonce
Helper function to get a nonce known to create a valid POW on the genesis block, to prevent it taking ages. Should be fine for now as the genesis block POW solution turns out to be the same for every new block chain at the moment
get_header_sync_timeout
Get the current Timeout without the verification of the existence of more headers to be synced, after all header were processed
get_policies
get_policy_config
Get the policy configuration that is being used by the blockchain
initial_block_difficulty
Initial mining difficulty
initial_graph_weight
Initial mining secondary scale
is_automated_testing_mode
Are we in automated testing mode?
is_floonet
Are we in floonet? Note: We do not have a corresponding is_mainnet() as we want any tests to be as close as possible to “mainnet” configuration as possible. We want to avoid missing any mainnet only code paths.
is_mainnet
Are we for real?
is_production_mode
Are we in production mode? Production defined as a live public network, testnet[n] or mainnet.
is_user_testing_mode
Are we in user testing mode?
max_block_weight
Maximum allowed block weight.
min_edge_bits
The minimum acceptable edge_bits
proofsize
The proofsize
set_epic_version
Set the version of the current epic executable
set_foundation_path
Set the path to the foundation.json file (file with the foundation wallet outputs/kernels)
set_header_sync_timeout
Set the current Timeout without the verification of the existence of more headers to be synced, after all header were processed
set_mining_mode
Set the mining mode
set_policy_config
Set the policy configuration that will be used by the blockchain
state_sync_threshold
Threshold at which we can request a txhashset (and full blocks from)
ts_data_to_vector
txhashset_archive_interval
Number of blocks to reuse a txhashset zip for.
use_alternative_path
Check if the foundation.json exists in the directory appointed by the .toml file, if not, use the alternative path ../../debian/foundation.json relative to the folder where the executable is in. If we are running floonet, it will look for the file foundation_floonet.json .