In my program, I am getting the cluster time via Clock::get().

It seems when I use the default RPC node https://api.mainnet-beta.solana.com I am being served the "real-world time".

However, when I use my Quicknode node (for Mainnet), I am getting a time that is about 30s off, and is pretty much equal to the cluster time as shown on explorer.solana.com.

Is that behavior normal? Is the default RPC node returning real-world time rather than cluster time, even though I'm reading the Clock Sysvar?

1 Answer 1


Cluster time can vary based on how up-to-date the RPC node you are querying is.

For example, if node x is playing catchup on blocks and is 20 slots behind, they could be ~20*400ms = 8 seconds behind.

Note: Cluster time via Clock::get() is only an approximation to "real-world time". The time can be off. Each slot has a time estimate based on Proof of History. In reality, slots may elapse faster and slower than this estimate, resulting in a cluster time that does not match "real-world time".

  • 1
    Thanks. I know cluster time and real world time can be off. But I thought cluster time (based on PoH) is quite homogenous among nodes? After all, what is the meaning of cluster time that solana.explorer.com is showing on its home page, counting up in real time? It's called cluster time, and not "this node's time". And the default RPC endpoint has been (unexpectedly) giving me real world time for about 4 weeks now, and Quicknode consistently gives me cluster time as per explorer. It killed our app when switching to Quicknode. Jul 29 at 3:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.