Dear STEEM community,
I am really excited to finally bring this project to the public. Introducing...
DTUBE.VIDEO
What is DTube?
DTube is an application fully written in javascript, that runs in the browser, that allows you to upload and watch videos on top of the IPFS Network. Moreover, it uses STEEM as a database and enables earning rewards from your uploads.
This might ring a bell for those who remember the SteemQ project announcement, which made almost five thousand dollars in rewards, but never got released and ended up being rebranded - It's still not functional after more than a year, and even the current alpha uses a back-end server for everything and is therefore still centralized. I am sure I wasn't the only person disappointed by SteemQ.
I opted for a different approach. Build something first - talk after. If you are wondering, I did everything by myself (and the help of open source libraries of course) and it took about 4 months to reach what I have now, starting from scratch.
A huge part of this article will be technical and maybe not so interesting to some people, but I believe a big part of my followers are interested in this kind of discussions, so I will explain how it works. Sorry for the incoming walls of text :)
How to use DTube
Logging in
- Enter your STEEM username
- Enter your Private Posting Key, you can find it like so:
Multi-user login
Youtube and Facebook have this amazing feature that you can easily have multiple channels linked to your account and switch between them easily. I am sure I am not the only user on STEEM who owns multiple accounts, and having to use different browsers or bots to upvote with all accounts gets boring very quickly. On DTube, you can log in with as many accounts as you want, and switch between them.
I don't know why SteemIt still doesn't have this feature.
Settings
DTube features a settings menu accessible from anywhere in the app. It allows you to adjust your voting power, filter NSFW contents similarly to SteemIt.com, and tune the IPFS Settings. IPFS Gateway is where the files are loaded from, while the API is what we use for uploading.
Uploading
First, you need to be logged-in to be able to access the upload page.
Then just simply add a video, a snap (aka thumbnail), and finally fill the texts for the blockchain and submit!
If all goes well, you should be taken to your video after submitting and it should start playing the video between 0 and 30 seconds depending on the gateway and your connection speed.
Browsing Videos
There are currently 3 main ways to discover contents on DTube. You can go to the homepage and discover the NEW , HOT and TRENDING categories. They work the same as SteemIt.
You can access a certain user's channel by going directly to https://dtube.video/c/curator for my testing account for example.
Finally, you can use the search in the top bar, more information on that later in the article.
How DTube works
Using the STEEM Blockchain as a database
Because we want DTube to be truly decentralized, we cannot have a server running a database and use it to query things. Using a blockchain is a natural solution. STEEM has many advantages over other blockchains. It is fast (3 sec blocks). It is free, anyone can use it without having to deposit some form of currency, and transactions have no fees. Who would want to pay money to upload a video, comment a video, or even upvote? Nobody. As an added bonus, the STEEM blockchain already has a reward-earning mechanism.
Any video uploaded on DTube becomes a STEEM content, that can earn rewards for 7 days. DTube doesn't use either the title or the body of a content to store information, therefore if you don't want your video upload to appear in your feed, you can edit or delete it, the video would stay intact on DTube. While it would be possible to display nothing on other platforms like steemit.com or busy.org, I believe the current behavior to be fine and will help the platform growth and the users rewards.
Using IPFS as a static file storage
IPFS is a protocol that enables decentralized file storage. The principle behind it is called Distributed Hash Tables (DHT). The same principle also powers the BitTorrent network. Just like how cryptocurrency uses asymmetrical cryptography, DHT networks will hash contents in order to be able to identify a file. The hash becomes the identifier of a file, and it's as easy as re-hashing a file and making sure the hashes match to ensure the file that was sent to us is the original.
Why not use Torrent then? Torrent arguably already has more content and is more mainstream. However, Torrent was not built for the web. Some implementations such as WebTorrent are trying to make it work, but it still requires some 'hybrid' clients that would act as bridges in order to transfer files from hard clients such as μTorrent to web clients that run in a browser. Not very convenient, even less efficient. I am sure a lot of you have used PopcornTime to watch some 'pirated' content and have enjoyed it, but building something similar that runs inside a browser without having to run hybrid clients to connect people, is sadly impossible.
IPFS is a younger, open-source, and actively developed protocol. It has a bright future ahead. Using it as the main mean of storage for this project was a no-brainer.
IPFS Storage Cost
IPFS is cool, but there is no magic. Someone needs to seed the files, and your browser cannot permanently store huge files (local storage is limited to 50MB on most browsers), so seeding through the app directly is not possible as of today. While my first idea was to ask some witnesses to run some IPFS nodes, it became clear after a few conversations that this would create more problems than solutions as most witnesses are non-technical persons and running and configuring an IPFS node correctly seems to be a tough challenge for most. I still believe this solution to be the right one, but I would clearly need to setup a docker or something easy for witnesses to actively join the DTube network and start seeding files (and earn a share of the rewards).