MONIFI is available at our github here. Instructions to download and run MONIFI are in our README.

Our presentation slideshow is available here.

Inspiration

We all spend hours of our time on social media. The most irritating feeling is when you're watching a video or scrolling through your feed, just to be interrupted by pesky advertisements. Unfortunately, many social media apps and sites use advertisements as their only source of revenue; it’s a necessary evil to maintain a free platform. Advertising has also been in hot water recently, be it Youtube’s “Adpocalypse” or large companies opting out of Facebook ads.

A solution that circumvents the issues of advertising and provides similar revenue streams to that of ads is critical. This is where MONIFI comes in.

What it does

Instead of watching ads, users can opt-in to mine cryptocurrency, specifically Monero, with MONIFI to support their favorite content creators. Mining is as simple as running a program which helps process blockchain transactions in exchange for a small fee. This fee accumulating over time can provide a useful source of revenue, which MONIFI takes advantage of.

It comes in two parts: a browser extension to enable MONIFI for their favorite creators, and a service that runs on their computer to mine Monero only while they’re watching videos. The service can be expanded to other social media in the future.

The browser extension is a lightweight side panel that contains basic information about the YouTube creator that the user is currently watching. The panel contains controls to manage the mining of Monero on the fly. The start and stop buttons function as expected, while the auto-mine feature automatically enables mining whenever a user is watching a video, and disables mining whenever the user navigates off the page.

This extension communicates with a service running in the background on the user’s computer, which is in charge of starting and stopping the miner process. When it receives a start signal from the browser extension, it begins mining until it receives a corresponding stop signal.

How we built it

The browser side panel is implemented as a Firefox extension, which is built with lightweight JavaScript, HTML, and CSS. We used the argon bootstrap library for visualizations. When a user navigates to a Youtuber’s video page, the JavaScript calls the Youtube Data API to request information about the content creator, which is then displayed on the side panel. The buttons to manage the mining simply send GET requests to the background service controlling the miner. There is also an IFRAME in the side panel which links to the Monero mining wallet to show some statistics about what the user is currently mining for. This includes the user’s current hashrate, the number of other users currently mining for this content creator, as well as the total number of money mined for the content creator so far.

The service is implemented in C# .NET. It consists of a web server that receives commands from the browser extension through a REST API. When it receives a start signal, it spawns a process that runs the Monero miner executable. When it receives a stop signal, it terminates the process. This service is packaged in an easy-to-use installer that can be run on any computer.

Challenges we ran into

In order to get the data from the current YouTube video being watched, as well as the data from the Monero miner, we aimed to use Selenium to scrape both webpages. We spent a good chunk of time figuring out how to use Selenium, especially since the service is typically used on Python or Java, not JavaScript. Documentation was sparse, and progress was slow. Still, we persevered after several hours of work. However, when installing our Selenium code onto the Firefox extension, we learned the sad truth that Firefox’s client side JavaScript didn’t support our Selenium code. We eventually found a different way to display all this information, but our time spent on Selenium had been wasted.

Additionally, to help protect against viruses, Windows Defender and other antivirus software tries to verify that installers are signed by a verified publisher, since an installer has the potential to harm a user’s computer. Unfortunately for us, since we do not have the time (and money) to get the installer for our mining service officially signed and published, our installer triggers most antivirus scanners, making the distribution of this installer very difficult for the time being. In the future, having a verified installer should fix this problem.

Accomplishments that we're proud of

We learned several things during this project. This was our first time building an extension for Firefox (typically we use chrome and wanted to try something different). This was also the first time we built a service that runs in the background in windows, not just code that runs on an AWS server (which is typically what we have done in prior hackathons).

What we learned

From the tests we ran on our computer, we learned that mining for crypto may actually be a potential source of revenue for creators as thousands of people who watch them can also be mining for them.

What's next for MONIFI

The most important next step we want to take with MONIFI is to implement it on social media other than YouTube. Twitch and Facebook seem like good browser-based social media to expand to with the browser extension, while Tiktok, Snapchat and Instagram would require mobile-based extensions to our service.

In addition, MONIFI currently relies on a service installed on users machines to mine Monera. In an ideal world, we’d have MONIFI rely on completely browser-based mining, a feature that Monera currently doesn’t support.

Ethics

Currently, advertisements on social media collect personally identifiable information from users in order to target ads. This is a privacy and data rights violation for many consumers, leading to mass distrust in advertisements and in social media companies themselves. Moreover, the data collected is sometimes sold for profit, a privacy violation in itself.

MONIFI prevents many of these issues by keeping users completely anonymous. Since the revenue is generated simply by user's computing power, and not by any of the user's personal choices which ads can target, there is no reason for any data to need to be collected. Additionally, due to the nature of blockchains, there are no centralized servers involved in this system. This further reduces the risk of any personalized user information being stored in a hackable system, since all transactions involved in the Monero blockchain are completely anonymous and decentralized.

Built With

Share this project:

Updates