Nighthawk Wallet & Public Infrastructure

I tend to notice that grant discussions often get hyper-focused on price instead of strategy. Also, in general, I feel as though most of the community does not have great experience in predicting what will help make Zcash become a popular cryptocurrency - if we did, Zcash would be in a different place. So I think starting from a place of humility and recognizing none of us have all the answers, or even very many of them, is helpful.

For me, it helps to focus on the ultimate goal of all dev fund recipients: to increase the adoption of Zcash. We are all on the same team with different roles to play. For wallet development, I’d try and focus on a tangible target, say 100,000 wallet downloads. Then, the question is how to get there. Obviously, a great wallet is needed.

I do have a few questions.

  1. I wonder why Warp Sync is not used or apparently not even desired by other wallet devs? It works so well.

  2. What are the most popular wallets in crypto? Do any of them have 100,000 downloads? What are they doing that we could learn from?

  3. How can any Zcash wallet, even if it works great, reach beyond the current base of people who know about Zcash into the broader (and much larger) market?

Answering these questions would be helpful in my own thinking about how to increase Zcash user adoption.

Thanks!

12 Likes

Hey David, Thank you for your genuine question on strategy, an important piece that needs to be revisited as Zcash continues building onward.

To chart a viable strategy for the future of Zcash, let’s look at where we are today. I would start with my personal experience watching the bootstrapping of the Zcash network from the sidelines in 2016-2018 until the advent of Sapling where I finally was able to experience sending and receiving shielded Zcash on my Android via Guarda Shielded Wallet and the ZecWallet Node companion app. ZEC was trading around where it is today and I started following the community closely, attending local Zcash meetups and learning as much as possible about the protocol. At first, I was skeptical of the self-funding model. but as time passed, it became evident that Zcash was the only coin with a steady, funded development model since its inception. All kudos to @zooko and his team at ECC, for not only keeping top-notch development activity but also focusing on the privacy aspects and narrative missing in our industry.

Next, let’s learn from talking to new users, long-term investors, and whales, and ask them why are they holding ZEC, or why they dump it all. what are their expectations? Are their expectations in line with the reality of Zcash’s development status and timelines? Revisit @balajis, Vitalik, Naval Ravikant, and early Zcash founding scientists’ visions for Zcash, are we anywhere near the delivery of their ideas? Or are we stuck in an innovation loop with every shielded pool upgrade and failing to reach the early majority?

Then learn how did other coins enter the Top 10, starting from 2013(the first bull run that hit mainstream news) What coins made it to the Top and How? And in 2017, and ultimately 2020-2021.
Can we learn anything from the coins making it to the Top 10? Who got pushed down? Who stuck? Why? Who’s knocking to get in the Top 10 today? What are their active initiatives? These questions are necessary to ask to navigate the uncharted territories for shielded money adoption with Zcash.

Now, to get to your stated goals of 100,000 downloads, Zcash would have to enter the Early Majority phase of adoption, pictured in the Zcash Chasm chart below that I was able to draw up today(based on Geoffrey A. Moore’s model for market dynamics faced by innovative products). Wallet apps that have achieved 100k+ downloads have taken the path with a multi-coin, simplified wallet experience with a single seed to make self-custody easy and manageable and easy credit card/banking purchase options for crypto. Some wallets like Metamask have integrated swaps, while other multi-coin wallets Edge and Trust Wallet have integrated Thorchain swaps and savers vaults, making it easy for anyone to swap coins & store them in a transparent and decentralized lending facility. These wallets with high adoption, all support BTC with the highest adoption rate for new entrants to cryptocurrencies.

