Radical pragmatism and the monero-wallet-rpc
This article will teach you how to build monero enabled websites. If you don't intend to build one yourself, this is still worth a read. We won't get lost in details here. The intent is, to set you in the right frame of mind when you think about what Monero can do for online businesses.
The typically recommended solution is to host a Monero node on the same server that is hosting the website. The website charging customers in Monero and the Monero node are running next to each other on the same machine.
The advantage of this approach is that it will provide a relatively stable experience and it is completely self sovereign. No trust is placed on a remote node. Everything stays on one server. The drawback is that it is not easy for a layperson to configure and maintain a solution like this. There is also a significant monthly cost for the server.
A different solution
The other way to go about this, is to split the web application server from the server that hosts the Monero node. There are remote nodes available that are hosted by the community. Depending on your threat model it might be okay to use those.
Getting your hands dirty
The quickest way to get your hands dirty with something practical is by setting up a local monero testnet which enables you to play with the monero-wallet-rpc. The monero-wallet-rpc is currently the most common way to interact programmatically with a monero wallet. You can fork the monero-playground repository and follow the instructions to get setup conveniently.
The important thing to realize is: you are essentially building a custom wallet. The wallet apps that you are used to, do the same fundamental operations. They fetch, decrypt and display transactions. Adding Monero into your web application means doing these tasks as well.
The monero-wallet-rpc is focused on synchronizing just one wallet. If you are interested in allowing users to control their own wallet, while they interact with your website, you need to look beyond the monero-wallet-rpc. The kuno codebase is a great place to get started on this topic. Especially the section in the readme on TX synching .
How can we improve this?
Monero has a major competitive advantage over traditional credit card based payment processors, when it comes to marketplaces and community based businesses. These types of businesses are very hard or impossible to do with credit cards. Monero is a good fit in these type of applications, where users control their own funds and interact with each other. So how can we make these apps easy to build?
It should be the goal that a non-technical person is able to host a website with this kind of functionality for free. Cloud providers offer vps and serverless free tiers that are strong enough for our purposes. It is also possible to deploy to them by pressing a one-click deploy button on github. But to get there some new software needs to be written that removes some accidental requirements:
To verify payments, it is not necessary to colocate a fully synchronized node next to the Monero enabled website. It is also not necessary to try to decrypt every single transaction with every single private key that got registered by the users of the website. With your support I will write open source tools that will lower this barrier for everyone.
Please consider supporting my Kuno fundraiser and read along as I implement a pragmatic addition to what we already have. I am grateful to the people that decide to support my work, financially or by retweeting and upvoting. Thank you for your support!