cometbft_rpc/endpoint/
evidence.rs

1//! `/broadcast_evidence`: broadcast an evidence.
2
3use cometbft::{evidence, Hash};
4use serde::{Deserialize, Serialize};
5
6use crate::{dialect::Dialect, request::RequestMessage, Method};
7
8/// `/broadcast_evidence`: broadcast an evidence.
9#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
10pub struct Request<S: Dialect> {
11    /// Evidence to broadcast
12    pub evidence: S::Evidence,
13}
14
15impl<S: Dialect> Request<S> {
16    /// Create a new evidence broadcast RPC request
17    pub fn new(evidence: evidence::Evidence) -> Self {
18        Request {
19            evidence: evidence.into(),
20        }
21    }
22}
23
24impl<S: Dialect> RequestMessage for Request<S> {
25    fn method(&self) -> Method {
26        Method::BroadcastEvidence
27    }
28}
29
30impl<S: Dialect> crate::Request<S> for Request<S> {
31    type Response = Response;
32}
33
34impl<S: Dialect> crate::SimpleRequest<S> for Request<S> {
35    type Output = Response;
36}
37
38/// Response from either an evidence broadcast request.
39#[derive(Clone, Debug, Deserialize, Serialize)]
40pub struct Response {
41    /// Evidence hash
42    #[serde(with = "crate::serializers::tm_hash_base64")]
43    pub hash: Hash,
44}
45
46impl crate::Response for Response {}