I recently applied for a grant from the Zcash Foundation to fund a .NET library that would be able to parse and construct Zcash Unified Addresses. You can learn more about that and my efforts on the Zcash Community Forum.

The work for the grant is complete and you can find the libraries I wrote here:

AArnott/Nerdbank.Cryptocurrencies: .NET libraries for processing Zcash and other cryptocurrencies. (github.com)

Besides being a useful utility that I badly needed a few months back, it’s an exciting entry for me getting into the cryptocurrency space as a software engineer. On the one hand, it took a lot more work than I anticipated, even for this small feature. This was mostly because of the overhead of setting the repo and library up, and to learn where the specs were to implement. But it is also a bit of a struggle for me because I am not a cryptography expert, and reading these specs is a bit like reading a foreign language.

Now that the foundation is there, I find myself asking what to do next. I’d love to see a rich set of OSS NuGet packages with modern .NET targeting libraries that implement various cryptocurrency functions. But ultimately what I want are the libraries necessary to quickly build applications that will help move Zcash forward in adoption by business POS systems and end users.

I’m getting the feeling from these specs that I’m reading that there is so much code and cryptography required to get off the ground, and most of it is written in rust, dart, or even javascript, that a .NET developer has only a few options:

  1. Ditch .NET and start coding libraries and applications in another language.
  2. Keep .NET but use native-compiled libraries or processes as part of the application, and accept whatever limitations they come with.
  3. Seek to push the .NET ecosystem forward, such that NuGet packages with all-.NET solutions can be readily made.

My favorite would be option 3, but that also strikes me as the slowest way to start, and likely a path I’ll never finish to a satisfactory level unless it’s my full-time job and I work on a team with the same goal.

But hey, I did have fun learning Blazor and using it for the first time to build the site that demos my new library: Nerdbank.Zcash demo