The Interledger Foundation Community

Joep Meindertsma
Joep Meindertsma

Posted on

Solid based Data Spaces — Grant Report #2

Most of the people reading this will be at least a little interested in decentralizing the web. At Dexes, we're building software that help to achieve this. We write tools that give people more control over their data, and promote interoperability. One of our core objectives, is to make it easier to monetize data without losing control. Thanks to the Grant for the Web, we were able to add webmonetization to two open source data servers: Atomic Server and the DexPod (a Solid server).

Project Update

In our previous report, we shared a bit of our struggle. When we saw the Grant for the Web for the first time, we had the idea of using Interledger to facilitate transactions for data. We wanted users to be able to set a price for any arbitrary digital resource, and use payment pointers to handle the transaction. We basically learned that the things that we wanted to do with Interledger were not yet possible using the existing wallet implementations, since these focused on streaming payments, and not one-off payments. First, we tried solving this usecase by diving quite deep in the Interledger protocol, but we didn't manage to get our usecase working. We got in touch with the developers of Interledger, and learned that a new library was being made that will enable one-off transactions: Rafiki. We reached out to the Interledger Foundation and asked if we could perhaps pause our project and wait a bit longer, until december 1st 2021, to let Rafiki mature a bit. We regularly checked in to see if Rafiki could be used for our case, but we came to the conclusion that it's still a bit too early. We discussed an alternative approach to reach our goal of enabling payments, which is probably far more similar to how most other projects implemented Interledger: through Webmonezitation! We implemented this for two of our open source servers, the DexPod and Atomic Server.

Atomic Server: open source graph database for personal data, now with Web Monetization

For the past two years, we've been working on building a new open source database: Atomic Server. It's written in Rust, which helped make it a very performant, small, yet flexible application. It's a personal server that has been designed to run on low-end hardware, such as on a Raspberry Pi. This allows you to host your own Personal Online Datastore at a low cost. We've built the server and wrote the specification to help make the web more interoperable, and enhance data ownership.

We've implemented WebMonetization for Atomic Server. This means that you can Monetize any type of content, such as documents, webpages, videos or anything else straight from your Atomic Server. All you have to do, is add your payment-pointer property to a resource, and the client (Atomic-Data-Browser) will take care of the rest.

If you want to do this, follow these steps:

  • Set up an Atomic Server. The easiest is probably to run the docker one liner `or by runningcargo install atomic-server
  • Create some resource, or upload a file, and open the Edit panel.
  • Click add another property, and enter https://atomicdata.dev/property/paymentPointer.
  • Now, enter your payment pointer in the new field.
  • Press 'save'
  • That's it! You can now share your premium content URL, and it will only be shown if the client has Coil installed.

Open my example Premium Document here.

Image description

Check out the video below to see some of the other features in Atomic Server:

DexPod: open source Solid Pod implementation

The Solid project is an initiative by the inventor of the World Wide Web, sir Tim Berners-Lee. It's goal is to re-decentralize the internet, and give users more control over their data. We're building an implementation for this new Solid specification, called the DexPod.

We've added WebMonetization to this application, too. In the DexPod, users can upload files, and optionally add a PaymentPointer to them if they want to monetize that content. Similar to how this works in Atomic-Server, access is only given when a payment is succesful, and otherwise users will be shown instructions on how to get a wallet installed.

You can create a monetized resource by creating a DexPod on dexes.eu, then going to your pod (press menu -> go to pod), uploading a file, and adding your payment pointer.

Two screens showing the DexPod with an instruction, and one showing an image

Communications and marketing

Dexes has been in various media outlets 1, 2, 3, and I've given a radio interview on Atomic Data.

What’s next?

For one, we'll keep investing in Atomic Server and DexPod.

For the DexPod, one of the next steps is to further integrate with our Broker service. This will enable data owners to create custom machine readable agreements for sharing data. For example, a data owner may require that a data user is of a certain age, has a valid e-mail, and has made a succeful payment. We're collaborating with the Amsterdam Economic Board to find usecases for conditional data sharing. Payments are one of the most important conditions for us.

For Atomic Server, we've just released a desktop-build, and plan to release more libraries, tutorials and tools for developers to make apps for this ecosystem.

What community support would benefit your project?

We'd still like to implement one-off payments for data. The UX that we'd like to achieve, is one that is similar to conventional online payments - the user explicitly agrees to paying some amount of money, and is shown the content after the payment is transferred.

Additional comments

Thanks to the Interledger foundation for investing in the future of the web, and thank you to the GftW team for enabling all of this!

Relevant links/resources (optional)

Discussion (0)