32 lines
2.0 KiB
Markdown
32 lines
2.0 KiB
Markdown
# Overview
|
|
|
|
httXrp is a proof of concept for a truly serverless web architecture. If serverless simply means "a server owned by someone else", httXrp pushes that definition to its limit.
|
|
|
|
# How it works
|
|
|
|
## 1: Getting data into and out of the blockchain
|
|
|
|
Transactions on the ripple blockchain are allowed to carry up to 1kB of arbitrary data via the memo field.
|
|
We can use this to store data of any size by building a tree of references between these transactions that can then be reassembled by reading them back from the blockchain.
|
|
In order to generate these transactions a library called [xrpio](https://gitea.nitowa.xyz/npm-packages/xrpio.git) is used.
|
|
|
|
Highly simplified, you can visualize the process like this:
|
|
|
|

|
|
|
|
## 2: Abstracting the webserver away from the web
|
|
|
|
Using tools like `webpack`, it is possible to condense even modern complex single-page-applications into a single html file. As `xrpio` is written in JavaScript, it is even possible to embed it into such an HTML file, the use of which will become more clear a few paragraphs below.
|
|
|
|
Since such a condensed HTML file is effectively nothing more than a long string it is possible to use `xrpio` to store them into the ripple blockchain and to retrieve them via a single identifying hash.
|
|
|
|

|
|
|
|
## 3: Dynamic web applications without a backend
|
|
|
|
Superficially, this technique is limited to serving static webpages, as there is no *real* backend serving these pages. However, since it is possible to embed `xrpio` into such a "static" page, it is possible to listen for transactions on the Ripple blockchain containing valid xrpio hashes and to dynamically update the webpage's content based on the stored data.
|
|
|
|
# Credits
|
|
|
|
- This project was originally inspired by indImm (https://ndm-inf.github.io/ndm/main), a ripple-based file storage using IPFS.
|
|
- xrpio (https://gitea.nitowa.xyz/npm-packages/xrpio.git) is heavily used in the technical architecture of this project. It is also written and maintained by me. |