إنشاء PDA

الاختبار الكامل

tests/pda_test.rs
use litesvm::LiteSVM;
use solana_account::Account;
use solana_sdk::pubkey::Pubkey;
#[test]
fn test_pda_creation() {
let mut svm = LiteSVM::new();
// Program that owns the PDA
let program_id = Pubkey::new_unique();
// Derive PDA address
let seed = b"my_pda";
let (pda, bump) = Pubkey::find_program_address(
&[seed],
&program_id
);
println!("PDA: {}", pda);
println!("Bump: {}", bump);
// Create PDA account manually (for testing)
svm.set_account(pda, Account {
lamports: 1_000_000,
data: vec![bump], // Store bump seed in data
owner: program_id,
executable: false,
rent_epoch: 0,
}).unwrap();
// Verify PDA was created
let account = svm.get_account(&pda).unwrap();
assert_eq!(account.owner, program_id);
assert_eq!(account.data[0], bump);
println!("PDA created successfully!");
}

النقاط الرئيسية

  1. اشتقاق PDA: استخدم Pubkey::find_program_address() لاشتقاق عناوين PDA
  2. Seeds: يتم اشتقاق PDAs من seeds ومعرّف البرنامج
  3. Bump Seed: يضمن bump seed أن العنوان خارج منحنى ed25519
  4. إنشاء الحساب: استخدم set_account() لإنشاء الحسابات يدويًا للاختبار
  5. الملكية: يجب أن تكون PDAs مملوكة للبرنامج الذي اشتقها

Is this page helpful?

جدول المحتويات

تعديل الصفحة