One assumption could be, let’s make all the multi-coin wallets add Zcash support and that should surely drive up ZEC adoption?.. I don’t think so, as we’ve seen in the past 2 years, ZEC has been unable to make its mark in the mainstream market, which is needed for early investors and whales to start scooping up the coins for an upcoming use-case with massive potential and adding a premium to the ZEC price. Price after all is the best form of marketing in crypto. We did have run-ups in price with the rest of the crypto ecosystem and NU5 trustless setup/Snowden involvement news, getting to 1:1 with XMR, only to fall again. ZEC trading at or near the cost of mining says that the market does not value any innovations delivered to date by the Zcash ecosystem.

Nighthawk’s strategy is to deliver the best Zcash experience for entrants to the shielded cryptocurrency ecosystem, by building a strong foundation for our native wallets apps that allow us to deliver a super-app experience.

ā€œThe secret to a super app’s success is its ability to use existing user traffic and distribution (in WeChat’s case, the flywheel started with messaging) to drive lead generation and traffic to its partners. The more you can do on the app — with as little friction as possible — the stronger the flywheel.ā€

This approach will make it easier to onboard new users quickly to take self-custody off exchanges and into their hands, including educating the user about ZEC and its simplicity, designing intuitive user actions, and making shielded-by-default mandatory instead of forcing the user to decide on their Zcash settings. This objective will include providing feedback to the core developers of Zcash, to fill the gaps in hardening the core protocol & libraries and delivering a better end-user experience, something our team has diligently focussed on over the past years. And, to be at the forefront of ZSAs, the largest feature update Zcash has seen and which has the potential to bring in massive adoption to Zcash when it goes live. Our lightwalletd platform engineering & scaling efforts and planned updates to ZcashBlockExplorer.com to support Shielded Assets are part of this strategy.

For Nighthawk Wallet, it will also be partnering with cross-chain communities that we have already initiated with Flexa and Thorchain ecosystems(and a couple more partners on the way). There is light at the end of the tunnel.

My team is uniquely positioned, has taken the right initiatives, and has all the support it needs both from within the Zcash developer ecosystem and external communities that see the potential in ZEC and we have the zest to contribute as we have done for the past 4 years.

– Q & A –

I wonder why Warp Sync is not used or apparently not even desired by other wallet devs? It works so well.

We performed preliminary integration tasks and tried building a proof-of-concept with a forked version of the Zcash SDK. Our developer’s estimates turned out to be way higher than we expected as to the costs to maintain forked versions of the iOS and Android SDKs, adding to the woes of being behind on security updates from upstream. Soon, the NU5 specifications were released and we decided to ensure our user’s wallets were compatible with the network upgrade and adopt a syncing algorithm that works with Orchard pool, while Warp Sync worked for Sapling. The NU5 going live saw the majority of wallets break, Nighthawk Wallet worked seamlessly and also included transactions in the first few blocks after the network upgrade went live. This was made possible by our team members working with ECC developers via the LCWG bi-weekly meetings.

What are the most popular wallets in crypto? Do any of them have 100,000 downloads? What are they doing that we could learn from?

My favorite wallets are Bitcoin.com, Pera Wallet, Phantom, Status, Core App – all making the experience for their core platform/coin to be the flying wheel of utility. Their teams work closely with the core developers and actively participate in their respective protocol improvement documents and ideas.

How can any Zcash wallet, even if it works great, reach beyond the current base of people who know about Zcash into the broader (and much larger) market?

By providing the best experience of Zcash’s unique value proposition - shielded money at rest and integrating use-cases to third-party apps, shielded assets, and services.


Zcash Chasm:


Additional ideas for Zcash to reach its potential:

9 Likes

I found this in the meeting minutes.

1 Like

What are the most popular crypto wallets these days? Is this an OK list ?

crypto com defi wallet

Rust and TypeScript - core stuff in rust but compiling all the way to the web browser in a TypeScript monorepo it appears. I guess their big product is a browser extension?

Guarda

TypeScript, TypeScript, running in the browser … used to have an android app written in Java but archived it. Their only maintained iOS or Java-specific code now appears to be the progressive webapp packaging glue. Browser extension.

