- From: Kingsley Idehen <kidehen@openlinksw.com>
- Date: Fri, 21 May 2021 10:13:34 -0400
- To: public-rww@w3.org
- Message-ID: <3ac6c143-f0fa-c900-0c05-9dfb8275acc6@openlinksw.com>
On 5/21/21 7:34 AM, Melvin Carvalho wrote:
> this is the outline of a strategy to track state changes in a temporal
> read-write web
>
> by no means the only strategy, but an aim to generalize some of the
> recent discussions
>
> 1. Data as a declarative state machine
>
> The data can be considered as a declarative state machine, offering
> state transitions
>
> Simple case is one document, but it's useful to have multiple
> documents over a set of quads (linked data) or directory tree (file
> system)
>
> It seems standard practice to track this data using a hash function.
> So the first step would be to hash the document or tree or knowledge
> base into a chain of hashes. Git or other VCS systems do this,
> similarly with single documents you could take a sha2, for example,
> and maintain a chain of hashes that way
>
> 2. Bootstrapping a timestamp server to witness hashes
>
> Robust global timestamp servers have existed for over a decade,
> popularized by the bitcoin project, often referred to as block chains,
> because data is tied to those timestamps in the form of 'blocks' of
> data. Users compete for space on those blocks based on an auction
> basis, as they are a finite resource, to make them spam resistant
>
> The chain of hashes described in (1) can be tracked on the blocks of
> the timestamp server, which tend to have a common transaction format.
>
> What is needed is hash1,hash2,hash3...hashn to be sequenced in time
> from a definitive start, or genesis. That genesis can become an
> identifier for the chain of linked data which we wish to securely
> witness.
>
> Block chains typically follow a transaction in time from spent ->
> unspent. The terminology is that of inputs and outputs. This can be
> thought of as source and destination.
>
> The transactions are identified as cryptographic hashes, with an array
> of outputs. In order for a timestamp server to track a chain of
> linked data, we need to construct a URI for the linked data hashes
> (hash1,2...n) and for the block chain transactions (tx1,2,...) with
> the first tx being a genesis identifier
>
> Gaps needed to fill: create URIs for hash1,2,...n. Create URIs for
> tx1,2...n
>
> 3. Two way links between state machines
>
> Two way links between those state machines ensure strong coupling
> between the two systems providing a bootstrap. So from the case of
> the linked data, you need a pointer to the transaction URI. And from
> the block chain you need a pointer to the hash URI.
>
> From a block chain there's a couple of ways to do this, one is the
> so-called OP_RETURN which allows you to embed data in at transaction.
> The other is known as 'tweaking' a public key on order to add a hash
> (hash1,2...n in the web chain)
>
> Linking from linked data to a transaction, once you have a URI can be
> done in a number of ways. But as linked data is designed to link to
> other URIs it's quite doable by putting it onto the data structure.
> Another technique, for example in VCS is to put a link in the commit
> message, as commit messages are part of the chained tree
>
> 4. Ensuring Temporal Integrity
>
> Once (1), (2), (3) are in place. Change can be made to the state
> machine, and new hashes generated. With the example of git we can
> commit hashes to a file system, or a centralized server such as github
>
> But, If we want to commit at web scale, we can do so as follows:
>
> Firstly generate a hash of the new state. Then move the transaction
> in the block chain along to point to this new state. The transaction
> itself has PKI based ownership rights which have a variety of ways to
> manage and transfer ownership including so-called "multi sig"
> ownership where any N of a given M actors need to agree on a transition
>
> Finally, point the web chain back to this new transaction once it is
> confirmed
>
> This will progress the web chain in time and mirror it on the
> underlying time stamp server
>
> The resulting system creates a temporal read write web state machine
> anchored to the strong assurances of an underlying timestamp server
>
> This is a sketch outline of something that could be turned into a
> prototype or MVP, and also illustrating the gaps in technology that we
> need, namely to create two URI schemes, to hash web state, and
> describe state transitions, for data and for agents
>
> Appreciate this is a sketch outline right now, feedback welcome!
>
Great explanation!
*Challenge:*
Persisting this in a form that available for easy recall.
*Suggestions:*
1. Documentation using RDF sentences in a document
2. A visual diagram to complement -- e.g., using http://draw.io *
*
*Example:*
1.
http://www.openlinksw.com/data/turtle/general/knowledge-graph-manifestation-turtle-jsonld.html
-- I constructed that for explaining Hypertext, Hyperdata, Hypermedia
etc., in relation to Knowledge Graphs; that all started from a draw.io
diagram .
--
Regards,
Kingsley Idehen
Founder & CEO
OpenLink Software
Home Page: http://www.openlinksw.com
Community Support: https://community.openlinksw.com
Weblogs (Blogs):
Company Blog: https://medium.com/openlink-software-blog
Virtuoso Blog: https://medium.com/virtuoso-blog
Data Access Drivers Blog: https://medium.com/openlink-odbc-jdbc-ado-net-data-access-drivers
Personal Weblogs (Blogs):
Medium Blog: https://medium.com/@kidehen
Legacy Blogs: http://www.openlinksw.com/blog/~kidehen/
http://kidehen.blogspot.com
Profile Pages:
Pinterest: https://www.pinterest.com/kidehen/
Quora: https://www.quora.com/profile/Kingsley-Uyi-Idehen
Twitter: https://twitter.com/kidehen
Google+: https://plus.google.com/+KingsleyIdehen/about
LinkedIn: http://www.linkedin.com/in/kidehen
Web Identities (WebID):
Personal: http://kingsley.idehen.net/public_home/kidehen/profile.ttl#i
: http://id.myopenlink.net/DAV/home/KingsleyUyiIdehen/Public/kingsley.ttl#this
Received on Friday, 21 May 2021 14:13:52 UTC