Skip to content

tipxmr/tipxmr

Repository files navigation

TipXMR.live

public/logo.png

Donations

Donations additional to the CCS are always welcome 84H6qm4apZhg4jTvjyanfRfcmd1TtTjkpYMX7MFdPFxQPGsPmmFPYwte2hWBh9EyMQdCTeEpEhfGpTkN3W6ovWAwBrKckBL

Installation

git clone https://github.com/tipxmr/tipxmr.git
cd tipxmr

Starting the TipXMR project for development

Here are some common commands that you will need when first starting the project. But also when developing on it.

# --- run these commands at least once for initializing the project
docker compose up -d # start the pg-db in docker
yarn # install dependencies
prisma migrate dev # migrate db to the shape of the schema.prisma
cp .env.example .env # create your personal .env file

# --- commands needed for developmnet
yarn moneroRpc # start the monero wallet rpc (see Server Wallet)
yarn dev # start the dev server

# --- commands needed for deployment
yarn lint --fix # run linter + automatic fixer
yarn build # build the project
yarn start # start the built project

Filling in the .env variables

  • The .env.example contains all the keys that are required to run the project.
  • Some of the values are already set to work for local development
  • When deploying the application to a production server, you should create a separate .env file that will only be present on the production server.

Creating you serverWallet

  • TipXMR features a payment engine for the steamers to activate their account. You will need a monero wallet on the server that generates subaddresses for the streamer invoices.
  • This wallet will be generated once and then be opened by the long running process of the monero-wallet-rpc. The wallet-rpc will inform the application about received payments and provide the TipXMR application with fresh subaddresses so streams can pay their dues.
  • 💡 Make sure you have monero-wallet-cli installed and in your $PATH
# --- Generate the server wallet once.
# Create it with a strong password. Write down your seed. Keep your credentials private and secure.

cd monero/ # switch into the monero directory
monero-wallet-cli # call the monero wallet cli and run through the setup process
  • The interactive wallet creation with monero-wallet-cli will spit out the required secrets for our serverWallet.
  • The generated secrets from the server wallet need to be input into your .env
# --- You can start the ~monero-wallet-rpc~ with (from the project root):
yarn moneroRpc

Running typescript for database

  • Sometimes we want to execute scripts that access the database.
  • Use the dev-dependency tsx for this.
  • Simply write your code in typescript and place it anywhere in the project.
    • You can import the db or whatever you want in the script
# --- Exectue your typescript file
yarn tsx path/to/script.ts

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.

In the end, TipXMR will be an open source techstack for hosters to provide an OBS-driven donation faucet to streamers.

How it works

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

Thanks to the awesome monero-ts 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 or with their private view key and primary address. 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 private view key and primary address. TipXMR will save that cryptographic hash in its database. The hash 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.

License

⚖️AGPL-3.0 License

About

An open-source, noncustodial livestream tipping service for Monero.

Topics

Resources

Stars

Watchers

Forks