Steem Dapps, IPFS, & Nebulus
Tags: [open-source], [apps], [software], [cryptocurrency], [steem], [decentralization], [ipfs]
The InterPlanetary File System (IPFS) is something that I am glad I came across at the beginning of 2018. It is an open source way to host files and share them around the web in a way that leads to a much faster and less expensive transfer of data.
You probably know by now that I am a massive fan of decentralizing all the things but do not think we need a blockchain to do it every time. IPFS is peer-to-peer and yet has no blockchain because there is no reason to have one when the goal is file hosting. All cryptocurrencies are peer-to-peer, but not all peer-to-peer decentralization has to be on a blockchain.
Peer-to-peer is as it sounds. You connect to another user directly. There is no need for a central server to host, upload, download, or serve files. When there is no central server doing all the work, there is no one point of failure.
Decentralization also eliminates the issue of centralized servers shutting you down because they don't like what you say or share (something we see more of every day from big centralized web companies). This networking method is a huge step in keeping the internet steeped in free speech and is how the Internet operated in the beginning.
In a peer-to-peer system, a computer will divide a portion of the resources and give them to the network. These resources can include hard drive space, bandwidth, or processing power. These allocated resources are still the computers' but, as with hard drive space, the predetermined amount is used to store information that can be called by other computers on the network. Doing this allows for more space, speed, or processing power to be used than a single computer in the system could hold alone.
With this structure, each peer supplies and consumes data. However, the most common model we use online today, the server does all the providing while the users on the web do all the consuming. This allows for cool web apps but will only push everything into the hands of a few.
IPFS, Better Than HTTP
When we download a file from the internet, we access a traditional server and request to have the data we need. Then the server sends this file over the internet to us little by little until the entire file is in our possession.
This process takes time and resources at a much higher rate than using a peer-to-peer service like IPFS. When we want to download a copy of a file hosted on the IPFS network we get bits and pieces from many computers, not just one. IPFS lessens the load a great deal on everyone overall and allows for slower bandwidth from the supplying computers.
On the IPFS website they claim:
With video delivery, a P2P approach could save 60% in bandwidth costs.
That's pretty epic! Look at YouTube, a centralized video hosting platform that can't seem to make money due to the high costs of both storing and streaming all that video. If a site could implement technology like IPFS, this problem may not exist. (dtube uses IPFS, and BitChute has a peer-to-peer model, but it is not IPFS.)
The assumed lifespan of a web page is only one hundred days on average. That is short if you want to recall information you saved from a year ago. From an internet point of view as soon as a page goes offline it may as well never existed.
You may remember all the old Xanga blogs from the early 2000s, but to the internet, they are just in the human imagination. Which makes this a poor way to store anything long term unless you want to keep paying the hosting costs yourself.
IPFS has historical versioning that preserves the past so we as the users can find the information that may now be missing. Versioning also lets many nodes mirror the content of another node so that we will be able to get what we are looking for even if the original supplier goes offline.
This allows for a permanent web but not necessarily a persistent one still. We'll get more into this issue further down the post, but quickly, it is the reason why some content that you host on IPFS seems to disappear.
Dapp stands for "Decentralized Application" and is what steepshot or dtube are since they rely on the steem blockchain for much of their data. However, since the STEEM blockchain cannot hold anything other than text (no blockchain can as far as I'm aware at this moment) videos and images are not stored directly on the chain. This means that a creator or dapp must host their non-text content somewhere and many choose to use IPFS since it is decentralized similar to the STEEM blockchain.
Steem Dapps using IPFS is all well and is needed to keep the cost down for their servers. However, the content that is uploaded to these services, unless it is backed up to another IPFS node, runs the risk of disappearing.
This is the problem of persistence.
Let's say that dtube only has so much space to upload content to their server and due to the possible future popularity of the site they are forced to remove older video files to make room for the newer uploads. Now your video is removed but no other node on the IPFS network pinned your video, so your hard work is no longer on the web.
The IPFS hash of your source video will still be the same, and if you upload it to IPFS any links leading to your content will work again. That is permanence, but without a persistent copy of your file somewhere on the network the permanent address of your video, audio, or image will bring your fans nothing but a spinning wheel.
These problems we face with using the decentralized hosting of IPFS is the exact problem that @nebulus is working to solve. The creator is able to send Nebulus a transaction of 1 STEEM (or $1 USD worth of STEEM if price goes over $1) from the nebulus.app website. The site asks for your Steem account name and the hash you want "backed up" around the IPFS network and gives you a @steemconnect link to complete the transaction.
Once the transfer of STEEM goes through any server running the Nebulus software then pin your hash to their computer. It is this action that keeps your video or audio live if a dapp has to remove old content to make room for the new.
Services like this exist around the internet, where you can have you hash saved to an IPFS node for a cost making this part of Nebulus not new in the least. What Nebulus does goes another step further in making your content more decentralized. This decentralization of your content is done with an incentive given to the Nebulus nodes who "save" your content.
Instead of Nebulus keeping all the STEEM sent by request to have a creators' video, audio, or image, backed up the account pays out a portion of this STEEM to the Steem user running the node. As much as I like to do things out of the kindness of my heart, we can not rely on anyone spending money to run a server to help decentralize our media without an incentive.
The biggest goal we have right now is to take this out of the creators' hand altogether and have the dapps pay for the decentralization of your media. This way the user experience would be similar to YouTube, Instagram, or SoundCloud. Where the user uploads and needs to do nothing else to expect that media always to be online.
Getting these dapps on board is a big challenge that will need tackling, but for now, we need help in many different areas. So if you have a skill and you like what @nebulus aims to do, please come by our Discord channel and let us know how you want to contribute to making all Steem creators' content retrievable for years to come.