Derive Macro LightTraits

Source
#[derive(LightTraits)]
{
    // Attributes available to this derive:
    #[self_program]
    #[fee_payer]
    #[authority]
    #[cpi_context]
}
Expand description

Implements traits on the given struct required for invoking The Light system program via CPI.

§Usage

Add #[derive(LightTraits)] to your struct which specifies the accounts required for your Anchor program instruction. Specify the attributes self_program, fee_payer, authority, and optionally cpi_context to the relevant fields.

§Attributes

  • self_program: Marks the field that represents the program invoking the light system program, i.e. your program. You need to list your program as part of the struct.

  • fee_payer: Marks the field that represents the account responsible for paying transaction fees. (Signer)

  • authority: TODO: explain authority.

  • cpi_context: TODO: explain cpi_context.

§Required accounts (must specify exact name).

  • light_system_program: Light systemprogram. verifies & applies compression state transitions.
  • registered_program_pda: Light Systemprogram PDA
  • noop_program: SPL noop program
  • account_compression_authority: TODO: explain.
  • account_compression_program: Account Compression program.
  • system_program: The Solana Systemprogram.

§Example

#[derive(Accounts, LightTraits)]
pub struct ExampleInstruction<'info> {
    #[self_program]
    pub my_program: Program<'info, MyProgram>,
    #[fee_payer]
    pub payer: Signer<'info>,
    #[authority]
    pub user: AccountInfo<'info>,
    #[cpi_context]
    pub cpi_context_account: AccountInfo<'info>,
    pub light_system_program: AccountInfo<'info>,
    pub registered_program_pda: AccountInfo<'info>,
    pub noop_program: AccountInfo<'info>,
    pub account_compression_authority: AccountInfo<'info>,
    pub account_compression_program: AccountInfo<'info>,
    pub system_program: Program<'info, System>,
}