@machinesunmachine Thank you for your submission. After consideration from @ZcashGrants , the committee has decided to take your grant off hold and reject this proposal, given the price of ZEC and its impact on the treasury. ZCG encourages you to consider reapplying at a later time.
The committee appreciates your grant submission efforts and encourages you to continue as an active member of the Zcash community going forward, both here on the forum and in the below avenues as well:
If memory serves me correctly, the Birdcalls team looked at both ZGo and BTCPay Server when they were first researching their proposal and decided to use BTCPay Server because it supported multiple coins in addition to ZEC.
The committee recently rejected this proposal after putting it on hold for several months due to budget limitations. If the market improves and Birdcalls resubmits their proposal, we can ask them to take a second look at ZGo given that it’s easy to implement and has already been successfully integrated into a couple different websites.
We’re so glad to hear that the price of ZEC has rebounded and the ZCG treasury is in better health.
Birdcalls and our Internet Phone Booth are strong fledglings. Here’s what we’ve been up to:
Several hundred calls are made each month via Birdcalls.
We’re about to launch a marketing initiative with the goal of increasing our monthly calls by an order of magnitude.
We’re not profitable yet, but we’re only a few hundred dollars a month away from break-even.
When we first started Birdcalls, our differentiating features were simply that we enforced call time limits and offered optional screenshot prevention inside our apps. But now, the Jitsi service has disallowed anonymous creation of call rooms by forcing the administrator of the call to authenticate identity via Google, Microsoft, or Facebook. So we find ourselves holding down the fort. Birdcalls is committed to the key privacy tenet of anonymous call creation.
Our biggest next goal is to become the default video call calendar integration for Proton. If you know anyone at Proton, we would love to be introduced.
We still love ZCash and would love to see ZEC as the preferred coin for privacy-focused video calls on the internet. We’d love to explore what the best integration would look like now, as well as how our skillsets might best be able to contribute to the Zcash ecosystem as a whole. To begin our research, we have a few questions for a few members of the community:
@1337bytes - Are you still working on a custom front-end and API integration for the BTCPayServer integration as part of Elemental Pay?
@hanh - Do you have any more plans to move forward with BTCPay? If not, what was the blocking factor?
Hi! I ended up focusing on a simpler Node.js REST interface server with bindings to the Zingo Rust lightwallet client for Elemental Pay. I think going with BTCPayServer, or at least having documentation and maintenance for usage of it, would be ideal considering that it has been battle tested over time and used/audited by companies such as Tesla.
BTCPayServer appears to work with the image btcpayserver/btcpayserver:1.13.7-altcoins. However an override is needed for the Rocket.toml config with an active lightwalletd server for the hhanh00/zcash-walletd Docker image. I ran into problems running it with 2.0. Also I had to add a custom Advanced rate rule scripting for ZEC_USD to fix a crash from the currency rate being 0.0.
As mentioned in the PR that dismad linked, they are removing Zcash and Monero from the core code. BTCPay Server 2.0 has been released with the goal of making the codebase more extensible, allowing altcoin integrations to live in separate repositories maintained by different teams. An initial version of a Zcash plugin has been published here, but will not be tested/published unless someone from the Zcash community picks up the responsibility of maintaining it: GitHub - btcpayserver/btcpayserver-zcash-plugin: This plugin extends BTCPay Server to enable users to receive payments via Zcash.
I’ll write up some documentation on running BTCPayServer with a Docker Compose setup on the Elemental Pay website/GitHub, and can publish a forked Docker image for zcash-walletd. While I’m not proficient in C#, I might be able to hack together some support/maintenance based on the similarity to the Monero implementation that is actively maintained.
There are some features missing in the BTCPayServer implementation like unified addresses and multiple accounts.
Thanks, @1337bytes ! Cool, thanks for the update on Elemental Pay.
I’m nodding about what you’re saying about BTCPay. It seems like it could be a valuable back-up for the ZCash ecosystem to have a functional plug-in for something so widely-used as BTCPay.
Pulling this forward from earlier for the sake of the discussion, here’s the analysis we previously did of the BTCPay module:
### Birdcalls Analysis of Hanh’s Zcash module for BTCPay
### Pros
* Currency data appears to work with ZCash, ZEC<->USD for example appears to work.
* Payment pages contain ZCash option, and choosing that option generates a ZCash QR Code.
### Cons
* There’s no ZCash section in the wallets area in BTCPay. All other currencies have them as a way to review your wallet / incoming payments / match up invoices / etc. The current implementation shows the ZCash address for purchase.
* ZCash viewing key is essentially hard-coded into the docker compose file, instead of having a settings page in the admin area like all the other currencies.
* There does not appear to be support for multiple ZCash wallets, like with other currencies.
* No support for multiple stores (multiple stores must share the same wallet, as the ZCash plugin hard codes the wallet address into the container).
* There’s no setup process for ZCash wallets, like there is with other currencies (when creating a new store, other currencies ask you for wallet info and enable/disable currency support depending on how you provide it).
* The method documented by Hanh is either incomplete or out of date, and requires using Hanh’s custom containers and will not work (at least without modification) with non ZCash currencies. The method documented below includes replacement info / code that works with the most recent version of BTCPay and is compatible with other currencies.
* The processes below are the result of a lot of trial and error due to poor / missing / outright incorrect documentation on both the parts of BTCPay and the ZCash plugin. There is zero chance a user without significant IT/dev experience will be able to get things working without new docs / changes to the code.
* We were unable to find any functioning wallet that supports testnet, and so had to run a full zcashd node in order to get some testnet coins to run transactions through.
* Running a testnet node does not appear to work. There’s no official documentation for it, and although we did find a docker container by Hanh that is named as if it supports it, that container crashes immediately on startup. Since Hanh doesn’t mention it anywhere, we’re assuming it’s something else. Currently stuck on this item & decided to end this analysis here; we now know enough to move forward.
Our Conclusions
* There is zero chance a user without significant IT/dev experience will be able to get the current Zcash module for BTCPay working without new docs / changes to the code.
Before you or we duplicate any efforts, let’s see if we can get @hanh to chime in on whether there was a blocking factor that prevented him from moving forward with his original work?
Not sure what you expected. The zcash support is at the same level as Monero at least. In general, BTCPayserver requires devops skills since it is a self hosted solution.
You could try Zgo that has a hosted version if you don’t want to deal with configuration and deployment.
There’s a way I sometimes get responded to here that makes me realize that I should clarify something. In my interactions with the ZCash community, I wear two hats. The first hat is as the public face of Birdcalls, of course. But I’m also engaging here as someone who cares about ZCash for the sake of ZCash.
I have deep roots in the open source movement. I come from makerspace/hackerspace culture. I used to call myself a biohacker, back when that word actually meant something respectable. Over a decade ago I led the team that published instructions for building an open-source, affordable bioreactor for citizen science genetic engineering. I know how to transfect cell cultures using a $35 sonic jewelry cleaner from Wal-Mart. The proof is in seeing that glowing jellyfish gene:
From my makerspace days, I care deeply about flat hierarchical structures and the ways that a good community can hold everyone accountable. These days I identify as a more of a “lapsed anarchist” who puts in place structures so that everyone can choose their own path towards a shared goal:
And now, I don’t only care about Birdcalls. I also care about strengthening the entire landscape of privacy tech. And I personally like ZCash as a privacy coin in the privacy space. Y’all fit my values. I want to help ZCash thrive.
You could try Zgo that has a hosted version if you don’t want to deal with configuration and deployment.
I agree with @hanh that the hosted ZGo service is probably a better option for people who don’t want to deal with configuring and deploying Docker containers/servers and don’t necessarily need a self-custodial solution.
Fixing/Building/Documenting Zcash BTCPay for the needs of less experienced developers: 1.25 Hanh units
This seems like a very large budget for something I’m not sure is necessary. Setting up BTCPayServer should just require these steps: Introduction | BTCPay Server . Cloning the Docker repository and running a setup bash script. There isn’t a Zcash Docker fragment yet, but this shouldn’t be much work to setup. The main tasks that are necessary for BTCPayServer Zcash support is active testing/maintenance of the C# plugin (ideally by a developer experienced with ASP.NET) together with maintenance of zcash-walletd. It would have been great if the exploratory phase would have gone into some detail about whether the $30k for the second deliverable would cover this work.
Multiwallet support on the C# side is currently being worked on by the Monero integration developers, so it’s probably worth waiting on this to be completed before scoping out how much work would be necessary to implement this for the Zcash BTCPayServer integration.
To clarify what we mean when we say "less experienced developers”: Over the last decade members of our team have built multiple payment gateway integrations for multiple companies. We have a great deal of experience and can handle setting up a BTCPay ZCash module.
.
But two years ago when we wrote up this grant proposal, we didn’t think that the module was in good enough shape for developers with any less experience than us to be able to successfully implement it. Now BTCPay themselves are echoing our analysis from two years ago and asking for someone to fix the exact problems that we originally offered to fix.
The original Milestone 2 was a separate scope of work, covering our personal integration of Zcash into Birdcalls.
We will consider your advice about waiting for the Monero developers. Thank you so much for all your thoughts.
Okay, thanks for all the feedback. This has been productive. We think that the most important thing for ZCash is to address BTCPay’s requests as quickly as possible. So for now we’re going to stay paused on the Birdcalls integration aspects of this grant; instead we’ll make a new grant proposal with smaller scope specifically to fix the BTCPay Zcash module.
We’ll submit that proposal to the committee and then make a new forum post for it shortly.