Skip to content
This repository has been archived by the owner on Feb 21, 2022. It is now read-only.

tipxmr/tipxmr-frontend

Repository files navigation

Project moved to tipxmr/tipxmr

src/images/tipxmr-live.png

TipXMR - The Livestream Tipping Service for OBS

TipXMR is a web based application that let’s you accept donations in your livestream.

💸 Our CCS Funding Campaign

The Goal

We want to provide an open source, non-custodial service for streamers all around the world to accept XMR in their live streams and display some information about the donor.

This will allow for a censorship resistant income source, independent of the big players like Twitch, YouTube, PornHub 🙊 and the like.

How it works

Creating a non-custodial yet easy to use web-based experience:

Thanks to the awesome monero-javascript library of woodser that includes a Monero WASM wallet, we can provide users with a non-custodial Monero wallet in their local browser. We are able to write the logic, interface and features beforehand and let our users utilize them themselves. With the Web Assembly Wallet, the hoster of the service is at no time in control of the keys of the users.

Typical process for streamers

  • 💡 A streamer chooses to monetize their stream with TipXMR.live.
  • 💻 The streamer then navigates to https://tipxmr.live or any other website hosting this project code.
  • ✍ On the site the streamer follows the Sign-up process, generates a new seed in their browser and picks a username
  • 👈 The new account is now created and ready to be customized. The streamer will have multiple options to make the donation model fit their brand and style.
  • 🎬 The streamer now adds a new browser source to their OBS setup. Just like with Streamlabs, this is a unique URL that points to a blank website. New donations will be displayed here and overlayed in the stream.
  • 🖥️ Now the streamer just needs to link their viewers to their TipXMR url (something like https://tipxmr.live/<StreamerName>) where donors can enter their messages and are displayed QR codes/XMR-addresses.
  • 💸 Donations will be sent to streamers WASM wallet, which should be swept in regular intervals.

As you can see, the endusers (i.e. streamer and donors) are not required to have a deep understanding of the Monero network. TipXMR delivers an easy path for streamers to monetize their content powered by the best privacy coin out there.

Login

TipXMR requires very little information about the streamer who creates an account. There is no KYC process or even email required. After picking the username, the streamer can sign in by using their seed. While it may seem dangerous at first glance to enter a XMR seed into a browser, since TipXMR uses the WebAssembly wallet the seed never leaves the local computer. Of course, a compromised machine would leak the seed and risk loosing funds. However, in the end is OpSec a personal responsibility and we could never guarantee safety. Therefore, we simply recommend sweeping the TipXMR wallet regularly in addition to other cybersafety measures.

On login, the local browser hashes the seed and sends it to the user db. The hashed seed is used on the server side to authorize the user and log them in.

Wallet functionality

Once logged in the streamer is presented a dashboard, which offers stats, settings and a basic wallet. While the wallet interface is still a work in progress, the design should be minimal. The wallet should not be used as a store for large amounts, because of the inherent risk of being on a machine connected to the internet. The streamer will be able to provide a withdrawal address in the settings and be able to sweep the entire balance to this address with an easy button.

Typical process for donors

  • 👀 A donor sees that a streamer uses TipXMR and clicks on a link
  • 🖥️ The https://tipxmr.live/<StreamerName> site is brought up, which has an embedded video player of the stream and a simple form to specify a message.
  • ✍ Users can type their message and give themselves a name.
  • 🪙 The users continues to the next page, which displays an XMR address/QR code and is prompted for payment.
  • 📱 The user uses a mobile wallet or desktop wallet to create the transaction and broadcast it to the network.
  • 🥅 Once the WASM wallet of the streamer sees the transaction on the network, it is displayed on the stream.

The tipping process is very easy for anybody familiar with a mobile wallet. Monero and cryptocurrencies as a means for payment is still very niche. So we expect in the early days to be used mostly in the Monero community, where usage is not an issue. Nevertheless, we hope that TipXMR can expand the use-case and educate more people on how to use it.

Note: Donors are always anonymous. They do not require an account to tip. This may lead to abusive messages, which could cause trouble for the streamer on a platform like Twitch. Therefore we plan to have an option to approve messages before they are displayed in the stream.

Installation

If you want to try out TipXMR on your own machine, use TipDocker and follow the instructions here.

Who we are

We are Monero enthusiasts and hold the ethos dear. Hundehausen and AlexAnarcho are hosts of the german-speaking MoneroMumble Podcast since early 2018. mghny has professional experience in the field of software development and architecture.

has contributed many times to the Monero community, most recently with an infographic about the workings of a Monero wallet. Grischa also wrote his bachelor thesis on the thought of “Monero as a currency for the masses” (thesis in German).

has been involved in the early days of the Monero Outreach and is a well-known outspoken advocate for Monero in the German community.

who chooses to remain pseudonymous - has been a professional software-engineer for 5 years and has been coding for 8 years. They have been involved with TipXMR.live since the very beginning and keeps an eye on architecture, code and many more technical aspects. It cannot be overstated how beneficial an experienced engineer is in a project like ours, since it reduces complexity and makes the code easily reusable by other developers.

License

⚖️AGPL-3.0 License