<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>The Interledger Community 🌱: rubensworks</title>
    <description>The latest articles on The Interledger Community 🌱 by rubensworks (@rubensworks).</description>
    <link>https://community.interledger.org/rubensworks</link>
    <image>
      <url>https://community.interledger.org/images/SaZVPTmQTjkMLp1EwTsTu-LGOI8Tf_IjPr-ft0SLT0g/rs:fill:90:90/g:sm/mb:500000/ar:1/aHR0cHM6Ly9jb21t/dW5pdHkuaW50ZXJs/ZWRnZXIub3JnL3Jl/bW90ZWltYWdlcy91/cGxvYWRzL3VzZXIv/cHJvZmlsZV9pbWFn/ZS80MzUvZDMxMjgz/YjItN2Y3Ny00NDgw/LTk1ZGEtZjFlMzJi/ZmZkMGVjLmpwZw</url>
      <title>The Interledger Community 🌱: rubensworks</title>
      <link>https://community.interledger.org/rubensworks</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://community.interledger.org/feed/rubensworks"/>
    <language>en</language>
    <item>
      <title>Incentivizing Decentralized Application Development within Solid through Web Monetization — Grant Report 2</title>
      <dc:creator>rubensworks</dc:creator>
      <pubDate>Mon, 07 Feb 2022 08:06:17 +0000</pubDate>
      <link>https://community.interledger.org/rubensworks/incentivizing-decentralized-application-development-within-solid-through-web-monetization-grant-report-2-4blb</link>
      <guid>https://community.interledger.org/rubensworks/incentivizing-decentralized-application-development-within-solid-through-web-monetization-grant-report-2-4blb</guid>
      <description>&lt;p&gt;This is the final report of our project to enable the monetization of Solid applications,&lt;br&gt;
allowing Solid identities to be linked to Web Monetization wallets,&lt;br&gt;
and incorporating payment processing into Solid’s authentication.&lt;/p&gt;

&lt;p&gt;Learn more about our project here: &lt;a href="https://github.com/KNowledgeOnWebScale/solid-web-monetization"&gt;https://github.com/KNowledgeOnWebScale/solid-web-monetization&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Update
&lt;/h2&gt;

&lt;p&gt;After our initial smooth progress on the application to assign payment pointers to a Solid WebID, we struggled a bit on the next part of the project. An initial scan of the Interledger technology stack gave the impression of a mature ecosystem, with ample library and documentation support. This lead us to believe that it would be straightforward to perform Interledger Protocol based STREAM payments, right from the user's browser to the target payment pointer of a content creator (present inside the HTML of his/her website). What we found however was that every library and example that we discovered had several issues that could always be described as one or more of the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Libraries were written for node but not browser compatible because of internal node-specific library dependencies.&lt;/li&gt;
&lt;li&gt;Documentation was outdated (but not mentioned as being outdated).&lt;/li&gt;
&lt;li&gt;No pointer or link to what the correct newer libraries to use were now (since redesigns in this space seemed to happen multiple times, making older libraries obsolete but still publicly available)&lt;/li&gt;
&lt;li&gt;Little to no response on dedicated Slack channels &lt;/li&gt;
&lt;li&gt;Missing formal abstraction to request executing payment from a wallet, based on the payment pointer. Since any wallet could host its own auhtentication method and API for doing so, and there is no formal discovery mechanism.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This led us to request for a 3 month (time) extension for the project.&lt;/p&gt;

&lt;p&gt;We decided to take a deeper dive at how Coil works, since they are the only party that we know of who does Web Monetization in practice. That made us realise that even Coil doesn't execute ILP payments from a user's payment pointer to another user's payment pointer directly. Instead they offer a subscription-based service (via credit card payments) to users that can run Coil's browser extension. This extension can act like a local service (browser extensions are more priveleged than javascript executing in the browser), but as far as we known the extension also just contacts their servers to execute payments on behalf of the user, by making a payment from Coil's wallet (which holds the funds generated by the subscriptions) to the Wallets of the content creators.&lt;/p&gt;

&lt;p&gt;This inspired us to refresh our view on this problem. It lead us to propose a &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/spec.html"&gt;Solid Web Monetization Provider specification&lt;/a&gt; for a component that works much like Coil's service. The key difference is that it is a Solid-based application, that stores personal data in the user's Solid Pod. The user is also free to pick any Solid Web Monetization Provider he/she wants (and thus trusts!) to subscribe to and perform Web Monetization in his/her behalf.&lt;/p&gt;

