GithubHelp home page GithubHelp logo

tipxmr / tipxmr Goto Github PK

View Code? Open in Web Editor NEW
42.0 2.0 3.0 25.41 MB

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

TypeScript 97.70% JavaScript 0.98% Nix 0.48% CSS 0.84%
monero donations obs

tipxmr's Introduction

TipXMR.live

src/img/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

  • To start the TipXMR, please run thru the Installation first.
  • Start the docker service on your computer (linux: sudo systemctl start docker)
  • From the project root, start the database container with docker-compose up
  • πŸ’‘ If you start actively developing on TipXMR, it may be useful to create a bash alias for bringing up the docker container.
    • Here is an example for your .bashrc or .zshrc (make sure to adjust the path to the project root path):
      alias tipxmrdb="sudo systemctl start docker; cd ~/PATH/TO/tipxmr; docker-compose up"
              

Development

  • npm run dev : bring up the tipxmr webapp (localhost:3000)
  • ⚠️ As the project develops, the database models change. Therefore, sometimes it may be necessary to migrate the changes (npm run migrate -- dev)

If the app keeps running out of memory

Run the development server with the following command:

NODE_OPTIONS='--max_old_space_size=4096' next dev

Starting the monero wallet rpc

  • TipXMR features a payment engine for the steamers to acitvate their account. For this to work (meaning src/lib/serverWallet) you need to start a monero-wallet-rpc.
    • πŸ’‘ Make sure you have monero-wallet-rpc installed and in your $PATH
  • You can start the monero-wallet-rpc with (from the project root):
monero-wallet-rpc --config-file monero/walletRpc.conf
  • To kickstart the wallet you can visit http://localhost:3000/api/initServerWallet

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

tipxmr's People

Contributors

alexanarcho avatar haussjonas avatar hundehausen avatar mghny avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

tipxmr's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.