watcher/node/src/core/block.rs
2025-08-30 02:31:26 +02:00

47 lines
1.0 KiB
Rust

use crate::core::NetworkData;
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize, Default)]
pub struct BlockHeader {
pub previous_hash: String,
pub timestamp: u64,
pub merkle_root: String,
pub block_hash: String,
pub nonce: u32
}
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize, Default)]
pub struct Block {
pub head: BlockHeader,
pub data: Vec<NetworkData>
}
impl BlockHeader {
pub fn previous_hash(&self) -> &str {
&self.previous_hash
}
pub fn timestamp(&self) -> u64 {
self.timestamp
}
pub fn nonce(&self) -> u32 {
self.nonce
}
pub fn merkle_root(&self) -> &str {
&self.merkle_root
}
pub fn block_hash(&self) -> &str {
&self.block_hash
}
}
impl Block {
pub fn new(head: BlockHeader, data: Vec<NetworkData>) -> Self {
Self { head, data }
}
pub fn head(&self) -> &BlockHeader {
&self.head
}
pub fn data(&self) -> &[NetworkData] {
&self.data
}
}