&lt;p&gt;Once we made that change, the demonstrator and specification soon followed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Progress on objectives
&lt;/h2&gt;

&lt;p&gt;One of our three original objectives was to be able to configure a link between a user's Solid identity and his/her wallet. This was completed at the time of our first report. Nothing has really changed here, except that deployment of the &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/accountant/"&gt;Accountant application&lt;/a&gt; is no longer done on the GitHub pages. Instead we've opted for a &lt;a href="https://github.com/orgs/KNowledgeOnWebScale/packages?repo_name=solid-web-monetization"&gt;Docker image build&lt;/a&gt;, so the &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/demo/intro/"&gt;whole demonstrator&lt;/a&gt; can be boostrapped by a single &lt;a href="https://github.com/KNowledgeOnWebScale/solid-web-monetization/blob/master/docker-compose.yml"&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt;&lt;/a&gt; file.&lt;/p&gt;

&lt;p&gt;A second objective was creating a prototype monetized Solid application. This objective has also been successfully completed in the form of the &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/microstore/"&gt;Microstore application&lt;/a&gt;. This application is also built as a &lt;a href="https://github.com/orgs/KNowledgeOnWebScale/packages?repo_name=solid-web-monetization"&gt;docker image&lt;/a&gt;. The microstore app is an example application which has two use cases showing how locked/premium content can be unlocked once micropayments are started using web monetization. &lt;/p&gt;

&lt;p&gt;A third and last objective was tying into the Solid authentication library to trigger a check for payment pointers in the user's Solid Identity. Since the only requirement for our scripts to work, is having access to the user's public Solid WebID document, a hard tie-in at this time was not needed. As a result, we've encapsulated the required code in a &lt;a href="https://www.npmjs.com/package/solid-wmp-client"&gt;client library&lt;/a&gt; that works alongside the &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/wmp/"&gt;Web Monetization Provider implemenation&lt;/a&gt;, instead of extending the Solid authentication library directly.&lt;br&gt;&lt;br&gt;
In the future however it could be integrated in the Solid authentication process, which in turn could even be handled by the visiting user's browser agent by means of an extension. That would truly require nothing else than a &lt;code&gt;&amp;lt;meta name="monetization" content="$my.pointer"&amp;gt;&lt;/code&gt; tag from the content creator to enable micropayments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key activities
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Milestone 1: Application to configure a Web Monetization wallet into a Solid identity&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Task 1.1. Extension of WebID ontology to include link to Web Monetization Wallet&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[Status: Finished]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
We are of the opinion that Payment Pointers should have an extra indirection so that more properties can be attached to a single payment pointer. This would allow a user to (in the future):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mark a payment pointer with a purpose/tag (eg. work, personal)&lt;/li&gt;
&lt;li&gt;Mark a payment pointer as default (if there are multiples)&lt;/li&gt;
&lt;li&gt;Use different types of Payment Pointers (right now we are working with an &lt;code&gt;InterledgerPaymentPointer&lt;/code&gt; type)&lt;/li&gt;
&lt;li&gt;Easily add any more propeties in the future if deemed necessary.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our solution initially required RDF BlankNodes to implement this. However blank nodes are still problematic when parsing and writing RDF, so we've opted to &lt;a href="https://www.w3.org/TR/rdf11-concepts/#section-skolemization"&gt;skolemize&lt;/a&gt; the blank nodes. &lt;/p&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Task 1.2. Application to configure a Web Monetization wallet into a Solid identity&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[Status: Finished]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
This started out as a React-Typescript project, because we wanted to reuse the &lt;a href="https://www.npmjs.com/package/@inrupt/solid-ui-react"&gt;@inrupt/solid-ui-react&lt;/a&gt; library. This library leans on top of the &lt;a href="https://www.npmjs.com/package/@inrupt/solid-client-authn-browser"&gt;@inrupt/solid-client-authn-browser&lt;/a&gt; library. Since however the newest features of that underlaying library weren't available yet and we needed more fine grained control, the &lt;code&gt;@inrupt/solid-ui-react&lt;/code&gt; library was dropped. Because the team is very familiar with angular applications, we then quickly rewrote the application as an angular application using that lower-level &lt;code&gt;@inrupt/solid-client-authn-browser&lt;/code&gt; libary.&lt;/p&gt;

