You can use pre built docker images.
https://github.com/hhanh00/zcash-btcpay
Check out the README and let me know if you have any questions.
You can use pre built docker images.
https://github.com/hhanh00/zcash-btcpay
Check out the README and let me know if you have any questions.
That’s more helpful, thanks. I followed the readme instructions. I did steps 1,2, and 3, but that’s as far as I can get. zcash-walletd is running, but the message from step 4 does not appear. This is what my terminal looks like.
Please provide the complete log, especially the beginning.
Are you using docker on Apple M1 chip?
Yes thats right
It’s a known bug with QEMU / Docker Mac on M1. Better use Intel/AMD CPU or rebuild from source.
For the record, it’s a bug in the virtualization engine used by Docker. Not related to the app itself. https://gitlab.com/qemu-project/qemu/-/issues/340
Hello @hanh!
Does your product support multiple ZEC wallets in case multiple stores will use our BTC Pay Server? If yes, could you please share the docker-compose.yml example?
The plugin only supports one key at this time.
Hi, there’s a discussion in the BTCPayServer repository around removing Zcash and Monero altcoin support from the core codebase and integrating them as plugins that live in a separate repository – Remove ZCash and Monero from core code by NicolasDorier · Pull Request #6535 · btcpayserver/btcpayserver · GitHub . They’re looking to transfer ownership of the plugin to someone in the Zcash community and are looking for more active maintenance of the integration – GitHub - btcpayserver/btcpayserver-zcash-plugin: This plugin extends BTCPay Server to enable users to receive payments via Zcash. .
I would be happy to take on some limited testing/maintenance of the integration, however I’m not proficient in C# or Rust. I have published a fork of zcash-walletd to Docker: 1337bytes/zcash-walletd with environment variable arguments for LWD_URL and CONFIRMATIONS. The existing usage of lightwalletd.com in Rocket.toml breaks the integration. Also, I plan to write up some documentation to hopefully encourage more usage of the Zcash BTCPayServer integration, and while I ended up focusing on a simpler Node.js REST interface server with bindings to the Zingo Rust lightwallet client for Elemental Pay, I plan to switch my focus to BTCPayServer support for Elemental Pay and can include some support as part of a new grant/revamp of Elemental Pay if there is interest in it.
From my testing the last BTCPayServer version that works is btcpayserver/btcpayserver:1.13.7-altcoins, however I’ve run into problems with running it on 2.0.
Unified Address and multi-account support is missing in the current implementation, a revamp of zcash-walletd to include this would be great and help with increasing adoption, especially with multi-wallet support in BTCPayServer.
@1337bytes We’re talking about doing this, too! Let’s keep talking to each other about what’s needed so we can pool our efforts. - Sunny @ Birdcalls
@hanh Was there a blocking factor we might not know about yet that stopped you from maintaining this project?
it is not broken as far as I know. But the main reason was the lack of usage. It would be good to know how many deployments of BTCPayserver and Zgo are out there.
I know the zechub store uses Zgo
Yes, we have one store running and another coming soon
![]()
If you’re interested in taking this over, and moving forward with the plugin development, I’m happy to provide whatever support I can for modernizing the stack, with the caveat that zcashd deprecation and NU7 work are taking up essentially all of my time for the next few months so what I can offer is likely limited to occasional review & consultation.
@hanh, thanks for your reply!
The Zcash UI doesn’t run in BTCPayServer 2.0, I have a patched version locally that runs in 2.0, together with address generation. However, when sending a test payment to the address in the invoice UI, I get this error:
wallet-1 | [2025-...Z INFO rocket::server] Matched: (request_scan) POST /request_scan
wallet-1 | [2025-...Z INFO zcash_walletd::scan] Scanning from <START> to <END>
wallet-1 | [2025-...Z INFO zcash_walletd::scan] Scan tx id: <TRANSACTION_ID>
wallet-1 | [2025-...Z WARN rocket::response::debug] Debug: Unknown transaction format
wallet-1 | [2025-...Z WARN rocket::response::debug] Debug always responds with 500 Internal Server Error.
wallet-1 | [2025-...Z INFO rocket::server] Outcome: Failure
wallet-1 | [2025-...Z WARN rocket::server] No 500 catcher registered. Using Rocket default.
wallet-1 | [2025-...Z INFO rocket::server] Response succeeded.
Will spend some more time testing the 2.0 plugin and will publish my UI fix for 2.0 shortly, I have a feeling that porting the RPC client to use warp-sync could be worth trying to make maintenance easier.
Best way to increase adoption I feel would be to integrate Zcash as part of the BTCPayServer Docker Compose generation process, which is their recommended setup process, then have it added as a supported altcoin in their docs. After that, can reach out to existing BTCPayServer merchants and ask them to add ZEC support.
This error looks like it’s caused by transactions using v5. I’ll check it out when I have some free time.