DAG metadata for censorship detection
FeoBlog "blogs" are organized as an unordered¹ collection of Items so that an individual server may deny storing certain Items. However, this means that, when looking at data stored on a single server, it's not possible to determine whether any of a user's data is missing. To do so, one would have to find a list of Item on some other server and compare it to the one in question.
To enable this type of checking against a single server, we could add optional metadata to the Item type which lists previous Item IDs published by this user ID. Like the rest of the Item, this data would be cryptographically signed by the user's key, so unable to be modified by servers. Clients could walk that DAG and report on any missing items.
IMO, server sync is going to be enough to detect censored Items. During sync, the client compares lists of Item IDs from two servers and copies over missing Items. If a server denies POSTing an item, the client will notify the user, and the user can detect the censorship.
- Though posts/Items are commonly ordered by their timestamp, there is nothing in the data structure that enforces that, unlike a DAG.