Skip to content

Remove ZCash and Monero from core code - #6535

Merged
NicolasDorier merged 1 commit into
btcpayserver:masterfrom
NicolasDorier:remove-xmr-sec
Mar 11, 2025
Merged

Remove ZCash and Monero from core code#6535
NicolasDorier merged 1 commit into
btcpayserver:masterfrom
NicolasDorier:remove-xmr-sec

Conversation

@NicolasDorier

@NicolasDorier NicolasDorier commented Jan 6, 2025

Copy link
Copy Markdown
Member

Monero and ZCash have, for a long time, been part of the BTCPay Server source code.
This has brought a few challenges for us:

  1. We are, above all, a Bitcoin-focused project.
  2. Most altcoin communities do not actively maintain their integrations, shifting the burden of maintenance to the host project.
  3. For the altcoin communities that are responsible, they become frustrated with our unresponsiveness and the low priority we assign to reviewing their contribution.
  4. Our knowledge of the inner workings of altcoins is insufficient to properly evaluate the quality and safety of their contributions.

This creates a situation where no one is truly satisfied.

However, we fully support their efforts to provide more options for our users, we do not want to become gate keepers. BTCPay Server is dedicated to offering the freedom to choose what works best for your specific circumstances and values.

A major motivation for BTCPay Server 2.0 has been to make the codebase more extensible, allowing such integrations to live in separate repositories maintained by different teams.

This enables altcoin teams to add new features without requiring review from us.
From the perspective of BTCPay Server contributors, it allows us to focus more effectively on Bitcoin.

This PR removes all code related to ZCash and Monero from the source.

What to Know for Merchants Using Monero or ZCash

We understand that many merchants rely on the Monero plugin, and we aim to minimize any disruptions to their business.

To achieve this, we dedicated time to developing the initial versions of these plugins, ensuring they are stable and thoroughly tested.

When you update to version 2.1 and log in to BTCPay Server as an administrator, you will see a warning prompting you to install the Monero or ZCash plugin. Once installed, restart the server.

Everything else will continue to function as it did before.

What to know for integrators

Projects like Start9, which enable their users to activate Monero, do not need to make any specific changes.
We have maintained the same configuration keys as before.

Your users will see a warning asking them to install the plugin when they log in as administrator.

What to know for plugin maintainers

Our docker-compose deployment will continue to support the deployment of Monero dependencies. ZCash has never been supported. We will continue merging your contributions there.

Our Docker files repository still hosts Monero Dockerfiles.
Maintainers can continue to use this repository. If we are unresponsive to your Pull Request, please reach out to us via our chat. However, we recommend hosting the Docker file and images in your own repository instead to limit our interactions.

New repository for Monero

The Monero plugin is now hosted on this repository.
I added additional context for the monero's community there.

The next steps are:

  • Release the plugin in pre-release
  • Transfer ownership of the repository to member of the Monero community
  • Update the commit of btcpayserver submodules once we release 2.1

New repository for ZCash

The ZCash plugin is now hosted on this repository.
The plugin has never been maintained by the original author @hhanh00, and never integrated to the docker-compose deployment. It isn't documented either.

As such, I doubt it is used.
I migrated it a different repository, made sure it compiles, but I will not test it, nor release the plugin.

It seems that this plugin is more or less a copy-paste of the better-maintained Monero Plugin.

The next steps are:

  • Transfer ownership of the repository to member of the ZCash community
  • Update the commit of btcpayserver submodules once we release 2.1

Next steps

  • Add notifications in the UI for administrators using those crypto currencies, redirecting them to explanations.
  • Prepare a blog post explaining how merchants using XMR or ZEC integrations can re-enable them

@NicolasDorier NicolasDorier added this to the 2.1.0 milestone Jan 6, 2025
@NicolasDorier
NicolasDorier force-pushed the remove-xmr-sec branch 5 times, most recently from b860c76 to 21b100b Compare January 11, 2025 14:28
@SamsungGalaxyPlayer

Copy link
Copy Markdown

MAGIC Grants is interested in maintaining the Monero plugin. You can contact me at justin@magicgrants.org

Similar to OpenSats, MAGIC Grants is a 501(c)(3) public charity that supports essential cryptocurrency infrastructure. One main difference is that in addition to supporting Bitcoin, we support some other networks as well.

