muta_protocol/types/
epoch.rs1use bytes::Bytes;
2
3use crate::types::{Address, Bloom, Hash, MerkleRoot};
4
5#[derive(Clone, Debug, PartialEq, Eq)]
6pub struct Epoch {
7 pub header: EpochHeader,
8 pub ordered_tx_hashes: Vec<Hash>,
9}
10
11#[derive(Clone, Debug, PartialEq, Eq)]
12pub struct EpochHeader {
13 pub chain_id: Hash,
14 pub epoch_id: u64,
15 pub exec_epoch_id: u64,
16 pub pre_hash: Hash,
17 pub timestamp: u64,
18 pub logs_bloom: Vec<Bloom>,
19 pub order_root: MerkleRoot,
20 pub confirm_root: Vec<MerkleRoot>,
21 pub state_root: MerkleRoot,
22 pub receipt_root: Vec<MerkleRoot>,
23 pub cycles_used: Vec<u64>,
24 pub proposer: Address,
25 pub proof: Proof,
26 pub validator_version: u64,
27 pub validators: Vec<Validator>,
28}
29
30#[derive(Clone, Debug, Hash, PartialEq, Eq)]
31pub struct Proof {
32 pub epoch_id: u64,
33 pub round: u64,
34 pub epoch_hash: Hash,
35 pub signature: Bytes,
36 pub bitmap: Bytes,
37}
38
39#[derive(Clone, Debug, PartialEq, Eq)]
40pub struct Validator {
41 pub address: Address,
42 pub propose_weight: u8,
43 pub vote_weight: u8,
44}
45
46#[derive(Clone, Debug, PartialEq, Eq)]
47pub struct Pill {
48 pub epoch: Epoch,
49 pub propose_hashes: Vec<Hash>,
50}