hotshot_types/
request_response.rs1use committable::{Committable, RawCommitmentBuilder};
11use serde::{Deserialize, Serialize};
12
13use crate::traits::{node_implementation::NodeType, signature_key::SignatureKey};
14
15#[derive(Clone, PartialEq, Eq, Serialize, Deserialize, Hash)]
16pub struct ProposalRequestPayload<TYPES: NodeType> {
18 pub view_number: TYPES::View,
20
21 pub key: TYPES::SignatureKey,
24}
25
26impl<TYPES: NodeType> Committable for ProposalRequestPayload<TYPES> {
27 fn commit(&self) -> committable::Commitment<Self> {
28 RawCommitmentBuilder::new("signed proposal request commitment")
29 .u64_field("view number", *self.view_number)
30 .var_size_bytes(&self.key.to_bytes())
31 .finalize()
32 }
33}
34
35impl<TYPES: NodeType> std::fmt::Debug for ProposalRequestPayload<TYPES> {
36 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
37 f.debug_struct("ProposalRequestPayload")
38 .field("view_number", &self.view_number)
39 .field("key", &format_args!("{}", self.key))
40 .finish()
41 }
42}