light_verifier_sdk/
state.rs1use std::{marker::PhantomData, mem};
2
3use aligned_sized::aligned_sized;
4use anchor_lang::prelude::*;
5
6use crate::light_transaction::Config;
7
8#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)]
11#[aligned_sized(anchor)]
12pub struct VerifierState10Ins<
13 const NR_CHECKED_INPUTS: usize,
14 const NR_LEAVES: usize,
15 const NR_NULLIFIERS: usize,
16 T: Config,
17> {
18 pub signer: Pubkey,
19 #[size = NR_NULLIFIERS * mem::size_of::<[u8; 32]>()]
21 pub nullifiers: Vec<[u8; 32]>,
22 #[size = NR_LEAVES * mem::size_of::<[u8; 32]>()]
24 pub leaves: Vec<[u8; 32]>,
25 pub public_amount_spl: [u8; 32],
26 pub public_amount_sol: [u8; 32],
27 pub mint_pubkey: [u8; 32],
28 pub merkle_root: [u8; 32],
29 pub tx_integrity_hash: [u8; 32],
30 pub relayer_fee: u64,
31 #[size = 1536 * mem::size_of::<u8>()]
37 pub encrypted_utxos: Vec<u8>,
38 pub merkle_root_index: u64,
39 pub checked_public_inputs: [[u8; 32]; NR_CHECKED_INPUTS],
40 pub proof_a: [u8; 64],
41 pub proof_b: [u8; 128],
42 pub proof_c: [u8; 64],
43 pub transaction_hash: [u8; 32],
44 pub e_phantom: PhantomData<T>,
45}
46
47impl<
48 const NR_CHECKED_INPUTS: usize,
49 const NR_LEAVES: usize,
50 const NR_NULLIFIERS: usize,
51 T: Config,
52 > anchor_lang::AccountDeserialize
53 for VerifierState10Ins<NR_CHECKED_INPUTS, NR_LEAVES, NR_NULLIFIERS, T>
54{
55 fn try_deserialize_unchecked(buf: &mut &[u8]) -> Result<Self> {
56 match VerifierState10Ins::deserialize(buf) {
57 Ok(v) => Ok(v),
58 Err(_) => err!(anchor_lang::error::ErrorCode::AccountDidNotDeserialize),
59 }
60 }
61}
62
63impl<
64 const NR_CHECKED_INPUTS: usize,
65 const NR_LEAVES: usize,
66 const NR_NULLIFIERS: usize,
67 T: Config,
68 > anchor_lang::AccountSerialize
69 for VerifierState10Ins<NR_CHECKED_INPUTS, NR_LEAVES, NR_NULLIFIERS, T>
70{
71 fn try_serialize<W: std::io::Write>(&self, writer: &mut W) -> Result<()> {
72 self.serialize(writer).unwrap();
73 match self.serialize(writer) {
74 Ok(_) => Ok(()),
75 Err(_) => err!(anchor_lang::error::ErrorCode::AccountDidNotSerialize),
76 }
77 }
78}
79
80impl<
81 const NR_CHECKED_INPUTS: usize,
82 const NR_LEAVES: usize,
83 const NR_NULLIFIERS: usize,
84 T: Config,
85 > anchor_lang::Owner for VerifierState10Ins<NR_CHECKED_INPUTS, NR_LEAVES, NR_NULLIFIERS, T>
86{
87 fn owner() -> Pubkey {
88 T::ID
89 }
90}
91
92#[derive(AnchorDeserialize, AnchorSerialize, Clone, Debug)]
93pub struct TransactionIndexerEvent {
94 pub leaves: Vec<[u8; 32]>,
95 pub public_amount_spl: [u8; 32],
96 pub public_amount_sol: [u8; 32],
97 pub relayer_fee: u64,
98 pub encrypted_utxos: Vec<u8>,
99 pub nullifiers: Vec<[u8; 32]>,
100 pub first_leaf_index: u64,
101 pub message: Vec<u8>,
102}