Skip to main content

hive_rs/types/
block.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use crate::types::{SignedTransaction, Transaction};
5
6#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
7pub struct BlockHeader {
8    pub previous: String,
9    pub timestamp: String,
10    pub witness: String,
11    pub transaction_merkle_root: String,
12    #[serde(default)]
13    pub extensions: Vec<Value>,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
17pub struct SignedBlockHeader {
18    #[serde(flatten)]
19    pub header: BlockHeader,
20    pub witness_signature: String,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24pub struct SignedBlock {
25    #[serde(flatten)]
26    pub header: SignedBlockHeader,
27    #[serde(default)]
28    pub transactions: Vec<Transaction>,
29    #[serde(default)]
30    pub signed_transactions: Vec<SignedTransaction>,
31    #[serde(default)]
32    pub block_id: Option<String>,
33    #[serde(default)]
34    pub signing_key: Option<String>,
35    #[serde(default)]
36    pub transaction_ids: Vec<String>,
37}