Coinbase Wallet SDK

GitHub - coinbase/coinbase-wallet-sdk: An open protocol that lets users connect their mobile wallets to your DApp - looks like the most force is behind the TypeScript and browser stuff but it looks like Coinbase still maintains plenty of native kotlin and swift and java etc

Metamask

Browser-based, JS and TypeScript - main product is browser plugin.

Atomic

  • TypeScript, browser-based, some native glue code for Progressive Web Apps to install.

The top 6 crypto wallets appear to all target the browser. TypeScript is the dominant language. Why do they target the browser? Because developing for the browser is more productive and easier than developing multiple native apps - more-so with each passing day. So, it’s a bit frustrating that there is a common myth in this forum that ā€œbrowser wallets are insecure and don’t get adoptedā€. All of the best wallets are written in TypeScript to target the browser. The developers often package the app for app-stores with an installable ā€œappā€ as a last stitch for user convenience (and sometimes dip into native extensions - hence the ā€œprogressiveā€ part of progressive web app).

Wallets don’t have to be built by large teams maintaining multiple codebases if the core libraries can be made to target the browser.

Is ECC dedicated to going down the native SDK route and while ignoring that the web browser is targeted by most/all of the most popular crypto wallets these days?

It sort of seems like we are having the classic argument from 2015 about native versus ā€œprogressive web appā€. PWAs won for most use cases. There are a couple of big classes of exceptions to this statement - big companies that have 100s or 1000s of developers can put a whole team on iOS and a whole team on Android and a whole team on web so they can make something that really expresses their ($$$) brand. Scrappier and thriftier outfits will always develop for web first these days. An iOS native app I often view as wasteful vanity TBH. Code that only runs on iOS :neutral_face:

npm install zcash-wallet-sdk
import ZcashClient from "zcash-wallet-sdk"

const zc = ZcashClient()
zc.init()
// ...

…

npm run build

IMO, if this foundation was laid (to be sure there are a lot of non-trivial problems to overcome), it would be easier to write 5 super cool wallets than it would be to write a single Android wallet natively.

It’s a fair question IMO. The blogpost and discussions of DAGSync have sounded tantalizing. But, is there a reference wallet that can be compiled and run that works on main right now? Ywallet and the underlying zcash-sync are handling transparent<->sapling<->UA just fine in my recent experience. Ywallet UA support was rolled out and has worked more smoothly than I would have expected.

Have you done a write-up of this comparison? Was it done with running code?

:+1: I think ZIP-317 is a good idea and necessary and non-trivial for the entire ecosystem.

I really grimaced on this line. Ideally, wallet developers should not care about the guts of the SDK and should not be forking and maintaining a bunch of connections with a bunch of upstream dependencies. npm install zcash-wallet-sdk. The SDK can do a few things:

zc.initOrCreate(...)  // or whatever to bootstrap the secrets
zc.sync(...)
zc.getAccounts(...)
zc.getTransactions(...)
zc.send(..)

Oh, I don’t know, give or take, make some nicely typed parameters and nice little API for the wallet dev. It can sync and detect incoming transactions, maybe have a local database of accounts/addresses that can be queried. The point is that those writing the wallet should have no concern for upstream dependencies except to keep The One Dep fresh and up-to-date and upgrade continuously. npm update --save every week. Make sure everything works. Deploy to production. Every week; maybe several times a day if you’re really cooking.

WeChat and DoorDash are both traditional database-driven web apps where the interface is mostly built in JavaScript/TypeScript and the database is inevitably mostly MySQL or Postgres, etc. If you want to build a super app experience, as described in the link, I think it’s even more reason to start with web and then package the webapp with something like Capacitor. If you have more money than you know what to do with then sure, splash around with a native iPhone app.

Hopefully everyone around Zcash from ECC to ZF to ZCG will soon wake up and realize that not supporting web for lightwallets is a huge misstep and that a web wallet should be a top-priority. But, I think that horse is dead now so I’ll leave it alone.