Thank you for taking the time to make the btcpayserver-monero-plugin repository and your initial testing of it!

We are potentially interested in maintaining a Zcash plugin, though that is a lower priority for us (we currently only use BTCPay Server for accepting Bitcoin and Monero donations).

@NicolasDorier

NicolasDorier commented Jan 13, 2025

Copy link
Copy Markdown
Member Author

For Monero, I am now talking with @deverickapollo and @napoly

For ZCash, I still need to migrate to a repo. I am not sure anybody is actually using it, the reason being that they didn't do one part of the job: Integrating it to the docker-compose deployment.
Unlike the Monero community who was quite responsible, they dropped the code then ran away. (So I will do the same for their plugin: making sure it builds then run away :p)

@NicolasDorier
NicolasDorier force-pushed the remove-xmr-sec branch 2 times, most recently from 1f1b156 to ad815b0 Compare January 15, 2025 08:45
@macintoshhelper

Copy link
Copy Markdown

Hi @NicolasDorier . Thanks for your work around migrating the core Monero and Zcash implementations into plugins. I have relayed this discussion in the Zcash forum.

I have offered to do some testing and limited maintenance of the Zcash BTCPayServer implementation; while I am not proficient in C#/ASP.NET, I should be able to help with some tasks such as contributing a Zcash file for the docker-compose deployment and testing new releases.

I have created a fork of the Zcash Docker compose example repository with an environment variable for the main Zcash lightwalletd server (the previous one is no longer online) – https://github.com/elemental-pay/zcash-btcpay/blob/main/docker-compose.yml . Hopefully this can help with the testing of the Zcash plugin and I would be happy to do further testing/review of the plugin. 2.0 appears to have broken the UI part of the core Zcash implementation, together with there being an issue with two payment method handlers being registered for ZEC-CHAIN.

Release notes and semver for breaking changes of the BTCPayServer altcoin plugin architecture/API would be much appreciated to make plugin maintenance easier. Refactoring of both the Monero and Zcash plugins to have a common shared library could make sense to make maintenance of both plugins more straight forward, eliminating duplicate work going forward and allowing for improved functionality like multiple wallets/accounts in both plugins.

@NicolasDorier

NicolasDorier commented Jan 19, 2025

Copy link
Copy Markdown
Member Author

@macintoshhelper thanks for proposing your help! If you can fix the plugin, can you make pull requests on https://github.com/btcpayserver/btcpayserver-zcash-plugin ? I will keep ownership of both monero and zcash until 2.1 is released. Then I will transfer.

ZCash gathered dust for a while, so I am not surprised if something broke but nobody saw it yet. That said, I don't expect it to be a big deal to fix.
Please take example on the Monero plugin for a good example on how to make the development experience of the plugin easier.

I will always be available to respond to any questions or trouble you have. You can DM me directly on https://chat.btcpayserver.org/ to make the back and forth easier.

Release notes and semver for breaking changes of the BTCPayServer altcoin plugin architecture/API would be much appreciated to make plugin maintenance easier.

This is sadly not possible. Plugins have access to all the classes inside BTCPay Server, and we can't guarantee stability on such scale as it would make us impossible to change anything. That said, we are making best effort to not break things, and also communicate about it. As far as breaking change are concerned for zcash and monero there haven't been any to my knowledge until 2.0. (I handled the migration to the best I could)

Refactoring of both the Monero and Zcash plugins to have a common shared library could make sense to make maintenance of both plugins more straight forward, eliminating duplicate work going forward and allowing for improved functionality like multiple wallets/accounts in both plugins.

This is difficult from the point of view of maintenance, as I don't expect both plugins to be owned by the same team and sharing same vision. Such common library wouldn't be able to satisfy the need of both at the same time.
The architecture of the Monero plugin allows for monero forks to work without too much change though, but I haven't the time to see if that would fit ZCash.

@NicolasDorier

Copy link
Copy Markdown
Member Author

Merging this as we prepare for 2.1 in one or two weeks. We will communicate more in a blog post and will check with @deverickapollo on the way to go from there.

@NicolasDorier
NicolasDorier merged commit 7355be4 into btcpayserver:master Mar 11, 2025
@NicolasDorier
NicolasDorier deleted the remove-xmr-sec branch March 11, 2025 06:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants