1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#![deny(unused_import_braces, unused_qualifications, trivial_casts, trivial_numeric_casts)]
#![deny(unused_qualifications, variant_size_differences, stable_features, unreachable_pub)]
#![deny(non_shorthand_field_patterns, unused_attributes, unused_extern_crates)]
#![deny(
renamed_and_removed_lints,
stable_features,
unused_allocation,
unused_comparisons,
bare_trait_objects
)]
#![deny(
const_err,
unused_must_use,
unused_mut,
unused_unsafe,
private_in_public,
unsafe_code
)]
#![allow(clippy::needless_lifetimes)]
#![forbid(unsafe_code)]
#[macro_use]
extern crate thiserror;
#[macro_use]
extern crate tracing;
pub mod consensus;
pub use consensus::*;
pub mod difficulty;
pub use difficulty::*;
pub mod error;
pub mod miner;
pub use miner::MineContext;
pub mod memory_pool;
pub use memory_pool::MemoryPool;
pub mod parameters;
pub use parameters::*;
pub mod ledger;
pub use ledger::*;
use snarkvm_dpc::AleoAmount;
pub const OLDEST_FORK_THRESHOLD: usize = u32::MAX as usize;
pub fn get_block_reward(block_num: u32) -> AleoAmount {
let expected_blocks_per_hour: u32 = 100;
let num_years = 4;
let block_segments = num_years * 365 * 24 * expected_blocks_per_hour;
let aleo_denonimation = AleoAmount::COIN;
let initial_reward = 150i64 * aleo_denonimation;
let num_halves = u32::min(block_num / block_segments, 2);
let reward = initial_reward / (2_u64.pow(num_halves)) as i64;
AleoAmount::from_bytes(reward)
}