&lt;p&gt;When the user logs in, he/she can choose between 3 identity providers: inrupt.net, solidcomminity.net and a custom identity provider (url). The latter one can (among others) be used to refer to the &lt;a href="https://github.com/solid/community-server"&gt;Community Solid Server (CSS)&lt;/a&gt;.&lt;/p&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Milestone 2: Extension of the Solid authentication library with Web Monetization support&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Task 2.1. Analysis of Solid/WebID authentication protocol&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[Status: Finished]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
  This task involves studying &lt;a href="https://solid.github.io/solid-oidc/"&gt;Solid OIDC&lt;/a&gt;, &lt;a href="https://solid.github.io/solid-oidc/primer/"&gt;Solid OIDC Primer&lt;/a&gt; and &lt;a href="https://tools.ietf.org/html/draft-ietf-oauth-dpop-04"&gt;DPoP tokens&lt;/a&gt;. This knowledge was used to implement the authentication flow for the &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/wmp/"&gt;Solid Web Monetization Provider application&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Task 2.2. Analysis of Web Monetization protocol&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[Status: Finished]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
  This task involves reading the &lt;a href="https://webmonetization.org/specification.html"&gt;Web Monetization Specification&lt;/a&gt; and theorizing about web monetization use cases in a Solid context.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Task 2.3. Theoretical integration of WebID and Web Monetization protocols&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[Status: Finished]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
  This task manifested itself in the design of the &lt;a href="https://knowledgeonwebscale.github.io/spec.html"&gt;Solid Web Monetization Provider specification&lt;/a&gt; that we proposed. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Task 2.4. Implementation of integrated protocol&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[Status: Finished]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
  This task manifested itself in the proof of concept authentication implementation of the &lt;a href="https://knowledgeonwebscale.github.io/spec.html"&gt;Solid Web Monetization Provider specification&lt;/a&gt; that we did in the form of the &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/wmp/"&gt;Solid Web Monetization Provider application&lt;/a&gt;.&lt;/p&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Milestone 3:  Prototypical Web Monetized Solid application&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Task 3.1. Implementation of prototypical Solid application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[Status: Finished]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
  This task required the implementation of a prototypical Solid application. The result of this task is the &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/microstore/"&gt;Microstore application&lt;/a&gt;. This application is an example of a Web Monetized Solid application: it has two subpages which represent a typical use case each (paywall and mixed content). Micropayments allow the visiting user to see the locked content.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Task 3.2. Integration testing of Web Monetization in combination with Solid authentication&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[Status: Finished]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
  This task has been reduced somewhat in the sense that manual tests using the prototype implementation of the &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/microstore/"&gt;Microstore application&lt;/a&gt; were the main point of focus. Besides, the actual authentiation steps in the client-side application (Microstore and Accountant) were handled by the &lt;a href="https://www.npmjs.com/package/@inrupt/solid-client-authn-browser"&gt;@inrupt/solid-client-authn-browser&lt;/a&gt; library, which is already thoroughly tested.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Milestone 4: Documentation and tutorials&lt;/li&gt;
&lt;li&gt;Task 4.1. Documentation for Solid users to configure a Web Monetization wallet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[Status: Finished]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
  For this task documentation was written and publicly hosted on the Github Pages.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/accountant/practical"&gt;practical docs&lt;/a&gt; are meant for users, explaining how to use the &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/accountant"&gt;Accountant application&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/accountant/technical"&gt;technical docs&lt;/a&gt; are meant for developers, on how to implement an application like the &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/accountant"&gt;Accountant application&lt;/a&gt;.

&lt;ul&gt;
&lt;li&gt;Task 4.2. Documentation for application developers to monetize their application&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[Status: Finished]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
  For this task documentation was written and publicly hosted on the Github Pages.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/microstore/practical"&gt;practical docs&lt;/a&gt; are meant for users, explaining how to use the &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/microstore"&gt;Microstore application&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/microstore/technical"&gt;technical docs&lt;/a&gt; are meant for developers, on how to implement an application like the &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/microstore"&gt;Microstore application&lt;/a&gt;.

