So what is an easy algorithm then? Keep in mind, "newest update wins" doesn't even begin to cover all possible use cases.
[
{ts: <upvoted_time>, author: <id_of_author>. action: 'up'},
{ts: <upvoted_time>, author: <id_of_author>, action: 'down'},
{ts: <upvoted_time>, author: <id_of_author>, action: 'up'}
]
You can sync from the server the changes after a certain timestamp, and the client can calculate the accurate value.That is why Google's TrueTime API (introduced in Spanner[0]) is such a big deal.
[0]: http://static.googleusercontent.com/external_content/untrust...