diff --git a/codex/contracts/clock.nim b/codex/contracts/clock.nim index dd17986f..76b75620 100644 --- a/codex/contracts/clock.nim +++ b/codex/contracts/clock.nim @@ -10,7 +10,7 @@ type OnChainClock* = ref object of Clock provider: Provider subscription: Subscription - offset: int64 + offset: float started: bool proc new*(_: type OnChainClock, provider: Provider): OnChainClock = @@ -22,8 +22,8 @@ proc start*(clock: OnChainClock) {.async.} = clock.started = true proc onBlock(blck: Block) {.async, upraises:[].} = - let blockTime = blck.timestamp.truncate(int64) - let computerTime = getTime().toUnix + let blockTime = blck.timestamp.truncate(int64).float + let computerTime = epochTime() clock.offset = blockTime - computerTime if latestBlock =? (await clock.provider.getBlock(BlockTag.latest)): @@ -40,4 +40,4 @@ proc stop*(clock: OnChainClock) {.async.} = method now*(clock: OnChainClock): SecondsSince1970 = doAssert clock.started, "clock should be started before calling now()" - getTime().toUnix + clock.offset + int64(epochTime() + clock.offset)