From 768f768001b824f1d609bb2d327d9911458bbd27 Mon Sep 17 00:00:00 2001 From: Reisen Date: Wed, 7 Jul 2021 08:48:37 +0000 Subject: [PATCH] Use clock time for bridge initialization timestamp Change-Id: I6121e7546f4c0590dff830572a843384a0470972 --- solana/bridge/program/src/api/initialize.rs | 8 ++++++-- solana/bridge/program/src/instructions.rs | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/solana/bridge/program/src/api/initialize.rs b/solana/bridge/program/src/api/initialize.rs index 9671d29e..3bc9ad09 100644 --- a/solana/bridge/program/src/api/initialize.rs +++ b/solana/bridge/program/src/api/initialize.rs @@ -9,6 +9,7 @@ use crate::{ Error::TooManyGuardians, MAX_LEN_GUARDIAN_KEYS, }; +use solana_program::sysvar::clock::Clock; use solitaire::{ CreationLamports::Exempt, *, @@ -29,6 +30,9 @@ pub struct Initialize<'b> { /// Payer for account creation. pub payer: Mut>, + + /// Clock used for recording the initialization time. + pub clock: Sysvar<'b, Clock>, } impl<'b> InstructionContext<'b> for Initialize<'b> { @@ -62,9 +66,9 @@ pub fn initialize( return Err(TooManyGuardians.into()); } - // Allocate a default guardian set, with zeroed keys. + // Allocate initial guardian set with the provided keys. accs.guardian_set.index = index; - accs.guardian_set.creation_time = 0; + accs.guardian_set.creation_time = accs.clock.unix_timestamp as u32; accs.guardian_set.keys.extend(&data.initial_guardians); // Initialize Guardian Set diff --git a/solana/bridge/program/src/instructions.rs b/solana/bridge/program/src/instructions.rs index 2d077528..1e09d922 100644 --- a/solana/bridge/program/src/instructions.rs +++ b/solana/bridge/program/src/instructions.rs @@ -62,6 +62,7 @@ pub fn initialize( AccountMeta::new(guardian_set, false), AccountMeta::new(fee_collector, false), AccountMeta::new(payer, true), + AccountMeta::new_readonly(sysvar::clock::id(), false), AccountMeta::new_readonly(sysvar::rent::id(), false), AccountMeta::new_readonly(solana_program::system_program::id(), false), ],