Grant Application - Fix BTCPay Zcash plugin

150k grants for something which will do absolutely nothing for ZEC price?? I wouldnt even grant 1 ZEC or $1 from my bag thats for sure.

2 Likes

Alone this dicusssion. I canā€™t believe whatā€™s going on here.

If a merchant were interested in Zcash as a means of payment, they would contact zcash. The only thing a merchant needs to accept payments in zcash is a Zcash wallet. If they want to do it professionally, they can handle it directly through Coinbase ecommerce for merchants as an all-in-one solution.
https://www.coinbase.com/de/commerce

A BTCPay server with a zcash module is completely the wrong way to go, apart from that, you also need customers who want to pay with zcash. zcash is far too unknown and uninteresting for that.

2 Likes

I feel like a maintainer role of the repo should be taken by a developer who has been active in the Zcash community for several years (i.e. wallet developer), or someone in an organisation such as Zcash Foundation. It would be best to have this role be separate to a specific grant, and be someone that can approve pull requests from other developers in the Zcash community, whether those are merchants or grant applicants. There should be automated CI tests also, to help with this role and minimise the amount of testing required.

There already is a docker-compose deployment example here: zcash-btcpay/docker-compose.yml at main Ā· hhanh00/zcash-btcpay Ā· GitHub . I have offered to integrate this into BTCPayServerā€™s Docker fragment workflow: GitHub - btcpayserver/btcpayserver-docker: Docker resources for hosting BTCPayServer easily once I have made a successful test payment with a local deployment, which is the requirement to have this added to BTCPayServerā€™s documentation as a supported altcoin and work with their setup process scripts.

1 Like

Iā€™ve never looked at BTCPay. Iā€™m delighted to see itā€™s written in C#.
Without having seen the code at all, Iā€™ll naively and optimistically suppose that adding full Zcash support (UAs with Transparent, Sapling, and Orchard support) should be relatively straightforward since the ZF minor grants already funded the .NET Nerdbank.Zcash library, which Iā€™d love to see deliver on this.

A couple folks on this thread seem to be vehemently against any grant at all in this direction, and I have to wonder why? They make the case that Zcash should be alone rather than a plugin, and also cast stones that no one uses Zcash. Well, letā€™s seeā€¦ If I were a merchant that already takes BTC, would I be more or less likely to accept ZEC if the software Iā€™m already using offered it? Iā€™d say more.

Having not yet looked at the code, my initial impression is $120K is a very high price to pay to fix something.

