muta_protocol/types/
epoch.rs

1use 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}