chia_protocol/
full_node_protocol.rs1use chia_streamable_macro::streamable;
2
3use crate::EndOfSubSlotBundle;
4use crate::FullBlock;
5use crate::SpendBundle;
6use crate::TimestampedPeerInfo;
7use crate::UnfinishedBlock;
8use crate::VDFInfo;
9use crate::VDFProof;
10use crate::WeightProof;
11use crate::{Bytes, Bytes32};
12
13#[streamable(message)]
14pub struct NewPeak {
15 header_hash: Bytes32,
16 height: u32,
17 weight: u128,
18 fork_point_with_previous_peak: u32,
19 unfinished_reward_block_hash: Bytes32,
20}
21
22#[streamable(message)]
23pub struct NewTransaction {
24 transaction_id: Bytes32,
25 cost: u64,
26 fees: u64,
27}
28
29#[streamable(message)]
30pub struct RequestTransaction {
31 transaction_id: Bytes32,
32}
33
34#[streamable(message)]
35pub struct RespondTransaction {
36 transaction: SpendBundle,
37}
38
39#[streamable(message)]
40pub struct RequestProofOfWeight {
41 total_number_of_blocks: u32,
42 tip: Bytes32,
43}
44
45#[streamable(message)]
46pub struct RespondProofOfWeight {
47 wp: WeightProof,
48 tip: Bytes32,
49}
50
51#[streamable(message)]
52pub struct RequestBlock {
53 height: u32,
54 include_transaction_block: bool,
55}
56
57#[streamable(message)]
58pub struct RejectBlock {
59 height: u32,
60}
61
62#[streamable(message)]
63pub struct RequestBlocks {
64 start_height: u32,
65 end_height: u32,
66 include_transaction_block: bool,
67}
68
69#[streamable(message)]
70pub struct RespondBlocks {
71 start_height: u32,
72 end_height: u32,
73 blocks: Vec<FullBlock>,
74}
75
76#[streamable(message)]
77pub struct RejectBlocks {
78 start_height: u32,
79 end_height: u32,
80}
81
82#[streamable(message)]
83pub struct RespondBlock {
84 block: FullBlock,
85}
86
87#[streamable(message)]
88pub struct NewUnfinishedBlock {
89 unfinished_reward_hash: Bytes32,
90}
91
92#[streamable(message)]
93pub struct RequestUnfinishedBlock {
94 unfinished_reward_hash: Bytes32,
95}
96
97#[streamable(message)]
98pub struct RespondUnfinishedBlock {
99 unfinished_block: UnfinishedBlock,
100}
101
102#[streamable(message)]
103pub struct NewSignagePointOrEndOfSubSlot {
104 prev_challenge_hash: Option<Bytes32>,
105 challenge_hash: Bytes32,
106 index_from_challenge: u8,
107 last_rc_infusion: Bytes32,
108}
109
110#[streamable(message)]
111pub struct RequestSignagePointOrEndOfSubSlot {
112 challenge_hash: Bytes32,
113 index_from_challenge: u8,
114 last_rc_infusion: Bytes32,
115}
116
117#[streamable(message)]
118pub struct RespondSignagePoint {
119 index_from_challenge: u8,
120 challenge_chain_vdf: VDFInfo,
121 challenge_chain_proof: VDFProof,
122 reward_chain_vdf: VDFInfo,
123 reward_chain_proof: VDFProof,
124}
125
126#[streamable(message)]
127pub struct RespondEndOfSubSlot {
128 end_of_slot_bundle: EndOfSubSlotBundle,
129}
130
131#[streamable(message)]
132pub struct RequestMempoolTransactions {
133 filter: Bytes,
134}
135
136#[streamable(message)]
137pub struct NewCompactVDF {
138 height: u32,
139 header_hash: Bytes32,
140 field_vdf: u8,
141 vdf_info: VDFInfo,
142}
143
144#[streamable(message)]
145pub struct RequestCompactVDF {
146 height: u32,
147 header_hash: Bytes32,
148 field_vdf: u8,
149 vdf_info: VDFInfo,
150}
151
152#[streamable(message)]
153pub struct RespondCompactVDF {
154 height: u32,
155 header_hash: Bytes32,
156 field_vdf: u8,
157 vdf_info: VDFInfo,
158 vdf_proof: VDFProof,
159}
160
161#[streamable(message)]
162pub struct RequestPeers {}
163
164#[streamable(message)]
165pub struct RespondPeers {
166 peer_list: Vec<TimestampedPeerInfo>,
167}
168
169#[streamable(message)]
170pub struct NewUnfinishedBlock2 {
171 unfinished_reward_hash: Bytes32,
172 foliage_hash: Option<Bytes32>,
173}
174
175#[streamable(message)]
176pub struct RequestUnfinishedBlock2 {
177 unfinished_reward_hash: Bytes32,
178 foliage_hash: Option<Bytes32>,
179}