&lt;ul&gt;
&lt;li&gt;Milestone 5: Dissemination of the main results and findings of this project&lt;/li&gt;
&lt;li&gt;Task 5.1. Presentation at Web-related conferences via publications and tutorials&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[Status: Finished]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
  A &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/demo/intro"&gt;demonstrator&lt;/a&gt; was built and a &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/demo/scenario"&gt;scenario&lt;/a&gt; was detailed to go through the demonstrator. A &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/dissemination"&gt;demonstration paper&lt;/a&gt; is in the making which will be presented at a conference in the near future.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Task 5.2. Publishing prototype on the Web as a live demonstration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;[Status: Finished]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
  The demonstrator is publicly available at the &lt;a href="https://github.com/KNowledgeOnWebScale/solid-web-monetization"&gt;GitHub repository&lt;/a&gt;, documentation on how to get it running is hosted on the &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization"&gt;GitHub Pages&lt;/a&gt;. It can be installed locally by anyone using Docker Compose and the &lt;a href="https://github.com/KNowledgeOnWebScale/solid-web-monetization/blob/master/docker-compose.yml"&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt;&lt;/a&gt; file. The setup is documented &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/demo/intro"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The demonstrator will also be hosted online at &lt;em&gt;(url coming soon)&lt;/em&gt;.&lt;/p&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Communications and marketing
&lt;/h2&gt;

&lt;p&gt;We are collaborating with other initiatives that combine Web Monetization with Solid on &lt;a href="https://github.com/solid/webmonetization"&gt;https://github.com/solid/webmonetization&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s next?
&lt;/h2&gt;

&lt;p&gt;The next steps would be hearing possible objections or suggestion to the &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/spec.html"&gt;Solid Web Monetization Provider specification proposal&lt;/a&gt;. If this specification is followed, it would allow us to hook into Solid authentication code (right after the authentication step is done). Which would make it possible to immediatly fetch the required information from the user's Solid WebID to perform micropayments on web monetization supported webpages.&lt;/p&gt;

&lt;h2&gt;
  
  
  What community support would benefit your project?
&lt;/h2&gt;

&lt;p&gt;We would be very excited to see Solid app developers interested in implementing monetization using our &lt;a href="https://www.npmjs.com/package/solid-wmp-client"&gt;WMP client&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Relevant links/resources
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Demos
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://wallet.solid-wm.discover.ilabt.imec.be/"&gt;Solid Accountant&lt;/a&gt;: configure Web Monetization wallet into a Solid identity.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://store.solid-wm.discover.ilabt.imec.be/"&gt;Solid MicroStore&lt;/a&gt;: prototypical Web Monetized Solid application.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://wmp.solid-wm.discover.ilabt.imec.be/about"&gt;Solid WMP&lt;/a&gt;: Web Monetization Provider with a fake currency,&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Repositories
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Project repository: &lt;a href="https://github.com/KNowledgeOnWebScale/solid-web-monetization/"&gt;https://github.com/KNowledgeOnWebScale/solid-web-monetization/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Client library repository: &lt;a href="https://github.com/KNowledgeOnWebScale/solid-wmp-client/"&gt;https://github.com/KNowledgeOnWebScale/solid-wmp-client/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Documentation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Project documentation: &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/"&gt;https://knowledgeonwebscale.github.io/solid-web-monetization/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Library
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Npm: &lt;a href="https://www.npmjs.com/package/solid-wmp-client"&gt;https://www.npmjs.com/package/solid-wmp-client&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Library API: &lt;a href="https://knowledgeonwebscale.github.io/solid-wmp-client/"&gt;https://knowledgeonwebscale.github.io/solid-wmp-client/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Specification
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/spec.html"&gt;https://knowledgeonwebscale.github.io/solid-web-monetization/spec.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>grantreports</category>
    </item>
    <item>
      <title>Incentivizing Decentralized Application Development within Solid through Web Monetization — Grant Report #1</title>
      <dc:creator>rubensworks</dc:creator>
      <pubDate>Mon, 26 Jul 2021 06:26:27 +0000</pubDate>
      <link>https://community.interledger.org/rubensworks/incentivizing-decentralized-application-development-within-solid-through-web-monetization-grant-report-1-4i35</link>
      <guid>https://community.interledger.org/rubensworks/incentivizing-decentralized-application-development-within-solid-through-web-monetization-grant-report-1-4i35</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Solid decentralization effort&lt;/strong&gt; decouples data from services, so that users are in full control over their personal data.&lt;br&gt;
