Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
Basic Monero support ready for assessment #1638
Over the last 3 months or so I added basic support for Monero to the OpenBazaar server and client. Basic means only direct payments from buyer to vendor - no offline payments, and no support for moderation. In this form it's fully working now as far as I can tell; I documented it with a few screenshots here where I sucessfully sold something using XMR. For some background info about the technical reasons for those limitations see my earlier analysis.
Following a recommendation of OB1 dev "mg" (@placer14) , before "going public" and make my work available e.g. for beta tests, I hereby submit it for review and assessment whether and how it can made suitable for inclusion in one of the next official OB1 OpenBazaar releases, and for deciding what the next steps on that way would be.
To see how it works, what it can do and what not, and how to set everything up using Monero software you can check this user documentation draft. I wrote it with some future public beta test in mind, and it does not assume prior knowledge about Monero.
There is also a branch
The core of the implementation is a new file within Multiwallet that can be found here. It implements OpenBazaar's Wallet interface for the new coin XMR / TXMR.
With only 800 lines it's quite short, and not very complex either. The reason: It's itself merely an interface to Monero's wallet software where the real functionality lies. It calls a
The Go bindings for that RPC are a separate package written by a third party that can be found here. It's part of the Monero Ecosystem project collection and probably on their way to become something like the "official" Go bindings for Monero RPC (although other implementations exist).
The base of those
@rbrunner7 This is good progress. I know it's been a bit since posting, but I wanted to share some thoughts before too much longer.
A few thoughts as a scan through the code changes:
I think next steps on this are to:
Next steps also depend on how we thing we'll handle the following:
Hope this offers some points to get the discussion rolling. (And thank you for contributing!)
Thanks for looking at my work and writing down these comments!
A few comments and some additional info:
Before we look at this, let's avoid a possible misunderstanding: My solution does not require you run your own Monero node. You can use one of the many available so-called remote nodes. (This is quite symmetric to the support of the other coins in OpenBazaar.) It merely asks you to run the Monero wallet RPC server, which is a rather simple program with a few command-line switches and modest resource requirements.
So, I am well aware about the friction that running an external, separate XMR wallet introduces into the system. I would love to propose a fully integrated wallet solution, but I really found nothing viable to propose, even after evaluating the situation quite carefully.
As I already wrote in my analysis transacting with XMR is about a magnitude more complex than with Bitcoin and its offsprings: We are probably talking about something of the order of a few thousands of lines of code. There is no implementation yet in Go that offers itself as a starting point, and programming one could take months of effort.
And that would not be the end of it. An OpenBazaar server with thousands of highly specialized Monero code lines in it begs the question who will "babysit" that code: Monero relentlessly marches forward with half-yearly hardforks like clockwork that bring regular changes in transaction details with them (maybe in the meantime Monero is the coin with the most hardforks - at all). Who will guarantee that the OpenBazaar XMR support code will stay current?
Now, with that "interface to RPC wallet server" solution the code is so simple that somebody from OB1 would be able to take over if I stopped to support the Monero integration and nobody from the Monero community took over from me. I think that's a very important point.
Even just an RPC wallet server implementation available could also provide an easy path for third party services to allow Monero payments. Zokos could support monero payments with an RPC wallet + I know there are a few separate teams building out services like web buying rn that could implement monero functionality on behalf of their users as well.