chia_protocol/
full_node_protocol.rs

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