dloom_flow/instructions/
setup_bins.rs

1// FILE: programs/dloom_flow/src/instructions/setup_bins.rs
2
3use crate::state::TransactionBins;
4use anchor_lang::prelude::*;
5
6pub fn handle_setup_bins(ctx: Context<SetupBins>, bin_pubkeys: Vec<Pubkey>) -> Result<()> {
7    let transaction_bins = &mut ctx.accounts.transaction_bins;
8    transaction_bins.owner = ctx.accounts.owner.key();
9    transaction_bins.bins = bin_pubkeys;
10    Ok(())
11}
12
13#[derive(Accounts)]
14pub struct SetupBins<'info> {
15    #[account(mut)]
16    pub owner: Signer<'info>,
17
18    #[account(
19        init,
20        payer = owner,
21        // The space calculation allows for a generous number of bins per transaction.
22        // 8 (discriminator) + 32 (owner) + 4 (vec prefix) + (70 * 32) (70 bins) = 2284
23        space = 8 + 32 + 4 + (70 * 32),
24        seeds = [b"transaction_bins", owner.key().as_ref()],
25        bump
26    )]
27    pub transaction_bins: Account<'info, TransactionBins>,
28
29    pub system_program: Program<'info, System>,
30}