As far as the overall vision, price-tag, I would prefer a much more targeted, iterative approach with the first step being Nighthawk syncing fast and working reliably:

  • Make Nighthawk the smoothest, fastest, minimally functioning, dependable, crash-proof Zcash wallet on Android and iOS: ~$150k
  • block explorer 3 years: $50k
  • lightwalletd: (costpermonth) * months + time spent == $X

I’m just pulling numbers out of a hat; but, you get the idea.

I do think some of this should be funded. But, I think a TypeScript web SDK should be a much higher priority than native iOS SDK (as you might have already gathered :D).

8 Likes

Hello!

I think these posts tend to have a lot of underestimation of how much a development team costs yearly.
Finding IT professionals is hard, and retain them is even harder.

Don’t expect that you will get some anon-dev from country X to work for pennies. Apart from that being totally horrible slaver-ish reasoning, IT workforce has become commodity.

I’m just bringing up some information about costs of a minimum team like the one proposed by NightHawk. Assuming median salaries from stack overflow survey 2022

ā— Project Lead - 140,000 - 180,000 (let’s take 160,000)
ā— DevOps & Backend Engineer - 150,000
ā— UX Designer - 126,000
ā— Android Lead - 144,000
ā— iOS Lead - 144,000
ā— QA Testing and Documentation 120,000
ā— Cryptography intern to help with ZSA Documentation: 110,000

If my head is adding this up properly, the total is 954,000 USD
Note these are US average salaries.

I will emit no opinion about NightHawk because it wouldn’t be responsible neither unbiased. I just want to bring up real information for you to factor into your analysis.

I guess the debate should shift towards the goals and how they would actually deliver the fruit of their work rather than cost itself. What they are asking is what it would cost any other team of that shape and size.

8 Likes

The topic of discussion is not the expense, but rather the value and the amount of work in relation to the cost and the team’s track record. For example, to the best of my knowledge, no one has opposed ZSA and QEdit even though the cost is even higher.

5 Likes

You make a fair point on total budget. I see reasonable questions about prior work that require an answer. And I don’t see why this team can’t ask for funding broken up into tranches (6 mos, 12 mos, 18 mos, whatever) with hard milestones at each tranche. Just like every contractor.

I see reasonable questions about prior work that require an answer

agree. I think those prior questions are you mention are valuable feedback.

I don’t see why this team can’t ask for funding broken up into tranches (6 mos, 12 mos, 18 mos, whatever) with hard milestones at each tranche. Just like every contractor.

Yes the milestones should be a little bit more detailed than they seem to be. Although the continuity nature of the grant seems important. People are not appliances. You cannot bring them out of the pantry to cook and them put them back randomly. Even less in a such specific domain as crypto and more specifically, Zcash. Most developers don’t know anything about how crypto nor Zcash work. onboarding someone new, even they being really good at what they do, into productivity takes at least between 2 and 4 weeks.

Also generally the small contracts increase the hourly price. It’s not the same to hire a consultant for 3 months than negotiating for a whole year + some benefits. I would understand this or any other grant asking funds to establish a new team would want the same.

The topic of discussion is not the expense

Part of the discussion is the expense, it always is in this kind of posts. Even the ones you’ve posted yourself. People often question the numbers because they seem bulky, but they are quite modest if you get the real market values.

That’s why I posted these numbers to get that noise out of the way and focus on the other part of the debate which, as you said and I agree, is more important.

3 Likes

This one would be a No from me in its current form, a lot of money has been sunk into Nighthawk wallet already and what have we got?

I would be more in favour of a smaller targeted grant focussing on making Nighthawk wallet functional and usable, it’s been poor since long before the current ā€œspamā€ issue. Once there’s a wallet there that works as a wallet, other things can be added later.

4 Likes

