Δοκιμές Βάσει Χρόνου

Επισκόπηση

Αυτό το παράδειγμα δείχνει πώς να δοκιμάζετε λειτουργίες που εξαρτώνται από τον χρόνο, χειριζόμενοι 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 time
let 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 slots
svm.warp_to_slot(clock.slot + 100);
// Verify time changed
let 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 slot
let start_slot = svm.get_sysvar::<Clock>().slot;
// Deploy program with slot-based lock
let 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 slot
svm.warp_to_slot(start_slot + 1000);
// Now it should succeed
let result = call_program(&mut svm, program_id);
assert!(result.is_ok());
}

Δοκιμή Λειτουργιών Βάσει Χρονικής Σφραγίδας

#[test]
fn test_timestamp_based_feature() {
let mut svm = LiteSVM::new();
// Get current timestamp
let 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 slot
svm.warp_to_slot(target_slot);
// Verify timestamp increased
let new_clock: Clock = svm.get_sysvar();
assert!(new_clock.unix_timestamp >= current_time + 3600);
}

Βασικά Σημεία

  1. Clock Sysvar: Χρησιμοποιήστε το svm.get_sysvar::<Clock>() για να λάβετε την τρέχουσα ώρα
  2. Warping Slot: Χρησιμοποιήστε το warp_to_slot() για να μεταβείτε μπροστά στον χρόνο
  3. Υπολογισμός Χρονικής Σφραγίδας: Τα slots αντιστοιχούν περίπου σε ~0,4 δευτερόλεπτα στο Solana
  4. Δοκιμή Ξεκλειδωμάτων: Δοκιμάστε λειτουργίες με χρονικό κλείδωμα μεταβαίνοντας μετά τον χρόνο ξεκλειδώματος
  5. Χωρίς Επιστροφή: Μπορείτε να μεταβείτε μόνο μπροστά, όχι πίσω στον χρόνο

Συνήθεις Περιπτώσεις Χρήσης

  • Προγράμματα αποδέσμευσης (vesting)
  • Αναλήψεις με χρονικό κλείδωμα
  • Περίοδοι αναμονής για stake/unstake
  • Χρόνοι λήξης δημοπρασιών
  • Περίοδοι ενοικίασης

Is this page helpful?

Πίνακας Περιεχομένων

Επεξεργασία Σελίδας
© 2026 Ίδρυμα Solana. Με επιφύλαξη παντός δικαιώματος.