From @hanhā€™s list earlier in this thread, Iā€™m comfortable with .NET and docker (#1), I enjoy setting up CI and automated testing (#2), have no experience with regtest (#3), and Nerdbank.Zcash already works for Orchard/UAs (#4).

Soā€¦ Iā€™m interested in what I can do to assist.

3 Likes

Hmm. Seems like this thread is devolving a bit.

@HHIROSHIMA with all due respect, Iā€™m ignoring your contributions for the time being. I do appreciate your sentiments about how to best incentivize developers. However, most of your critiques show a high-level misunderstanding of the situation at hand, and your suggestions are not contextually applicable. It also seems that you have been recently banned, after having to create a new handle due to previous problems, and that youā€™re currently on a tear through the Zcash forum threads making up for lost time. Iā€™ll keep reading your contributions to this thread in good faith, but I probably wonā€™t respond to any of them unless I see a significant shift in your discourse.

@1337bytes, thank you for your suggestions. I appreciate your enthusiasm and long history with Zcash. However. I see in your post history that you have a tendency to blitzkrieg conversations with technical details off the top of your head which may or may not be correct. Youā€™ve also been doing this in the BTCPay thread itself, where Nicholas Dormier has been politely correcting you. But all in all, in my professional opinion, by doing that over there, youā€™ve been making Zcash look worse.

The energy in this thread shows me how much people care about Zcash. Youā€™re a passionate, engaged community. As such, itā€™s hard to be presented with information that shows that you havenā€™t been doing something well, ESPECIALLY when the messenger is an outsider. But please know that we at Birdcalls are here, continuing to show up for this painful communication process, because we also care about Zcash. We want Zcash to thrive. We think that rebuilding the BTCPay module well is an important part of that.

Remember the end goal. To make this tweet a reality:

1 Like

Hey! Nice to meet you, you seem legit and competent. Iā€™m not going to thread-sit so thisā€™ll be my last post for today, but if you do end up taking a thorough look at it all like we did, you may also come to the conclusion that it all needs to be scrapped and started over from scratch. I used the word ā€˜Fixā€™ in order to be diplomatic but now my niceties have come back to haunt me.

Hanh was originally paid $120k to build this module in a way that was not usable. We are asking for slightly more in order to rebuild it in a way that is.

1 Like

Thatā€™s now really weak. What did I not understand? Then say it.
And no my account was not blocked but i deleted my account a few months ago, completely voluntarily. :joy:

Iā€™ll be honest with you, if you offered me something like that and asked for $150,000 Iā€™d fall on the floor laughing and kindly ask to leave my office. Do you have no inhibitions and then you get cheeky too. But you know what? When you run out of arguments, the best thing to do is to distract.

And your screenshot. Naval. Yes, exactly. No, Zcash is much better for storing and protecting assets, but itā€™s also great as a currency and thats btc not.

zcashd is deprecated. I donā€™t think you should build anything new based on it. The new node is ā€œzebraā€, and would make more sense.

That said, both of those nodes are an out-of-proc solution that relies on RPC. That may be the best architecture, but maybe not. It probably made a lot of sense while .NET had no native Zcash stack, since the only option was to run an existing node in another process. Itā€™s something to probably evaluate.

Also, last I heard Zebra wonā€™t have a wallet as a built-in feature right away. I very well may be outdated in this though. But if Iā€™m right, thatā€™s another reason to look at Nerdbank.Zcash integration.

2 Likes

Could you give some examples please? Am not quite sure what you mean by ā€œmay or may not be correctā€. If I have made some oversights on technical details Iā€™m happy to be corrected. Re Nicolas Dorierā€™s reply, am a bit confused about what your criticism is? He was answering my comments/questions re plugin API/hook stability and the feasibility of a shared library for both the Monero and Zcash plugins: his answer was that API stability/semantic versioning canā€™t be guaranteed as plugin hooks are done directly into core classes and without an API layer abstraction, and that a shared library would be dependent on collaboration with the Monero community. Would be happy for someone from an organisation such as Zcash Foundation to take over such conversations.

Iā€™m a little disconcerted by your claim that I am making Zcash look bad.

His integration was usable at the time of grant completion and this was confirmed by members of the community. Currently there is an error caused by transactions using v5 not being supported, but this shouldnā€™t be much work to fix and @hanh has offered to help with this and has already created an initial fix. Rebuilding from scratch should be a last resort.

1 Like

Firstly, most people donā€™t use Bitcoin to pay anyway, and secondly, they certainly donā€™t use Zcash. If youā€™re all so enthusiastic and convinced about it, then create the plugin at your own expense and simply refinance it with a fee. What do you think about that?

1 Like

Hi! Thanks for your reply. I donā€™t think it matters much which language the RPC implementation is written in, currently itā€™s written in Rust. This is the repo/RPC source file: zcash-walletd/src/rpc.rs at main Ā· hhanh00/zcash-walletd Ā· GitHub .

This is the ASP.NET plugin (class with plugin registration): btcpayserver-zcash-plugin/Plugins/ZCash/ZCashPlugin.cs at 9e48b65aeb39f6fa8b116d2b9fc149a88a315176 Ā· btcpayserver/btcpayserver-zcash-plugin Ā· GitHub (where the ZcashRPCProvider service is registered).

Donā€™t think a lot of work is needed on the ASP.NET side other than for adding multi-wallet support. Doesnā€™t seem like 2.0 has broken much. Needs some testing though.

Yes, what a coincidence. :laughing:

My point was we might not need RPC at all. If the implementation uses Nerdbank.Zcash (which is .NET) it all happens in-process so RPC does not apply. The .NET library internally uses the rust crates from ECC, but that too happens in-proc.

1 Like

I think the implementation could work similar to NBXplorer then: GitHub - dgarage/NBXplorer: NBitcoin Explorer . Am wondering whether it would be possible to integrate directly into NBXplorer.

Putting this out there, if this grant is not approved I will personally fix BTC Pay Server to have Orchard support within the next 6 months, itā€™s been on my todo list anyways because I need it for my business.

But if ZCG sees this as more urgent, by all means fund this team to move it forward sooner.

1 Like

Thatā€™s what I call commitment. Great. Then get started now and keep us up to date. :clap:

Hey! I shouldnā€™t have said that to you, I lost my temper last night and Iā€™m sorry. Thanks for your good faith answer. Thereā€™s a lot to respond to here and Iā€™m collecting my thoughts, but Iā€™ll get back to you. Saying this first to make sure I donā€™t forget.

Thanks for the update info! Our analysis of the btcpay module and zcash itself was done in 2023; weā€™ll look forward to learning all the updates if yā€™all decide you want us to do this.

To follow up on this: I appreciate you asking for this clarification, but really I was out of line here! You and I just have very different problem-solving styles. Your style happens to frustrate me, but itā€™s not your fault or a problem. Itā€™s just different.

But, since you asked and by way of apology, Iā€™ll explain myself:

The way I like to do things is to think everything through quietly on the back end. Then I donā€™t say anything until Iā€™m ready to take action. So for example, Iā€™m not going to say anything on the BTCPay thread right now. If yā€™all decide to fund Birdcalls to fix the module, THEN Iā€™ll go over there and just comment something simple like, ā€œWeā€™re taking care of this.ā€ Then Iā€™ll use the contact info that Nicholas already gave in the thread to DM him and do the back and forth for the details there.

I think the reason I said that youā€™re making Zcash look worse (which was rude of me! Again, I apologize!) is because of - how do I explain this well? Let me see - let me give you a little context first:

First, a little context about me - As the team lead at Birdcalls, the way I think about my job is that one of the most important things that I do is to protect my developersā€™s time. I want to make sure that they have vast, uninterrupted swaths of time to code. Even every time I ask one of them a question, that means Iā€™m asking them to shift away from what theyā€™re doing, think about what Iā€™m saying, answer me, and then shift back.

Now a little context about BTCPay - Itā€™s our opinion that the state of the Zcash BTCPay module was bad enough that BTCPay would have been well within their rights to just silently delete the code and move on. We think it was unnecessarily kind of Nicholas to handle it the way he did and take the time to reach out.

So with those two bits of context, Iā€™ve been thinking of Nicholas as another developer whose time I ought to protect.

So thatā€™s why I get frustrated when I see you over there asking him questions that then he has to shift his focus to and that take up his time and attention to answer. You also communicate that way here, and I want to do well by you and answer you, but you want to split the conversation into something high level AND very granular at the same time, and then I get exhausted.

But, again, Iā€™m not saying this to criticize you, itā€™s okay that you have a different style of engagement, Iā€™m just saying all this to you to explain where I was coming from. I hope that this explanation is helpful and that moving forward, you wonā€™t hold ill will. If thereā€™s anything else I can say or do, please let me know.

I think the problem here is that there are two definitions of ā€˜usable.ā€™ BTCPay and Birdcalls share one definition of usable. You and hanh share a different definition of usable. For reference, someone said this earlier in the thread:

Maybe a good shorthand here would be that the 1337/hanh definition of ā€˜usableā€™ is that someone who already hangs out in the Zcash community and/or has a degree in computer science can use the plugin.

The Birdcalls/BTCPay definition of ā€˜usableā€™ is that regular businesses with regular developers are able to use it.

In my opinion, whoever does the fixing is not the most important thing. The most important thing here is for Zcash to end up stronger. Personally, Iā€™d be really hesitant to let hanh and co move forward on fixing this, because while Iā€™m sure that hanh is a very good developer in his niches, in this situation I havenā€™t seen evidence yet that he fundamentally understands what BTCPay is criticizing him for. Frankly, I would also be very worried to let him move forward with the fix because heā€™s shown this community that if he canā€™t figure out how to accomplish something, heā€™s likely to just silently leave it undone rather than ask for help.

Now for @emersonian on the other hand, I donā€™t have any idea about the quality of his work, good or bad. If itā€™s great, then great. Go for it.

The only thing I would caution here is to remember that thereā€™s a significant difference in one merchant taking the time to setup the module well enough that it works for his needs. Itā€™s a slightly different thing to take the time to build the module for all the needs of the great majority of merchants.

If @emersonian is planning to rebuild the module not just for his own needs but for the needs of the majority, and you feel confident that he can handle it, then great. Sounds like youā€™ve got an internal solution and thereā€™s no further need for Birdcalls here. In that case, best of luck.

Birdcalls emotionally preparing to submit a Zcash grant: