Re: RWW Use-Case Example: Web-Scale Ticketing Ideas

On 5/20/21 2:23 PM, Melvin Carvalho wrote:
>
>
> On Thu, 20 May 2021 at 17:17, Kingsley Idehen <kidehen@openlinksw.com
> <mailto:kidehen@openlinksw.com>> wrote:
>
>     On 5/20/21 8:19 AM, Melvin Carvalho wrote:
>>
>>
>>     On Tue, 18 May 2021 at 16:52, Kingsley Idehen
>>     <kidehen@openlinksw.com <mailto:kidehen@openlinksw.com>> wrote:
>>
>>         On 5/18/21 6:39 AM, Melvin Carvalho wrote:
>>>
>>>
>>>         On Tue, 18 May 2021 at 03:26, Kingsley Idehen
>>>         <kidehen@openlinksw.com <mailto:kidehen@openlinksw.com>> wrote:
>>>
>>>             On 5/17/21 4:59 PM, Nathan Rixham wrote:
>>>>             On Mon, May 17, 2021 at 8:52 PM Henry Story
>>>>             <henry.story@bblfish.net
>>>>             <mailto:henry.story@bblfish.net>> wrote:
>>>>
>>>>                 > On 17. May 2021, at 20:53, Melvin Carvalho
>>>>                 <melvincarvalho@gmail.com
>>>>                 <mailto:melvincarvalho@gmail.com>> wrote:
>>>>                 > On Mon, 17 May 2021 at 19:50, Henry Story
>>>>                 <henry.story@bblfish.net
>>>>                 <mailto:henry.story@bblfish.net>> wrote:
>>>>                 > > On 17. May 2021, at 03:33, Nathan Rixham
>>>>                 <nathan@webr3.org <mailto:nathan@webr3.org>> wrote:
>>>>                 > >
>>>>                 > >
>>>>                 > > A loosely coupled immutable timestamped record
>>>>                 of state changes allows deployment of resources to
>>>>                 be broadly tech and protocol agnostic. For example
>>>>                 several previous states of a document could be
>>>>                 stored on IPFS, with the stateless protocol HTTP
>>>>                 providing the most recent state, and a chain
>>>>                 exposing timestamped pointers to the previous states.
>>>>                 >
>>>>                 > You can also get quite far just by adding link
>>>>                 between version states using memento for example.
>>>>                 > I am trying that out in the new Solid Server I am
>>>>                 putting together. There are comments in the code here:
>>>>                 >
>>>>                 https://github.com/co-operating-systems/Reactive-SoLiD/blob/master/src/main/scala/run/cosy/ldp/fs/Resource.scala#L223
>>>>                 <https://github.com/co-operating-systems/Reactive-SoLiD/blob/master/src/main/scala/run/cosy/ldp/fs/Resource.scala#L223>
>>>>                 >
>>>>                 > Thanks Henry
>>>>                 >
>>>>                 > This looks interesting, I've had a look at the
>>>>                 comment you pointed to, and it looks interesting,
>>>>                 tho I didnt understand it fully
>>>>                 >
>>>>                 > Would it be possible to describe in a couple of
>>>>                 sentences for those that are not intimately
>>>>                 familiar with memento
>>>>
>>>>                 I have not implemented memento fully myself. It
>>>>                 builds on rfc5829 and allows one to link to
>>>>                 archives that keep
>>>>                 copies of versions, though the server can be it’s
>>>>                 own archive I believe.
>>>>
>>>>                 >
>>>>                 > I can imagine a work stream for a temporal web
>>>>                 based on this approach, if there's interest
>>>>                 >
>>>>                 > The thing that particularly interests me is what
>>>>                 I'll term quite vaguely, a web-scale temporal web. 
>>>>                 What I mean by this is, that the timestamp
>>>>                 operation (aka the witness operation) is global
>>>>                 scope and not local.  Meaning if any one website
>>>>                 goes down, the timestamping record will still be
>>>>                 there allowing a reconstruction of the history. 
>>>>                 Providing resilience.  In 2021, we have specialized
>>>>                 time stamping servers (commonly referred to as
>>>>                 pubic block chain) which can provide this time
>>>>                 travel type functions.  From your comment there is
>>>>                 a time travel in memento too.  In any case,
>>>>                 interested in your findings, if you'd like to share ...
>>>>
>>>>                 I think there is a clear need for any read-write
>>>>                 web server such as Solid to keep versioning
>>>>                 information,
>>>>                 just to help restore versions in case a buggy
>>>>                 hyper-App writes some data.  That use case does not
>>>>                 require
>>>>                 global consensus on version states. So I think that
>>>>                 is local versioning will clearly be the first
>>>>                 priority. Trellis-LDP implements somehting like
>>>>                 this too, so I am following in the footsteps to get a
>>>>                 better understanding of it.
>>>>
>>>>
>>>>             Agree, that's the trouble with using a stateless
>>>>             protocol to manage state!
>>>>
>>>>             Exposing version via headers is a neat solution, I
>>>>             guess you can implement etag and if none match on write
>>>>             requests to avoid updating a resource for which you
>>>>             have a stale state / which has already changed without
>>>>             you knowing. That is probably good enough for most cases.
>>>>
>>>>             I guess chains come in to factor when you need reliable
>>>>             timestamps, and a provably tamper proof immutable chain
>>>>             of previous states.
>>>
>>>
>>>             Yes!
>>>
>>>             Throughput (and associated economics) remain challenges
>>>             (as far as I know) since blockchains are still database
>>>             management systems albeit a specialized variety where
>>>             transaction logs are based on various consensus protocols.
>>>
>>>
>>>         They are finite resources due to the highly replicated,
>>>         resilient and fault tolerant nature
>>>          
>>>
>>>             Imagine trying to track the evolution of the description
>>>             of various entities in DBpedia since 2007, I don't know
>>>             how it wouldn't hit all the scalability thresholds re
>>>             both throughput and $$$.
>>>
>>>
>>>         Fascinating use case.  Well It's fair to say we could
>>>         probably track a single page quite well.  Tracking all the
>>>         pages would be quite a challenge, but in 10 years with 5G
>>>         and 100TB of data as common, this may actually be within
>>>         reach and affordable
>>>
>>>         The question arises as to why you'd want to do such a thing. 
>>>         The answer is that an independent timestamp server allows
>>>         you to decentralize the client server model.  The read write
>>>         web as it is today is highly reliant on client server
>>>         centralization.  We have not yet made inroads into
>>>         decentralizing that model leading to most things on the web
>>>         going through a trusted third party, tracking you, or trying
>>>         to sell you something
>>
>>         *Use-Case Example*
>>
>>         Problem: Creator Conundurum
>>
>>         I *painstakingly* put together an RDF document that provides
>>         details about the Beatles that's missing from DBpedia,
>>         Wikidata, and Musicbrainz such as:
>>
>>         1. Song Instrumentalists
>>
>>         2. Recording Location
>>
>>         3. Song Producer
>>
>>         4. Instruments per song
>>
>>         5. etc..
>>
>>     I think this part is solved using linked data, because you can
>>     say anything about anything.  You could do this in RDF or
>>     JSON(-LD).  Now you have, for the sake a simplicity, a document
>>     containing your data
>>      
>>
>>         I want to publish this to the Web, but not for $0.00 since
>>         there is a serious opportunity cost associated with the
>>         production of the work in question.
>>
>>
>>     Publishing we can do too.  But you want to do access control and
>>     also paid access control.  Or a pay wall or something like this.
>>
>>     Solutions:
>>
>>     1. A hosted service, for example:
>>     https://docs.lnpay.co/paywall/create-paywall
>>     <https://docs.lnpay.co/paywall/create-paywall>
>>
>>     2. Create your own version of that service
>>
>>     3. Combine together the WebACL spec with a payments workflow
>>     (which we could flesh out here), possibly using HTTP 402, and
>>     returning a header telling the client how to pay
>>
>>     4. A more generic distributed service where the server could be
>>     an agent that manages the access control and rights to your
>>     published resource.  This would be more advanced, but the kind of
>>     thing I see as a good prototype
>>      
>>
>>         Challenges:
>>
>>         1. How do I express and assert ownership?
>>
>>
>>     In Linked Data we express ownership via statements/quads, which
>>     can be definitive if linked to a website.  Or via a signature
>>     which makes it portable.  In cryptographic world most often a
>>     public key is used to demonstrate ownership, and you will own the
>>     private key
>>      
>>
>>         1. How do I track use over time and receive appropriate
>>         monetary credits?
>>
>>
>>     Two paths for this.  One is a public record, the other is
>>     recorded privately.  Public data to track amounts received (aka a
>>     ledger) could reuse the same linked data pattern that describes
>>     the state, but in another part of the witnessed state (say, a
>>     diferent folder)
>>      
>>
>>         Blockchain offers me NFTs as a potential ownership assertion
>>         mechanism. It also offers an ability for me to track credits
>>         due over time via a Smart Contract.
>>
>>
>>     So the underlying block chain can track ownership of public keys
>>     (there's some neat tricks with ECC keys and delegated ownership
>>     that I think you'd like), you would NOT want to put a smart
>>     contract in the block chain imo, as they can get complex and are
>>     better suited to be at the web layer.
>>
>>
>>         Issues with Blockchain:
>>
>>         1. Which of the zillion tokens + platform combos to I choose
>>         from?
>>
>>     Pick one in the spirit of royalty-free standards so one without a
>>     premine used to enrich the founders (which unfortunately is over
>>     99%).  Bitcoin and derivatives (lightning, liquid, rootstock) are
>>     safe bets.  There's a few others, which we could document.
>>      
>>
>>         2. Ultimately, do any of these actually scale to the levels
>>         required?
>>
>>
>>     Sure, provided that you use the space well, and use the block
>>     chain simply as a timestamp server.  So you 'commit' to a block
>>     chain when you want a definitive state, or there is an important
>>     ownership transition.  This is something we could spec out, if
>>     there's an appetite
>>
>>     BTW I love this use case because it would enable many more
>>     things, such as paid podcasts, entertainment etc.  I think it's
>>     doable once we get the plumbing done (stuff openlink is good at),
>>     and I've added this use case to a new thread
>
>     Changed title to orient focus.
>
>     Here's what exists currently, putting blockchains aside.
>
>      1. I can generate an X.509 Certificate (which an expiration date)
>         that functions as my Web Ticket
>      2. I can ACL protect my RDF documents and even associated services
>
> Both good
>  
>
>     1.
>
>
>     Adding a blockchain to the mix solves the following:
>
>      1. Making my Ticket more copy-proof by tracking ownership via a
>         Blockchain -- rather than depending solely on "private key"
>         access and control on the part of users
>      2. Handling accounting for future royalties etc
>
>
> Let's say we want to bootstrap a timestamp server.  Bootstrap is
> something the RWW is really good at
>
> Much of what you describe in (1) and (2) can be done on the linked
> data side.  The timestamp server is just a witness.  It prevents
> tampering, provides audit etc. (aside: we should list the functions it
> adds at some point).  Block chains provide ownership rights via PKI,
> so you can transition both state, and who controls the ability to
> change state (similar but subtly different things)
>
> What do we need for this bootstrap.  We need a way of 'hooking in' to
> the block chains (using URIs of course).  So block chains natively
> dont have URIs but they do have UUIDs.  This is necessary because they
> are extremely compact, and adding a uri would be expensive, that's why
> it's better on the RWW side, and out of band
>
> We need a URI scheme for transactions.  It's a simple enough thing to
> do, but I was looking around for existing work and I found:
>
> https://w3c-ccg.github.io/blockchain-links/
> <https://w3c-ccg.github.io/blockchain-links/>
>
> This doesnt quite do the job because we need inputs and outputs (which
> are like specific transactions).  I've raised an issue here:
>
> https://github.com/w3c-ccg/blockchain-links/issues/2
> <https://github.com/w3c-ccg/blockchain-links/issues/2>
>
> Not a big deal, as we could make our own in a few minutes I would
> think, we would just need to name the URI scheme.  That probably
> completes a decent chunk of the architecture, and we can be close to
> the point of writing code after we name with URIs the things we want
> to bootstrap
>  


In regards to Name Services and Blockchains, do take a look at:

[1] https://docs.stacks.co/build-apps/references/bns -- which is did:
scheme based

[2] https://github.com/decentralized-identity/universal-resolver --
Universal Resolver Project (also did: scheme based)

[3] https://blog.cloudflare.com/cloudflare-distributed-web-resolver/ --
ipfs based

-- 
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 Thursday, 20 May 2021 22:00:34 UTC