For those of you that don’t know we at Decentral recently joined the Monero community and are working on integrating Monero to our Jaxx Wallet. Jaxx is a free multi-token, multi-platform light wallet that’s dedicated to uniting the crypto-ecosystem and providing an interface to Blockchain tech (in a similar way the browser unleashed the power of the internet to the masses). Among other things, it is the goal of Jaxx and Decentral to allow people to be in full control of their digital lives. All keys in Jaxx are held client-side and a single 12-word backup phrase allows for the derivation of the keys to all tokens we support, and will ever support. Also, all our products are design and user experience driven as we make stuff for the masses, so that people (like my non-technical Dad) can have a great experience.
One thing I’d like everyone to remember and keep in mind is that we’re still very new to the Monero community and much of the history of the project is not clear to us still. As you read the rest of my message, please keep this in mind and know that we are not trying to call anyone out or cause conflict in the Monero community. We just want to see Monero thrive.
Here we go.
Monero integration has been on a radar for over a year and over the past weeks and months we dove headfirst into XMR and have since spent more than 400 hours working on this particular integration. During this time we have gained massive knowledge on the inner workings of the Monero protocol, and of the Monero development ecosystem. Our goal is to provide a lightweight (~3 meg) solution for the Monero community that will allow them to manage, send and receive XMR on pretty much any platform or device.
As a result of working to integrate other projects, our 3 years of experience developing wallets, through my experience as a founder of Ethereum, as an early Bitcoin adopter and community builder, and via extensive research and code creation we’ve done for Monero, we believe to have determined the critical issues that are leading to problems with Monero growth and that these problems are hindering the adoption and success of the Monero ecosystem.
As such we are putting a call out for support from the Monero development community to help us break through these problems. We are confident that if these roadblocks can be bypassed, Monero has a great chance to flourish. We believe that unless solved, these issues will greatly hinder Monero’s ability to compete with projects that have similar features.
Before I get into the issues I want to explain and give some background on how our integration process usually works when we tackle a new project, then I’ll explain how things are currently working with the Monero Integration.
Our goal is to implement an XMR lightweight wallet in Jaxx that connects with a high level cryptocurrency API. In most cases (with our previous integrations) there is an existing client library to use for the particular token in question. We have a full stack blockchain development team of 9 that can go from modifying cryptocurrencies nodes to providing high level APIs. We first start any project by making feasibility analysis to check how easy or difficult is to integrate a light wallet with a cryptocurrency. When we see critical unsolved issues or roadblocks, we talk with the specific cryptocurrency team as early as possible. If they have the resources they help us to mitigate those issues. When they don’t have the resources to make the necessary changes, we take the responsibility for these tasks but they provide some guidance based on their expertise.
That’s how things normally work. Here’s how it’s working with Monero.
We researched the feasibility of providing a light wallet for Monero and found the main challenges to be:
- Non-existing lightweight client library support (for a project as old as Monero its peculiar no dev has done this)
- We would have to implement support for anonymization features.
- There are RPC (Remote Procedure Calls) API Limitations that would require changes in the Monero daemon
Here’s what we’ve been able to accomplish so far:
- Use the same approach as MyMonero re anonymization (e.g. persisting the viewkeys)
- Modify Monero Core to support a lightweight wallet.
Currently we are developing an API on top of monerod to provide additional web services.
Now here’s the problem.
We have realized critical issues that are difficult to solve at the RPC API level without the development community’s support. Basically we would like to get the global indexes in the transaction output via the RPC API, which are required for sending transactions, but when we call methods such as gettransactions we don’t receive this information. We also try to call the *.bin RPC methods as well but they return error code HTTP 404. Ok fine. If this method is not supported in monerod there are two alternatives: 1) either the core team can add them to make it easier for the entire community to build apps on top of Monero, or 2) we can modify the Monero node itself to add support for new RPC methods required for building applications (like the Jaxx wallet or any other wallet).
The problem with us choosing the second method is the amount of time it’s going to take us to “instrument” the code is unknown as this would be an intensive research project by people who didn’t work on developing any part of Monero. Like a needle in a haystack. Also, should we have to directly hook into the code it could become easily broken in the future as new code gets pushed by the Monero core team. If (and that’s a big if) we were to go down this route of instrumenting the code we would need a commitment from the Monero core team to accept the code push and to continue supporting it in the main branch.
Without either of these two options being completed it means that Monero as it is isn’t able to bring enough information outside of the node in order to develop a full wallet.
As mentioned in previous update posts, we’d like to thank Fluffypony for providing us with assistance with the integration. But we need more help than he’s been able or willing to provide. The issue is that his help has been limited as although he is a main contributor to Monero, he also owns MyMonero and has a profit incentive not to give away his “secret sauce” on the back-end. You see, MyMonero hooks right into the code and this coupled with him being one of the few main contributors on the Monero Github gives MyMonero an upper hand against other projects trying to create similar services.
We understand and accept Fluffypony’s motives and situation. He’s put a ton or resources and effort into Monero and into MyMonero. What we’d like to do is call on anyone else who may be able to help to break through these barriers. Please email me at anthonyATdecentral.ca if you would like to join our slack channel and see if we can crack the problem’s we’ve identified and are facing. We fear if we don’t have more assistance from core Monero devs to act as guides we (or anyone else for that matter) will not be able to bring the products and services necessary for the Monero community to flourish.
Have a great weekend all!
CEO & Founder