2023-04-11 17:42:18 +00:00
|
|
|
use std::io;
|
2023-04-11 14:18:31 +00:00
|
|
|
|
2023-04-11 17:42:18 +00:00
|
|
|
mod merkle;
|
|
|
|
pub(crate) use merkle::*;
|
|
|
|
|
|
|
|
mod transaction;
|
|
|
|
pub use transaction::*;
|
|
|
|
|
|
|
|
mod block;
|
|
|
|
pub use block::*;
|
|
|
|
|
|
|
|
/// An item which can be read and written.
|
|
|
|
pub trait ReadWrite: Sized {
|
|
|
|
fn read<R: io::Read>(reader: &mut R) -> io::Result<Self>;
|
|
|
|
fn write<W: io::Write>(&self, writer: &mut W) -> io::Result<()>;
|
|
|
|
|
|
|
|
fn serialize(&self) -> Vec<u8> {
|
|
|
|
// BlockHeader is 64 bytes and likely the smallest item in this system
|
|
|
|
let mut buf = Vec::with_capacity(64);
|
|
|
|
self.write(&mut buf).unwrap();
|
|
|
|
buf
|
|
|
|
}
|
|
|
|
}
|