Fix the Zcash BTCPayServer plugin in preparation for 2.1, publishing a working version of the new extracted plugin. A BTCPayServer plugin will be published both to the BTCPayServer plugin store, together with a .btcpay bundle on GitHub. An updated version of zcash-walletd will be published with tested and working Sapling support.
Orchard support can be added with a separate grant focusing on zcash-walletd. This can be worked on in parallel. Documentation will also be published, helping merchants to add ZEC to their BTCPayServer store.
The goals are to increase the amount of merchants accepting Zcash, allowing for Zcash holders to spend their ZEC more easily without having to convert to other cryptocurrencies first. Merchants will also be able to market their privacy friendly practices and better comply with privacy regulations such as GDPR, reducing the amount of data collection that they will be responsible for.
Fixes for crashes when running BTCPayServer 2.0 (work on local fork of 2.0, doesn’t need to be published as it is now obsolete with 2.1, the changes are outlined in the plugin PR below though)
I have created a btcpay-zcash GitHub organisation: btcpay-zcash · GitHub . This organisation will be jointly controlled by me (with the role of repository maintainer) and representatives of FPF and ZCG. The BTCPayServer Zcash plugin has been moved over to this organisation and I have merged the initial 2.1 fixes.
Here are the instructions for creating a local .btcpay build, that can be loaded via the Manage Plugins interface in a BTCPayServer instance:
All that is left for the first milestone now is to finish the transfer of the Zcash plugin on the plugin directory and publish the first working version of it.
Thanks to @artkor for testing the 1.0.1 pre-release! I have now published the first working version of the plugin for BTCPayServer 2.x to the plugin directory. Milestone 1 is now complete.
The next steps, for milestone 2, will be to eliminate the need to hardcode the viewing key as an environment variable and allow for entering it inside the BTCPayServer Zcash options interface. This is necessary for supporting the official installation bash script and to deploy BTCPay with Configurator. This should help users and merchants who may be less familiar with Docker. An option can be included as part of the setup process to run a Zebra full node and lightwalletd locally, as is the encouraged practice by BTCPayServer.
Milestone 2 is nearing completion. There is a pre-release build up for 1.0.2 of the BTCPay plugin that allows for entering the viewing key and number of confirmations via the settings GUI, eliminating the need for hardcoding environment variables.
I ran into some issues with using zec.rocks, so for now have changed the default lightwalletd server to zcash-infra, and have created an optional fragment for running a full zebra node with lightwalletd. BTCPayServer tends towards favouring full nodes as a default, however most other cryptocurrencies support pruned nodes and zebra/lightwalletd do not, so this may be limiting for instances that already have several full nodes running on the same machine, given disk space requirements.
I’ll write up some setup and upgrade documentation in the README, and it should be ready for testing. I’ve been running a live instance of the plugin on a BTCPayServer website for the past several days.
What issues are you seeing? We are running lightwalletd v0.4.18, that is the only difference as far as I know. If there’s an issue with that version we should report it in the lightwalletd Github.
We removed a server from our EU cluster that was causing issues last week, it’s possible that you connected via that region. Up for trying again? I’m not seeing any errors reported in our stack but it’s possible that something is slipping by. Thank you for the troubleshooting help.
I plan to continue maintaining the plugin and Docker repositories for at least a year provided that there are no serious breaking changes that require significant time and extra funding to fix. I will work on some improved documentation/guidance on contributing to the .NET plugin, for now there are basic steps for creating a local build and the official documentation for plugin development can be used: Local development | BTCPay Server and Plugins | BTCPay Server.
Before I start recommending this to various online places, are there working implementations with some decent activity that I could try myself and point to as examples?