Tiempo y Reloj
La sysvar Clock proporciona slot, epoch y unix_timestamp para reglas basadas en tiempo: expiraciones, acantilados de vesting y límites de tasa. Los slots son discretos; las marcas de tiempo son aproximaciones del reloj de pared.
Busca en todas las páginas de la documentación
La sysvar Clock proporciona slot, epoch y unix_timestamp para reglas basadas en tiempo: expiraciones, acantilados de vesting y límites de tasa. Los slots son discretos; las marcas de tiempo son aproximaciones del reloj de pared.
let clock = Clock::get()?;
if clock.unix_timestamp > deadline { return Err(ProgramError::InvalidAccountData); }Cuándo recurrir a esto:
pub fn assert_not_expired(deadline: i64) -> Result<(), ProgramError> {
let now = Clock::get()?.unix_timestamp;
if now > deadline { return Err(ProgramError::InvalidAccountData); }
Ok(())
}Lo que esto demuestra:
Clock::get().unix_timestamp.| Campo | Uso |
|---|---|
| slot | Relativo al horario del líder |
| unix_timestamp | Expiración humana |
| epoch | Períodos de staking |
Los validadores tienen una deriva de marca de tiempo limitada: diseñe períodos de gracia.
// Almacenar la fecha límite i64 al inicializar desde el cliente o administrador.Clock. Solución: Siempre usar Clock::get().unix_timestamp para el reloj de pared.i64. Solución: Comprobación de cordura de las fechas límite.| Alternativa | Usar cuándo | No usar cuándo |
|---|---|---|
| Cron fuera de la cadena | No vinculante | Clock en la cadena |
| Solo basado en slots | Predecible | Confusión del usuario |
| Tiempo de oráculo | Excesivo | Específico de DeFi |
Constante conocida - Sysvar::get.
No aceptar la cuenta pasada - usar get.
Antes de 1970 es raro - rechazar.
Almacenar inicio + duración.
Calcular desbloqueado = f(ahora).
Envoltorio.
LiteSVM modifica el reloj.
Pequeña - no explotable a gran escala.
Sysvar diferente.
last_action_ts en la cuenta.
Cualquiera puede llamar a la ix de expiración.
El diseño de Clock es estable.
Versiones de la pila: Esta página fue escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, y LiteSVM 0.6.x.
Revisado por Chris St. John·Última actualización: 16 jul 2026