Zingo Labs Accelerates Zcashd Deprecation

Hi folks! I am submitting proposal to accelerate Zcashd Deprecation:

Gallery View: Zcash Community Grants Program.

This post will be brief, as I am certain a vibrant discussion will cover relevant issues anyway, and I don’t want to inefficiently repeat discussion.

Here are key points to catalyze discussion/design:

(1) We are proposing to write the Rust implementations of RPCs in a way that is maximally useful to us in the zingo-indexer (our Rust proxy that supports Nym and replaces lightwalletd). We can implement the necessary functionality in a well-documented, tested, and supported crate. Or alternatively we can offer a conditional compilation strategy that would allows consumers to compile components of zingo-indexer they require.

(2) This grant is short-sweet and immediate. We targeted concrete immediately implementable goals, and proposed a short timeline, because we aim for this grant to provide public information about our velocity towards Zcashd Deprecation, and by extension… insight into the overall velocity.

Thanks for your thoughtful attention!

12 Likes

After reading through, I’m unclear on the total scope of this proposal.

How specific is it to Zingo functionality? If this is granted could it remove all blockers from Zcashd depreciation? I’m thinking of the missing tools that exchanges, block explorers, and mining pools use.

If not, is there a list somewhere of specifically what tools Zebra is missing (or tools that need to be built to interface with Zebra) so that we don’t just accelerate Zcashd depreciation but actually make it happen?

Let’s throw some ZEC at the problem, Zingo team, QEDIT, @kayabaNerve , whoever and make Zcashd history.

7 Likes

A list would be great, it could even be extended into becoming a full-fledged small grants/bounty program.

6 Likes

Hi @Shawn.

Is it Zingo Specific?

TL;DR

No.

The work described in the grant is not Zingo specific. The RPCs that need to be implemented are necessary for a fully functional zcashd replacement. The intention is that they would be implemented in a way that allows anyone to easily include them in their Rust project.

For example we anticipate that zebrad would use these implementations, by adding a dependency on a zingo-indexer-grpc crate.

Zingo-Indexer itself is a generally useful tool, as it will replace lightwalletd.

If this is granted could it remove all blockers from Zcashd deprecation?

TL;DR

No.

In my opinion, the actual work necessary to deprecate zcashd is not fully specified.

There’s a snapshot of roughly what needs to be done in this zcashd deprecation graph, but as many of the issue names clearly indicate some investigation and design work remains.

The work in this grant proposal contributes to this graph via issue #1395, by implementing some of the listed necessary services.

Taking a slightly broader perspective Zingo Lab Cyan intends to refine the definition of, and complete the implementation of, much of the indexer service in the course of implementing the full functionality necessary to replace lightwalletd. Defining and implementing the indexer service is necessary for zcashd deprecation.

Is there a list of tools that need to be replaced?

I don’t have a complete answer to that question, see above links for what I am aware of.

I do know that these services need to be implemented in Rust to deprecate zcashd this is work we need to do anyway to offer the ecosystem a Rust alternative to lightwalletd. Our proposal, if funded, would mean that these gRPCs are implemented a single time and used throughout the ecosystem. It would also be a step towards distributing responsibility for this critical community resource.

The time and scope is a key feature.

If this work is funded, it will provide useful insight into the rate Zingo Lab Cyan is contributing to Zcashd Deprecation, and to the overall rate at which deprecation is happening. This is an intentional feature of the small-fast-concrete structure of the grant. If we can get this work done in less than 6 weeks, that will provide useful information… if we can’t… that will provide other useful (and cheaper) information.

Our intention is to follow this work with more contributions to the effort (like the work we contributed to zebrad regtest mode) hopefully calibrated to offer even more precise timing information.

4 Likes

I like your idea. The graph I linked above isn’t a bad starting point.

Thanks for the information @zancas , I’m glad to hear this proposals tools will be useful for Zcashd depreciation as well as Zingo. I am supportive of any work that moves the needle in the right direction.

Ok, what’s going on here?

That graph is a bit of a mess, but can serve as a starting point. @joshs @Dodger Is there anyone at ECC/ZF that can help spec this out better so we can put out bounties or hire teams to tackle them?

4 Likes

@pili created a useful outline of requirements that’s more linear than that graph and posted it as a github tracking issue.

I recommend that people who want to get involved start by reading that, and then maybe join this signal group:

Depending on how things go with this grant, ZL Cyan might be the best placed resource for additional RPC method implementations (and associated documentation, test, maintenance, etc.).

2 Likes

This should be our top priority. Let’s get it done. You have dismad’s support :zebra:

5 Likes

could it be done so each team/ group of devs chooses the parts to focus on building from this list Tracking: Zebra can replace `zcashd` · Issue #8632 · ZcashFoundation/zebra · GitHub ? then eveyone would know who works on what etc. maybe some parts cant be built separate so there would be need to probably be a lot of collaboration also? just me thinking without knowing much of the tech.

@zancas Can you liaise with @arya2 on this?

2 Likes

We’re talking. Thanks for cultivating the connection.

2 Likes

Yes, because the zcashd deprecation process is inherently messy and multifaceted. There’s no nice linear process to follow here, and what the graph tries to convey is that there are multiple fronts we can and should be working on. ECC for instance is focused right now on the parts of the graph that relate to adding full transparent support to the Rust crates (some of which has also been necessary for ZIP 320 support in the mobile SDKs).

2 Likes

A major chunk of this work is related to getting in touch with exchanges and miners to begin to plan for a smooth transition. That involves getting details on what methods used today and how and subsequent coordination.

While we have plans to begin that outreach in Sept/October, if someone in the community wants to take that on, it would be a huge help.

6 Likes

Count me in :slightly_smiling_face:. We have already reached out many exchanges and partners for the TEX address outreach so this would be a good follow up.

6 Likes

If I may add something to what Str4d said is that the graph is a bi-dimensional view for a given perspective. Many of the tasks you see there are dependencies of other projects as well so there are orthogonal cuts of the DAG too

After extensive discussions with various stakeholders, we have decided to substantially restructure this proposal.

Deprecation of zcashd is an urgent priority for us, and we believe that the most effective way for us to contribute is to take full responsibility for the new indexer service.

We’re going to propose expanding our team to take full responsibility for the design, implementation, and test of the indexer. Look forward to an update to the proposal within the next 48 hours.

3 Likes

Keep moving, Look forward to the update

Hey folks Zingo Labs consulted with @nuttycom @daira at the ECC and @arya2 at the ZF.

In collaboration with @idky137 and @AloeareV internally we have produced a significantly expanded road map that helps to define the zebrad node as a validator that produces chain state, which the Zingo Labs zaino component then provides to different kinds of wallets upon request.

This work will significantly advance zcashd deprecation by:

  • clarifying how concerns are separated in the zcashd-less architecture
  • providing functionality other-than-validation and other-than-wallet outside of zebrad

The component that fulfills this requirement is called “zaino”:

zaino (feminine zaina, masculine plural zainos, feminine plural zainas) (of horses or cattle) chestnut (of a dark, reddish-brown color)

2 Likes

Hmm, are you sure about that name? https://tureng.com/en/spanish-english/zaino

In the most beautiful language. Italian. Zaino means backpack