Skip to main content

dlp_api/state/
commit_record.rs

1use std::mem::size_of;
2
3use bytemuck::{Pod, Zeroable};
4use solana_program::pubkey::Pubkey;
5
6use super::discriminator::{AccountDiscriminator, AccountWithDiscriminator};
7use crate::{
8    impl_to_bytes_with_discriminator_zero_copy,
9    impl_try_from_bytes_with_discriminator_zero_copy,
10};
11
12/// The Commit State Record
13#[repr(C)]
14#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
15pub struct CommitRecord {
16    /// The identity committing the state
17    pub identity: Pubkey,
18
19    /// The account for which the state is committed
20    pub account: Pubkey,
21
22    /// The external nonce of the commit. This is used to enforce sequential commits
23    pub nonce: u64,
24
25    /// The account committed lamports
26    pub lamports: u64,
27}
28
29impl AccountWithDiscriminator for CommitRecord {
30    fn discriminator() -> AccountDiscriminator {
31        AccountDiscriminator::CommitRecord
32    }
33}
34
35impl CommitRecord {
36    pub fn size_with_discriminator() -> usize {
37        8 + size_of::<CommitRecord>()
38    }
39}
40
41impl_to_bytes_with_discriminator_zero_copy!(CommitRecord);
42impl_try_from_bytes_with_discriminator_zero_copy!(CommitRecord);