use crate::message::SignedMessage;
use crate::shim::message::Message;
use cid::Cid;
use fvm_ipld_encoding::tuple::*;
use super::CachingBlockHeader;
pub const BLOCK_MESSAGE_LIMIT: usize = 10000;
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Block {
pub header: CachingBlockHeader,
pub bls_messages: Vec<Message>,
pub secp_messages: Vec<SignedMessage>,
}
impl std::hash::Hash for Block {
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
std::hash::Hash::hash(self.cid(), state)
}
}
impl Block {
pub fn header(&self) -> &CachingBlockHeader {
&self.header
}
pub fn bls_msgs(&self) -> &[Message] {
&self.bls_messages
}
pub fn secp_msgs(&self) -> &[SignedMessage] {
&self.secp_messages
}
pub fn cid(&self) -> &Cid {
self.header.cid()
}
}
#[derive(Serialize_tuple, Deserialize_tuple)]
pub struct TxMeta {
pub bls_message_root: Cid,
pub secp_message_root: Cid,
}