dpp/block/extended_block_info/v0/
mod.rs1use crate::block::block_info::BlockInfo;
2#[cfg(feature = "json-conversion")]
3use crate::serialization::json_safe_fields;
4
5use bincode::{Decode, Encode};
6use serde::{Deserialize, Serialize};
7
8#[cfg_attr(feature = "json-conversion", json_safe_fields)]
10#[derive(Clone, Debug, PartialEq, Eq, Encode, Decode, Serialize, Deserialize)]
11#[serde(rename_all = "camelCase")]
12pub struct ExtendedBlockInfoV0 {
13 pub basic_info: BlockInfo,
15 pub app_hash: [u8; 32],
17 pub quorum_hash: [u8; 32],
19 pub block_id_hash: [u8; 32],
21 pub proposer_pro_tx_hash: [u8; 32],
23 #[serde(with = "crate::serialization::serde_bytes")]
30 pub signature: [u8; 96],
31 pub round: u32,
33}
34
35pub trait ExtendedBlockInfoV0Getters {
37 fn basic_info(&self) -> &BlockInfo;
39
40 fn basic_info_mut(&mut self) -> &mut BlockInfo;
42
43 fn basic_info_owned(self) -> BlockInfo;
45
46 fn app_hash(&self) -> &[u8; 32];
48
49 fn quorum_hash(&self) -> &[u8; 32];
51 fn proposer_pro_tx_hash(&self) -> &[u8; 32];
53 fn block_id_hash(&self) -> &[u8; 32];
55
56 fn signature(&self) -> &[u8; 96];
58
59 fn round(&self) -> u32;
61}
62
63pub trait ExtendedBlockInfoV0Setters {
65 fn set_basic_info(&mut self, info: BlockInfo);
67
68 fn set_app_hash(&mut self, hash: [u8; 32]);
70
71 fn set_quorum_hash(&mut self, hash: [u8; 32]);
73
74 fn set_signature(&mut self, signature: [u8; 96]);
76
77 fn set_round(&mut self, round: u32);
79}
80
81impl ExtendedBlockInfoV0Getters for ExtendedBlockInfoV0 {
82 fn basic_info(&self) -> &BlockInfo {
83 &self.basic_info
84 }
85
86 fn basic_info_mut(&mut self) -> &mut BlockInfo {
87 &mut self.basic_info
88 }
89
90 fn basic_info_owned(self) -> BlockInfo {
91 self.basic_info
92 }
93
94 fn app_hash(&self) -> &[u8; 32] {
95 &self.app_hash
96 }
97
98 fn quorum_hash(&self) -> &[u8; 32] {
99 &self.quorum_hash
100 }
101
102 fn proposer_pro_tx_hash(&self) -> &[u8; 32] {
103 &self.proposer_pro_tx_hash
104 }
105
106 fn block_id_hash(&self) -> &[u8; 32] {
107 &self.block_id_hash
108 }
109
110 fn signature(&self) -> &[u8; 96] {
111 &self.signature
112 }
113
114 fn round(&self) -> u32 {
115 self.round
116 }
117}
118
119impl ExtendedBlockInfoV0Setters for ExtendedBlockInfoV0 {
120 fn set_basic_info(&mut self, info: BlockInfo) {
121 self.basic_info = info;
122 }
123
124 fn set_app_hash(&mut self, hash: [u8; 32]) {
125 self.app_hash = hash;
126 }
127
128 fn set_quorum_hash(&mut self, hash: [u8; 32]) {
129 self.quorum_hash = hash;
130 }
131
132 fn set_signature(&mut self, signature: [u8; 96]) {
133 self.signature = signature;
134 }
135
136 fn set_round(&mut self, round: u32) {
137 self.round = round;
138 }
139}