fuel_chain_config/config/
message.rs1use crate::{
2 serialization::{
3 HexNumber,
4 HexType,
5 },
6 GenesisCommitment,
7};
8use fuel_core_interfaces::{
9 common::prelude::{
10 Address,
11 MerkleRoot,
12 Word,
13 },
14 model::{
15 DaBlockHeight,
16 Message,
17 },
18};
19use serde::{
20 Deserialize,
21 Serialize,
22};
23use serde_with::{
24 serde_as,
25 skip_serializing_none,
26};
27
28#[skip_serializing_none]
29#[serde_as]
30#[derive(Clone, Debug, Default, Deserialize, Serialize, Eq, PartialEq)]
31pub struct MessageConfig {
32 #[serde_as(as = "HexType")]
33 pub sender: Address,
34 #[serde_as(as = "HexType")]
35 pub recipient: Address,
36 #[serde_as(as = "HexNumber")]
37 pub nonce: Word,
38 #[serde_as(as = "HexNumber")]
39 pub amount: Word,
40 #[serde_as(as = "HexType")]
41 pub data: Vec<u8>,
42 #[serde_as(as = "HexNumber")]
44 pub da_height: DaBlockHeight,
45}
46
47impl From<MessageConfig> for Message {
48 fn from(msg: MessageConfig) -> Self {
49 Message {
50 sender: msg.sender,
51 recipient: msg.recipient,
52 nonce: msg.nonce,
53 amount: msg.amount,
54 data: msg.data,
55 da_height: msg.da_height,
56 fuel_block_spend: None,
57 }
58 }
59}
60
61impl GenesisCommitment for Message {
62 fn root(&mut self) -> anyhow::Result<MerkleRoot> {
63 Ok(self.id().into())
64 }
65}