Since services can not primarily depend on data collection as a primary business model anymore, alternative forms of monetization,&lt;br&gt;
such as &lt;strong&gt;micropayments via Web Monetization&lt;/strong&gt; are essential for &lt;strong&gt;incentivizing application development&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The goals of our project involve &lt;strong&gt;enabling the monetization of Solid application&lt;/strong&gt;, &lt;strong&gt;allowing Solid identities to be linked to Web Monetization wallets&lt;/strong&gt;, and &lt;strong&gt;incorporating payment processing into Solid’s authentication&lt;/strong&gt;.&lt;br&gt;
In this first report, we share our current progress on this project.&lt;/p&gt;

&lt;p&gt;Learn more about our project here: &lt;a href="https://github.com/KNowledgeOnWebScale/solid-web-monetization"&gt;https://github.com/KNowledgeOnWebScale/solid-web-monetization&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Update
&lt;/h2&gt;

&lt;p&gt;Our first focus on the project was having a (web) application to assign payment pointers to a Solid WebID. This is a requirement to get started on the rest of the project. It also gave us a chance to dig in to Solid development and the use of different libraries. That web application is now ready, and allows us to log in to a Solid identity provider of your choice and then add one or more payment pointers to that WebID.&lt;/p&gt;

&lt;h2&gt;
  
  
  Progress on objectives
&lt;/h2&gt;

&lt;p&gt;One of our three original objectives was to be able to configure a link between a user's Solid identity and his/her wallet. With the before mentioned application that allows adding payment pointers, we feel that this objective is near to completion. Of course some minor tweaks might be done in the future, but the bulk of that work is done. There is also an auto deployment available of that application via our CI/CD pipeline, which is hosted at &lt;a href="https://knowledgeonwebscale.github.io/solid-web-monetization/"&gt;https://knowledgeonwebscale.github.io/solid-web-monetization/&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
Originally we were planning on using the &lt;a href="https://www.npmjs.com/package/@inrupt/solid-ui-react"&gt;@inrupt/solid-ui-react&lt;/a&gt; library to leverage most of the work, but we have since moved from React to Angular and used the lower level &lt;a href="https://www.npmjs.com/package/@inrupt/solid-client-authn-browser"&gt;@inrupt/solid-client-authn-browser&lt;/a&gt; library to leverage the solid auth work. We chose &lt;a href="https://www.npmjs.com/package/n3"&gt;N3&lt;/a&gt; for parsing and writing the RDF data in the Solid WebID.&lt;/p&gt;

&lt;p&gt;A second objective involves tying into the Solid authentication library to trigger a check for payment pointers in the user's Solid Identity. This objective has not been started yet. We are however researching the different libraries that can be used to carry out the actual payments. This involves using the &lt;a href="https://interledger.org/"&gt;Interledger's&lt;/a&gt; &lt;a href="https://interledger.org/rfcs/0029-stream/"&gt;STREAM protocol&lt;/a&gt; and finding supported libraries. This last task has proven to be difficult, as all browser JS/TS plugin libraries that are responsible for settling payments on different networks (eg. paypal, ripple), are still in development. We are currently exploring our options here, since so far we were not able to compile them for a browser environment (instead of a node environment). Once we get some prototype payment transactions going, we can move on to this second objective of integrating into the Solid authentication hook.&lt;/p&gt;

