Επισκόπηση
Αυτό το παράδειγμα δείχνει πώς να δοκιμάζετε λειτουργίες που εξαρτώνται από τον χρόνο, χειριζόμενοι slots και χρονικές σφραγίδες στο LiteSVM.
Πλήρης Δοκιμή
tests/time_test.rs
use litesvm::LiteSVM;use solana_sdk::clock::Clock;#[test]fn test_time_locked_feature() {let mut svm = LiteSVM::new();// Get current timelet clock: Clock = svm.get_sysvar();println!("Starting slot: {}", clock.slot);println!("Starting timestamp: {}", clock.unix_timestamp);// Test something at current time// ... your test logic ...// Jump forward 100 slotssvm.warp_to_slot(clock.slot + 100);// Verify time changedlet new_clock: Clock = svm.get_sysvar();assert_eq!(new_clock.slot, clock.slot + 100);// Test time-locked feature is now available// ... your test logic ...println!("Time travel successful!");}
Δοκιμή Λειτουργιών Βάσει Slot
#[test]fn test_slot_based_unlock() {let mut svm = LiteSVM::new();// Get starting slotlet start_slot = svm.get_sysvar::<Clock>().slot;// Deploy program with slot-based locklet program_id = deploy_locked_program(&mut svm);// Try to call before unlock slot (should fail)let result = call_program(&mut svm, program_id);assert!(result.is_err());// Warp to unlock slotsvm.warp_to_slot(start_slot + 1000);// Now it should succeedlet result = call_program(&mut svm, program_id);assert!(result.is_ok());}
Δοκιμή Λειτουργιών Βάσει Χρονικής Σφραγίδας
#[test]fn test_timestamp_based_feature() {let mut svm = LiteSVM::new();// Get current timestamplet clock: Clock = svm.get_sysvar();let current_time = clock.unix_timestamp;// Warp forward 1 hour (3600 seconds)let target_slot = clock.slot + (3600.0 / 0.4) as u64; // ~0.4s per slotsvm.warp_to_slot(target_slot);// Verify timestamp increasedlet new_clock: Clock = svm.get_sysvar();assert!(new_clock.unix_timestamp >= current_time + 3600);}
Βασικά Σημεία
- Clock Sysvar: Χρησιμοποιήστε το
svm.get_sysvar::<Clock>()για να λάβετε την τρέχουσα ώρα - Warping Slot: Χρησιμοποιήστε το
warp_to_slot()για να μεταβείτε μπροστά στον χρόνο - Υπολογισμός Χρονικής Σφραγίδας: Τα slots αντιστοιχούν περίπου σε ~0,4 δευτερόλεπτα στο Solana
- Δοκιμή Ξεκλειδωμάτων: Δοκιμάστε λειτουργίες με χρονικό κλείδωμα μεταβαίνοντας μετά τον χρόνο ξεκλειδώματος
- Χωρίς Επιστροφή: Μπορείτε να μεταβείτε μόνο μπροστά, όχι πίσω στον χρόνο
Συνήθεις Περιπτώσεις Χρήσης
- Προγράμματα αποδέσμευσης (vesting)
- Αναλήψεις με χρονικό κλείδωμα
- Περίοδοι αναμονής για stake/unstake
- Χρόνοι λήξης δημοπρασιών
- Περίοδοι ενοικίασης
Is this page helpful?