light_merkle_tree_program/instructions/
initialize_new_merkle_trees.rs1use anchor_lang::prelude::*;
2
3use crate::{
4 event_merkle_tree::EventMerkleTree,
5 transaction_merkle_tree::state::TransactionMerkleTree,
6 utils::constants::{
7 EVENT_MERKLE_TREE_SEED, MERKLE_TREE_AUTHORITY_SEED, TRANSACTION_MERKLE_TREE_SEED,
8 },
9 MerkleTreeAuthority,
10};
11
12#[derive(Accounts)]
13pub struct InitializeNewMerkleTrees<'info> {
14 #[account(mut)]
15 pub authority: Signer<'info>,
16 #[account(
17 init,
18 seeds = [
19 TRANSACTION_MERKLE_TREE_SEED,
20 merkle_tree_authority_pda.transaction_merkle_tree_index.to_le_bytes().as_ref(),
21 ],
22 bump,
23 payer = authority,
24 space = TransactionMerkleTree::LEN,
25 )]
26 pub new_transaction_merkle_tree: AccountLoader<'info, TransactionMerkleTree>,
27 #[account(
28 init,
29 seeds = [
30 EVENT_MERKLE_TREE_SEED,
31 merkle_tree_authority_pda.event_merkle_tree_index.to_le_bytes().as_ref(),
32 ],
33 bump,
34 payer = authority,
35 space = EventMerkleTree::LEN,
36 )]
37 pub new_event_merkle_tree: AccountLoader<'info, EventMerkleTree>,
38 pub system_program: Program<'info, System>,
39 pub rent: Sysvar<'info, Rent>,
40 #[account(mut, seeds = [MERKLE_TREE_AUTHORITY_SEED], bump)]
41 pub merkle_tree_authority_pda: Account<'info, MerkleTreeAuthority>,
42}