[Grant Updates] Zcash Wallet Community Developer

[Grant Update] Zcash Wallet Community Developer - Milestone 1

Hello community!

I’m posting the first update to the ZWCD Grant

Let’s recap!

Milestone 1: Objectives

Deliverable 1

NightHawk Apps: Support and Review Pull Requests for DAG Sync adoption and customizations in the new Nighthawk Wallet architecture based on Secant. (ongoing)

Deliverable 2
Zingo Labs: General support and Integration tests with Darksidewalletd (ongoing)

Deliverable 3
Zcon4 activities

Deliverable 4
LCWG re-launch: take ownership of the call schedule (Is ECC’s), coordinate with ZF to set up seminar or similar call with a public schedule and per-invite participation.

Deliverable 5

Attend Arborist Call, present myself and announce the position.

Updates on the Proposed deliverables of Milestone 1

In the following sections I will detail:

  • achievements: things that I was able to achieve in the defined objectives
  • Remarks/Comments: Details of things that I learned along the way of situations that
    are worth mentioning too add context of decisions made along the way/

Deliverable 1: Support NH on DAG Sync and other Tasks

Status: Ongoing (delivered but still be ongoing)

Achievements:

  • Helped NH reviewing their code, pointing out possible issues and bugs.
  • Reviewed User Data Migration path from legacy to new codebase and tested.
  • Contributed w/ a better workflow of the migration path that will only delete legacy data after it has been migrated successfully
  • Caught a bug in a 3rd party dependency that wouldn’t make that possible in the first place.

Remarks / Comments:

  • NH’s new app has interesting UX approaches that others wallets should explore.
  • Clean, lean and yet custom designs
  • Interesting feature 1: leverage local notifications that don’t go through Google or Apple servers but still let the OS remind the user to sync the wallet weekly or Monthly if the user chooses to.
  • Interesting feature 2: Crypto on-ramps with non-KYC CEXs

Open Source Contributions

Deliverable 2: Zingo Labs: support and Integration tests

Status: Ongoing (delivered but still be ongoing)

Achievements:

  • We were able to identify a case that is very important for Zcash wallets called “Second Flush of Enthusiasm” which measures the time that a wallet takes to be fully usable after being offline for 100 days of its user being onboarded.
  • I was able to create the SFoE dataset in a condensed form to later expand using darksidewalletd,
    also to start to document the bumps I hit along the way and even write a tutorial on Free2z

Remarks / Comments:

  • This was the hardest part of the grant because Zingo (formerly ZecWallet) has a complex stack due to dependencies to Zcashd Regtest. Zcashd imposes its limitations and also scarsely documented APIs.
  • I was able to create the SFoE dataset in a condensed form to later expand using darksidewalletd
  • We hit too many bumps on the road because of Zcashd Regtest being slow, resource heavy and not very docker friendly.
  • ZingoLabs is very heavily invested on integration testing and continously improving their codebase. :blush:
  • I’m continously in touch with the Zingo folks and they provide insights and support on questions
    I might have on their codebase and tooling.

Deliverable 3 & 5: Zcon4 Activities and Participating actively on arborist call

Status: delivered

Achievements:

We could identify and follow up on the frustrated attempt on LCWG to take action on the mempool spam issues. It came up that Ecosystem Outreach had been dropped as ECC responsibility and no one was actually informing wallets and exchanges what to do with ZIP-317 fees being now enforced
ZF and ZWCD will team up to carry on an Ecosystem outreach to address this problem.

Remarks / Commments:

The Role has been well received by all teams.

Deliverable 4: Light Client Working Group

Status: mostly delivered. Ongoing.

Achievements

  • Contact ECC Managers and request them to transfer the scheduling, note taking repos and other resources to ZWCD
  • Organize Zoom Seminar or other kind of conference venue
  • gathered feedback of more global times (like arborist call) and propose new cadence
  • Provisional facilitated by Decentralistdan from ZF
  • Contact all wallet teams and previous attendees to invite them again to the LCWG calls those include:
    • Eiger
    • ChainSafe
    • Unstoppable
    • Edge
    • ZF Core team
    • ECC Core Team
    • Nighthawk Apps
    • Hahn / YWallet
  • I could help the ECC and NH teams to come up with action items to face the mempool bloat issue that wallets and nodes were facing because of not wallets not enforcing ZIP-317.

Remarks:

  • The ongoing changes and transitions made this bumpier as one would have predicted it would be, but overall nothing too blocking.
  • There’s a bottleneck on LCWG notes reviews that needs to be addressed. Either by relocating the repo under another Org and Maintainers or by agreeing on repo current maintainers to commit to reviewing the notes.

See Pull requests · zcash/lcwg · GitHub

Miscellaneous or Uncategorized items:

There were some items not categorized as deliverables for this milestone but that were relevant for my duties since they would unblock people and teams.

