dloom_flow/instructions/
initialize_protocol.rs

1// FILE: programs/dloom_flow/src/instructions/initialize_protocol.rs
2
3use crate::state::ProtocolConfig;
4use anchor_lang::prelude::*;
5
6/// This instruction should be called only once to initialize the protocol's
7/// configuration and set the initial master authority.
8pub fn handle_initialize_protocol(ctx: Context<InitializeProtocol>) -> Result<()> {
9    let config = &mut ctx.accounts.protocol_config;
10    config.authority = ctx.accounts.authority.key();
11    Ok(())
12}
13
14#[derive(Accounts)]
15pub struct InitializeProtocol<'info> {
16    #[account(
17        init,
18        payer = authority,
19        space = 8 + 32, 
20        seeds = [b"protocol_config"],
21        bump
22    )]
23    pub protocol_config: Account<'info, ProtocolConfig>,
24
25    #[account(mut)]
26    pub authority: Signer<'info>,
27
28    pub system_program: Program<'info, System>,
29}