&lt;p&gt;The third objective was creating a prototype monetized Solid application. This is an objective that will be saved for last, since it is easiest when all links of the full chain have been researched and implemented.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key activities
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Milestone 1: Application to configure a Web Monetization wallet into a Solid identity&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Task 1.1. Extension of WebID ontology to include link to Web Monetization Wallet&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[Status: Finished]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
We are of the opinion that Payment Pointers should have an extra indirection so that more properties can be attached to a single payment pointer. This would allow a user to (in the future):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mark a payment pointer with a purpose/tag (eg. work, personal)&lt;/li&gt;
&lt;li&gt;Mark a payment pointer as default (if there are multiples)&lt;/li&gt;
&lt;li&gt;Use different types of Payment Pointers (right now we are working with an &lt;code&gt;InterledgerPaymentPointer&lt;/code&gt; type)&lt;/li&gt;
&lt;li&gt;Easily add any more propeties in the future if deemed necessary.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our solution initially required RDF BlankNodes to implement this. However blank nodes are still problematic when parsing and wrinting RDF, so we've opted to &lt;a href="https://www.w3.org/TR/rdf11-concepts/#section-skolemization"&gt;skolemize&lt;/a&gt; the blank nodes. &lt;/p&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Task 1.2. Application to configure a Web Monetization wallet into a Solid identity&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[Status: Finished]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
This started out as a React-Typescript project, because we wanted to reuse the &lt;a href="https://www.npmjs.com/package/@inrupt/solid-ui-react"&gt;@inrupt/solid-ui-react&lt;/a&gt; library. This library leans on top of the &lt;a href="https://www.npmjs.com/package/@inrupt/solid-client-authn-browser"&gt;@inrupt/solid-client-authn-browser&lt;/a&gt; library. Since however the newest features of that underlaying library weren't available yet and we needed more fine grained control, the &lt;code&gt;@inrupt/solid-ui-react&lt;/code&gt; library was dropped. Because the team is very familiar with angular applications, we then quickly rewrote the application as an angular application using that lower-level &lt;code&gt;@inrupt/solid-client-authn-browser&lt;/code&gt; libary.&lt;/p&gt;

&lt;p&gt;When the user logs in, he/she can choose between 3 identity providers: inrupt.net, solidcomminity.net and a custom identity provider (url). The latter one can (among others) be used to refer to the &lt;a href="https://github.com/solid/community-server"&gt;Community Solid Server (CSS)&lt;/a&gt;.&lt;/p&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Milestone 2: Extension of the Solid authentication library with Web Monetization support&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Task 2.1. Analysis of Solid/WebID authentication protocol&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[Status: Started]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Theoretical work on this task has started. Most work so far has gone into researching the OAuth extensions that Solid/WebID would require on top of the standard OIDC/OAuth 2.0 workflow since we are familiar with that flow. More specifically this meant reading up on &lt;a href="https://tools.ietf.org/html/rfc7800"&gt;Proof of Posession Tokens (PoP)&lt;/a&gt;, &lt;a href="https://github.com/solid/webid-oidc-spec/blob/master/example-workflow.md#21-provider-selection"&gt;Provider Selection&lt;/a&gt;, &lt;a href="https://github.com/solid/webid-oidc-spec#deriving-webid-uri-from-id-token"&gt;WebID URI derivation&lt;/a&gt;, &lt;a href="https://github.com/solid/webid-oidc-spec#authorized-oidc-issuer-discovery"&gt;Provider Confirmation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;More work needs to be done here to thoroughly grasp the workflow, before integrating it into the Solid authentication hooks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Task 2.2. Analysis of Web Monetization protocol&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[Status: Ongoing]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
This task is ongoing. It involves reading the &lt;a href="https://webmonetization.org/specification.html"&gt;Web Monetization Specification&lt;/a&gt; and theorizing about web monetization use cases and how to practically surface some decisions to the user (eg. picking a payment pointer, setting a payment limit, etc).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Task 2.3. Theoretical integration of WebID and Web Monetization protocols&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[Status: Not started]&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;All following tasks and milestones have not been started yet&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Communications and marketing
&lt;/h2&gt;

&lt;p&gt;We are collaborating with other initiatives that combine Web Monetization with Solid on &lt;a href="https://github.com/solid/webmonetization"&gt;https://github.com/solid/webmonetization&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s next?
&lt;/h2&gt;

&lt;p&gt;The next milestone is of course Milestone 2. Once we have a deep enough insight into the protocols and specifications we can start the theoretical integration of the WebID and Web Monetization protocols (Task 2.3) and follow it up with the implementation. This would then immediatly get us started on Milestone 3 and its tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  What community support would benefit your project?
&lt;/h2&gt;

&lt;p&gt;We welcome any help and insights regarding any browser-ready JS libraries that can be used to carry out actual payments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Relevant links/resources
&lt;/h2&gt;

&lt;p&gt;Learn more about our progress here: &lt;a href="https://github.com/KNowledgeOnWebScale/solid-web-monetization/projects/1"&gt;https://github.com/KNowledgeOnWebScale/solid-web-monetization/projects/1&lt;/a&gt;&lt;/p&gt;

</description>
      <category>grantreports</category>
    </item>
  </channel>
</rss>
