devol_accounts_kit/
generate_pda.rs1use 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}