Zcash core developer proposal

@zooko, @str4d, @nathan-at-least: given that @oxarbitrage is looking to work on the core node software, and that his expertise lies in C++ rather than Rust, it seems that ECC’s arborist team is in the best position to help him find good projects in the zcashd codebase (beyond the pull requests he has already submitted). Funding can then come from Zfnd grants.


Thank you guys for the support specially the Arborist team that allowed me to merge some code, without their support the proposal would never have seen the light.

I am now in contact with @tromer and @nathan-at-least to see how to proceed with the grant option.


Hi @oxarbitrage, I just saw your community chat and am responding here. Sorry for the delay in response it’s been a busy few weeks here. I may be operating without appropriate context so I apologize if this has already been discussed.

Re: your grant proposal, do you feel comfortable converting it over to the grants platform? Submissions are currently disabled as we’re migrating to an upgraded system (targeting next week but it may slip). Once submitted there we can provide more comments and feedback from the Foundation side.


Thank you @acityinohio. I will be submitting as soon as the platform is accepting proposals again.


Thanks to the foundation for funding, the ECC members for supporting and the zcash community in general the proposal is now live at https://grants.zfnd.org/proposals/1181218696-zcash-core-developer

Currently we have created the 3 initial milestones:

Please post here or reach my by PM if you want me to work in a particular zcash issue.

Note: Milestones are a general guide, tasks can be added/moved/deleted by any justified reason at any time.

I will post here when new milestones gets created.

Thank you all for the support, i will always do the best i can.


Hello community, a new month is starting and by this the milestone 1 of my grant ended. I will post a small resume here at the end of each milestone but feel free to ask me any question at any time.

Here is the finalized list of tasks for milestone 1:

From the planned tasks there are 3 that are not done, in all the others some sort of work was done, majority currently have open pull requests waiting for review or merge.

In regards to the 3 not done here are the reasons:

In other news i had a meeting with @elenita from ECC last week and i will have a meeting with several wallet team members next Tuesday. This team have a wishlist of zcashd features that they will like to see implemented. The idea is to collaborate with them.

By now the focus will be in milestone 2:

I think it was a good initial milestone, comments are appreciated :slight_smile:


I only have one comment: It’s Zcash, not ZCash.

Keep up the good work :slight_smile:


Thanks @rex4539, fixed that :slight_smile:


Hello community, as February ended milestone 2 is over and now the focus has been moved into milestone 3 starting today.

For what was done in Feb please check https://github.com/oxarbitrage/zf-grants/blob/master/2020/milestone2.md

As you can see a few cleanup tasks were not completed, speaking with the team i now know they were not of big importance so their were removed. In compensation to that a lot of new tasks were added specially in reviewing other team members code in order to speed up the merging process.

