Donations additional to the CCS are always welcome 84H6qm4apZhg4jTvjyanfRfcmd1TtTjkpYMX7MFdPFxQPGsPmmFPYwte2hWBh9EyMQdCTeEpEhfGpTkN3W6ovWAwBrKckBL
- You must have docker and docker-compose installed and ready to go
- Execute the following command to install the project modules and setup the database
git clone https://github.com/tipxmr/tipxmr.git
cd tipxmr
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
- 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.
- 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
- 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
- You can import the
# --- Exectue your typescript file
yarn tsx path/to/script.ts
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.
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.
- 💡 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/<Streame 7090 rName>
) 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.
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.
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.
- 👀 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.