abstract: In the days of communication by letter and publication by book and journal, an enormous amount of information was preserved for posterity. Now in the days of communication by social media and publication by website, we have a lot more information that is a lot more accessible, but it is continually and rapidly getting lost, with the result that our past is apt to get rewritten 1984 style at alarmingly short intervals. It is more accessible over space, but less accessible over time.
The trouble with the PHP model is that it is brittle against PHP extensions. So existing websites suffer bitrot. My website recently went down by bitrot, and it was not easy to restore it, nor was the restoration entirely satisfactory. A tremendous amount of website structure is implicit in PHP code. To prevent bitrot, it would need to be explicit in the append only tables.
A crypto currency needs immutable metadata as well as immutable transactions. The parties need to be able to prove what was paid for, what was agreed to.
And the social net needs immutable data that remains accessible as long as anyone anywhere cares about it, so that our history does not vanish and get rewritten at alarmingly frequent intervals. The past keeps changing. I have been around for a while, and I have seen the past I lived through change in ways that make it scarcely recognizable. The big point of the book 1984 was not that the party stopped anyone from speaking, but that it stopped anyone from remembering.
We want to be able to consolidate old transactions that no one cares about any more, while proving that subsequent transactions are validly derived from past transactions, even if no one has a record of those transactions any more, and we want to be able to consolidate multiple edits in a document. Consolidating multiple edits in a document is easier, because the editor signed the edits and the result of those edits, and thus cosigned all past edits by past editors, so we can generate an unsigned diff that provably mutates one signed document to another signed document, so we do not have to keep all intermediate edits around, nor keep all versions of the document around in full.
An immutable append only file, or an ever growing collection of immutable append only files, is in itself unreadable. For example we would like blog that is organized by article and comment thread, not entirely by time. There will be late comments to earlier articles, and late comments on earlier threads.
So, to represent a blog, the immutable append only data as to undergo sql transformations, or equivalently, the mapreduce algorithm. Or something of both, in order to generate readable html documents.
And the final structure of the transformed html document has to be in the data to be transformed, so that the one transformation can present any blog format, so that an old blog by someone else is not destroyed by bitrot. The structure might be represented differently, but it must not be lost.
For this, it suffices that every text has an in-regards-to and/or a title field,
which will serve to group texts by topic, as on a blog.
It may have an in-reply-to field, that serves to group texts by thread.
This is easy if all texts are immutable, but gets hairy if we allow editing. An edited text is a collection of texts and diffs, and therefore has many signatures and hashes. And from one hash, you have to be able to find all the others.
A couple of months before I wrote this, the Democrats were running a presidential campaign based on subdividing the population into multitude of groups, and telling a different and incompatible story to each group, and Wikipedia kept issuing drastic changes to recent history, to avoid contradicting any one of the far too many incompatible versions of recent history.
So we want one global sequence of hashes, so we wind up with one immutable history or at least one immutable history of the many conflicting accounts that people gave at the time. People may give us a false or misleading story at the time, but we do not want them to be able to subsequently change their story.
With transactions, we want a single global total order, and a transaction does not become final until a consensus is formed as to what the total order was.
But a signed text becomes final the instant it is despatched, though it may contain a transaction that does not become final for quite a while. So though we need a global hash of all texts, so that people cannot tell one story, then later switch in a different story, that cannot be the hash of a total order.
Any one feed is totally ordered, thus corresponds to an immutable append only file, but texts cannot be totally ordered between feeds.
Each feed has a forever incrementing hash at its tip, which commits to its total order.
A recent hash of each public feed from time to time gets incorporated into an ever incrementing total global hash of feed hashes. And the hash of each feed from time to time incorporates a recent global hash of all feeds. Which does not exactly pin down the time of a text in one feed relative to a text in other feeds, but does approximately pin it down. You can usually, but not always, prove that one text came before or after another text, and if you cannot prove that, you can prove that they both appeared at approximately the same time.
We wind up with one immutable append only file or equivalent for each social media feed, or each public social media feed, a total order within each feed, and global ever incrementing root hashes of all feeds which provides a weak order over all texts, but not a total order over all texts.
The immutable append only file of a public feed is the equivalent of a copy of a blog, a copy that is routinely shared amongst all followers of that blog, and is immune to bitrot.
So we no longer keep losing all the great information on great blogs of the past, because people are keeping a complete and shareable copy around, for as long as one person still cares about that old public feed.
reaction.la gpg key 154588427F2709CD9D7146B01C99BB982002C39F
This work is licensed under the Creative Commons Attribution 4.0 International License.