arbos/arbos_types/
message_with_meta.rs1use alloy_primitives::{keccak256, B256};
2
3use super::incoming_message::L1IncomingMessage;
4
5#[derive(Debug, Clone)]
7pub struct MessageWithMetadata {
8 pub message: L1IncomingMessage,
9 pub delayed_messages_read: u64,
10}
11
12#[derive(Debug, Clone)]
14pub struct MessageWithMetadataAndBlockInfo {
15 pub message_with_meta: MessageWithMetadata,
16 pub block_hash: Option<B256>,
17 pub block_metadata: Option<Vec<u8>>,
18}
19
20impl MessageWithMetadata {
21 pub fn hash(&self) -> B256 {
24 let serialized = self.message.serialize();
25 let mut data = Vec::new();
26 data.extend_from_slice(&serialized);
27 data.extend_from_slice(&self.delayed_messages_read.to_be_bytes());
28 keccak256(&data)
29 }
30
31 pub fn with_only_mel_consensus_fields(&self) -> Self {
33 MessageWithMetadata {
34 message: L1IncomingMessage {
35 header: self.message.header.clone(),
36 l2_msg: self.message.l2_msg.clone(),
37 batch_gas_left: None,
38 },
39 delayed_messages_read: self.delayed_messages_read,
40 }
41 }
42}