Develop selfhostable monero payment processor
Intro
Hello! I'm Czarek, and this is my first CCS proposal. I have not contributed to Monero code itself, but I'm a huge fan of it as a currency and community. Recently at work we had a discussion about how we are going to handle transactions in one of our projects from Alice to Bob (for example when Alice is buying something from Bob) and from Alice to The Site (to upgrade the account, for example).*
I've considered BTCpay Server but it is not a perfect fit for our use-case because:
- We don't want to install docker on our production server as it is not required by our setup and and extra software running with root access is a potential security issue and manual deployment is marked as 'not recommended for production use' - and requires installing plenty of software from 3rd parties from which some require root access to be installed.
- We cannot use distinct wallets per store - which means that we are stuck with one wallet for ever.
The Solution
Perfect solution for our problem would be a selfhostable, optionally custodial, single-purpose payment processor. Key features that we need (and that will be developed when the proposal is funded) are:
- Ability to selfhost - to provide maximum ease of use I'll write it in Golang so it will compile to just one single binary that won't require you to do anything except running it in the background. (the binary will also download and configure monerod and (multiple instances of) monero-wallet-rpc).
- Optionally custodial - this option will kick in when a Seller will want to accept payments in Monero but will not provide his own view-only wallet. In that case transactions will be received into a system-wide wallet and then withdrawn to his address once they are confirmed.
- Single-purpose - no fancy things happening in the background, as few features as technically possible to provide a simple and easy to use experience for sellers, users and hosting providers.
- Invoices - pay by url, embed payment on site and raw JSON api.
- Permament addresses - for recurring payments you can set a invoice that will have a never expiring address that will be able to hold money and spend it on new Invoices when they occur.
- Withdrawals - Seller will be able to configure if he connects a view only wallet, or full wallet (or uses custodial wallet) what should happen with the money. It can be instantly forwarded to some wallet, forwarded when a certain amount has been already received or kept as is and be usable in API for withdrawals.
- User accounts - as a provider you will be able to enable/disable user registration and configure fees for using various part of the service.
I'm asking for 8 XMR now to be able to build what I've described in points above and 2 XMR later to write docs and provide code examples of how to use the library. As a bonus point - when this CCS gets funded it will mean that (at least!) one more company will accept monero as a payment option on their site.
I'll deliver the software no matter of the exchange rate of XMR.
Once funded I expect to write the software in under a month, software will be of course open source and all development will hapen on a personal Gitea instance and will be mirrored to github.
* NOTE: The project that I'm talking about is not yet launched and to avoid any company secrets getting leaked I'll not name the project and the company I'm working for publicly.