Πλήρης Δοκιμή
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 PDAlet program_id = Pubkey::new_unique();// Derive PDA addresslet 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 dataowner: program_id,executable: false,rent_epoch: 0,}).unwrap();// Verify PDA was createdlet account = svm.get_account(&pda).unwrap();assert_eq!(account.owner, program_id);assert_eq!(account.data[0], bump);println!("PDA created successfully!");}
Βασικά Σημεία
- Παραγωγή PDA: Χρησιμοποιήστε το
Pubkey::find_program_address()για την παραγωγή διευθύνσεων PDA - Seeds: Τα PDA παράγονται από seeds και το αναγνωριστικό προγράμματος
- Bump Seed: Το bump seed διασφαλίζει ότι η διεύθυνση βρίσκεται εκτός της καμπύλης ed25519
- Δημιουργία Λογαριασμού: Χρησιμοποιήστε το
set_account()για τη μη αυτόματη δημιουργία λογαριασμών για δοκιμές - Ιδιοκτησία: Τα PDA πρέπει να ανήκουν στο πρόγραμμα που τα παρήγαγε
Is this page helpful?