Skip to main content

phase_protocol_sdk/state/
mint_contract_record.rs

1use crate::id;
2use anchor_lang::prelude::*;
3
4/**
5 * Mint contract used in the roadmap
6 * enforces only one record can be init
7 */
8#[account]
9pub struct MintContractRecord {
10    pub roadmap: Pubkey,
11    //Mint program so we can confirm ownership of pda
12    pub mint_program: Pubkey,
13    pub mint_contract_account: Pubkey,
14    pub collection_record: Pubkey,
15    pub bump: u8,
16}
17
18impl MintContractRecord {
19    pub fn space() -> usize {
20        8 +
21        4 + std::mem::size_of::<Pubkey>() + // roadmap
22        4 + std::mem::size_of::<Pubkey>() + // mint_account
23        4 + std::mem::size_of::<Pubkey>() +  // mint_program
24        4 + std::mem::size_of::<Pubkey>() + // collection_record
25        1 // bump
26    }
27}
28
29pub fn get_mint_contract_record_address(
30    mint_pda_account: &Pubkey,
31    mint_program: &Pubkey,
32) -> Pubkey {
33    Pubkey::find_program_address(
34        &[
35            b"mint_contract",
36            mint_program.as_ref(),
37            mint_pda_account.as_ref(),
38        ],
39        &id(),
40    )
41    .0
42}