I have drafted probably three pages worth of ideas about this topic. And perhaps none of them summarize what I have been contemplating truly. Nonetheless, my thoughts on identifying bad timestamp actors. These would be described as people who wish to manipulate the order of events and gossip their action happened before another agent’s action. Leaving in question who owns the publication record of this.data?
I personally will have to find a solution to a similar problem, whereas I want an entry to require a set amount of time to be completed, but I don’t want an agent to be able to modify their system clock and bypass the time restraints.
One solution I considered for my above problem was to require a proof of work, like btc or another work based Blockchain. But how do I scale a hashing problem to make actions take a fair amount of time for people with less powerful PCs is a separate topic. This seemed like a decent solution regardless. How do you mitigate DDoS attacks other than by requiring some human action to be required? A metaphor.
It was raised that using a certified time stamping service may work. But perhaps this cost fees and we would like this security to be guaranteed and perhaps free; embedded in the source code.
I cannot be sure, but perhaps if a holochain application was watching for the user to change their timestamp it could identify the bad action and protect itself in some form by informing other agents. Maybe there are some freedoms that aren’t allowed for the security of a network?
I have much more I could rant on this topic. Time will tell whether the problem can be solved. If anyone has any thoughts or rants about how you and I can be certain the time of our publications are preserved and honest/truthy. With all permission; please post below.
Maybe an email validation code for “critical entries?” Hard to manipulate centralized services. But if we as the Holochain community want true decentralization, which I assume is the goal. I’m sure there are so many grand discussions that have yet to be discussed as we continue this journey. Thanks to Ceptyr for their incredible philosophies by the way!
I’m guessing you’ve already been through this, but I thought I’d add it explicitly anyway.
Provided you have a trusted authority you can easily prove both that something was done after and/or before certain times.
To prove something happened after a certain time you have the trusted authority regularly emit signed timestamps, and one of these must be included in the result. This is like the newspaper headline in the kidnap photo.
To prove something happened before a certain time you have the trusted authority sign the result with a timestamp. This is like having the kidnap photo printed in the next day’s newspaper.
The hard part for a distributed system is the “trusted authority”. The “trusted authority” bit is basically the same old distributed consensus problem.
Note that the authority only needs to be trusted by any person who wants to verity the timestamps, and there doesn’t have to be just one. You could use a bunch of different authorities, so you show and get published in multiple different newspapers… so that people who don’t trust the Sun are still convinced if they trust the Herald.
In the simplest case, the only trusted authority you need is the person you need to convince. It gets much harder if you need to convince everyone, where everyone is very large.
You could use a POW chain (each result includes a link to the “before-timestamp” chain-hash and is included in the POW “after -timestamp” block. But POW chains are terrible. IMHO a far better solution involves some kind of trust network to select a group of authorities that are sufficiently trusted. Trust networks are a whole topic on their own.
For holochain it seems to me that the incentive here is not by reward but by non-exclusion. With the assumption of 1 user → 1 DHT user, we can use BTC type timestamp server (author signed timestamping) with gossip for exclusion. In terms time ordering, dishonest nodes run the risk of being caught with false timestamps and being removed. Here’s just a thought on how it would work:
Initial transaction is created with manipulated timestamp signed by author