[Grant Update] Zcash Wallet Community Developer - Milestone 5
Hello community!
I’m posting the Fifth and last update to the ZWCD Grant
Estimated tasks from Grant Proposal: (see proposal)
Deliverable 5.1 (blocked, orchard support not ready)
Nighthawk Apps: Development Support for Orchard adoption and ZIP-315 compliance on NightHawk wallet
Deliverable 5.2
Zingo Labs: Wrap-Up and presentation of Integration tests with Darksidewalletd to the wider-community
Deliverable 5.3
Zcash mobile SDKs: Maintenance. If possible, Darksidewalletd integration testing updates
- Development of Missing RPCs for Lightwalletd support of Spend before Sync
- Regtest (aka “local consensus”) support on Librustzcash
- Fix Advanced Re Org tests on iOS SDK failing because of lack of RPC support
Deliverable 5.4
Fixed time Allocation:
- LCWG
- [Tentative] Lead ZIP-315 initiative if no one else offers to
- Office Hours
- Arborist
Effective / proposed tasks from Grant Proposal: (see proposal)
Deliverable 5.1
Native support for parsing ZIP-321 Payment requests
- Allows to request Zcash to many parties on a same payment request
- Applicable for Android, iOS, Kotlin, Java and Swift.
- Useful for Zashi, Unstoppable, NightHawk
- Uses minimal dependencies avoiding binary bloat.
- Combined with ZIP-321 request fulfillment features of librustzcash can act as “transaction builder” to make complex payment from light clients
Status: Delivered
Achievements:
- Created two distinct Native Swift and Kotlin Libraries that:
- Generate Payment Request URIs for others to fulfill
- Parse Payment Request URIs for wallets to fulfill
- Are fully written in Swift or Kotlin with not external dependencies like rust or C bindings
- Composable with other libraries like zcash-{swift|kotlin}-wallet-sdk
- Has many unit tests and coverage
- Added 1500 LoCs of Features and Tests to each one of them
- The libraries are Open Source with MIT license here::
- Contributed to find weak points in the ZIP-321 definition and add improvements to its specification.
Remarks:
- The Kotlin variant is a really good candidate to be turned into Kotlin multi-platform supporting javascript and even iOS for kotlin multi platform wallets!
- Found a nasty bug in Swift Compiler on Decimal handling.
which is, following their tradition, completely known and ignored by Apple
Detail of the tasks
(all tasks of the milestone can be found here https://github.com/pacu/zwcd/milestone/5 )
task | link |
---|---|
ZIP-321 parsing for Swift | https://github.com/pacu/zcash-swift-payment-uri/pull/31 Parser tests by pacu · Pull Request #29 · pacu/zcash-swift-payment-uri · GitHub |
ZIP-321 parsing for Kotlin | Add ZIP-321 Parsing support by pacu · Pull Request #26 · pacu/zcash-kotlin-payment-uri · GitHub |
Deliverable 5.2
Zingo Labs: Wrap-Up and prepare for presentation of Integration tests with Darksidewalletd to the wider-community
Status: Delivered
Achievements:
- Introduced Darksidewalletd, an integration testing tool that allows developers to produce their own “on-chain” deterministic test scenarios on a synthetic compact blockchain
- Prepared, developed and documented a set of initial test cases like “Second Flush of Enthusiasm” to test wallet restore from long periods of user inactivity
- Prepared, developed and documented a set of advanced ReOrg Tests that allow wallet developers to be prepared for chain ReOrgs in advance of them happening on mainnet and test their wallet in reproducible test scenarios.
- Contributed to Zingo’s new approach to integration testing and development.
- Zingo will explore pivoting towards darksidewalletd driven development where they will be replacing their Zcashd Regtest tooling.
Remarks:
- Advanced ReOrg tests and SFoE datasets are available to all wallet developers.
- Zingo Viridians and ZWCD have started conversations towards a new wallet testing framework powered by zingo and darksidewalletd
Deliverable 5.3
Zcash mobile SDKs: Maintenance. If possible, Darksidewalletd integration testing updates
- Development of Missing RPCs for Lightwalletd support of Spend before Sync
- Regtest (aka “local consensus”) support on Librustzcash
- Fix Advanced Re Org tests on iOS SDK failing because of lack of RPC support
Status: Delivered (PRs to be merged)
Achievements:
- Added Continuous Integration Enhancements to zcash-swift-wallet-sdk
- Ability to provide custom checkpoints on Testing environments (needed regtest support) on iOS and submitted a proposal on how to achieve that in kotlin SDK
- Working on adding a “LocalNetwork’’ mode for librustzcash that will replace Regtest and serve also for transition to Zebrad and sunsetting Zcashd.
- Created a PR to add support for spend before sync into darksidewalletd, which got merged with another one that Larry Ruane had been working on.
- Built lightwalletd with the latest master branch and got Advanced Re Org tests fixed. They now have to be updated to Spend Before Sync logic. They don’t crash any more
Remarks:
- Some of this PRs depend on other teams to be approved
Detail of the tasks
(all tasks of the milestone can be found here Milestone 5 Milestone · GitHub )
Deliverable 5.4
Fixed time Allocation:
- LCWG
- Took Lead ZIP-315 initiative (no one else offered to)
- Office Hours
- Arborist
Achievements:
- Revamped and repurposed Light Client Working Group
- Started on Three working Initiatives:
- ZIP-315 support on the wide wallet ecosystem
- Lead: Pacu
- ZIP-317 Implementation across the ecosystem
- Lead: DecentralistDan
- Decentralize Core Development, Zcashd, lightwalletd and other tooling
- Lead: Zancas
- ZIP-315 support on the wide wallet ecosystem
- Started on Three working Initiatives:
- Office Hours:
- Collaborated with Red Dev team to review their Architecture design docs for the ZAVAX Bridge
- Participated in brainstorming sessions, went through Avalanche docs and other Bridge experiences
- NightHawk Pull request review: Bump version by tw0po1nt · Pull Request #40 · nighthawk-apps/nighthawk-ios-wallet · GitHub
Status: delivered