multiversx_chain_vm/blockchain/state/
block_info.rs

1use multiversx_chain_core::types::TimestampMillis;
2
3pub const DEFAULT_BLOCK_ROUND_TIME_MS: u64 = 6000;
4
5#[derive(Clone, Debug)]
6pub struct BlockConfig {
7    pub previous_block_info: BlockInfo,
8    pub current_block_info: BlockInfo,
9    pub epoch_start_block_info: BlockInfo,
10    pub block_round_time_ms: u64,
11}
12
13impl Default for BlockConfig {
14    fn default() -> Self {
15        BlockConfig {
16            previous_block_info: Default::default(),
17            current_block_info: Default::default(),
18            epoch_start_block_info: Default::default(),
19            block_round_time_ms: DEFAULT_BLOCK_ROUND_TIME_MS,
20        }
21    }
22}
23
24#[derive(Clone, Debug)]
25pub struct BlockInfo {
26    pub block_timestamp_millis: TimestampMillis,
27    pub block_nonce: u64,
28    pub block_round: u64,
29    pub block_epoch: u64,
30    pub block_random_seed: Box<[u8; 48]>,
31}
32
33impl BlockInfo {
34    pub fn new() -> Self {
35        BlockInfo {
36            block_timestamp_millis: TimestampMillis::new(0),
37            block_nonce: 0,
38            block_round: 0,
39            block_epoch: 0,
40            block_random_seed: Box::from([0u8; 48]),
41        }
42    }
43}
44
45impl Default for BlockInfo {
46    fn default() -> Self {
47        Self::new()
48    }
49}