I also felt that this was their intention from the start too, and based on the 30 year plan the ECC released recently here: https://electriccoin.co/blog/ecc-thirty-year-vision/ they are looking to expand the ecosystem from the current 2 organisations (ECC & ZF) to 4 by the end of 2023 and 10 by the end of 2032

My suggestion to assist in this progression towards further decentralising ZEC is that the Dev Tax should move to a user choice model allowing users to determine where their taxes go instead of the current fixed model that needs to get revisited every 4 years for any changes to be made. Or requires such a stir be created in the community a change is made sooner.

This user choice model could be implemented at the wallet level

For example all the dev taxes (or a major portion of) from each wallet would instead of going to ECC, ZF and ZCG, go to the team that builds each wallet app

This would enable organisations such as Nighthawk to move away from constantly needing to apply to ZCG for funding and allow them to get direct funding based on how good their wallet app is and how much usage it gets.

The more people use the nighthawk wallet the more funding they’d get, and ZEC gets another organisation in the ecosystem that’s here for the long haul, not just an opportunistic one that comes in, does one project then leaves.

ECC is about to release their own wallet so as long as this wallet gets enough traction, their dev tax stream would remain secure. ZF could get all the dev taxes from ZecWallet Lite, and Nighthawk the dev taxes from their wallet

Wallet providers could, if they are confident enough in their team’s ability to deliver high quality products to the ZEC community, give optionality allowing users to have their dev tax paid to another organisation. Say a simple drop down in the settings of say the ECC wallet app allowing a user to instead select Nighthawk or ZF as the recipient of their Dev taxes.

If they wanted to give even more optionality, they could allow users to choose their own splits and instead of the current 35/25/40 split to ECC/ZF/ZCG.

I’m sure there are probably flaws in this suggestion, but i’d be keen to hear what they are.

2 Likes

This is possible for PoS system as coin holders have a say in block production. In PoW, only miners have the say in block production. So, your suggestion will only work for miners if implemented to Zcash today.

In a PoS with stake delegation, it is possible to design a system where new coins minted will be distributed to arbitrary number of addresses. Block Producers can choose which address they want their rewards be distributed and Coin Stakers can choose where they want to delegate their stake to.

For example, Producer Alpha list three addresses which will receive rewards:

  1. Address 1 receives 80% of their rewards. This is Producer Alpha’s address.
  2. Address 2 receives 10%. This is for Foundation Beta who works on advancing privacy technologies.
  3. Address 3 receives 10%. This is for Company Charlie who produces reliable wallets for Coin Users.

Each time Producer Alpha produces block, then their rewards will be distributed directly the addresses above. Seeing this, Coin Staker Alice chooses to delegate her stake to Block Producer A, not only because they are trustworthy, but also because she wants to support the orgs that receive the rewards.

The mechanism mentioned above is currently being explored by several teams including Penumbra.

1 Like

I’d rather funding went to a new org than be used to resurrect NH wallet (more resilience, diversity, choice).

It should be about growing the eco-system, biased towards attracting more devs rather than making existing ones richer.

An official ECC wallet will dramatically reduce the need for ā€˜another SDK wallet’ so there’s also that - to compete other wallets will need a huge performance advantage or ā€˜must have’ features.

Just my 2 zats worth.

Thanks for the feedback, i knew there would be holes in my theory somewhere.
And i’m not a software dev so may miss a lot of the technical difficulties.

That being said, it was my understanding that the portion of the transaction fee that went towards the dev fund was separate to the portion of the transaction fee that went toward the miners.

So in my proposal i didn’t think it wouldn’t matter if ZEC was PoS or PoW as the miners would get the exact same mining reward regardless, it’s just that users would get the option at the wallet level to allocate where the portion of the dev fund got sent for their transactions only, instead of a fixed percentage being hard coded into the ZEC blockchain codebase.

We obviously wouldn’t want it to be a free for all where they could just enter their own wallet address and not contribute at all, but have an option from a small list of eligible organisations/addresses