Ad-Hoc Code Review of Pull Requests for ECC’s Core Team and other tasks for Zec Wallet team.

Task Type Team Date Link
Review Darkside proto PR from iOS SDK Development ECC 8/25/2023 Migrate to latest `darkside.proto` to help fix Darkside tests by str4d · Pull Request #1191 · zcash/ZcashLightClientKit · GitHub
Review of Transaction Proposal Development ECC 8/22/2023 https://github.com/zcash/librustzcash/pull/891#pullrequestreview-1589874205
Respond to ZecWallet Lite Outage incident Community ZecWallet 8/22/2023 Zcash Wallet Community Developer · GitHub
Test and Debug of DAGSync issue reported by NH Community NH & ECC 8/29/2023 [#1223] Requested height [over latestheight] does not exist in the bl… by LukasKorba · Pull Request #1224 · zcash/ZcashLightClientKit · GitHub [Spend-before-Sync] Requested height [over latestheight] does not exist in the block cache · Issue #1223 · zcash/ZcashLightClientKit · GitHub
Review Draft for Possible ZCG Applicant Community To Be disclosed 8/28/2023 N/A
Adminstrative tasks Grant Task ZWCD
Project Management Tasks Grant Task ZWCD
Catching up with forums and community interactions Community ZWCD

Plans for Next Milestone: Sept 1st to Sept 14

These were the estimated task for the next milestone.

  • Zingo Labs: pull request review and support development, ongoing Integration testing work
  • Preparations for needed updates for iOS 17 public release usually mid september
  • Nighthawk Apps: Pull request reviews
  • Ecosystem outreach: Support partners (Unstoppable and Edge) adopting ECC’s SDKs release of Sbs (which will be paused)
  • Ecosystem outreach: ZIP-317 adoption efforts along with @decentralistdan from ZF.
  • LCWG, Arborist and other community tasks

It has to be noted that I won’t be working the second part of september (and it was detailed on the grant).

14 Likes

[Grant Update] Zcash Wallet Community Developer - Milestone 2

Hello community!

I’m posting the second update to the ZWCD Grant

Milestone 2 - Sep 1st to 14th

This milestone is stipulated for the first half of the month. Second half I had a trip planned ahead of time. Even though I checked IM and web every few days looking for anything that might have needed my attention (e.g: sec incidents, outages, support request). Fortunately nothing of the sort came out.

Estimated tasks from Grant Proposal:

Deliverable 2.1

Zingo Labs: pull request review and support development

Deliverable 2.2

Prepare For ECC’s announced mobile development pause

Deliverable 2.3

Preparations for needed updates for iOS 17 public release usually mid september

Deliverable 2.4

Nighthawk Apps: Pull request reviews

Deliverable 2.5

Ecosystem outreach: Support partners (Unstoppable and Edge) adopting ECC’s SDKs (which will be paused)

Deliverable 2.6

LCWG, Arborist and other community tasks

Effective estimated tasks for milestone 2 after milestone 1 and team progresses

Some of the deliverables of this period relied on publicly available SDK release dates from ECC which delayed and bulk of their RC and releases bled into the second half of September. I repurposed that portion of the work on preparing tooling for all SDKs and Wallets to use instead by starting to create new datasets that allow wallets to test the advanced ReOrg tests originally available on the iOS SDK for v4 Sapling transactions, to be ran on v5 transactions using Orchard.

Public ZWCD Github project

Deliverable 2.1

Zingo Labs: pull request review and support development + General Tooling: Generalize and update Advanced ReOrg Tests Datasets from ECC’s iOS SDK into its own repository. Create tools for these tests to be updated periodically or as needed when NU’s happen.

Status: Delivered

Achievements:

  • We were able to complete the SFoE dataset and workaround to craft the 100k blocks set in a quick and reproducible way
  • The whole process is documented
  • The scripts started to turn RPC code into a simple API for python to interact with a Zcashd instance through RPC calls in python locally, via docker or remotely.
  • I created the base dataset for Advanced Re Org tests and documented them

Remarks:

  • Zcashd wallet has some issues when it comes to spending notes and this originates a lot of errors when generating the datasets that can’t be really prevented, instead I built workarounds so that the wallet has more notes to pick from and avoid double spends on dataset generating scripts
  • Zebra is the new official node and Zcashd is being sunsetted and switched into maintenance mode, but it still does not have any of the features needed to do integration testing like Regtest mode. There’s part of this work that will have to be re-done for Zebra when it is feature complete.

Detail of some of the tasks:

Deliverable 2.2 (repurposed)

Considering the publicly available timelines from ECC, the grant estimated that Mobile SDKs would have been released by the time of this milestone and that the Apps would have been ready for review as well. Given the change in the release timelines, I repurposed this deliverable to focus mainly on reviewing PRs from ECC when available.

Status: Delivered

Achievements:

  • Detect and fix division by zero error on the iOS SDK.
  • Review PRs of early pre-RC code on librustzcash, ffi code and SDK code

Setbacks and other remarks:

  • RC process and publicly available testing releases took place in the second half of the month so I was not available to provide any support, review or testing.

Detail of some of the tasks:

Deliverable 2.3

Preparations for needed updates for iOS 17 public release usually mid september

Status: Delivered

There weren’t outstanding issues on existing apps running the iOS 17 beta.

Deliverable 2.4

Nighthawk Apps is in the process of releasing their new apps, featuring a whole new design and architecture. They are departing from the codebase of the “secant” app from ECC to build their own set of features and product decisions. This involves a lot of code changes that I help them review and test.

Achievements:

  • Successfully review and request changes different PRs that contributed to better code quality, test code coverage and app stability
  • Helped test migration code manually
  • Beta tested NH v2.0

Remarks:

  • The nighthawk team was able detach from the Secant code and delete a lot of unused code that came from the previous design of the ECC Secant code before it was redesigned to the “Zashi” wallet.
  • Reviewing that refactor took some time but I estimate that it will bring a lot of benefits for NH and the community as a whole. NH will be the only Zcash wallet offering KYC-less on-ramps and then using autoshielding to bring funds from other chains to the shielded pool.

Detail of some of the tasks:

Deliverable 2.5

Ecosystem outreach: Support partners (Unstoppable and Edge) adopting ECC’s SDKs (which will be paused)

Status: delayed

Given the RC process was delayed much of it started on the second half of September and partners are adopting the SDKs currently (Oct 2023)

Deliverable 2.6

LCWG, Arborist and other community tasks

Status: delivered

Detail of some of the tasks:

Task URL
LCWG 60 [#62] LCWG Call 60 - Sep 7th by pacu · Pull Request #63 · zcash/lcwg · GitHub
Zcash Dev Fund 2024: Community Town Hall #3 Twitter Spaces
Respond to Unstoppable user issue Unstoppable wallet HELP
Investigate Ywallet unavailable in App Store Ywallet not listed in Argentina's App Store

Estimated Tasks For Milestone 3

  • Update Advanced Re Org Tests datasets to v5 transactions supporting sapling, transparent and orchard
    • Document the tests and make them available to all wallet developers
    • Do first integration with Zingo, then work with the rest of the wallets.
    • Report testing integration outcomes to Zingo folks
  • NH wallet 2.0 release support: PR review and beta testing of Sbs and ZIP-317
  • ZIP-317 outreach w/ ZF
  • Community calls:
    • FROST
    • Arborist
    • LCWG
    • Dev Fund 2024 Twitter space
  • [Tentative] ZIP-321 support for NH
  • [Tentative] Mobile SDK Support tasks (depending on ECC planning outcome of next week.)
    • Regtest Support for ECC SDKs
    • PR Reviews (at request)
  • Office Hours:
    • Zavax Bridge team
    • Chainsafe Team on Zcash Javascript SDK
5 Likes

[Grant Update] Zcash Wallet Community Developer - Milestone 3

Hello community!

I’m posting the third update to the ZWCD Grant

Estimated tasks from Grant Proposal: (see proposal)

Deliverable 3.1

General iOS 17 release preparations

  • Support ZingoLabs on iOS 17 issues
  • Support Nighthawk on iOS 17 issues
  • Support Zcash iOS SDK and other affected applications that might report issues.

Deliverable 3.2

Zingo Labs: Pull request reviews

Deliverable 3.3

Nighthawk Apps: Pull request reviews

Deliverable 3.4

Fixed time-boxed Allocations (Community calls, office hours, etc)

As reported on Milestone 2’s section, the release of iOS 17 went by with no further complications than teams checking for regressions. The first 3 items were not needed and I repurposed that time allocation into other tasks.

Effective estimated tasks for milestone 3

Deliverable 3.1

Update Advanced Re Org Tests datasets to v5 transactions supporting sapling, transparent and orchard

  • Document the tests and make them available to all wallet developers
  • Do first integration with Zingo, then work with the rest of the wallets.
  • Report testing integration outcomes to Zingo Labs

Status: Delivered

Achievements:

Remarks:

This generated quite a PR queue on the Zingo team, they will be working on review and merge of them after their next release.

Detail of the tasks
(all tasks of the milestone can be found here Milestone 3 Milestone · GitHub )

Task URL
Improvement on Address Generation tool Parameterize `generate_address` tool to select different receivers · Issue #56 · pacu/zwcd · GitHub
Implement ReOrg Changes Outbound Tx MinedHeight Tx ID reported on `do_send` does not match the one reported on `summaries` · Issue #621 · zingolabs/zingolib · GitHub
`ValueTransferKind::Sent` turns into `ValueTransferKind::SendToSelf` after ReOrg · Issue #622 · zingolabs/zingolib · GitHub
Implement ReOrg Changes Inbound MinedHeight Advanced ReOrg Test: ReOrg changes tx height by pacu · Pull Request #593 · zingolabs/zingolib · GitHub Implement ReOrg dataset that changes the height of an incoming transaction by pacu · Pull Request #13 · zingolabs/darksidewalletd-datasets · GitHub
Implement ReOrg Removes Incoming Tx Forever on zingo lib reorg expires incoming tx by pacu · Pull Request #615 · zingolabs/zingolib · GitHub reorg expires incoming transaction by pacu · Pull Request #16 · zingolabs/darksidewalletd-datasets · GitHub
Implement Reorg changes Incoming Transaction Index Implement Reorg Test that changes the index of a transaction by pacu · Pull Request #610 · zingolabs/zingolib · GitHub
dataset for changing an incoming tx's index within a block by pacu · Pull Request #14 · zingolabs/darksidewalletd-datasets · GitHub
Implement ReOrg Expires Inbound Transaction reorg expires incoming tx by pacu · Pull Request #615 · zingolabs/zingolib · GitHub
reorg expires incoming transaction by pacu · Pull Request #16 · zingolabs/darksidewalletd-datasets · GitHub
Implement ReOrg Changes Inbound Tx Index In Block Implement Reorg Test that changes the index of a transaction by pacu · Pull Request #610 · zingolabs/zingolib · GitHub
Implement ReOrg Changes Inbound Tx Mined Height for Zingo implement ReOrg test that removes and expires a Sent Tx by pacu · Pull Request #625 · zingolabs/zingolib · GitHub
implement ReOrg Removes Outbound TxAnd Is Never Mined implement ReOrg test that removes and expires a Sent Tx by pacu · Pull Request #625 · zingolabs/zingolib · GitHub
Implement Reorg Changes Outbound Tx Index Implement ReOrg test that changes the index of a sent tx by pacu · Pull Request #627 · zingolabs/zingolib · GitHub

Deliverable 3.2

Nighthawk Apps: Pull request reviews + Testflight testing of NH 2.0

  • Review PRs
  • Support of beta testing of NH 2.0 with Spend Before Sync

Status: Delivered

Achievements:

  • Provided insights on implementation details and how these could be tested in terms of past experience with ECC Wallet Development
  • Supported the review and implementation of very demanded feature that allows to switch to different servers of lightwalletd.com (which is not supported by ECC SDKs)
  • Supported the launch of NH 2.0 by receiving Testflight update NH wallet and use the betas.

Detail of the tasks
(all tasks of the milestone can be found here Milestone 3 Milestone · GitHub )

Deliverable 3.3

Work around Mobile SDKs and other related projects

Status: Delivered

Remarks:

There have not been clear definitions of what ECC’s roadmap will be in terms of its current scope and development plans. The “focus ECC” Blog posts had indicated development pauses, but the timelines haven’t been either met or updated (see blogpost). At the latest LCWG meetings ECC’s EM had communicated that they were planning their next period and that they would release a blog post to tell the Zcash community their near term plans over the points exposed on their last update mentioned above. This was announced at October 5th’s meeting (see notes) and then confirmed at the following meeting (see notes) but there is no announcement yet (Oct 27th at time of writing). In that context, work allocations that had been planned in terms of this announced “pause” are being repurposed to other efforts.

Achievements:

  • Helped review transaction proposal API that will allow complete implementation of ZIP-317 with elements that provide good UX elements.
  • Wrote an analysis on SDK, librustzcash and FFI modules to implement REGTEST support

Detail of the tasks
(all tasks of the milestone can be found here Milestone 3 Milestone · GitHub )

Deliverable 3.4

Fixed time-boxed Allocations (Community calls, office hours, etc)

Status: delivered

Remarks:

Office Hours with AVAX team.

We went over some overall concepts of the ZAVAX bridge. His team is working on implementing the Zcash <> AVAX bridge the same way they did the Bitcoin one for V1 and then iterating to build up a more seamless experience for the user.

I pointed them out to some resources that would be useful for his team like the Protocol section where the difference between Bitcoin and Transparent Zcash are described.

We will be meeting regularly to review some architectural designs and other things related to development and UX.

Office Hours With Chainsafe Team

Meet with Chainsafe Team reps to go over various topics or doubts on their Zcash SDK proposal that I can help address or redirect to the right people.

Met with Danyul from Chainsafe on Thu October 12th 2023. We went over the Zcash Community Grant process in terms of their proposed Statement of Work document

Test Edge Spend Before Sync + UA Staging version for Android

Got in touch with Edge’s team and got beta versions of their next prod release including Spend Before Sync for Android and help them spot a few bugs which they fixed.

3 Likes