Replace the staked amount with a 15 minute exponential moving average of the staked amount. You can do that by polling every block on the backend and updating the EMA.
When displaying the counter, you know the time since the last block and you know the latest staked amount so you can update the EMA in real time on the client side.
But why?
The counter will be lagging the real numbers by about 15 minutes, but because the changes are smoothed, if you look at the counter it will also always be moving, which is more fun, relaxing and hypnotic.
Replace the staked amount with a 15 minute exponential moving average of the staked amount. You can do that by polling every block on the backend and updating the EMA.
When displaying the counter, you know the time since the last block and you know the latest staked amount so you can update the EMA in real time on the client side.
But why?
The counter will be lagging the real numbers by about 15 minutes, but because the changes are smoothed, if you look at the counter it will also always be moving, which is more fun, relaxing and hypnotic.