1 task was moved to milestone 3(https://github.com/zcash/zcash/issues/4326). Milestone 3 haves a nain focus on community requests and that issue is better suited there however this was not the main reason of the move, it is actually delayed as it depends on other pull request that is still in development/discussion(https://github.com/zcash/zcash/pull/4293). Still, i think milestone 3 is better for that issue as it was a direct request from the ECC wallet team.

For details on what is currently in the line of milestone 3 please check https://github.com/oxarbitrage/zf-grants/blob/master/2020/milestone3.md

Please remember milestone can be always changed as needed but it gives an overall idea on what issues will be addressed in the period.
In this milestone i have to also create what will be be milestone 4, initially i only created the first 3 milestone for the grant, now it will be time to add at least 1 more. Open to suggestion on what should be the main focus of milestone 4.

Finally in April(eastern holidays) i plan to take a 1 week vacation with my family, i have to talk about it with the foundation on how that can be handled in my case but i hope this will not be a big problem.


Thanks for the great work and productive collaboration, @oxarbitrage!

A few comments:

Research/Implement ZIP32 - https://github.com/zcash/zcash/issues/2673

Do you mean BIP 32 for t-addresses, or ZIP 32 for Sprout z-addresses? (Not sure it’s worth it to bother with the latter.)

Research https://github.com/zcash/zcash/issues/2275 [Cross-branch double-spend detector], check if new rpc calls are needed, file issues for them.

Note that ZF has just awarded a related grant for a Zcash Observatory. So it may be better to leave this issue to them, unless it interacts with other things you’re working on.

As for the couple of bug-report issues you listed for Milestone 3, they seem to arise in a complex state that may no longer be reproducible. So the fallback to actually resolving them is to instrument the code with additional debug output and checks (so they’d be easier to analyze next time they happen). Which you’re mostly working on anyway, but yeah, going through these detailed reports may give more ideas.

I also left a few notes in the issues.


Hey @tromer , thank you for the feedback. I removed the 2 issues in question, didnt know about the Observatory, looks good.

I will replace them with something else, any issue that you will like to be done this period please let me know. Same goes to anyone reading.

One of my intentions for this milestone was to work in some ZIP(https://github.com/zcash/zips) as i think that can be a bit more advanced than normal issues however there are so many issues available that keep working on them will be just fine on my view.

Still, if there is any ZIP that the community will like me to work on, i will be happy to do it.

Will post more news here soon.


As March ended here is a report on milestone 3 and a new milestone 4 proposal.

It had been a difficult month for everyone, i hope the zcashers reading and their families are all ok. In here the daily life changed but my work routine is by now the same.

The vacations mentioned in the last post (i should be leaving this weekend) are of course cancelled and by now moved to July, we will see if that actually ends happening.

With that said lets move on to some comments on the closed milestone(https://github.com/oxarbitrage/zf-grants/blob/master/2020/milestone3.md).

Almost all the tasks planned were done, as usual some of them are merged, some others are pending but they all have at least some code attached.

Let me comment a bit in regard to the first 3 tasks of Week 1. The 2 that are crossed out are because the state may no longer be reproducible as commented in Zcash core developer proposal .

That leaves us with https://github.com/zcash/zcash/issues/4279 and more specifically i am after https://github.com/zcash/zcash/issues/4279#issuecomment-570421471 .

The work in the logging was started actually in week 4 of the milestone(I don’t respect the weeks where the tasks are added to the milestone, just try to do them somewhere in the month), an initial PR was submitted for the balances part of it but implementation is discarded by performance issues. With some suggestions from @daira i now have another implementation very close to be submitted(between today and tomorrow) but it will still need some attention in the first week of april to finalize properly so i added it again as a task in week 1 of milestone 4(https://github.com/oxarbitrage/zf-grants/blob/master/2020/milestone4.md#week-1).

A proposed list of tasks was added as milestone 4(https://github.com/oxarbitrage/zf-grants/blob/master/2020/milestone4.md) where the main focus are recent issues. Please send feedback. Thanks!


Keep up the good work! :metal: :zebra:


In regards to the logging system and promised new pull request, it was submitted last night: https://github.com/zcash/zcash/pull/4423


With the end of April the milestone 4(https://github.com/oxarbitrage/zf-grants/blob/master/2020/milestone4.md) is now closed. The majority of the tasks were done, a lot of good stuff. In this milestone several tasks were pretty big so it is costing some more time to get them reviewed and finally merged.

For that reason and because a bigger task was planned when the grant was initially discussed the next milestone will be a bit different:

It will be focusing mainly on 1 single task, a ZIP about wallet format. This is considered of importance to the ECC developers and a good candidate for me to take.

At the same time, old pull requests will be bumped and of course new requests can be added as the milestone is going.

Any feedback please let me know.


As proposed in previous milestone 2 ZIP documents were created:

For ZIP402 i will like to do the implementation, i already have some code, however i think it will be more productive if we leave the zips open for review, suggestions, etc from the editors and from the community in general for the next period while we get back to some smaller issues. Work in this 2 documents, with the feedback collected will continue in the background and implementation of ZIP402 can maybe be done in milestone 7.

Also in milestone 5 and specially after zcash v3.0.0 was released we were able to tweak and merge several older pull requests that were in queue.

For milestone 6 i am proposing:

Any question please let me know. Thanks.


Milestone 6 is over and all the issues except 1 of the planned was replaced by https://github.com/oxarbitrage/zf-grants/blob/master/2020/milestone6.md#zebra-work

In recent discussion between me and @acityinohio from the foundation i started to do some zebra research for a future collaboration. As the zebra project is moving very fast in this stage there is plenty to do.

I asked the zebra team before taking this decision and they are happy to have me around with them so very appreciated for that.

Please note this do not mean no more work will be done in the c++ repo ever, i will just shift a bit the focus in this milestone but will make suggested changes to the open pull requests while they get reviewed. Still, if anyone is after a feature that think i can do please let me know and i will try to take care as well.

Milestone 7 is a bit different in regard to the list of tasks i always submit, as i am very new to rust and to zebra in general, it will be too risky to plan for a month so detailed. So the idea is keep learning the codebase, the language and do some useful stuff for the benefit of the software in the path. Items will be added as they are taken instead of beforehand as usual. Hope this is understandable.

Any question please let me know.


Keep it going!! Zcash is great to have you. Hope to see more folks (like you) making independent contributions.


Appreciated :slight_smile:


I closed milestone 7 and opened milestone 8: https://github.com/oxarbitrage/zf-grants/blob/master/2020/milestone8.md

The “experiment” of the last milestone(moving to zebra) was pretty successful and even if i still have a lot to learn the period was very productive in my view. I am very grateful with the zebra team for allowing me to get adapted fast.

Zebra will remain the main focus for this period but i also plan to make some room for doing some zcashd, as the milestone explains there are some pull requests that had been reviewed and i will probably take a look to my currently open prs, check if they need rebase, do changes if needed, close if they are obsolete, maybe take some new issues, etc.

Please let me know what do you think. Thanks.