This is the third post in a series that highlights projects developing solutions that challenge the current norms of user dependency on the cloud. Given the ever present challenges related to privacy, database breaches and platform lock-in, it's crucial to begin returning data autonomy back to users.

This post highlights an ETHNewYork submission from Kian Molani called Y3: "a decentralized and censorship-resistant video streaming application that uses Ethereum and IPFS as its core technologies." ETHNewYork was the first hackathon run in NYC by ETHglobal, an organisation dedicated to onboarding new Ethereum developers. First we'll look at how the project works, followed by a few questions FISSION asked the team about their background and hackathon experience.

Hackathon Devpost: https://devpost.com/software/y3-l8w9mx

Repo: https://github.com/KianMolani/decentralized_video_streaming_app


How Y3 works

The name originated as an aspirational take on where video platforms might head in our distributed future. If Youtube (Y2) is a legacy system that can censor users and withhold payments for content, Y3 is an exploration towards a future where new possibilities open up. Self-hosted, replicated content can't be taken down, and payments over Ethereum are censorship resistant to a high degree.

The first step for users is to be running or have access to an IPFS node. After loading their content into the IPFS interface, users submit a content hash to the Y3 onchain Ethereum contract. The video metadata gets stored in a contract array to be accessed later by users.

Payment, if required, would be handled via a Python script, conditional upon successful delivery of content from the IPFS network. The contract would then call a function that sets up the transaction. This is one thing that still needs to be developed for the project to operate properly. According to Kian,  this kind of payment scheme wouldn't be practical in reality:

Instead, an implementation of either state channels or probabilistic micropayments –with the total time of video content already streamed taken to be the primary metric for payment – would be more apt.

HLS (HTTP Live Streaming) and IPNS (InterPlanetary Naming System) integrations are also still under development. For now, Y3 can only serve static content. IPNS would make those links mutable, and would update the content address as new chunks of data come in.

Other important libraries used are web3.JS, Infura's API for Ethereum integration, and FFmpeg for HLS capable video editing.

In the future, Kian would like to add a more intuitive frontend. The FISSION team is looking forward to seeing where the project ends up and what functions he can integrate!


Finally, here are a few additional questions we had Kian answer about his background and the hackathon itself:

What’s your background as a developer?

I’m currently 21, and so I’m still pursuing my undergrad. As an Engineering Physics major, I’m not left with a lot of time during the semester to develop Ethereum-related projects, but do develop data processing and machine learning software professionally. When I have the time, most of the work that I do in the decentralized space are through hackathons. Thus far, I’ve been to two ETHGlobal events, where the focus of my energy has been to develop two pieces of tech — a decentralized video streaming application and a decentralized computation application.

What got you into Ethereum / IPFS / decentralization initially?

I along with most of my peers had heard of the decentralized space via word of mouth - at the time, most of the popular discussion surrounded cryptocurrencies. Out of curiosity and a desire to distinguish ourselves from the hype, my colleagues and I decided to look more carefully at the tech behind all these popular ideas. Eventually, we came to a point where we were able to judge, for ourselves, that the technology had real value and a wide selection of practical and worth-while use cases. Naturally, this realization lent itself to a heightened sense of curiosity and greater exposure to more complex and cutting-edge developments in the space.

Where do you go to read tech news / developer news?

For tech and developer news, I find Twitter to be ideal. In a sense, Twitter is a very weak filter on ideas, and so when you have a community that is very active on the platform (which is the case for decentralized technologies), the result is a large number of leading figures engaged in discussions on very novel concepts. The downside to this kind of environment is that you’re forced to judge for yourself the quality of ideas that have not yet been fully hashed out, while the upside is that you’re exposed to ideas soon after they’re born.

In general, talk about your hackathon experience? Highs / lows?

One of the strong points of this hackathon was that there was a large pool of sponsors present there to talk about their products. This made for very fruitful and exciting workshops, and along with the large number of high quality hackers present, meant that exposure to new and exciting projects was high.

What inspired Y3?

A video steaming application is one of those use cases for decentralized technologies where the benefits are very obvious to see – you don’t have go through leaps in logic to explain why it would be useful for people. As a platform, video streaming applications are one of the hallmark luxuries that we’ve been afforded due to the Internet. With them, people are able to share all kinds of information in a way that is immediately accessible and highly engaging. This luxury, however, isn’t afforded to the billions of people around the world whose governments maintain tight control on Internet transparency. Thus, the market for this kind of product is huge, and the motivation for the pursuit of its realization is noble.

What made you want to integrate IPFS?

IPFS emerged as a natural solution to what I wanted, and that was a way to store the contents of videos on a decentralized, peer-to-peer network. As a solution, it was fairly elegant – the only major disadvantage being the lack of persistence of content on the network. This issue, however, is actively being addressed by developers of the protocol.

What challenges did you experience integrating IPFS?

Connecting my computer to the IPFS network and integrating the appropriate Python client libraries were all very straightforward. By far, the biggest challenge that I encountered was in trying to use IPFS in a way that allowed for HLS functionality (HLS is a communications protocol that allows for the bit rate of incoming data to vary in accordance with the quality of network connectivity).

What was the most useful feedback you received from judges or other hackathon participants?

After expressing the difficulty that I encountered in trying to properly integrate IPFS with HLS, I was able to obtain feedback from a gentleman from Livepeer (a Platform as a Service used by developers to add videos to their projects). He explained how I could use IPNS (a system used to update links to IPFS content) to handle updating a pointer to the hash of the file contents periodically.

Any plans to keep working on the project?

Yes. My application does not completely function as intended. I will finish properly implementing HLS functionality and then go on to share the project online.

In hindsight what’s something you may have done differently for either the project or the hackathon?

I actually anticipated the issue that I had regarding the implementation of HLS functionality with IPFS before I even started the project. In hindsight, I should have sought out a solution to my problem well before I ever encountered it.



Thanks Kian for spending time to help get this post ready for others to learn from. FISSION is gearing up to launch our first product into Alpha testing: join us here if you're interested in poking around the distributed frontier!


Cover image from Craig Whitehead