1 Like

No, 99.99% of coins that go to miners and dev fund are new coins that is created in each block. From these new coins, 80% goes to miners and 20% goes to dev fund (ZIP-1014). Transaction fees is different, all of it goes to miners and not to dev fund. Also, these are currently tiny, at less than 1% of mining rewards.

For example, in this recent coinbase transaction where the mining rewards, dev fund, and transactions fees are getting distributed to recipients.

There are four address:

  • t1a is miner’s address. It receives 80% of new coins as mining rewards (3.125 * 0.8 = 2.5) + 0.00005684 transaction fee.
  • t3X should be ZCG’s address. It receives 40% of the dev fund (3.125 * 0.2 * 0.4 = 0.25)
  • t3c should be Bootstrap’s (ECC’s parent org). It receives 35% of the dev fund (3.125 * 0.2 * 0.35 = 0.21875)
  • t3d should be ZF’s. It receives 25% of the dev fund (3.125 * 0.2 * 0.25 = 0.15625)

Anyway, I believe this is out of topic so, after this, I will not respond to this matter on this thread. If you want, we should move to a more appropriate thread.

4 Likes

Thanks for clarifying, i think i understand it now :slight_smile:

2 Likes

@aiyadt I admire all the work that you and your team have put in building Zcash ecosystem.
However I would like to know the reasons why you had voted against the funding of Ywallet?

2 Likes

I do not think ZCG should fund this grant in its current form.

NightHawk wallet is built on ECC’s SDK. As many of you are aware, the Zcash blockchain is under a spam attack. NightHawk wallet (read ECC wallet) still to this day cannot sync and scan its way through the spam for it to be useable everyday in real life. Most Zcashers are already using other wallets that sync almost instantly and are more feature rich.

This part of the grant ask is based upon implementing ECC’s DAG-sync into the NightHawk wallet, which is presumed to instantly fix all sync issues. Wallet sync is one of the greatest bottlenecks of Zcash wallets and as long as its not fixed, nothing else can be considered. DAG-sync has not yet been released (ETA unknown) and not benchmarked by the community. We should not fund the future integration of DAG-sync into wallets before we see how it compares to other sync algorithms. I see no benefit to the Zcash eco-system to fund the wallet part of the grant at this time.

Lightwalletd and ZcashBlockExplorer are bundled up together. It’s difficult to evaluate.

It’s clearly a team grant with many broad deliverables. I think the grant proposal should be broken into separate grants with clear deliverables.

1 Like

While the current wallet is having issues syncing, I believe the Nighthawk team has what it takes to fix issues moving forward. I’ve been super happy with Zcashblockchain explorer as well. I say yes, fund in full. I’m also open to others suggestions of splitting up the grants if the community think that is best.

2 Likes

This is why I prefer a more targeted grant to each project, as this grant definitely has merit but I think the three projects proposed here: Nighthawk Wallet Suites, lightwalletd.com, and Zcash Explorer are three separate project and should be evaluated as such.

2 Likes

TLDR; With the knowledge I have on hand I think the price is fair and the vision is a good one. I support funding this grant.


I have no insider info on this but I caution the @ZcashGrants against asking for something that moves the state of the ecosystem backwards. We should be striving to move towards more decentralisation, autonomy, and innovation.

While I think the calls for breaking the grant apart have merit I do ā€œfeelā€ that’s leaning towards micromanagement and moving away from autonomy and true decentralisation in the ecosystem. Micromanagement typically dampens innovation while autonomy and trust typically foster innovation. Innovation in the tech space typically leads to better long term outcomes.

Moving forward I would like to encourage @ZcashGrants to help teams of this size work towards meeting the requirements for direct funding (whatever they might be). That might mean there is a strong expectation (or stipulation) that @NighthawkApps begin publishing small transparency reports (in pdf format) or something similar.

2 Likes