devol_accounts_kit/
generate_pda.rs

1use solana_program::pubkey::Pubkey;
2
3pub struct PDA {
4    pub key: Pubkey,
5    pub bump_seed: u8,
6}
7
8pub fn dvl_generate_pda(
9    address: &Pubkey,
10    seed_str: &str,
11    program_id: &Pubkey,
12) -> PDA {
13    let mut i = 0;
14    let pk: Pubkey;
15    loop {
16        if let Ok(res) = Pubkey::create_program_address(
17            &[seed_str.as_bytes(), address.as_ref(), &[i]],
18            &program_id,
19        ) {
20            pk = res;
21            break;
22        }
23        i += 1;
24    }
25
26    PDA {
27        key: pk,
28        bump_seed: i,
29    }
30}