light_registry/account_compression_cpi/
update_address_tree.rs1use account_compression::{
2 program::AccountCompression, utils::constants::CPI_AUTHORITY_PDA_SEED, AddressMerkleTreeAccount,
3};
4use anchor_lang::prelude::*;
5
6use crate::epoch::register_epoch::ForesterEpochPda;
7
8#[derive(Accounts)]
9pub struct UpdateAddressMerkleTree<'info> {
10 #[account(mut)]
12 pub registered_forester_pda: Option<Account<'info, ForesterEpochPda>>,
13 pub authority: Signer<'info>,
15 #[account(seeds = [CPI_AUTHORITY_PDA_SEED], bump)]
17 pub cpi_authority: AccountInfo<'info>,
18 pub registered_program_pda: AccountInfo<'info>,
20 pub account_compression_program: Program<'info, AccountCompression>,
21 #[account(mut)]
23 pub queue: AccountInfo<'info>,
24 #[account(mut)]
26 pub merkle_tree: AccountLoader<'info, AddressMerkleTreeAccount>,
27 pub log_wrapper: UncheckedAccount<'info>,
29}
30
31pub fn process_update_address_merkle_tree(
32 ctx: &Context<UpdateAddressMerkleTree>,
33 bump: u8,
34 changelog_index: u16,
35 indexed_changelog_index: u16,
36 value: u16,
37 low_address_index: u64,
38 low_address_value: [u8; 32],
39 low_address_next_index: u64,
40 low_address_next_value: [u8; 32],
41 low_address_proof: [[u8; 32]; 16],
42) -> Result<()> {
43 let bump = &[bump];
44 let seeds = [CPI_AUTHORITY_PDA_SEED, bump];
45 let signer_seeds = &[&seeds[..]];
46
47 let accounts = account_compression::cpi::accounts::UpdateAddressMerkleTree {
48 authority: ctx.accounts.cpi_authority.to_account_info(),
49 registered_program_pda: Some(ctx.accounts.registered_program_pda.to_account_info()),
50 log_wrapper: ctx.accounts.log_wrapper.to_account_info(),
51 queue: ctx.accounts.queue.to_account_info(),
52 merkle_tree: ctx.accounts.merkle_tree.to_account_info(),
53 };
54 let cpi_ctx = CpiContext::new_with_signer(
55 ctx.accounts.account_compression_program.to_account_info(),
56 accounts,
57 signer_seeds,
58 );
59
60 account_compression::cpi::update_address_merkle_tree(
61 cpi_ctx,
62 changelog_index,
63 indexed_changelog_index,
64 value,
65 low_address_index,
66 low_address_value,
67 low_address_next_index,
68 low_address_next_value,
69 low_address_proof,
70 )
71}